From: Tom de Vries <tdevries@suse.de>
To: Kevin Buettner <kevinb@redhat.com>, gdb-patches@sourceware.org
Subject: [committed] Fix inter-CU references using intra-CU form in imported-unit
Date: Sun, 08 Dec 2019 10:29:00 -0000 [thread overview]
Message-ID: <be65a22b-cabd-59e5-0f58-f4231503f58c@suse.de> (raw)
In-Reply-To: <20191014001842.27413-3-kevinb@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 1845 bytes --]
[ was: Re: [PATCH 2/2] Test case for BZ 25065 ]
On 14-10-2019 02:18, Kevin Buettner wrote:
> + cu {} {
> + compile_unit {
> + {language @DW_LANG_C_plus_plus}
> + {name "<artificial>"}
> + } {
> + imported_unit {
> + {import :$cu_label ref_addr}
> + }
> + subprogram {
> + {abstract_origin :$main_label}
> + {low_pc $main_start addr}
> + {high_pc "$main_start + $main_length" addr}
> + } {
> + subprogram {
> + {abstract_origin :$doit_label}
> + {low_pc $doit_start addr}
> + {high_pc "$doit_start + $doit_length" addr}
> + } {
> + formal_parameter {
> + {abstract_origin :$doit_self_label}
> + }
> + }
> + DW_TAG_variable {
> + {abstract_origin :$foo_label}
> + {location 4 data1}
> + }
> + }
> + }
> + }
> +
> + cu {} {
> + cu_label: compile_unit {
> + {language @DW_LANG_C_plus_plus}
> + {name "imported_unit.c"}
> + } {
> + int_label: base_type {
> + {byte_size $int_size sdata}
> + {encoding @DW_ATE_signed}
> + {name int}
> + }
> +
> + main_label: subprogram {
> + {name main}
> + {type :$int_label}
> + {external 1 flag}
> + } {
> + Foo_label: class_type {
> + {name Foo}
> + {byte_size 1 sdata}
> + } {
> + doit_label: subprogram {
> + {name doit}
> + {type :$int_label}
> + {accessibility 1 DW_FORM_data1}
> + } {
> + doit_self_label: formal_parameter {
> + {name this}
> + {artificial 1 DW_FORM_flag_present}
> + {type :$Foo_pointer_type}
> + }
> + }
> + Foo_pointer_type: pointer_type {
> + {byte_size $addr_size sdata}
> + {type :$Foo_label}
> + }
> + }
> + foo_label: DW_TAG_variable {
> + {name foo}
> + {type :$Foo_label}
> + }
> + }
> + }
> + }
> +}
Hi,
I've committed the test-case fix attached below.
Thanks,
- Tom
[-- Attachment #2: 0001-Fix-inter-CU-references-using-intra-CU-form-in-imported-unit.patch --]
[-- Type: text/x-patch, Size: 2703 bytes --]
Fix inter-CU references using intra-CU form in imported-unit
When running the gdb testsuite with the cc-with-dwz board, I run into:
...
Running gdb/testsuite/gdb.dwarf2/imported-unit.exp ...
gdb compile failed, dwz: gdb.dwarf2/imported-unit/imported-unit: \
Couldn't find DIE referenced by DW_AT_abstract_origin
cc-with-tweaks.sh: dwz did not modify gdb.dwarf2/imported-unit/imported-unit.
...
The problem is that the DW_AT_abstract_origin reference here:
...
<0><d2>: Abbrev Number: 2 (DW_TAG_compile_unit)
<1><e6>: Abbrev Number: 4 (DW_TAG_subprogram)
<e7> DW_AT_abstract_origin: <0x142>
<eb> DW_AT_low_pc : 0x4004b2
<f3> DW_AT_high_pc : 0x4004c8
...
referring to a DIE in another compilation unit here:
...
<0><129>: Abbrev Number: 2 (DW_TAG_compile_unit)
<1><142>: Abbrev Number: 4 (DW_TAG_subprogram)
<143> DW_AT_name : main
<148> DW_AT_type : <0x13b>
<14c> DW_AT_external : 1
...
is encoded using intra-CU reference form DW_FORM_ref4 instead of intra-CU
reference DW_FORM_ref_addr:
...
4 DW_TAG_subprogram [has children]
DW_AT_abstract_origin DW_FORM_ref4
DW_AT_low_pc DW_FORM_addr
DW_AT_high_pc DW_FORM_addr
DW_AT value: 0 DW_FORM value: 0
...
Fix this in the DWARF assembler by making all inter-CU references use the '%'
label prefix.
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2019-12-08 Tom de Vries <tdevries@suse.de>
* gdb.dwarf2/imported-unit.exp: Fix inter-CU references.
Change-Id: I690ff18c3943705ed478453531b176ff74700f3c
---
gdb/testsuite/gdb.dwarf2/imported-unit.exp | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/gdb/testsuite/gdb.dwarf2/imported-unit.exp b/gdb/testsuite/gdb.dwarf2/imported-unit.exp
index 25d44874c12..bf535120349 100644
--- a/gdb/testsuite/gdb.dwarf2/imported-unit.exp
+++ b/gdb/testsuite/gdb.dwarf2/imported-unit.exp
@@ -73,24 +73,24 @@ Dwarf::assemble $asm_file {
{name "<artificial>"}
} {
imported_unit {
- {import :$cu_label ref_addr}
+ {import %$cu_label}
}
subprogram {
- {abstract_origin :$main_label}
+ {abstract_origin %$main_label}
{low_pc $main_start addr}
{high_pc "$main_start + $main_length" addr}
} {
subprogram {
- {abstract_origin :$doit_label}
+ {abstract_origin %$doit_label}
{low_pc $doit_start addr}
{high_pc "$doit_start + $doit_length" addr}
} {
formal_parameter {
- {abstract_origin :$doit_self_label}
+ {abstract_origin %$doit_self_label}
}
}
DW_TAG_variable {
- {abstract_origin :$foo_label}
+ {abstract_origin %$foo_label}
{location 4 data1}
}
}
next prev parent reply other threads:[~2019-12-08 10:29 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-14 0:19 [PATCH 0/2] Fix BZ 25065 (LTO related GDB segfault) Kevin Buettner
2019-10-14 0:19 ` [PATCH 2/2] Test case for BZ 25065 Kevin Buettner
2019-12-08 10:29 ` Tom de Vries [this message]
2019-10-14 0:19 ` [PATCH 1/2] Fix BZ 25065 - Ensure that physnames are computed for inherited DIEs Kevin Buettner
2019-10-14 3:02 ` Simon Marchi
2019-10-15 16:27 ` Kevin Buettner
2019-10-17 3:54 ` Simon Marchi
2019-10-17 5:30 ` Simon Marchi
2019-10-18 1:08 ` Kevin Buettner
2019-10-18 15:07 ` Simon Marchi
2019-10-21 20:05 ` Keith Seitz
2019-10-22 22:23 ` Kevin Buettner
2019-11-04 20:42 ` Kevin Buettner
2019-11-04 20:49 ` Simon Marchi
2019-11-27 20:17 ` Kevin Buettner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=be65a22b-cabd-59e5-0f58-f4231503f58c@suse.de \
--to=tdevries@suse.de \
--cc=gdb-patches@sourceware.org \
--cc=kevinb@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox