Hi!
It is appeared that for MPX R_X86_64_*_BND relocations are not enough in case of indirect calls like
foo:
movq
fp@GOTPCREL(%rip), %rax
bnd
jmp *(%rax)
.globl fp
.section
.data.rel,"aw",@progbits
.align 8
.type fp, @object
.size fp, 8
fp:
.quad memcpy
There will be no R_X86_64_*_BND relocation but anyway linker needs to generate extended PLT entry for memcpy.
We are going to create separate linker option (-z bndplt) which forces linker to create extended PLT entry for any call and also this option will be passed to linker when compilation is in MPX mode.
Thus we can omit R_X86_64_*_BND relocations completely.
So we propose to remove generation of these relocations from assembler (but leave their handling in linker for backward compatibility). Also MPX ABI will be changed.
Any thougts on this proposition?
Thanks,
Igor