[binutils-gdb] [binutils] Print DWO ID

Tom de Vries vries@sourceware.org
Fri Feb 12 03:43:07 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d60f79984aecd7f72de6fdf2015100a7516c9ee2

commit d60f79984aecd7f72de6fdf2015100a7516c9ee2
Author: Tom de Vries <tdevries@suse.de>
Date:   Fri Feb 12 04:43:03 2021 +0100

    [binutils] Print DWO ID
    
    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)
    ...
    
    binutils/ChangeLog:
    
    2021-02-12  Tom de Vries  <tdevries@suse.de>
    
            * dwarf.c (process_debug_info): Print DWO ID.

Diff:
---
 binutils/ChangeLog | 4 ++++
 binutils/dwarf.c   | 6 +++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 96283905074..3b638c0d90f 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+2021-02-12  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf.c (process_debug_info): Print DWO ID.
+
 2021-02-11  Alan Modra  <amodra@gmail.com>
 
 	PR 27290
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;


More information about the Binutils-cvs mailing list