mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 18:39:34 +08:00
Fix problems with the AArch64 linker exposed by testing it with sanitization enabled.
bfd * elfnn-aarch64.c (_bfd_aarch64_erratum_835769_scan): Only sort the data map if there are entries in it. (_bfd_aarch64_erratum_843419_scan): Likewise. opcodes * aarch64-dis.c (get_sym_code_type): Return FALSE for non-ELF symbols.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2020-08-21 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* elfnn-aarch64.c (_bfd_aarch64_erratum_835769_scan): Only sort
|
||||||
|
the data map if there are entries in it.
|
||||||
|
(_bfd_aarch64_erratum_843419_scan): Likewise.
|
||||||
|
|
||||||
2020-08-21 Jan Beulich <jbeulich@suse.com>
|
2020-08-21 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
* peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Check
|
* peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Check
|
||||||
|
@ -3925,8 +3925,9 @@ _bfd_aarch64_erratum_835769_scan (bfd *input_bfd,
|
|||||||
|
|
||||||
sec_data = elf_aarch64_section_data (section);
|
sec_data = elf_aarch64_section_data (section);
|
||||||
|
|
||||||
qsort (sec_data->map, sec_data->mapcount,
|
if (sec_data->mapcount)
|
||||||
sizeof (elf_aarch64_section_map), elf_aarch64_compare_mapping);
|
qsort (sec_data->map, sec_data->mapcount,
|
||||||
|
sizeof (elf_aarch64_section_map), elf_aarch64_compare_mapping);
|
||||||
|
|
||||||
for (span = 0; span < sec_data->mapcount; span++)
|
for (span = 0; span < sec_data->mapcount; span++)
|
||||||
{
|
{
|
||||||
@ -4209,8 +4210,9 @@ _bfd_aarch64_erratum_843419_scan (bfd *input_bfd, asection *section,
|
|||||||
|
|
||||||
sec_data = elf_aarch64_section_data (section);
|
sec_data = elf_aarch64_section_data (section);
|
||||||
|
|
||||||
qsort (sec_data->map, sec_data->mapcount,
|
if (sec_data->mapcount)
|
||||||
sizeof (elf_aarch64_section_map), elf_aarch64_compare_mapping);
|
qsort (sec_data->map, sec_data->mapcount,
|
||||||
|
sizeof (elf_aarch64_section_map), elf_aarch64_compare_mapping);
|
||||||
|
|
||||||
for (span = 0; span < sec_data->mapcount; span++)
|
for (span = 0; span < sec_data->mapcount; span++)
|
||||||
{
|
{
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2020-08-21 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* aarch64-dis.c (get_sym_code_type): Return FALSE for non-ELF
|
||||||
|
symbols.
|
||||||
|
|
||||||
2020-08-21 Cooper Qu <cooper.qu@linux.alibaba.com>
|
2020-08-21 Cooper Qu <cooper.qu@linux.alibaba.com>
|
||||||
|
|
||||||
* csky-opc.h (csky_v2_opcodes): Add two operands form for bloop.
|
* csky-opc.h (csky_v2_opcodes): Add two operands form for bloop.
|
||||||
|
@ -3321,6 +3321,7 @@ static int
|
|||||||
get_sym_code_type (struct disassemble_info *info, int n,
|
get_sym_code_type (struct disassemble_info *info, int n,
|
||||||
enum map_type *map_type)
|
enum map_type *map_type)
|
||||||
{
|
{
|
||||||
|
asymbol * as;
|
||||||
elf_symbol_type *es;
|
elf_symbol_type *es;
|
||||||
unsigned int type;
|
unsigned int type;
|
||||||
const char *name;
|
const char *name;
|
||||||
@ -3329,7 +3330,14 @@ get_sym_code_type (struct disassemble_info *info, int n,
|
|||||||
if (info->section != NULL && info->section != info->symtab[n]->section)
|
if (info->section != NULL && info->section != info->symtab[n]->section)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
es = *(elf_symbol_type **)(info->symtab + n);
|
if (n >= info->symtab_size)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
as = info->symtab[n];
|
||||||
|
if (bfd_asymbol_flavour (as) != bfd_target_elf_flavour)
|
||||||
|
return FALSE;
|
||||||
|
es = (elf_symbol_type *) as;
|
||||||
|
|
||||||
type = ELF_ST_TYPE (es->internal_elf_sym.st_info);
|
type = ELF_ST_TYPE (es->internal_elf_sym.st_info);
|
||||||
|
|
||||||
/* If the symbol has function type then use that. */
|
/* If the symbol has function type then use that. */
|
||||||
|
Reference in New Issue
Block a user