From: "Potharla, Rupesh" <Rupesh.Potharla@amd.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "George, Jini Susan" <JiniSusan.George@amd.com>,
"Parasuraman, Hariharan" <Hariharan.Parasuraman@amd.com>,
"Kumar N, Bhuvanendra" <Bhuvanendra.KumarN@amd.com>,
"Potharla, Rupesh via Binutils" <binutils@sourceware.org>
Subject: RE: [PATCH] Ignore DWARF debug information for -gsplit-dwarf with dwarf-5.
Date: Thu, 29 Sep 2022 16:39:38 +0000 [thread overview]
Message-ID: <DM6PR12MB4219A66148F9BAAC06D63394E7579@DM6PR12MB4219.namprd12.prod.outlook.com> (raw)
In-Reply-To: <eacd9e57-cdc2-4790-fc7f-9f8f331ba328@suse.com>
[-- Attachment #1: Type: text/plain, Size: 2568 bytes --]
[Public]
Thanks Jan,
I made the suggested changes. Can you review the latest code changes and send in your comments ?
Inline Patch:
Skip dwo_id for split dwarf.
* dwarf2.c (parse_comp_unit): Skip DWO_id for DW_UT_skeleton.
---
bfd/dwarf2.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 4a6a1e40185..028df77c4c2 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -4411,13 +4411,23 @@ parse_comp_unit (struct dwarf2_debug *stash,
if (version < 5)
addr_size = read_1_byte (abfd, &info_ptr, end_ptr);
- if (unit_type == DW_UT_type)
+ switch (unit_type)
{
- /* Skip type signature. */
- info_ptr += 8;
+ case DW_UT_type:
+ /* Skip type signature. */
+ info_ptr += 8;
- /* Skip type offset. */
- info_ptr += offset_size;
+ /* Skip type offset. */
+ info_ptr += offset_size;
+ break;
+
+ case DW_UT_skeleton:
+ /* Skip DWO_id field. */
+ info_ptr += 8;
+ break;
+
+ default:
+ break;
}
if (addr_size > sizeof (bfd_vma))
@@ -4441,6 +4451,7 @@ parse_comp_unit (struct dwarf2_debug *stash,
return NULL;
}
+
/* Read the abbrevs for this compilation unit into a table. */
abbrevs = read_abbrevs (abfd, abbrev_offset, stash, file);
if (! abbrevs)
--
2.25.1
Regards,
Rupesh P
>On 29.09.2022 17:54, Potharla, Rupesh wrote:
>> .debug_info contents:
>> 0x00000000: Compile Unit: length = 0x00000031, format = DWARF32,
>> version = 0x0005, unit_type = DW_UT_skeleton, abbr_offset = 0x0000,
>> addr_size = 0x08, DWO_id = 0xcd97775ca070a83c (next unit at
>> 0x00000035)
>>
>> The issue is seen with both clang and gcc. Above is the Debug_info header
>of a program compiled with gcc using -gsplit-dwarf and dwarf-5.
>> There are two other fields(abbr_offset and addr_Size) after unit_type in the
>header. Skipping the dwo_id field in the previous check of unit_type will not
>fix the issue.
>
>According to the doc I'm looking at the headers for DW_UT_type and
>DW_UT_skeleton agree up to the debug_abbrev_offset field. This matches the
>code, which reads addr_size and abbrev_offset ahead of the DW_UT_type
>conditional I was talking about. What's between that
>if() and the one you're adding in your present patch is _precessing_ of
>addr_size, but not fetching of it from the header. This is supported by the
>intermediate code also not further touching info_ptr.
>
>Jan
[-- Attachment #2: 0001-Ignore-DWARF-debug-information-for-gsplit-dwarf-with.patch --]
[-- Type: application/octet-stream, Size: 1424 bytes --]
From 0007ca4559090da986c19dbd71bc5fe6bc48cd1e Mon Sep 17 00:00:00 2001
From: rupesh potharla <rupesh.potharla@amd.com>
Date: Thu, 29 Sep 2022 17:49:07 +0530
Subject: [PATCH] Ignore DWARF debug information for -gsplit-dwarf with
dwarf-5.
Skip dwo_id for split dwarf.
* dwarf2.c (parse_comp_unit): Skip DWO_id for DW_UT_skeleton.
---
bfd/dwarf2.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 4a6a1e40185..028df77c4c2 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -4411,13 +4411,23 @@ parse_comp_unit (struct dwarf2_debug *stash,
if (version < 5)
addr_size = read_1_byte (abfd, &info_ptr, end_ptr);
- if (unit_type == DW_UT_type)
+ switch (unit_type)
{
- /* Skip type signature. */
- info_ptr += 8;
+ case DW_UT_type:
+ /* Skip type signature. */
+ info_ptr += 8;
- /* Skip type offset. */
- info_ptr += offset_size;
+ /* Skip type offset. */
+ info_ptr += offset_size;
+ break;
+
+ case DW_UT_skeleton:
+ /* Skip DWO_id field. */
+ info_ptr += 8;
+ break;
+
+ default:
+ break;
}
if (addr_size > sizeof (bfd_vma))
@@ -4441,6 +4451,7 @@ parse_comp_unit (struct dwarf2_debug *stash,
return NULL;
}
+
/* Read the abbrevs for this compilation unit into a table. */
abbrevs = read_abbrevs (abfd, abbrev_offset, stash, file);
if (! abbrevs)
--
2.25.1
next prev parent reply other threads:[~2022-09-29 16:39 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-29 12:43 Potharla, Rupesh
2022-09-29 15:00 ` Jan Beulich
2022-09-29 15:54 ` Potharla, Rupesh
2022-09-29 16:03 ` Jan Beulich
2022-09-29 16:39 ` Potharla, Rupesh [this message]
2022-09-30 5:53 ` Jan Beulich
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=DM6PR12MB4219A66148F9BAAC06D63394E7579@DM6PR12MB4219.namprd12.prod.outlook.com \
--to=rupesh.potharla@amd.com \
--cc=Bhuvanendra.KumarN@amd.com \
--cc=Hariharan.Parasuraman@amd.com \
--cc=JiniSusan.George@amd.com \
--cc=binutils@sourceware.org \
--cc=jbeulich@suse.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).