aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2023-12-01 08:28:20 +0100
committerJan Beulich <jbeulich@suse.com>2023-12-01 08:28:20 +0100
commit54fc4573887bfba8bd2ac0cb2eb9259e94ba178d (patch)
treeec32ca471baf49b05a681ab8f37f6de95a39e69e
parent175ce60f0ff7f3423b49c0d41a88a0c51a08ac03 (diff)
downloadgdb-54fc4573887bfba8bd2ac0cb2eb9259e94ba178d.zip
gdb-54fc4573887bfba8bd2ac0cb2eb9259e94ba178d.tar.gz
gdb-54fc4573887bfba8bd2ac0cb2eb9259e94ba178d.tar.bz2
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().
-rw-r--r--gas/read.c8
-rw-r--r--gas/testsuite/gas/i386/align-branch-6.e2
-rw-r--r--gas/testsuite/gas/i386/lfence-byte.d9
-rw-r--r--gas/testsuite/gas/i386/lfence-byte.s7
4 files changed, 17 insertions, 9 deletions
diff --git a/gas/read.c b/gas/read.c
index 826156d..76ef86c 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -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
diff --git a/gas/testsuite/gas/i386/align-branch-6.e b/gas/testsuite/gas/i386/align-branch-6.e
index c337835..c959492 100644
--- a/gas/testsuite/gas/i386/align-branch-6.e
+++ b/gas/testsuite/gas/i386/align-branch-6.e
@@ -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`
diff --git a/gas/testsuite/gas/i386/lfence-byte.d b/gas/testsuite/gas/i386/lfence-byte.d
index 6d9a889..f0236a8 100644
--- a/gas/testsuite/gas/i386/lfence-byte.d
+++ b/gas/testsuite/gas/i386/lfence-byte.d
@@ -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
diff --git a/gas/testsuite/gas/i386/lfence-byte.s b/gas/testsuite/gas/i386/lfence-byte.s
index 0a05e64..570a1c6 100644
--- a/gas/testsuite/gas/i386/lfence-byte.s
+++ b/gas/testsuite/gas/i386/lfence-byte.s
@@ -21,3 +21,10 @@ _start:
call *%eax
.data
.byte 0
+
+ .text
+directive:
+ .nop
+ call *%eax
+ .nops 3
+ ret