mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-01 09:49:43 +08:00
2005-05-18 H.J. Lu <hongjiu.lu@intel.com>
* elf.c (group_signature): Check if the symbol table section is correct.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2005-05-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* elf.c (group_signature): Undo the last change. Check if the
|
||||||
|
symbol table section is correct.
|
||||||
|
|
||||||
2005-05-17 Zack Weinberg <zack@codesourcery.com>
|
2005-05-17 Zack Weinberg <zack@codesourcery.com>
|
||||||
|
|
||||||
* elf32-arm.c: Wherever possible, use official reloc names
|
* elf32-arm.c: Wherever possible, use official reloc names
|
||||||
|
22
bfd/elf.c
22
bfd/elf.c
@ -451,24 +451,12 @@ group_signature (bfd *abfd, Elf_Internal_Shdr *ghdr)
|
|||||||
unsigned char esym[sizeof (Elf64_External_Sym)];
|
unsigned char esym[sizeof (Elf64_External_Sym)];
|
||||||
Elf_External_Sym_Shndx eshndx;
|
Elf_External_Sym_Shndx eshndx;
|
||||||
Elf_Internal_Sym isym;
|
Elf_Internal_Sym isym;
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
if (ghdr == NULL)
|
/* First we need to ensure the symbol table is available. Make sure
|
||||||
return NULL;
|
that it is a symbol table section. */
|
||||||
|
hdr = elf_elfsections (abfd) [ghdr->sh_link];
|
||||||
/* If this section is linked to by other sections then it is a symbol or
|
if (hdr->sh_type != SHT_SYMTAB
|
||||||
string section which is masquerading as a group. This is a bad thing,
|
|| ! bfd_section_from_shdr (abfd, ghdr->sh_link))
|
||||||
and if we carry on to the call to bfd_section_from_shdr below we will
|
|
||||||
enter an infinite loop. So check now and break out if we detect this
|
|
||||||
case. See:
|
|
||||||
http://sources.redhat.com/ml/binutils/2005-05/msg00421.html
|
|
||||||
for a report of a case that tirggers this code. */
|
|
||||||
for (i = elf_numsections (abfd); i--;)
|
|
||||||
if (elf_elfsections (abfd) [elf_elfsections (abfd) [i]->sh_link] == ghdr)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
/* Next we need to ensure the symbol table is available. */
|
|
||||||
if (! bfd_section_from_shdr (abfd, ghdr->sh_link))
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Go read the symbol. */
|
/* Go read the symbol. */
|
||||||
|
Reference in New Issue
Block a user