Print DWO ID

Message ID 20210211094101.GA8744@delia
State New
Headers show
Series
  • Print DWO ID
Related show

Commit Message

Tom de Vries Feb. 11, 2021, 9:41 a.m.
Hi,

With exec:
...
$ gcc -gsplit-dwarf ~/hello.c -gdwarf-5
...
a dwarf-5 DW_UT_skeleton CU is generated, but the corresponding DWO ID is not
printed by readelf -wi.

Add this, such that we have:
....
   Compilation Unit @ offset 0xc7:
    Length:        0x31 (32-bit)
    Version:       5
    Unit Type:     DW_UT_skeleton (4)
    Abbrev Offset: 0x64
    Pointer Size:  8
+   DWO ID:        0x4756ae3ac4348f21
  <0><db>: Abbrev Number: 1 (DW_TAG_skeleton_unit)
...

OK for trunk?

Thanks,
- Tom

[binutils] Print DWO ID

binutils/ChangeLog:

2021-02-11  Tom de Vries  <tdevries@suse.de>

	* dwarf.c (process_debug_info): Print DWO ID.

---
 binutils/dwarf.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

H.J. Lu via Binutils Feb. 11, 2021, 11:19 p.m. | #1
On Thu, Feb 11, 2021 at 10:41:03AM +0100, Tom de Vries wrote:
> 2021-02-11  Tom de Vries  <tdevries@suse.de>

> 

> 	* dwarf.c (process_debug_info): Print DWO ID.


OK.

-- 
Alan Modra
Australia Development Lab, IBM

Patch

diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 3cbd19710d7..c96613f37e6 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -3692,11 +3692,13 @@  process_debug_info (struct dwarf_section *           section,
       if (compunit.cu_version < 5)
 	SAFE_BYTE_GET_AND_INC (compunit.cu_pointer_size, hdrptr, 1, end);
 
+      bfd_boolean do_dwo_id = FALSE;
+      uint64_t dwo_id;
       if (compunit.cu_unit_type == DW_UT_split_compile
 	  || compunit.cu_unit_type == DW_UT_skeleton)
 	{
-	  uint64_t dwo_id;
 	  SAFE_BYTE_GET_AND_INC (dwo_id, hdrptr, 8, end);
+	  do_dwo_id = TRUE;
 	}
 
       /* PR 17512: file: 001-108546-0.001:0.1.  */
@@ -3769,6 +3771,8 @@  process_debug_info (struct dwarf_section *           section,
 	      printf (_("   Type Offset:   0x%s\n"),
 		      dwarf_vmatoa ("x", type_offset));
 	    }
+	  if (do_dwo_id)
+	    printf (_("   DWO ID:        0x%s\n"), dwarf_vmatoa ("x", dwo_id));
 	  if (this_set != NULL)
 	    {
 	      dwarf_vma *offsets = this_set->section_offsets;