[PATCH 4/5] x86-64: further tighten convert-load-reloc checking
Jan Beulich
jbeulich@suse.com
Mon Feb 3 11:41:39 GMT 2025
REX2.M affects what insn we're actually dealing with, so we better check
this to avoid transforming (future) insns we must not touch.
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -2282,14 +2282,14 @@ elf_x86_64_convert_load_reloc (bfd *abfd
if (to_reloc_pc32)
return true;
- if (opcode == 0x85)
+ if (opcode == 0x85 && !(rex2 & (REX2_M << 4)))
{
/* Convert "test %reg, foo@GOTPCREL(%rip)" to
"test $foo, %reg". */
modrm = 0xc0 | (modrm & 0x38) >> 3;
opcode = 0xf7;
}
- else if ((opcode | 0x38) == 0x3b)
+ else if ((opcode | 0x38) == 0x3b && !(rex2 & (REX2_M << 4)))
{
/* Convert "binop foo@GOTPCREL(%rip), %reg" to
"binop $foo, %reg". */
More information about the Binutils
mailing list