mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-25 21:19:54 +00:00
bfd/
* elf32-ppc.c (ppc_elf_check_relocs): Don't bother with dynamic relocs in non-SEC_ALLOC sections. (ppc_elf_gc_sweep_hook): Likewise. (ppc_elf_relax_section): Likewise. (ppc_elf_relocate_section): Likewise. ld/testsuite/ * ld-powerpc/reloc.d: Update to suit removal of non-alloc relocs.
This commit is contained in:
parent
eed0d89a39
commit
c87b5a93b2
@ -1,3 +1,11 @@
|
||||
2005-04-19 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* elf32-ppc.c (ppc_elf_check_relocs): Don't bother with
|
||||
dynamic relocs in non-SEC_ALLOC sections.
|
||||
(ppc_elf_gc_sweep_hook): Likewise.
|
||||
(ppc_elf_relax_section): Likewise.
|
||||
(ppc_elf_relocate_section): Likewise.
|
||||
|
||||
2005-04-18 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* aix5ppc-core.c (xcoff64_core_p): Fix compile time warning
|
||||
|
@ -2581,6 +2581,15 @@ ppc_elf_check_relocs (bfd *abfd,
|
||||
if (info->relocatable)
|
||||
return TRUE;
|
||||
|
||||
/* Don't do anything special with non-loaded, non-alloced sections.
|
||||
In particular, any relocs in such sections should not affect GOT
|
||||
and PLT reference counting (ie. we don't allow them to create GOT
|
||||
or PLT entries), there's no possibility or desire to optimize TLS
|
||||
relocs, and there's not much point in propagating relocs to shared
|
||||
libs that the dynamic linker won't relocate. */
|
||||
if ((sec->flags & SEC_ALLOC) == 0)
|
||||
return TRUE;
|
||||
|
||||
#ifdef DEBUG
|
||||
_bfd_error_handler ("ppc_elf_check_relocs called for section %A in %B",
|
||||
sec, abfd);
|
||||
@ -2902,7 +2911,6 @@ ppc_elf_check_relocs (bfd *abfd,
|
||||
|| !h->def_regular))))
|
||||
|| (ELIMINATE_COPY_RELOCS
|
||||
&& !info->shared
|
||||
&& (sec->flags & SEC_ALLOC) != 0
|
||||
&& h != NULL
|
||||
&& (h->root.type == bfd_link_hash_defweak
|
||||
|| !h->def_regular)))
|
||||
@ -2941,9 +2949,8 @@ ppc_elf_check_relocs (bfd *abfd,
|
||||
|
||||
sreloc = bfd_make_section (htab->elf.dynobj, name);
|
||||
flags = (SEC_HAS_CONTENTS | SEC_READONLY
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED);
|
||||
if ((sec->flags & SEC_ALLOC) != 0)
|
||||
flags |= SEC_ALLOC | SEC_LOAD;
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_ALLOC | SEC_LOAD);
|
||||
if (sreloc == NULL
|
||||
|| ! bfd_set_section_flags (htab->elf.dynobj,
|
||||
sreloc, flags)
|
||||
@ -3147,6 +3154,9 @@ ppc_elf_gc_sweep_hook (bfd *abfd,
|
||||
bfd_signed_vma *local_got_refcounts;
|
||||
const Elf_Internal_Rela *rel, *relend;
|
||||
|
||||
if ((sec->flags & SEC_ALLOC) == 0)
|
||||
return TRUE;
|
||||
|
||||
elf_section_data (sec)->local_dynrel = NULL;
|
||||
|
||||
htab = ppc_elf_hash_table (info);
|
||||
@ -4185,8 +4195,11 @@ ppc_elf_relax_section (bfd *abfd,
|
||||
|
||||
*again = FALSE;
|
||||
|
||||
/* Nothing to do if there are no relocations. */
|
||||
if ((isec->flags & SEC_RELOC) == 0 || isec->reloc_count == 0)
|
||||
/* Nothing to do if there are no relocations, and no need to do
|
||||
anything with non-alloc sections. */
|
||||
if ((isec->flags & SEC_ALLOC) == 0
|
||||
|| (isec->flags & SEC_RELOC) == 0
|
||||
|| isec->reloc_count == 0)
|
||||
return TRUE;
|
||||
|
||||
trampoff = (isec->size + 3) & (bfd_vma) -4;
|
||||
@ -5354,6 +5367,10 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
||||
break;
|
||||
/* Fall thru. */
|
||||
|
||||
if ((input_section->flags & SEC_ALLOC) == 0)
|
||||
break;
|
||||
/* Fall thru. */
|
||||
|
||||
if ((info->shared
|
||||
&& (h == NULL
|
||||
|| ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
||||
@ -5362,7 +5379,6 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
||||
|| !SYMBOL_CALLS_LOCAL (info, h)))
|
||||
|| (ELIMINATE_COPY_RELOCS
|
||||
&& !info->shared
|
||||
&& (input_section->flags & SEC_ALLOC) != 0
|
||||
&& h != NULL
|
||||
&& h->dynindx != -1
|
||||
&& !h->non_got_ref
|
||||
|
@ -1,3 +1,7 @@
|
||||
2005-04-19 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* ld-powerpc/reloc.d: Update to suit removal of non-alloc relocs.
|
||||
|
||||
2005-04-15 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* ld-d10v/default_layout.d: Update for unused section removal.
|
||||
|
@ -1,6 +1,5 @@
|
||||
# Test that orphan reloc sections are placed before .rela.plt even when
|
||||
# .rela.plt is the only reloc section. Also tests that orphan non-alloc
|
||||
# reloc sections go after alloc sections.
|
||||
# .rela.plt is the only reloc section.
|
||||
|
||||
#source: reloc.s
|
||||
#ld: -shared -z nocombreloc
|
||||
@ -11,6 +10,4 @@
|
||||
.*\.relaplatypus.*
|
||||
#...
|
||||
.*\.rela\.plt.*
|
||||
#...
|
||||
.*\.relaechidna.*
|
||||
#pass
|
||||
|
Loading…
Reference in New Issue
Block a user