Remove unused function fetch_location_list.
Catch corrupt core notes and display a warning message.
This commit is contained in:
parent
3d8dbe36e2
commit
3e55a9634f
2 changed files with 18 additions and 13 deletions
|
@ -1,5 +1,10 @@
|
||||||
2002-04-16 Nick Clifton <nickc@cambridge.redhat.com>
|
2002-04-16 Nick Clifton <nickc@cambridge.redhat.com>
|
||||||
|
|
||||||
|
* readelf.c (fetch_location_list): Remove unused function.
|
||||||
|
|
||||||
|
* readelf.c (process_corefile_note_segment): Catch corrupt notes
|
||||||
|
and display a warning message, then exit the loop.
|
||||||
|
|
||||||
* rcparse.y: Set MEMFLAG_DISCARDABLE by default.
|
* rcparse.y: Set MEMFLAG_DISCARDABLE by default.
|
||||||
|
|
||||||
2002-04-15 Nick Clifton <nickc@cambridge.redhat.com>
|
2002-04-15 Nick Clifton <nickc@cambridge.redhat.com>
|
||||||
|
|
|
@ -235,7 +235,6 @@ static void free_debug_str PARAMS ((void));
|
||||||
static const char * fetch_indirect_string PARAMS ((unsigned long));
|
static const char * fetch_indirect_string PARAMS ((unsigned long));
|
||||||
static void load_debug_loc PARAMS ((FILE *));
|
static void load_debug_loc PARAMS ((FILE *));
|
||||||
static void free_debug_loc PARAMS ((void));
|
static void free_debug_loc PARAMS ((void));
|
||||||
static const char * fetch_location_list PARAMS ((unsigned long));
|
|
||||||
static unsigned long read_leb128 PARAMS ((unsigned char *, int *, int));
|
static unsigned long read_leb128 PARAMS ((unsigned char *, int *, int));
|
||||||
static int process_extended_line_op PARAMS ((unsigned char *, int, int));
|
static int process_extended_line_op PARAMS ((unsigned char *, int, int));
|
||||||
static void reset_state_machine PARAMS ((int));
|
static void reset_state_machine PARAMS ((int));
|
||||||
|
@ -7241,18 +7240,7 @@ free_debug_loc ()
|
||||||
debug_loc_size = 0;
|
debug_loc_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
|
||||||
fetch_location_list (offset)
|
|
||||||
unsigned long offset;
|
|
||||||
{
|
|
||||||
if (debug_loc_contents == NULL)
|
|
||||||
return _("<no .debug_loc section>");
|
|
||||||
|
|
||||||
if (offset > debug_loc_size)
|
|
||||||
return _("<offset is too big>");
|
|
||||||
|
|
||||||
return debug_loc_contents + offset;
|
|
||||||
}
|
|
||||||
static int
|
static int
|
||||||
display_debug_loc (section, start, file)
|
display_debug_loc (section, start, file)
|
||||||
Elf32_Internal_Shdr * section;
|
Elf32_Internal_Shdr * section;
|
||||||
|
@ -9440,6 +9428,7 @@ process_corefile_note_segment (file, offset, length)
|
||||||
|
|
||||||
while (external < (Elf_External_Note *)((char *) pnotes + length))
|
while (external < (Elf_External_Note *)((char *) pnotes + length))
|
||||||
{
|
{
|
||||||
|
Elf_External_Note * next;
|
||||||
Elf32_Internal_Note inote;
|
Elf32_Internal_Note inote;
|
||||||
char * temp = NULL;
|
char * temp = NULL;
|
||||||
|
|
||||||
|
@ -9450,7 +9439,18 @@ process_corefile_note_segment (file, offset, length)
|
||||||
inote.descdata = inote.namedata + align_power (inote.namesz, 2);
|
inote.descdata = inote.namedata + align_power (inote.namesz, 2);
|
||||||
inote.descpos = offset + (inote.descdata - (char *) pnotes);
|
inote.descpos = offset + (inote.descdata - (char *) pnotes);
|
||||||
|
|
||||||
external = (Elf_External_Note *)(inote.descdata + align_power (inote.descsz, 2));
|
next = (Elf_External_Note *)(inote.descdata + align_power (inote.descsz, 2));
|
||||||
|
|
||||||
|
if (((char *) next) > (((char *) pnotes) + length))
|
||||||
|
{
|
||||||
|
warn (_("corrupt note found at offset %x into core notes\n"),
|
||||||
|
((char *) external) - ((char *) pnotes));
|
||||||
|
warn (_(" type: %x, namesize: %08lx, descsize: %08lx\n"),
|
||||||
|
inote.type, inote.namesz, inote.descsz);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
external = next;
|
||||||
|
|
||||||
/* Verify that name is null terminated. It appears that at least
|
/* Verify that name is null terminated. It appears that at least
|
||||||
one version of Linux (RedHat 6.0) generates corefiles that don't
|
one version of Linux (RedHat 6.0) generates corefiles that don't
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue