[binutils] Print DWO ID
authorTom de Vries <tdevries@suse.de>
Fri, 12 Feb 2021 03:43:03 +0000 (04:43 +0100)
committerTom de Vries <tdevries@suse.de>
Fri, 12 Feb 2021 03:43:03 +0000 (04:43 +0100)
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.

binutils/ChangeLog
binutils/dwarf.c

index 9628390507495555b30e66d832506ecb7eed3ad2..3b638c0d90f90282c738ad50d0d9777da91c3530 100644 (file)
@@ -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
index 3cbd19710d78bbe3725f485d0defa2fdaa74be88..c96613f37e6bb0d9727443ff78c43a8a38e23a4a 100644 (file)
@@ -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;