public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
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


  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).