2009-03-19 H.J. Lu <hongjiu.lu@intel.com>

* readelf.c (debug_apply_relocations): Check relocations
	against STT_SECTION symbol.
This commit is contained in:
H.J. Lu 2009-03-19 14:42:52 +00:00
parent 982807ce66
commit 55f25fc330
2 changed files with 18 additions and 13 deletions

View file

@ -1,3 +1,8 @@
2009-03-19 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (debug_apply_relocations): Check relocations
against STT_SECTION symbol.
2009-03-18 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (debug_apply_relocations): Allow relocations

View file

@ -8387,20 +8387,20 @@ debug_apply_relocations (void * file,
sym = symtab + get_reloc_symindex (rp->r_info);
/* If the reloc has a symbol associated with it,
make sure that it is of an appropriate type. */
if (sym != symtab
&& ELF_ST_TYPE (sym->st_info) != STT_SECTION
/* Relocations against symbols without type can happen.
make sure that it is of an appropriate type.
Relocations against symbols without type can happen.
Gcc -feliminate-dwarf2-dups may generate symbols
without type for debug info. */
&& ELF_ST_TYPE (sym->st_info) != STT_NOTYPE
/* Icc generates relocations against function symbols
instead of local labels. */
&& ELF_ST_TYPE (sym->st_info) != STT_FUNC
/* Relocations against object symbols can happen,
eg when referencing a global array. For an
example of this see the _clz.o binary in libgcc.a. */
&& ELF_ST_TYPE (sym->st_info) != STT_OBJECT)
without type for debug info.
Icc generates relocations against function symbols
instead of local labels.
Relocations against object symbols can happen, eg when
referencing a global array. For an example of this see
the _clz.o binary in libgcc.a. */
if (sym != symtab
&& ELF_ST_TYPE (sym->st_info) > STT_SECTION)
{
warn (_("skipping unexpected symbol type %s in %ld'th relocation in section %s\n"),
get_symbol_type (ELF_ST_TYPE (sym->st_info)),