By default on x86-64, gas uses 0f 1f 00 as a 3-byte NOP for alignment:
$ echo 'nop; .p2align 2' > test.s
$ as test.s -o test.o
$ objdump -d test.o | tail -n2
0: 90 nop
1: 0f 1f 00 nopl (%rax)
However, with some -mtune options, it can generate 8d 76 00 instead:
$ as -mtune=pentium test.s -o test.o
$ objdump -d test.o | tail -n2
0: 90 nop
1: 8d 76 00 lea 0x0(%rsi),%esi
This instruction is not actually a NOP on x86-64! It has the effect of clearing
the high 32 bits of %rsi (see also bug #10419). This could lead to incorrect
code generation, even though -mtune is only supposed to affect optimization
decisions and not correctness.
--
Summary: .p2align can generate non-NOPs on x86-64
Product: binutils
Version: 2.19
Status: NEW
Severity: normal
Priority: P2
Component: gas
AssignedTo: unassigned at sources dot redhat dot com
ReportedBy: anders at kaseorg dot com
CC: bug-binutils at gnu dot org
http://sourceware.org/bugzilla/show_bug.cgi?id=10420
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
bug-binutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-binutils