* elf-bfd.h (elf_discarded_section): Define.
* elflink.h (elf_link_input_bfd): Use it. (elf_reloc_symbol_deleted_p): Likewise. * elf64-alpha.c (elf64_alpha_relocate_section): Don't warn about overflows for pc relative relocs against discarded sections.
This commit is contained in:
parent
f94cac6552
commit
ed4de5e2e0
4 changed files with 28 additions and 16 deletions
|
@ -1,3 +1,12 @@
|
|||
2001-12-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* elf-bfd.h (elf_discarded_section): Define.
|
||||
* elflink.h (elf_link_input_bfd): Use it.
|
||||
(elf_reloc_symbol_deleted_p): Likewise.
|
||||
|
||||
* elf64-alpha.c (elf64_alpha_relocate_section): Don't warn about
|
||||
overflows for pc relative relocs against discarded sections.
|
||||
|
||||
2001-12-17 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
|
||||
|
||||
* elf32-mips.c (_bfd_mips_elf_relocate_section): Formatting.
|
||||
|
|
|
@ -883,6 +883,12 @@ struct bfd_elf_section_data
|
|||
#define elf_group_name(sec) (elf_section_data(sec)->group_name)
|
||||
#define elf_next_in_group(sec) (elf_section_data(sec)->next_in_group)
|
||||
|
||||
/* Return true if section has been discarded. */
|
||||
#define elf_discarded_section(sec) \
|
||||
(!bfd_is_abs_section(sec) \
|
||||
&& bfd_is_abs_section((sec)->output_section) \
|
||||
&& elf_section_data (sec)->sec_info_type != ELF_INFO_TYPE_MERGE)
|
||||
|
||||
#define get_elf_backend_data(abfd) \
|
||||
((struct elf_backend_data *) (abfd)->xvec->backend_data)
|
||||
|
||||
|
|
|
@ -3628,6 +3628,15 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||
{
|
||||
const char *name;
|
||||
|
||||
/* Don't warn if the overflow is due to pc relative reloc
|
||||
against discarded section. Section optimization code should
|
||||
handle it. */
|
||||
|
||||
if (r_symndx < symtab_hdr->sh_info
|
||||
&& sec != NULL && howto->pc_relative
|
||||
&& elf_discarded_section (sec))
|
||||
break;
|
||||
|
||||
if (h != NULL)
|
||||
name = h->root.root.root.string;
|
||||
else
|
||||
|
|
|
@ -6551,11 +6551,7 @@ elf_link_input_bfd (finfo, input_bfd)
|
|||
discarded section. */
|
||||
if ((h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak)
|
||||
&& ! bfd_is_abs_section (h->root.u.def.section)
|
||||
&& bfd_is_abs_section (h->root.u.def.section
|
||||
->output_section)
|
||||
&& (elf_section_data (h->root.u.def.section)
|
||||
->sec_info_type != ELF_INFO_TYPE_MERGE))
|
||||
&& elf_discarded_section (h->root.u.def.section))
|
||||
{
|
||||
#if BFD_VERSION_DATE < 20031005
|
||||
if ((o->flags & SEC_DEBUGGING) != 0)
|
||||
|
@ -6584,11 +6580,7 @@ elf_link_input_bfd (finfo, input_bfd)
|
|||
{
|
||||
asection *sec = finfo->sections[r_symndx];
|
||||
|
||||
if (sec != NULL
|
||||
&& ! bfd_is_abs_section (sec)
|
||||
&& bfd_is_abs_section (sec->output_section)
|
||||
&& (elf_section_data (sec)->sec_info_type
|
||||
!= ELF_INFO_TYPE_MERGE))
|
||||
if (sec != NULL && elf_discarded_section (sec))
|
||||
{
|
||||
#if BFD_VERSION_DATE < 20031005
|
||||
if ((o->flags & SEC_DEBUGGING) != 0
|
||||
|
@ -8085,9 +8077,7 @@ elf_reloc_symbol_deleted_p (offset, cookie)
|
|||
|
||||
if ((h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak)
|
||||
&& ! bfd_is_abs_section (h->root.u.def.section)
|
||||
&& bfd_is_abs_section (h->root.u.def.section
|
||||
->output_section))
|
||||
&& elf_discarded_section (h->root.u.def.section))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
|
@ -8103,9 +8093,7 @@ elf_reloc_symbol_deleted_p (offset, cookie)
|
|||
if (isym.st_shndx < SHN_LORESERVE || isym.st_shndx > SHN_HIRESERVE)
|
||||
{
|
||||
isec = section_from_elf_index (rcookie->abfd, isym.st_shndx);
|
||||
if (isec != NULL
|
||||
&& ! bfd_is_abs_section (isec)
|
||||
&& bfd_is_abs_section (isec->output_section))
|
||||
if (isec != NULL && elf_discarded_section (isec))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue