mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-29 16:38:05 +08:00
* elfcode.h (elf_link_add_object_symbols): Permit common and
indirect symbols in weakdefs BFD_ASSERT. * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Simplify BFD_ASSERT to permit some legal, but odd, cases. * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise. * elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Likewise.
This commit is contained in:
@ -2261,32 +2261,35 @@ elf_sort_hdrs (arg1, arg2)
|
||||
const Elf_Internal_Shdr *hdr1 = *(const Elf_Internal_Shdr **) arg1;
|
||||
const Elf_Internal_Shdr *hdr2 = *(const Elf_Internal_Shdr **) arg2;
|
||||
|
||||
#define TOEND(x) (((x)->sh_flags & SHF_ALLOC)==0)
|
||||
#define TOEND(x) (((x)->sh_flags & SHF_ALLOC)==0)
|
||||
|
||||
if (TOEND(hdr1))
|
||||
if (TOEND(hdr2))
|
||||
if (TOEND (hdr1))
|
||||
if (TOEND (hdr2))
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
|
||||
if (TOEND(hdr2))
|
||||
return -1;
|
||||
if (TOEND (hdr2))
|
||||
return -1;
|
||||
|
||||
if (hdr1->sh_addr < hdr2->sh_addr)
|
||||
return -1;
|
||||
else if (hdr1->sh_addr > hdr2->sh_addr)
|
||||
return 1;
|
||||
/* Put !SHT_NOBITS sections before SHT_NOBITS ones.
|
||||
The main loop in map_program_segments requires this. */
|
||||
ret = (hdr1->sh_type == SHT_NOBITS) - (hdr2->sh_type == SHT_NOBITS);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
if (hdr1->sh_addr < hdr2->sh_addr)
|
||||
return -1;
|
||||
else if (hdr1->sh_addr > hdr2->sh_addr)
|
||||
return 1;
|
||||
|
||||
/* Put !SHT_NOBITS sections before SHT_NOBITS ones.
|
||||
The main loop in map_program_segments requires this. */
|
||||
|
||||
ret = (hdr1->sh_type == SHT_NOBITS) - (hdr2->sh_type == SHT_NOBITS);
|
||||
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
if (hdr1->sh_size < hdr2->sh_size)
|
||||
return -1;
|
||||
return -1;
|
||||
if (hdr1->sh_size > hdr2->sh_size)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -4696,7 +4699,9 @@ elf_link_add_object_symbols (abfd, info)
|
||||
hlook->weakdef = NULL;
|
||||
|
||||
BFD_ASSERT (hlook->root.type == bfd_link_hash_defined
|
||||
|| hlook->root.type == bfd_link_hash_defweak);
|
||||
|| hlook->root.type == bfd_link_hash_defweak
|
||||
|| hlook->root.type == bfd_link_hash_common
|
||||
|| hlook->root.type == bfd_link_hash_indirect);
|
||||
slook = hlook->root.u.def.section;
|
||||
vlook = hlook->root.u.def.value;
|
||||
|
||||
|
Reference in New Issue
Block a user