gas: no md_cons_align() for .nop{,s}
.nop and .nops generate code, not data. Hence them invoking md_cons_align() is at best inappropriate. In fact it actually gets in the of x86'es state maintenance involving i386_cons_align().
This commit is contained in:
@@ -3466,10 +3466,6 @@ s_nop (int ignore ATTRIBUTE_UNUSED)
|
||||
md_flush_pending_output ();
|
||||
#endif
|
||||
|
||||
#ifdef md_cons_align
|
||||
md_cons_align (1);
|
||||
#endif
|
||||
|
||||
SKIP_WHITESPACE ();
|
||||
expression (&exp);
|
||||
demand_empty_rest_of_line ();
|
||||
@@ -3519,10 +3515,6 @@ s_nops (int ignore ATTRIBUTE_UNUSED)
|
||||
md_flush_pending_output ();
|
||||
#endif
|
||||
|
||||
#ifdef md_cons_align
|
||||
md_cons_align (1);
|
||||
#endif
|
||||
|
||||
SKIP_WHITESPACE ();
|
||||
expression (&exp);
|
||||
/* Note - this expression is tested for an absolute value in
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
.*: Assembler messages:
|
||||
.*:4: Warning: `constant directive` skips -malign-branch-boundary on `jnc`
|
||||
.*:5: Warning: `constant directive` skips -malign-branch-boundary on `jnc`
|
||||
|
||||
@@ -27,4 +27,13 @@ Disassembly of section .text:
|
||||
+[a-f0-9]+: f3 c3 repz ret
|
||||
+[a-f0-9]+: c3 ret
|
||||
+[a-f0-9]+: f3 ff d0 repz call \*%eax
|
||||
|
||||
[a-f0-9]+ <directive>:
|
||||
+[a-f0-9]+: 90 nop
|
||||
+[a-f0-9]+: 0f ae e8 lfence
|
||||
+[a-f0-9]+: ff d0 call \*%eax
|
||||
+[a-f0-9]+: 8d 76 00 lea (0x)?0\(%esi\),%esi
|
||||
+[a-f0-9]+: 83 0c 24 00 orl \$0x0,\(%esp\)
|
||||
+[a-f0-9]+: 0f ae e8 lfence
|
||||
+[a-f0-9]+: c3 ret
|
||||
#pass
|
||||
|
||||
@@ -21,3 +21,10 @@ _start:
|
||||
call *%eax
|
||||
.data
|
||||
.byte 0
|
||||
|
||||
.text
|
||||
directive:
|
||||
.nop
|
||||
call *%eax
|
||||
.nops 3
|
||||
ret
|
||||
|
||||
Reference in New Issue
Block a user