diff options
-rw-r--r-- | binutils/ChangeLog | 4 | ||||
-rw-r--r-- | binutils/dwarf.c | 19 |
2 files changed, 16 insertions, 7 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index ecd2154..5833ec0 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +2023-10-24 Tom de Vries <tdevries@suse.de> + + * dwarf.c (display_gdb_index): Handle unknown name of main. + 2023-10-10 Tom de Vries <tdevries@suse.de> * dwarf.c (display_lang): New function, factored out of ... diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 584c737..544ba6d 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -10949,16 +10949,21 @@ display_gdb_index (struct dwarf_section *section, display_lang (lang); printf ("\n"); - uint32_t name_offset = byte_get_little_endian (shortcut_table + 4, 4); printf (_("Name of main: ")); - if (name_offset >= section->size - constant_pool_offset) + if (lang == 0) + printf (_("<unknown>\n")); + else { - printf (_("<corrupt offset: %x>\n"), name_offset); - warn (_("Corrupt name offset of 0x%x found for name of main\n"), - name_offset); + uint32_t name_offset = byte_get_little_endian (shortcut_table + 4, 4); + if (name_offset >= section->size - constant_pool_offset) + { + printf (_("<corrupt offset: %x>\n"), name_offset); + warn (_("Corrupt name offset of 0x%x found for name of main\n"), + name_offset); + } + else + printf ("%s\n", constant_pool + name_offset); } - else - printf ("%s\n", constant_pool + name_offset); } return 1; |