aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binutils/ChangeLog4
-rw-r--r--binutils/dwarf.c19
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;