Prevent a seg-fault from objdup when disassembling binaries which do not contain a symbol table.
PR 24643 * elf32-arm.c (arm_elf_find_function): Fail if the symol table is absent, or the bfd is not in the ELF formart. * elfnn-aarch64.c (aarch64_elf_find_function): Likewise.
This commit is contained in:
parent
9abca70219
commit
62e0492f57
3 changed files with 28 additions and 9 deletions
|
@ -1,3 +1,10 @@
|
|||
2019-06-12 Adam Lackorzymski <adam@os.inf.tu-dresden.de>
|
||||
|
||||
PR 24643
|
||||
* elf32-arm.c (arm_elf_find_function): Fail if the symol table is
|
||||
absent, or the bfd is not in the ELF formart.
|
||||
* elfnn-aarch64.c (aarch64_elf_find_function): Likewise.
|
||||
|
||||
2019-06-10 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
PR 24650
|
||||
|
|
|
@ -15983,12 +15983,12 @@ elf32_arm_is_target_special_symbol (bfd * abfd ATTRIBUTE_UNUSED, asymbol * sym)
|
|||
BFD_ARM_SPECIAL_SYM_TYPE_ANY);
|
||||
}
|
||||
|
||||
/* This is a copy of elf_find_function() from elf.c except that
|
||||
/* This is a version of _bfd_elf_find_function() from dwarf2.c except that
|
||||
ARM mapping symbols are ignored when looking for function names
|
||||
and STT_ARM_TFUNC is considered to a function type. */
|
||||
|
||||
static bfd_boolean
|
||||
arm_elf_find_function (bfd * abfd ATTRIBUTE_UNUSED,
|
||||
arm_elf_find_function (bfd * abfd,
|
||||
asymbol ** symbols,
|
||||
asection * section,
|
||||
bfd_vma offset,
|
||||
|
@ -16000,6 +16000,12 @@ arm_elf_find_function (bfd * abfd ATTRIBUTE_UNUSED,
|
|||
bfd_vma low_func = 0;
|
||||
asymbol ** p;
|
||||
|
||||
if (symbols == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
|
||||
return FALSE;
|
||||
|
||||
for (p = symbols; *p != NULL; p++)
|
||||
{
|
||||
elf_symbol_type *q;
|
||||
|
|
|
@ -7956,22 +7956,28 @@ elfNN_aarch64_is_target_special_symbol (bfd *abfd ATTRIBUTE_UNUSED,
|
|||
BFD_AARCH64_SPECIAL_SYM_TYPE_ANY);
|
||||
}
|
||||
|
||||
/* This is a copy of elf_find_function () from elf.c except that
|
||||
/* This is a version of _bfd_elf_find_function() from dwarf2.c except that
|
||||
AArch64 mapping symbols are ignored when looking for function names. */
|
||||
|
||||
static bfd_boolean
|
||||
aarch64_elf_find_function (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
asymbol **symbols,
|
||||
asection *section,
|
||||
bfd_vma offset,
|
||||
const char **filename_ptr,
|
||||
const char **functionname_ptr)
|
||||
aarch64_elf_find_function (bfd * abfd,
|
||||
asymbol ** symbols,
|
||||
asection * section,
|
||||
bfd_vma offset,
|
||||
const char ** filename_ptr,
|
||||
const char ** functionname_ptr)
|
||||
{
|
||||
const char *filename = NULL;
|
||||
asymbol *func = NULL;
|
||||
bfd_vma low_func = 0;
|
||||
asymbol **p;
|
||||
|
||||
if (symbols == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
|
||||
return FALSE;
|
||||
|
||||
for (p = symbols; *p != NULL; p++)
|
||||
{
|
||||
elf_symbol_type *q;
|
||||
|
|
Loading…
Add table
Reference in a new issue