* readelf.c (load_specific_debug_section): New function, from
load_debug_section. (load_debug_section): Use load_specific_debug_section. (display_debug_section): Use load_specific_debug_section. Check for multiple sections with the same name.
This commit is contained in:
parent
0b1553bcdd
commit
d966045b7b
2 changed files with 43 additions and 17 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2008-09-05 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
|
||||||
|
* readelf.c (load_specific_debug_section): New function, from
|
||||||
|
load_debug_section.
|
||||||
|
(load_debug_section): Use load_specific_debug_section.
|
||||||
|
(display_debug_section): Use load_specific_debug_section. Check for
|
||||||
|
multiple sections with the same name.
|
||||||
|
|
||||||
2008-08-28 Tristan Gingold <gingold@adacore.com>
|
2008-08-28 Tristan Gingold <gingold@adacore.com>
|
||||||
|
|
||||||
* objdump.c (dump_stabs): Add sections for Darwin.
|
* objdump.c (dump_stabs): Add sections for Darwin.
|
||||||
|
|
|
@ -8486,11 +8486,11 @@ debug_apply_relocations (void *file,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
static int
|
||||||
load_debug_section (enum dwarf_section_display_enum debug, void *file)
|
load_specific_debug_section (enum dwarf_section_display_enum debug,
|
||||||
|
Elf_Internal_Shdr *sec, void *file)
|
||||||
{
|
{
|
||||||
struct dwarf_section *section = &debug_displays [debug].section;
|
struct dwarf_section *section = &debug_displays [debug].section;
|
||||||
Elf_Internal_Shdr *sec;
|
|
||||||
char buf [64];
|
char buf [64];
|
||||||
int section_is_compressed;
|
int section_is_compressed;
|
||||||
|
|
||||||
|
@ -8498,18 +8498,6 @@ load_debug_section (enum dwarf_section_display_enum debug, void *file)
|
||||||
if (section->start != NULL)
|
if (section->start != NULL)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/* Locate the debug section. */
|
|
||||||
sec = find_section (section->uncompressed_name);
|
|
||||||
if (sec != NULL)
|
|
||||||
section->name = section->uncompressed_name;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sec = find_section (section->compressed_name);
|
|
||||||
if (sec != NULL)
|
|
||||||
section->name = section->compressed_name;
|
|
||||||
}
|
|
||||||
if (sec == NULL)
|
|
||||||
return 0;
|
|
||||||
section_is_compressed = section->name == section->compressed_name;
|
section_is_compressed = section->name == section->compressed_name;
|
||||||
|
|
||||||
snprintf (buf, sizeof (buf), _("%s section data"), section->name);
|
snprintf (buf, sizeof (buf), _("%s section data"), section->name);
|
||||||
|
@ -8530,6 +8518,28 @@ load_debug_section (enum dwarf_section_display_enum debug, void *file)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
load_debug_section (enum dwarf_section_display_enum debug, void *file)
|
||||||
|
{
|
||||||
|
struct dwarf_section *section = &debug_displays [debug].section;
|
||||||
|
Elf_Internal_Shdr *sec;
|
||||||
|
|
||||||
|
/* Locate the debug section. */
|
||||||
|
sec = find_section (section->uncompressed_name);
|
||||||
|
if (sec != NULL)
|
||||||
|
section->name = section->uncompressed_name;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sec = find_section (section->compressed_name);
|
||||||
|
if (sec != NULL)
|
||||||
|
section->name = section->compressed_name;
|
||||||
|
}
|
||||||
|
if (sec == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return load_specific_debug_section (debug, sec, file);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
free_debug_section (enum dwarf_section_display_enum debug)
|
free_debug_section (enum dwarf_section_display_enum debug)
|
||||||
{
|
{
|
||||||
|
@ -8568,12 +8578,20 @@ display_debug_section (Elf_Internal_Shdr *section, FILE *file)
|
||||||
|| streq (debug_displays[i].section.compressed_name, name))
|
|| streq (debug_displays[i].section.compressed_name, name))
|
||||||
{
|
{
|
||||||
struct dwarf_section *sec = &debug_displays [i].section;
|
struct dwarf_section *sec = &debug_displays [i].section;
|
||||||
|
int secondary = (section != find_section (name));
|
||||||
|
|
||||||
if (load_debug_section (i, file))
|
if (secondary)
|
||||||
|
free_debug_section (i);
|
||||||
|
|
||||||
|
if (streq (debug_displays[i].section.uncompressed_name, name))
|
||||||
|
sec->name = sec->uncompressed_name;
|
||||||
|
else
|
||||||
|
sec->name = sec->compressed_name;
|
||||||
|
if (load_specific_debug_section (i, section, file))
|
||||||
{
|
{
|
||||||
result &= debug_displays[i].display (sec, file);
|
result &= debug_displays[i].display (sec, file);
|
||||||
|
|
||||||
if (i != info && i != abbrev)
|
if (secondary || (i != info && i != abbrev))
|
||||||
free_debug_section (i);
|
free_debug_section (i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue