From 0f47cb17d14172a5250b2146b82583271280d170 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 7 Apr 2022 08:16:29 +0200 Subject: [PATCH] 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. --- gas/config/tc-aarch64.c | 6 +++++- gas/testsuite/gas/aarch64/inst-directive.d | 3 +++ gas/testsuite/gas/aarch64/inst-directive.s | 1 + gas/testsuite/gas/aarch64/inst-dwarf.d | 15 +++++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gas/testsuite/gas/aarch64/inst-dwarf.d diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index a4ef65274e4..cbebc6b48c8 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 fa64ce85964..36a135f29a4 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 e928362efea..1c2e9bc591b 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 00000000000..f5c0d3503f0 --- /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 -- 2.30.2