https://sourceware.org/bugzilla/show_bug.cgi?id=17795
--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> --- The same thing happens with ld.bfd: [hjl@gnu-6 pr17795]$ make LD=ld.bfd cc -O2 -c x.s ld.bfd -o x x.o objdump -dw x x: file format elf64-x86-64 Disassembly of section .text: 00000000004000e8 <_start>: 4000e8: 64 48 8b 04 25 00 00 00 00 mov %fs:0x0,%rax 4000f1: 81 c3 00 00 00 4d add $0x4d000000,%ebx 4000f7: 8d 80 fc ff ff ff lea -0x4(%rax),%eax 4000fd: c3 retq [hjl@gnu-6 pr17795]$ Target_x86_64<size>::Relocate::tls_ie_to_le has unsigned char op1 = view[-3]; unsigned char op2 = view[-2]; unsigned char op3 = view[-1]; unsigned char reg = op3 >> 3; It is safe only if view[-3] is a REX prefix of the current instruction. However, I can't find a good way to detect if view[-3] is a REX prefix or the last byte of the previous instruction. Compilers may have to always generate a REX prefix even if it isn't needed to encode the instruction. -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils