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:
Jan Beulich
2023-12-01 08:28:20 +01:00
parent 175ce60f0f
commit 54fc457388
4 changed files with 17 additions and 9 deletions
-8
View File
@@ -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 -1
View File
@@ -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`
+9
View File
@@ -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
+7
View File
@@ -21,3 +21,10 @@ _start:
call *%eax
.data
.byte 0
.text
directive:
.nop
call *%eax
.nops 3
ret