https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78631
--- Comment #7 from Ilya Enkovich <ienkovich at gcc dot gnu.org> --- (In reply to H.J. Lu from comment #6) > -z bndplt is needed to call external functions with bounds. But > it isn't needed for internal function calls. That doesn't explain why we need a hack you propose. Code like void *fn1 (void *p) { return fn2(p); } should work fine for any fn1 and fn2 compiled with MPX. Both internal and external functions should work. If call goes through PLT then BNDPLT should be used. If it's not then it's a bug in toolchain.