gdb: fix dwarf2/cooked-index.c compilation on 32-bit systems
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 30 Jan 2023 20:46:15 +0000 (15:46 -0500)
committerSimon Marchi <simon.marchi@efficios.com>
Mon, 30 Jan 2023 21:15:17 +0000 (16:15 -0500)
The i386 builder shows:

    ../../binutils-gdb/gdb/dwarf2/cooked-index.c: In member function ‘void cooked_index_vector::dump(gdbarch*) const’:
    ../../binutils-gdb/gdb/dwarf2/cooked-index.c:492:40: error: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘std::__underlying_type_impl<sect_offset, true>::type’ {aka ‘long long unsigned int’} [-Werror=format=]
      492 |       gdb_printf ("    DIE offset: 0x%lx\n",
          |                                      ~~^
          |                                        |
          |                                        long unsigned int
          |                                      %llx
      493 |     to_underlying (entry->die_offset));
          |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                   |
          |                   std::__underlying_type_impl<sect_offset, true>::type {aka long long unsigned int}

The die_offset's underlying type is uint64, so use PRIx64 in the format
string.

Change-Id: Ibdde4c624ed1bb50eced9a514a4e37aec70a1323

gdb/dwarf2/cooked-index.c

index 9dbb844cadedd66e2c0ac7418c4a422753a57719..82dc44dd74b0391a9da188e9b9550d142deb372c 100644 (file)
@@ -489,7 +489,7 @@ cooked_index_vector::dump (gdbarch *arch) const
       gdb_printf ("    canonical:  %s\n", entry->canonical);
       gdb_printf ("    DWARF tag:  %s\n", dwarf_tag_name (entry->tag));
       gdb_printf ("    flags:      %s\n", to_string (entry->flags).c_str ());
-      gdb_printf ("    DIE offset: 0x%lx\n",
+      gdb_printf ("    DIE offset: 0x%" PRIx64 "\n",
                  to_underlying (entry->die_offset));
 
       if (entry->parent_entry != nullptr)