aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2022-04-07 08:16:29 +0200
committerJan Beulich <jbeulich@suse.com>2022-04-07 08:16:29 +0200
commit0f47cb17d14172a5250b2146b82583271280d170 (patch)
treec3834af0ffeeb5d1a00c3839307209f018dbf02c /gas
parent13d414afa06a6e290126dbebccdb5076cc6620b8 (diff)
downloadgdb-0f47cb17d14172a5250b2146b82583271280d170.zip
gdb-0f47cb17d14172a5250b2146b82583271280d170.tar.gz
gdb-0f47cb17d14172a5250b2146b82583271280d170.tar.bz2
Arm64: arrange for line number emission for .inst
Just like insns encoded the more conventional way these should have line number info associated with them.
Diffstat (limited to 'gas')
-rw-r--r--gas/config/tc-aarch64.c6
-rw-r--r--gas/testsuite/gas/aarch64/inst-directive.d3
-rw-r--r--gas/testsuite/gas/aarch64/inst-directive.s1
-rw-r--r--gas/testsuite/gas/aarch64/inst-dwarf.d15
4 files changed, 24 insertions, 1 deletions
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index a4ef652..cbebc6b 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -1982,6 +1982,7 @@ static void
s_aarch64_inst (int ignored ATTRIBUTE_UNUSED)
{
expressionS exp;
+ unsigned n = 0;
#ifdef md_flush_pending_output
md_flush_pending_output ();
@@ -2020,10 +2021,13 @@ s_aarch64_inst (int ignored ATTRIBUTE_UNUSED)
unsigned int val = exp.X_add_number;
exp.X_add_number = SWAP_32 (val);
}
- emit_expr (&exp, 4);
+ emit_expr (&exp, INSN_SIZE);
+ ++n;
}
while (*input_line_pointer++ == ',');
+ dwarf2_emit_insn (n * INSN_SIZE);
+
/* Put terminator back into stream. */
input_line_pointer--;
demand_empty_rest_of_line ();
diff --git a/gas/testsuite/gas/aarch64/inst-directive.d b/gas/testsuite/gas/aarch64/inst-directive.d
index fa64ce8..36a135f 100644
--- a/gas/testsuite/gas/aarch64/inst-directive.d
+++ b/gas/testsuite/gas/aarch64/inst-directive.d
@@ -6,3 +6,6 @@ Disassembly of section \.text:
0+ <.*>:
0: 3619194c tbz w12, #3, 2328 <\.text\+0x2328>
+ *[0-9a-f]*: d503201f nop
+ *[0-9a-f]*: d503201f nop
+ *[0-9a-f]*: d503201f nop
diff --git a/gas/testsuite/gas/aarch64/inst-directive.s b/gas/testsuite/gas/aarch64/inst-directive.s
index e928362..1c2e9bc 100644
--- a/gas/testsuite/gas/aarch64/inst-directive.s
+++ b/gas/testsuite/gas/aarch64/inst-directive.s
@@ -3,3 +3,4 @@
.text
.inst 0x3619194c
+ .inst 0xd503201f, 0xd503201f, 0xd503201f
diff --git a/gas/testsuite/gas/aarch64/inst-dwarf.d b/gas/testsuite/gas/aarch64/inst-dwarf.d
new file mode 100644
index 0000000..f5c0d35
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/inst-dwarf.d
@@ -0,0 +1,15 @@
+#as: -gdwarf-2
+#name: Dwarf line number info for .inst
+#objdump: -WL -w
+#source: inst-directive.s
+
+.*:[ ]+file format .*
+
+Contents of the .debug_line section:
+
+CU: .*/inst-directive.s:
+File name +Line number +Starting address.*
+inst-directive.s +5 +0.*
+inst-directive.s +6 +0x4.*
+inst-directive.s +- +0x10
+#pass