mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-17 13:10:12 +08:00
* section.c (bfd_get_linker_section): New function.
* elf32-arm.c: When retrieving SEC_LINKER_CREATED sections, use the above throughout rather than bfd_get_section_by_name. Use bfd_make_section_anyway rather than bfd_make_section when creating them. * elf32-bfin.c: Likewise. * elf32-cr16.c: Likewise. * elf32-cris.c: Likewise. * elf32-frv.c: Likewise. * elf32-hppa.c: Likewise. * elf32-i370.c: Likewise. * elf32-i386.c: Likewise. * elf32-lm32.c: Likewise. * elf32-m32c.c: Likewise. * elf32-m32r.c: Likewise. * elf32-m68k.c: Likewise. * elf32-microblaze.c: Likewise. * elf32-ppc.c: Likewise. * elf32-rl78.c: Likewise. * elf32-s390.c: Likewise. * elf32-score.c: Likewise. * elf32-score7.c: Likewise. * elf32-sh.c: Likewise. * elf32-tic6x.c: Likewise. * elf32-tilepro.c: Likewise. * elf32-vax.c: Likewise. * elf32-xstormy16.c: Likewise. * elf32-xtensa.c: Likewise. * elf64-alpha.c: Likewise. * elf64-hppa.c: Likewise. * elf64-ia64-vms.c: Likewise. * elf64-ppc.c: Likewise. * elf64-s390.c: Likewise. * elf64-sh64.c: Likewise. * elf64-sparc.c: Likewise. * elf64-x86-64.c: Likewise. * elfnn-ia64.c: Likewise. * elfxx-mips.c: Likewise. * elfxx-sparc.c: Likewise. * elfxx-tilegx.c: Likewise. * elflink.c: Likewise. * elf-vxworks.c: Likewise. * elf-m10300.c: Likewise. Also make use of htab plt, got and gotplt shortcuts. * bfd-in2.h: Regenerate. * elf32-lm32.c (lm32_elf_check_relocs): Use the correct bfd when calling create_rofixup_section. * elflink.c (bfd_elf_final_link): Simplify test for .dynstr.
This commit is contained in:
parent
b6ba681cda
commit
3d4d4302b9
@ -1,3 +1,54 @@
|
||||
2012-06-29 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* section.c (bfd_get_linker_section): New function.
|
||||
* elf32-arm.c: When retrieving SEC_LINKER_CREATED sections, use
|
||||
the above throughout rather than bfd_get_section_by_name. Use
|
||||
bfd_make_section_anyway rather than bfd_make_section when creating
|
||||
them.
|
||||
* elf32-bfin.c: Likewise.
|
||||
* elf32-cr16.c: Likewise.
|
||||
* elf32-cris.c: Likewise.
|
||||
* elf32-frv.c: Likewise.
|
||||
* elf32-hppa.c: Likewise.
|
||||
* elf32-i370.c: Likewise.
|
||||
* elf32-i386.c: Likewise.
|
||||
* elf32-lm32.c: Likewise.
|
||||
* elf32-m32c.c: Likewise.
|
||||
* elf32-m32r.c: Likewise.
|
||||
* elf32-m68k.c: Likewise.
|
||||
* elf32-microblaze.c: Likewise.
|
||||
* elf32-ppc.c: Likewise.
|
||||
* elf32-rl78.c: Likewise.
|
||||
* elf32-s390.c: Likewise.
|
||||
* elf32-score.c: Likewise.
|
||||
* elf32-score7.c: Likewise.
|
||||
* elf32-sh.c: Likewise.
|
||||
* elf32-tic6x.c: Likewise.
|
||||
* elf32-tilepro.c: Likewise.
|
||||
* elf32-vax.c: Likewise.
|
||||
* elf32-xstormy16.c: Likewise.
|
||||
* elf32-xtensa.c: Likewise.
|
||||
* elf64-alpha.c: Likewise.
|
||||
* elf64-hppa.c: Likewise.
|
||||
* elf64-ia64-vms.c: Likewise.
|
||||
* elf64-ppc.c: Likewise.
|
||||
* elf64-s390.c: Likewise.
|
||||
* elf64-sh64.c: Likewise.
|
||||
* elf64-sparc.c: Likewise.
|
||||
* elf64-x86-64.c: Likewise.
|
||||
* elfnn-ia64.c: Likewise.
|
||||
* elfxx-mips.c: Likewise.
|
||||
* elfxx-sparc.c: Likewise.
|
||||
* elfxx-tilegx.c: Likewise.
|
||||
* elflink.c: Likewise.
|
||||
* elf-vxworks.c: Likewise.
|
||||
* elf-m10300.c: Likewise. Also make use of htab plt, got and
|
||||
gotplt shortcuts.
|
||||
* bfd-in2.h: Regenerate.
|
||||
* elf32-lm32.c (lm32_elf_check_relocs): Use the correct bfd when
|
||||
calling create_rofixup_section.
|
||||
* elflink.c (bfd_elf_final_link): Simplify test for .dynstr.
|
||||
|
||||
2012-06-29 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf32-sh.c (sh_elf_create_dynamic_sections): Don't create .rela
|
||||
|
@ -1707,6 +1707,8 @@ asection *bfd_get_section_by_name (bfd *abfd, const char *name);
|
||||
|
||||
asection *bfd_get_next_section_by_name (asection *sec);
|
||||
|
||||
asection *bfd_get_linker_section (bfd *abfd, const char *name);
|
||||
|
||||
asection *bfd_get_section_by_name_if
|
||||
(bfd *abfd,
|
||||
const char *name,
|
||||
|
143
bfd/elf-m10300.c
143
bfd/elf-m10300.c
@ -690,10 +690,12 @@ _bfd_mn10300_elf_create_got_section (bfd * abfd,
|
||||
asection * s;
|
||||
struct elf_link_hash_entry * h;
|
||||
const struct elf_backend_data * bed = get_elf_backend_data (abfd);
|
||||
struct elf_link_hash_table *htab;
|
||||
int ptralign;
|
||||
|
||||
/* This function may be called more than once. */
|
||||
if (bfd_get_section_by_name (abfd, ".got") != NULL)
|
||||
htab = elf_hash_table (info);
|
||||
if (htab->sgot != NULL)
|
||||
return TRUE;
|
||||
|
||||
switch (bed->s->arch_size)
|
||||
@ -721,7 +723,8 @@ _bfd_mn10300_elf_create_got_section (bfd * abfd,
|
||||
if (bed->plt_readonly)
|
||||
pltflags |= SEC_READONLY;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".plt", pltflags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
|
||||
htab->splt = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
|
||||
return FALSE;
|
||||
@ -732,19 +735,21 @@ _bfd_mn10300_elf_create_got_section (bfd * abfd,
|
||||
{
|
||||
h = _bfd_elf_define_linkage_sym (abfd, info, s,
|
||||
"_PROCEDURE_LINKAGE_TABLE_");
|
||||
elf_hash_table (info)->hplt = h;
|
||||
htab->hplt = h;
|
||||
if (h == NULL)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".got", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
|
||||
htab->sgot = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
|
||||
if (bed->want_got_plt)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd, ".got.plt", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
|
||||
htab->sgotplt = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
@ -755,7 +760,7 @@ _bfd_mn10300_elf_create_got_section (bfd * abfd,
|
||||
because we don't want to define the symbol if we are not creating
|
||||
a global offset table. */
|
||||
h = _bfd_elf_define_linkage_sym (abfd, info, s, "_GLOBAL_OFFSET_TABLE_");
|
||||
elf_hash_table (info)->hgot = h;
|
||||
htab->hgot = h;
|
||||
if (h == NULL)
|
||||
return FALSE;
|
||||
|
||||
@ -1160,24 +1165,22 @@ mn10300_elf_check_relocs (bfd *abfd,
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = htab->root.sgot;
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
if (srelgot == NULL
|
||||
&& (h != NULL || info->shared))
|
||||
{
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (srelgot == NULL)
|
||||
{
|
||||
srelgot = bfd_make_section_with_flags (dynobj,
|
||||
".rela.got",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_READONLY);
|
||||
srelgot = bfd_make_section_anyway_with_flags (dynobj,
|
||||
".rela.got",
|
||||
flags);
|
||||
if (srelgot == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, srelgot, 2))
|
||||
goto fail;
|
||||
@ -1669,8 +1672,7 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
return bfd_reloc_dangerous;
|
||||
|
||||
/* Use global offset table as symbol value. */
|
||||
value = bfd_get_section_by_name (dynobj,
|
||||
".got")->output_section->vma;
|
||||
value = htab->root.sgot->output_section->vma;
|
||||
value -= (input_section->output_section->vma
|
||||
+ input_section->output_offset);
|
||||
value -= offset;
|
||||
@ -1684,8 +1686,7 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
return bfd_reloc_dangerous;
|
||||
|
||||
/* Use global offset table as symbol value. */
|
||||
value = bfd_get_section_by_name (dynobj,
|
||||
".got")->output_section->vma;
|
||||
value = htab->root.sgot->output_section->vma;
|
||||
value -= (input_section->output_section->vma
|
||||
+ input_section->output_offset);
|
||||
value -= offset;
|
||||
@ -1701,8 +1702,7 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
if (dynobj == NULL)
|
||||
return bfd_reloc_dangerous;
|
||||
|
||||
value -= bfd_get_section_by_name (dynobj,
|
||||
".got")->output_section->vma;
|
||||
value -= htab->root.sgot->output_section->vma;
|
||||
value += addend;
|
||||
|
||||
bfd_put_32 (input_bfd, value, hit_data);
|
||||
@ -1712,8 +1712,7 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
if (dynobj == NULL)
|
||||
return bfd_reloc_dangerous;
|
||||
|
||||
value -= bfd_get_section_by_name (dynobj,
|
||||
".got")->output_section->vma;
|
||||
value -= htab->root.sgot->output_section->vma;
|
||||
value += addend;
|
||||
|
||||
if ((long) value > 0x7fffff || (long) value < -0x800000)
|
||||
@ -1728,8 +1727,7 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
if (dynobj == NULL)
|
||||
return bfd_reloc_dangerous;
|
||||
|
||||
value -= bfd_get_section_by_name (dynobj,
|
||||
".got")->output_section->vma;
|
||||
value -= htab->root.sgot->output_section->vma;
|
||||
value += addend;
|
||||
|
||||
if ((long) value > 0x7fff || (long) value < -0x8000)
|
||||
@ -1747,8 +1745,7 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
if (dynobj == NULL)
|
||||
return bfd_reloc_dangerous;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
|
||||
splt = htab->root.splt;
|
||||
value = (splt->output_section->vma
|
||||
+ splt->output_offset
|
||||
+ h->plt.offset) - value;
|
||||
@ -1771,8 +1768,7 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
if (dynobj == NULL)
|
||||
return bfd_reloc_dangerous;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
|
||||
splt = htab->root.splt;
|
||||
value = (splt->output_section->vma
|
||||
+ splt->output_offset
|
||||
+ h->plt.offset) - value;
|
||||
@ -1803,15 +1799,14 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
if (dynobj == NULL)
|
||||
return bfd_reloc_dangerous;
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
|
||||
sgot = htab->root.sgot;
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
value = htab->tls_ldm_got.offset + sgot->output_offset;
|
||||
bfd_put_32 (input_bfd, value, hit_data);
|
||||
|
||||
if (!htab->tls_ldm_got.rel_emitted)
|
||||
{
|
||||
asection * srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
asection * srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
Elf_Internal_Rela rel;
|
||||
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
@ -1843,8 +1838,7 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
if (dynobj == NULL)
|
||||
return bfd_reloc_dangerous;
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
|
||||
sgot = htab->root.sgot;
|
||||
if (r_type == R_MN10300_TLS_GD)
|
||||
value = dtpoff (info, value);
|
||||
|
||||
@ -1892,7 +1886,7 @@ mn10300_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
asection * srelgot;
|
||||
Elf_Internal_Rela outrel;
|
||||
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
|
||||
outrel.r_offset = (sgot->output_section->vma
|
||||
@ -3486,9 +3480,7 @@ mn10300_elf_relax_section (bfd *abfd,
|
||||
{
|
||||
asection * splt;
|
||||
|
||||
splt = bfd_get_section_by_name (elf_hash_table (link_info)
|
||||
->dynobj, ".plt");
|
||||
|
||||
splt = hash_table->root.splt;
|
||||
value = ((splt->output_section->vma
|
||||
+ splt->output_offset
|
||||
+ h->root.plt.offset)
|
||||
@ -3928,9 +3920,7 @@ mn10300_elf_relax_section (bfd *abfd,
|
||||
{
|
||||
asection * sgot;
|
||||
|
||||
sgot = bfd_get_section_by_name (elf_hash_table (link_info)
|
||||
->dynobj, ".got");
|
||||
|
||||
sgot = hash_table->root.sgot;
|
||||
if (ELF32_R_TYPE (irel->r_info) == (int) R_MN10300_GOT32)
|
||||
{
|
||||
value = sgot->output_offset;
|
||||
@ -4810,6 +4800,7 @@ _bfd_mn10300_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
flagword flags;
|
||||
asection * s;
|
||||
const struct elf_backend_data * bed = get_elf_backend_data (abfd);
|
||||
struct elf32_mn10300_link_hash_table *htab = elf32_mn10300_hash_table (info);
|
||||
int ptralign = 0;
|
||||
|
||||
switch (bed->s->arch_size)
|
||||
@ -4832,10 +4823,11 @@ _bfd_mn10300_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED);
|
||||
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.plt" : ".rel.plt"),
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.plt" : ".rel.plt"),
|
||||
flags | SEC_READONLY);
|
||||
htab->root.srelplt = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
@ -4851,8 +4843,8 @@ _bfd_mn10300_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
image and use a R_*_COPY reloc to tell the dynamic linker to
|
||||
initialize them at run time. The linker script puts the .dynbss
|
||||
section into the .bss section of the final image. */
|
||||
s = bfd_make_section_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
if (s == NULL)
|
||||
return FALSE;
|
||||
|
||||
@ -4869,10 +4861,10 @@ _bfd_mn10300_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
copy relocs. */
|
||||
if (! info->shared)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
@ -4892,10 +4884,11 @@ static bfd_boolean
|
||||
_bfd_mn10300_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
|
||||
struct elf_link_hash_entry * h)
|
||||
{
|
||||
struct elf32_mn10300_link_hash_table *htab = elf32_mn10300_hash_table (info);
|
||||
bfd * dynobj;
|
||||
asection * s;
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
dynobj = htab->root.dynobj;
|
||||
|
||||
/* Make sure we know what is going on here. */
|
||||
BFD_ASSERT (dynobj != NULL
|
||||
@ -4931,7 +4924,7 @@ _bfd_mn10300_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".plt");
|
||||
s = htab->root.splt;
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* If this is the first .plt entry, make room for the special
|
||||
@ -4958,12 +4951,12 @@ _bfd_mn10300_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
|
||||
|
||||
/* We also need to make an entry in the .got.plt section, which
|
||||
will be placed in the .got section by the linker script. */
|
||||
s = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
s = htab->root.sgotplt;
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += 4;
|
||||
|
||||
/* We also need to make an entry in the .rela.plt section. */
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += sizeof (Elf32_External_Rela);
|
||||
|
||||
@ -5007,7 +5000,7 @@ _bfd_mn10300_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
|
||||
both the dynamic object and the regular object will refer to the
|
||||
same memory location for the variable. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
s = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* We must generate a R_MN10300_COPY reloc to tell the dynamic linker to
|
||||
@ -5018,7 +5011,7 @@ _bfd_mn10300_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
|
||||
{
|
||||
asection * srel;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (srel != NULL);
|
||||
srel->size += sizeof (Elf32_External_Rela);
|
||||
h->needs_copy = 1;
|
||||
@ -5040,7 +5033,7 @@ _bfd_mn10300_elf_size_dynamic_sections (bfd * output_bfd,
|
||||
bfd_boolean relocs;
|
||||
bfd_boolean reltext;
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
dynobj = htab->root.dynobj;
|
||||
BFD_ASSERT (dynobj != NULL);
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
@ -5048,7 +5041,7 @@ _bfd_mn10300_elf_size_dynamic_sections (bfd * output_bfd,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -5061,14 +5054,14 @@ _bfd_mn10300_elf_size_dynamic_sections (bfd * output_bfd,
|
||||
not actually use these entries. Reset the size of .rela.got,
|
||||
which will cause it to get stripped from the output file
|
||||
below. */
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
s = htab->root.sgot;
|
||||
if (s != NULL)
|
||||
s->size = 0;
|
||||
}
|
||||
|
||||
if (htab->tls_ldm_got.refcount > 0)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += sizeof (Elf32_External_Rela);
|
||||
}
|
||||
@ -5211,9 +5204,10 @@ _bfd_mn10300_elf_finish_dynamic_symbol (bfd * output_bfd,
|
||||
struct elf_link_hash_entry * h,
|
||||
Elf_Internal_Sym * sym)
|
||||
{
|
||||
struct elf32_mn10300_link_hash_table *htab = elf32_mn10300_hash_table (info);
|
||||
bfd * dynobj;
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
dynobj = htab->root.dynobj;
|
||||
|
||||
if (h->plt.offset != (bfd_vma) -1)
|
||||
{
|
||||
@ -5229,9 +5223,9 @@ _bfd_mn10300_elf_finish_dynamic_symbol (bfd * output_bfd,
|
||||
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
splt = htab->root.splt;
|
||||
sgot = htab->root.sgotplt;
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (splt != NULL && sgot != NULL && srel != NULL);
|
||||
|
||||
/* Get the index in the procedure linkage table which
|
||||
@ -5308,8 +5302,8 @@ _bfd_mn10300_elf_finish_dynamic_symbol (bfd * output_bfd,
|
||||
Elf_Internal_Rela rel;
|
||||
|
||||
/* This symbol has an entry in the global offset table. Set it up. */
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = htab->root.sgot;
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (sgot != NULL && srel != NULL);
|
||||
|
||||
rel.r_offset = (sgot->output_section->vma
|
||||
@ -5386,8 +5380,7 @@ _bfd_mn10300_elf_finish_dynamic_symbol (bfd * output_bfd,
|
||||
&& (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak));
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rel.r_offset = (h->root.u.def.value
|
||||
@ -5418,12 +5411,12 @@ _bfd_mn10300_elf_finish_dynamic_sections (bfd * output_bfd,
|
||||
bfd * dynobj;
|
||||
asection * sgot;
|
||||
asection * sdyn;
|
||||
struct elf32_mn10300_link_hash_table *htab = elf32_mn10300_hash_table (info);
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
dynobj = htab->root.dynobj;
|
||||
sgot = htab->root.sgotplt;
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
@ -5488,7 +5481,7 @@ _bfd_mn10300_elf_finish_dynamic_sections (bfd * output_bfd,
|
||||
}
|
||||
|
||||
/* Fill in the first entry in the procedure linkage table. */
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = htab->root.splt;
|
||||
if (splt && splt->size > 0)
|
||||
{
|
||||
if (info->shared)
|
||||
|
@ -91,12 +91,13 @@ elf_vxworks_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info,
|
||||
|
||||
if (!info->shared)
|
||||
{
|
||||
s = bfd_make_section_with_flags (dynobj,
|
||||
bed->default_use_rela_p
|
||||
? ".rela.plt.unloaded"
|
||||
: ".rel.plt.unloaded",
|
||||
SEC_HAS_CONTENTS | SEC_IN_MEMORY
|
||||
| SEC_READONLY | SEC_LINKER_CREATED);
|
||||
s = bfd_make_section_anyway_with_flags (dynobj,
|
||||
bed->default_use_rela_p
|
||||
? ".rela.plt.unloaded"
|
||||
: ".rel.plt.unloaded",
|
||||
SEC_HAS_CONTENTS | SEC_IN_MEMORY
|
||||
| SEC_READONLY
|
||||
| SEC_LINKER_CREATED);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align))
|
||||
return FALSE;
|
||||
|
@ -3256,8 +3256,8 @@ create_ifunc_sections (struct bfd_link_info *info)
|
||||
|
||||
if (htab->root.iplt == NULL)
|
||||
{
|
||||
s = bfd_make_section_with_flags (dynobj, ".iplt",
|
||||
flags | SEC_READONLY | SEC_CODE);
|
||||
s = bfd_make_section_anyway_with_flags (dynobj, ".iplt",
|
||||
flags | SEC_READONLY | SEC_CODE);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, s, bed->plt_alignment))
|
||||
return FALSE;
|
||||
@ -3266,8 +3266,9 @@ create_ifunc_sections (struct bfd_link_info *info)
|
||||
|
||||
if (htab->root.irelplt == NULL)
|
||||
{
|
||||
s = bfd_make_section_with_flags (dynobj, RELOC_SECTION (htab, ".iplt"),
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (dynobj,
|
||||
RELOC_SECTION (htab, ".iplt"),
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align))
|
||||
return FALSE;
|
||||
@ -3276,7 +3277,7 @@ create_ifunc_sections (struct bfd_link_info *info)
|
||||
|
||||
if (htab->root.igotplt == NULL)
|
||||
{
|
||||
s = bfd_make_section_with_flags (dynobj, ".igot.plt", flags);
|
||||
s = bfd_make_section_anyway_with_flags (dynobj, ".igot.plt", flags);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align))
|
||||
return FALSE;
|
||||
@ -3304,10 +3305,10 @@ elf32_arm_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
|
||||
if (!_bfd_elf_create_dynamic_sections (dynobj, info))
|
||||
return FALSE;
|
||||
|
||||
htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!info->shared)
|
||||
htab->srelbss = bfd_get_section_by_name (dynobj,
|
||||
RELOC_SECTION (htab, ".bss"));
|
||||
htab->srelbss = bfd_get_linker_section (dynobj,
|
||||
RELOC_SECTION (htab, ".bss"));
|
||||
|
||||
if (htab->vxworks_p)
|
||||
{
|
||||
@ -5654,7 +5655,7 @@ arm_allocate_glue_section_space (bfd * abfd, bfd_size_type size, const char * na
|
||||
/* Do not include empty glue sections in the output. */
|
||||
if (abfd != NULL)
|
||||
{
|
||||
s = bfd_get_section_by_name (abfd, name);
|
||||
s = bfd_get_linker_section (abfd, name);
|
||||
if (s != NULL)
|
||||
s->flags |= SEC_EXCLUDE;
|
||||
}
|
||||
@ -5663,7 +5664,7 @@ arm_allocate_glue_section_space (bfd * abfd, bfd_size_type size, const char * na
|
||||
|
||||
BFD_ASSERT (abfd != NULL);
|
||||
|
||||
s = bfd_get_section_by_name (abfd, name);
|
||||
s = bfd_get_linker_section (abfd, name);
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
contents = (bfd_byte *) bfd_alloc (abfd, size);
|
||||
@ -5719,7 +5720,7 @@ record_arm_to_thumb_glue (struct bfd_link_info * link_info,
|
||||
BFD_ASSERT (globals != NULL);
|
||||
BFD_ASSERT (globals->bfd_of_glue_owner != NULL);
|
||||
|
||||
s = bfd_get_section_by_name
|
||||
s = bfd_get_linker_section
|
||||
(globals->bfd_of_glue_owner, ARM2THUMB_GLUE_SECTION_NAME);
|
||||
|
||||
BFD_ASSERT (s != NULL);
|
||||
@ -5795,7 +5796,7 @@ record_arm_bx_glue (struct bfd_link_info * link_info, int reg)
|
||||
if (globals->bx_glue_offset[reg])
|
||||
return;
|
||||
|
||||
s = bfd_get_section_by_name
|
||||
s = bfd_get_linker_section
|
||||
(globals->bfd_of_glue_owner, ARM_BX_GLUE_SECTION_NAME);
|
||||
|
||||
BFD_ASSERT (s != NULL);
|
||||
@ -5886,7 +5887,7 @@ record_vfp11_erratum_veneer (struct bfd_link_info *link_info,
|
||||
BFD_ASSERT (hash_table != NULL);
|
||||
BFD_ASSERT (hash_table->bfd_of_glue_owner != NULL);
|
||||
|
||||
s = bfd_get_section_by_name
|
||||
s = bfd_get_linker_section
|
||||
(hash_table->bfd_of_glue_owner, VFP11_ERRATUM_VENEER_SECTION_NAME);
|
||||
|
||||
sec_data = elf32_arm_section_data (s);
|
||||
@ -5993,12 +5994,12 @@ arm_make_glue_section (bfd * abfd, const char * name)
|
||||
{
|
||||
asection * sec;
|
||||
|
||||
sec = bfd_get_section_by_name (abfd, name);
|
||||
sec = bfd_get_linker_section (abfd, name);
|
||||
if (sec != NULL)
|
||||
/* Already made. */
|
||||
return TRUE;
|
||||
|
||||
sec = bfd_make_section_with_flags (abfd, name, ARM_GLUE_SECTION_FLAGS);
|
||||
sec = bfd_make_section_anyway_with_flags (abfd, name, ARM_GLUE_SECTION_FLAGS);
|
||||
|
||||
if (sec == NULL
|
||||
|| !bfd_set_section_alignment (abfd, sec, 2))
|
||||
@ -7018,8 +7019,8 @@ elf32_thumb_to_arm_stub (struct bfd_link_info * info,
|
||||
|
||||
my_offset = myh->root.u.def.value;
|
||||
|
||||
s = bfd_get_section_by_name (globals->bfd_of_glue_owner,
|
||||
THUMB2ARM_GLUE_SECTION_NAME);
|
||||
s = bfd_get_linker_section (globals->bfd_of_glue_owner,
|
||||
THUMB2ARM_GLUE_SECTION_NAME);
|
||||
|
||||
BFD_ASSERT (s != NULL);
|
||||
BFD_ASSERT (s->contents != NULL);
|
||||
@ -7208,8 +7209,8 @@ elf32_arm_to_thumb_stub (struct bfd_link_info * info,
|
||||
BFD_ASSERT (globals != NULL);
|
||||
BFD_ASSERT (globals->bfd_of_glue_owner != NULL);
|
||||
|
||||
s = bfd_get_section_by_name (globals->bfd_of_glue_owner,
|
||||
ARM2THUMB_GLUE_SECTION_NAME);
|
||||
s = bfd_get_linker_section (globals->bfd_of_glue_owner,
|
||||
ARM2THUMB_GLUE_SECTION_NAME);
|
||||
BFD_ASSERT (s != NULL);
|
||||
BFD_ASSERT (s->contents != NULL);
|
||||
BFD_ASSERT (s->output_section != NULL);
|
||||
@ -7262,8 +7263,8 @@ elf32_arm_to_thumb_export_stub (struct elf_link_hash_entry *h, void * inf)
|
||||
BFD_ASSERT (globals != NULL);
|
||||
BFD_ASSERT (globals->bfd_of_glue_owner != NULL);
|
||||
|
||||
s = bfd_get_section_by_name (globals->bfd_of_glue_owner,
|
||||
ARM2THUMB_GLUE_SECTION_NAME);
|
||||
s = bfd_get_linker_section (globals->bfd_of_glue_owner,
|
||||
ARM2THUMB_GLUE_SECTION_NAME);
|
||||
BFD_ASSERT (s != NULL);
|
||||
BFD_ASSERT (s->contents != NULL);
|
||||
BFD_ASSERT (s->output_section != NULL);
|
||||
@ -7297,8 +7298,8 @@ elf32_arm_bx_glue (struct bfd_link_info * info, int reg)
|
||||
BFD_ASSERT (globals != NULL);
|
||||
BFD_ASSERT (globals->bfd_of_glue_owner != NULL);
|
||||
|
||||
s = bfd_get_section_by_name (globals->bfd_of_glue_owner,
|
||||
ARM_BX_GLUE_SECTION_NAME);
|
||||
s = bfd_get_linker_section (globals->bfd_of_glue_owner,
|
||||
ARM_BX_GLUE_SECTION_NAME);
|
||||
BFD_ASSERT (s != NULL);
|
||||
BFD_ASSERT (s->contents != NULL);
|
||||
BFD_ASSERT (s->output_section != NULL);
|
||||
@ -10885,7 +10886,7 @@ elf32_arm_output_glue_section (struct bfd_link_info *info, bfd *obfd,
|
||||
{
|
||||
asection *sec, *osec;
|
||||
|
||||
sec = bfd_get_section_by_name (ibfd, name);
|
||||
sec = bfd_get_linker_section (ibfd, name);
|
||||
if (sec == NULL || (sec->flags & SEC_EXCLUDE) != 0)
|
||||
return TRUE;
|
||||
|
||||
@ -13038,7 +13039,7 @@ elf32_arm_adjust_dynamic_symbol (struct bfd_link_info * info,
|
||||
determine the address it must put in the global offset table, so
|
||||
both the dynamic object and the regular object will refer to the
|
||||
same memory location for the variable. */
|
||||
s = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
s = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* We must generate a R_ARM_COPY reloc to tell the dynamic linker to
|
||||
@ -13049,7 +13050,7 @@ elf32_arm_adjust_dynamic_symbol (struct bfd_link_info * info,
|
||||
{
|
||||
asection *srel;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, RELOC_SECTION (globals, ".bss"));
|
||||
srel = bfd_get_linker_section (dynobj, RELOC_SECTION (globals, ".bss"));
|
||||
elf32_arm_allocate_dynrelocs (info, srel, 1);
|
||||
h->needs_copy = 1;
|
||||
}
|
||||
@ -13491,7 +13492,7 @@ elf32_arm_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -14023,7 +14024,7 @@ elf32_arm_finish_dynamic_sections (bfd * output_bfd, struct bfd_link_info * info
|
||||
Catch this here so that we do not seg-fault later on. */
|
||||
if (sgot != NULL && bfd_is_abs_section (sgot->output_section))
|
||||
return FALSE;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
@ -14808,8 +14809,8 @@ elf32_arm_output_arch_local_syms (bfd *output_bfd,
|
||||
/* ARM->Thumb glue. */
|
||||
if (htab->arm_glue_size > 0)
|
||||
{
|
||||
osi.sec = bfd_get_section_by_name (htab->bfd_of_glue_owner,
|
||||
ARM2THUMB_GLUE_SECTION_NAME);
|
||||
osi.sec = bfd_get_linker_section (htab->bfd_of_glue_owner,
|
||||
ARM2THUMB_GLUE_SECTION_NAME);
|
||||
|
||||
osi.sec_shndx = _bfd_elf_section_from_bfd_section
|
||||
(output_bfd, osi.sec->output_section);
|
||||
@ -14831,8 +14832,8 @@ elf32_arm_output_arch_local_syms (bfd *output_bfd,
|
||||
/* Thumb->ARM glue. */
|
||||
if (htab->thumb_glue_size > 0)
|
||||
{
|
||||
osi.sec = bfd_get_section_by_name (htab->bfd_of_glue_owner,
|
||||
THUMB2ARM_GLUE_SECTION_NAME);
|
||||
osi.sec = bfd_get_linker_section (htab->bfd_of_glue_owner,
|
||||
THUMB2ARM_GLUE_SECTION_NAME);
|
||||
|
||||
osi.sec_shndx = _bfd_elf_section_from_bfd_section
|
||||
(output_bfd, osi.sec->output_section);
|
||||
@ -14848,8 +14849,8 @@ elf32_arm_output_arch_local_syms (bfd *output_bfd,
|
||||
/* ARMv4 BX veneers. */
|
||||
if (htab->bx_glue_size > 0)
|
||||
{
|
||||
osi.sec = bfd_get_section_by_name (htab->bfd_of_glue_owner,
|
||||
ARM_BX_GLUE_SECTION_NAME);
|
||||
osi.sec = bfd_get_linker_section (htab->bfd_of_glue_owner,
|
||||
ARM_BX_GLUE_SECTION_NAME);
|
||||
|
||||
osi.sec_shndx = _bfd_elf_section_from_bfd_section
|
||||
(output_bfd, osi.sec->output_section);
|
||||
|
@ -1224,20 +1224,21 @@ bfin_check_relocs (bfd * abfd,
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
if (srelgot == NULL && (h != NULL || info->shared))
|
||||
{
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (srelgot == NULL)
|
||||
{
|
||||
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_READONLY);
|
||||
srelgot = bfd_make_section_with_flags (dynobj, ".rela.got",
|
||||
flags);
|
||||
srelgot = bfd_make_section_anyway_with_flags (dynobj,
|
||||
".rela.got",
|
||||
flags);
|
||||
if (srelgot == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, srelgot, 2))
|
||||
return FALSE;
|
||||
@ -1483,7 +1484,7 @@ bfin_relocate_section (bfd * output_bfd,
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
@ -1547,7 +1548,7 @@ bfin_relocate_section (bfd * output_bfd,
|
||||
Elf_Internal_Rela outrel;
|
||||
bfd_byte *loc;
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
outrel.r_offset = (sgot->output_section->vma
|
||||
@ -1676,8 +1677,8 @@ bfin_gc_sweep_hook (bfd * abfd,
|
||||
sym_hashes = elf_sym_hashes (abfd);
|
||||
local_got_refcounts = elf_local_got_refcounts (abfd);
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
|
||||
relend = relocs + sec->reloc_count;
|
||||
for (rel = relocs; rel < relend; rel++)
|
||||
@ -3387,8 +3388,8 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
int ptralign;
|
||||
|
||||
/* This function may be called more than once. */
|
||||
s = bfd_get_section_by_name (abfd, ".got");
|
||||
if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0)
|
||||
s = bfd_get_linker_section (abfd, ".got");
|
||||
if (s != NULL)
|
||||
return TRUE;
|
||||
|
||||
/* Machine specific: although pointers are 32-bits wide, we want the
|
||||
@ -3401,14 +3402,14 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
| SEC_LINKER_CREATED);
|
||||
pltflags = flags;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".got", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
|
||||
if (bed->want_got_plt)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd, ".got.plt", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
@ -3446,8 +3447,8 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
if (! bfinfdpic_relocs_info (info))
|
||||
return FALSE;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".rel.got",
|
||||
(flags | SEC_READONLY));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rel.got",
|
||||
(flags | SEC_READONLY));
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, 2))
|
||||
return FALSE;
|
||||
@ -3455,8 +3456,8 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
bfinfdpic_gotrel_section (info) = s;
|
||||
|
||||
/* Machine-specific. */
|
||||
s = bfd_make_section_with_flags (abfd, ".rofixup",
|
||||
(flags | SEC_READONLY));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rofixup",
|
||||
(flags | SEC_READONLY));
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, 2))
|
||||
return FALSE;
|
||||
@ -3470,7 +3471,7 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
if (bed->plt_readonly)
|
||||
pltflags |= SEC_READONLY;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".plt", pltflags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
|
||||
return FALSE;
|
||||
@ -3497,7 +3498,8 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
}
|
||||
|
||||
/* Blackfin-specific: we want rel relocations for the plt. */
|
||||
s = bfd_make_section_with_flags (abfd, ".rel.plt", flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rel.plt",
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
|
||||
return FALSE;
|
||||
@ -3543,27 +3545,27 @@ elf32_bfinfdpic_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
image and use a R_*_COPY reloc to tell the dynamic linker to
|
||||
initialize them at run time. The linker script puts the .dynbss
|
||||
section into the .bss section of the final image. */
|
||||
s = bfd_make_section_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
if (s == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* The .rel[a].bss section holds copy relocs. This section is not
|
||||
normally needed. We need to create it here, though, so that the
|
||||
linker will map it to an output section. We can't just create it
|
||||
only if we need it, because we will not know whether we need it
|
||||
until we have seen all the input files, and the first time the
|
||||
main linker code calls BFD after examining all the input files
|
||||
(size_dynamic_sections) the input sections have already been
|
||||
mapped to the output sections. If the section turns out not to
|
||||
be needed, we can discard it later. We will never need this
|
||||
section when generating a shared object, since they do not use
|
||||
copy relocs. */
|
||||
normally needed. We need to create it here, though, so that the
|
||||
linker will map it to an output section. We can't just create it
|
||||
only if we need it, because we will not know whether we need it
|
||||
until we have seen all the input files, and the first time the
|
||||
main linker code calls BFD after examining all the input files
|
||||
(size_dynamic_sections) the input sections have already been
|
||||
mapped to the output sections. If the section turns out not to
|
||||
be needed, we can discard it later. We will never need this
|
||||
section when generating a shared object, since they do not use
|
||||
copy relocs. */
|
||||
if (! info->shared)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
".rela.bss",
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
".rela.bss",
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
|
||||
return FALSE;
|
||||
@ -4246,7 +4248,7 @@ elf32_bfinfdpic_size_dynamic_sections (bfd *output_bfd,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -4296,11 +4298,11 @@ elf32_bfinfdpic_size_dynamic_sections (bfd *output_bfd,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
s = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (s && s->size == 0)
|
||||
s->flags |= SEC_EXCLUDE;
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
if (s && s->size == 0)
|
||||
s->flags |= SEC_EXCLUDE;
|
||||
|
||||
@ -4546,7 +4548,7 @@ elf32_bfinfdpic_finish_dynamic_sections (bfd *output_bfd,
|
||||
* sizeof (Elf32_External_Rel)));
|
||||
}
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
@ -5218,7 +5220,7 @@ bfin_finish_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
@ -5263,8 +5265,8 @@ bfin_finish_dynamic_symbol (bfd * output_bfd,
|
||||
/* This symbol has an entry in the global offset table.
|
||||
Set it up. */
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srela = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
srela = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (sgot != NULL && srela != NULL);
|
||||
|
||||
rela.r_offset = (sgot->output_section->vma
|
||||
@ -5376,7 +5378,7 @@ bfin_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
both the dynamic object and the regular object will refer to the
|
||||
same memory location for the variable. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
s = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* We must generate a R_68K_COPY reloc to tell the dynamic linker to
|
||||
@ -5387,7 +5389,7 @@ bfin_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
{
|
||||
asection *srel;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (srel != NULL);
|
||||
srel->size += sizeof (Elf32_External_Rela);
|
||||
h->needs_copy = 1;
|
||||
@ -5495,7 +5497,7 @@ bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -5508,7 +5510,7 @@ bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
|
||||
not actually use these entries. Reset the size of .rela.got,
|
||||
which will cause it to get stripped from the output file
|
||||
below. */
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (s != NULL)
|
||||
s->size = 0;
|
||||
}
|
||||
|
@ -585,7 +585,7 @@ _bfd_cr16_elf_create_got_section (bfd * abfd, struct bfd_link_info * info)
|
||||
int ptralign;
|
||||
|
||||
/* This function may be called more than once. */
|
||||
if (bfd_get_section_by_name (abfd, ".got") != NULL)
|
||||
if (bfd_get_linker_section (abfd, ".got") != NULL)
|
||||
return TRUE;
|
||||
|
||||
switch (bed->s->arch_size)
|
||||
@ -606,14 +606,14 @@ _bfd_cr16_elf_create_got_section (bfd * abfd, struct bfd_link_info * info)
|
||||
flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED);
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".got", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
|
||||
if (bed->want_got_plt)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd, ".got.plt", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
@ -752,24 +752,22 @@ cr16_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
if (srelgot == NULL
|
||||
&& (h != NULL || info->executable))
|
||||
{
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (srelgot == NULL)
|
||||
{
|
||||
srelgot = bfd_make_section_with_flags (dynobj,
|
||||
".rela.got",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
{
|
||||
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_READONLY);
|
||||
srelgot = bfd_make_section_anyway_with_flags (dynobj,
|
||||
".rela.got",
|
||||
flags);
|
||||
if (srelgot == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, srelgot, 2))
|
||||
goto fail;
|
||||
@ -1047,7 +1045,7 @@ cr16_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
}
|
||||
else if (r_type == R_CR16_GOT_REGREL20)
|
||||
{
|
||||
asection * sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
asection * sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
|
||||
if (h != NULL)
|
||||
{
|
||||
@ -1096,7 +1094,7 @@ cr16_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
else if (r_type == R_CR16_GOTC_REGREL20)
|
||||
{
|
||||
asection * sgot;
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
|
||||
if (h != NULL)
|
||||
{
|
||||
@ -2278,10 +2276,10 @@ _bfd_cr16_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED);
|
||||
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.plt" : ".rel.plt"),
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.plt" : ".rel.plt"),
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
@ -2297,8 +2295,8 @@ _bfd_cr16_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
image and use a R_*_COPY reloc to tell the dynamic linker to
|
||||
initialize them at run time. The linker script puts the .dynbss
|
||||
section into the .bss section of the final image. */
|
||||
s = bfd_make_section_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
if (s == NULL)
|
||||
return FALSE;
|
||||
|
||||
@ -2315,10 +2313,10 @@ _bfd_cr16_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
copy relocs. */
|
||||
if (! info->executable)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
@ -2380,13 +2378,13 @@ _bfd_cr16_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
|
||||
/* We also need to make an entry in the .got.plt section, which
|
||||
will be placed in the .got section by the linker script. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += 4;
|
||||
|
||||
/* We also need to make an entry in the .rela.plt section. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += sizeof (Elf32_External_Rela);
|
||||
|
||||
@ -2430,7 +2428,7 @@ _bfd_cr16_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
|
||||
both the dynamic object and the regular object will refer to the
|
||||
same memory location for the variable. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
s = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* We must generate a R_CR16_COPY reloc to tell the dynamic linker to
|
||||
@ -2441,7 +2439,7 @@ _bfd_cr16_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
|
||||
{
|
||||
asection * srel;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (srel != NULL);
|
||||
srel->size += sizeof (Elf32_External_Rela);
|
||||
h->needs_copy = 1;
|
||||
@ -2471,7 +2469,7 @@ _bfd_cr16_elf_size_dynamic_sections (bfd * output_bfd,
|
||||
if (info->executable)
|
||||
{
|
||||
#if 0
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -2485,7 +2483,7 @@ _bfd_cr16_elf_size_dynamic_sections (bfd * output_bfd,
|
||||
not actually use these entries. Reset the size of .rela.got,
|
||||
which will cause it to get stripped from the output file
|
||||
below. */
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (s != NULL)
|
||||
s->size = 0;
|
||||
}
|
||||
@ -2640,8 +2638,8 @@ _bfd_cr16_elf_finish_dynamic_symbol (bfd * output_bfd,
|
||||
|
||||
/* This symbol has an entry in the global offset table. Set it up. */
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (sgot != NULL && srel != NULL);
|
||||
|
||||
rel.r_offset = (sgot->output_section->vma
|
||||
@ -2685,8 +2683,7 @@ _bfd_cr16_elf_finish_dynamic_symbol (bfd * output_bfd,
|
||||
&& (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak));
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rel.r_offset = (h->root.u.def.value
|
||||
@ -2720,9 +2717,9 @@ _bfd_cr16_elf_finish_dynamic_sections (bfd * output_bfd,
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
|
@ -1065,8 +1065,8 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
if (dynobj != NULL)
|
||||
{
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
}
|
||||
|
||||
for (rel = relocs; rel < relend; rel ++)
|
||||
@ -1204,7 +1204,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
&& ((struct elf_cris_link_hash_entry *) h)->gotplt_offset != 0)
|
||||
{
|
||||
asection *sgotplt
|
||||
= bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
= bfd_get_linker_section (dynobj, ".got.plt");
|
||||
bfd_vma got_offset;
|
||||
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
@ -1336,7 +1336,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
if (srelgot == NULL)
|
||||
srelgot
|
||||
= bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
= bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
|
||||
outrel.r_offset = (sgot->output_section->vma
|
||||
@ -1652,7 +1652,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
if (htab->dtpmod_refcount > 0
|
||||
&& (input_section->flags & SEC_ALLOC) != 0)
|
||||
{
|
||||
asection *sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
asection *sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (sgotplt != NULL);
|
||||
|
||||
if (info->shared)
|
||||
@ -1661,7 +1661,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
bfd_byte *loc;
|
||||
|
||||
if (srelgot == NULL)
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
loc = srelgot->contents;
|
||||
loc += srelgot->reloc_count++ * sizeof (Elf32_External_Rela);
|
||||
@ -1805,7 +1805,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
bfd_put_32 (output_bfd, 0, sgot->contents + off + 4);
|
||||
|
||||
if (srelgot == NULL)
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
|
||||
if (h != NULL && h->dynindx != -1)
|
||||
@ -1937,7 +1937,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
local_got_offsets[r_symndx] |= 1;
|
||||
|
||||
if (srelgot == NULL)
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
|
||||
if (h != NULL && h->dynindx != -1)
|
||||
@ -2193,9 +2193,9 @@ elf_cris_finish_dynamic_symbol (bfd *output_bfd,
|
||||
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
srela = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
srela = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (splt != NULL && sgotplt != NULL
|
||||
&& (! has_gotplt || srela != NULL));
|
||||
|
||||
@ -2292,8 +2292,8 @@ elf_cris_finish_dynamic_symbol (bfd *output_bfd,
|
||||
|
||||
/* This symbol has an entry in the global offset table. Set it up. */
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srela = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
srela = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (sgot != NULL && srela != NULL);
|
||||
|
||||
rela.r_offset = (sgot->output_section->vma
|
||||
@ -2338,8 +2338,7 @@ elf_cris_finish_dynamic_symbol (bfd *output_bfd,
|
||||
&& (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak));
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rela.r_offset = (h->root.u.def.value
|
||||
@ -2374,16 +2373,16 @@ elf_cris_finish_dynamic_sections (output_bfd, info)
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
asection *splt;
|
||||
Elf32_External_Dyn *dyncon, *dynconend;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL && sdyn != NULL);
|
||||
|
||||
dyncon = (Elf32_External_Dyn *) sdyn->contents;
|
||||
@ -2561,8 +2560,8 @@ cris_elf_gc_sweep_hook (bfd *abfd,
|
||||
sym_hashes = elf_sym_hashes (abfd);
|
||||
local_got_refcounts = elf_local_got_refcounts (abfd);
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
|
||||
relend = relocs + sec->reloc_count;
|
||||
for (rel = relocs; rel < relend; rel++)
|
||||
@ -2819,8 +2818,8 @@ elf_cris_adjust_gotplt_to_got (h, p)
|
||||
asection *srelgot;
|
||||
|
||||
BFD_ASSERT (dynobj != NULL);
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
|
||||
/* Put accurate refcounts there. */
|
||||
h->root.got.refcount += h->gotplt_refcount;
|
||||
@ -2998,7 +2997,7 @@ elf_cris_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".plt");
|
||||
s = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* If this is the first .plt entry, make room for the special
|
||||
@ -3057,13 +3056,13 @@ elf_cris_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
= htab->next_gotplt_entry;
|
||||
htab->next_gotplt_entry += 4;
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += 4;
|
||||
|
||||
/* We also need to make an entry in the .rela.plt section. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += sizeof (Elf32_External_Rela);
|
||||
|
||||
@ -3111,7 +3110,7 @@ elf_cris_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
both the dynamic object and the regular object will refer to the
|
||||
same memory location for the variable. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
s = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* We must generate a R_CRIS_COPY reloc to tell the dynamic linker to
|
||||
@ -3122,7 +3121,7 @@ elf_cris_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
{
|
||||
asection *srel;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (srel != NULL);
|
||||
srel->size += sizeof (Elf32_External_Rela);
|
||||
h->needs_copy = 1;
|
||||
@ -3313,7 +3312,7 @@ cris_elf_check_relocs (bfd *abfd,
|
||||
}
|
||||
|
||||
if (sgot == NULL)
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
|
||||
if (local_got_refcounts == NULL)
|
||||
{
|
||||
@ -3373,17 +3372,15 @@ cris_elf_check_relocs (bfd *abfd,
|
||||
if (srelgot == NULL
|
||||
&& (h != NULL || info->shared))
|
||||
{
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (srelgot == NULL)
|
||||
{
|
||||
srelgot = bfd_make_section_with_flags (dynobj,
|
||||
".rela.got",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_READONLY);
|
||||
srelgot = bfd_make_section_anyway_with_flags (dynobj,
|
||||
".rela.got",
|
||||
flags);
|
||||
if (srelgot == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, srelgot, 2))
|
||||
return FALSE;
|
||||
@ -3829,7 +3826,7 @@ elf_cris_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -3846,7 +3843,7 @@ elf_cris_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
not actually use these entries. Reset the size of .rela.got,
|
||||
which will cause it to get stripped from the output file
|
||||
below. */
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (s != NULL)
|
||||
s->size = 0;
|
||||
}
|
||||
@ -4086,7 +4083,7 @@ elf_cris_discard_excess_program_dynamics (h, inf)
|
||||
|
||||
BFD_ASSERT (dynobj != NULL);
|
||||
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
|
||||
|
@ -4234,8 +4234,8 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
int offset;
|
||||
|
||||
/* This function may be called more than once. */
|
||||
s = bfd_get_section_by_name (abfd, ".got");
|
||||
if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0)
|
||||
s = bfd_get_linker_section (abfd, ".got");
|
||||
if (s != NULL)
|
||||
return TRUE;
|
||||
|
||||
/* Machine specific: although pointers are 32-bits wide, we want the
|
||||
@ -4248,14 +4248,14 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
| SEC_LINKER_CREATED);
|
||||
pltflags = flags;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".got", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
|
||||
if (bed->want_got_plt)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd, ".got.plt", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
@ -4293,8 +4293,8 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
if (! frvfdpic_relocs_info (info))
|
||||
return FALSE;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".rel.got",
|
||||
(flags | SEC_READONLY));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rel.got",
|
||||
(flags | SEC_READONLY));
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, 2))
|
||||
return FALSE;
|
||||
@ -4302,8 +4302,8 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
frvfdpic_gotrel_section (info) = s;
|
||||
|
||||
/* Machine-specific. */
|
||||
s = bfd_make_section_with_flags (abfd, ".rofixup",
|
||||
(flags | SEC_READONLY));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rofixup",
|
||||
(flags | SEC_READONLY));
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, 2))
|
||||
return FALSE;
|
||||
@ -4351,7 +4351,7 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
if (bed->plt_readonly)
|
||||
pltflags |= SEC_READONLY;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".plt", pltflags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
|
||||
return FALSE;
|
||||
@ -4370,8 +4370,8 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
}
|
||||
|
||||
/* FRV-specific: we want rel relocations for the plt. */
|
||||
s = bfd_make_section_with_flags (abfd, ".rel.plt",
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rel.plt",
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
|
||||
return FALSE;
|
||||
@ -4418,8 +4418,8 @@ elf32_frvfdpic_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
image and use a R_*_COPY reloc to tell the dynamic linker to
|
||||
initialize them at run time. The linker script puts the .dynbss
|
||||
section into the .bss section of the final image. */
|
||||
s = bfd_make_section_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
if (s == NULL)
|
||||
return FALSE;
|
||||
|
||||
@ -4436,10 +4436,10 @@ elf32_frvfdpic_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
copy relocs. */
|
||||
if (! info->shared)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
|
||||
return FALSE;
|
||||
@ -5504,7 +5504,7 @@ elf32_frvfdpic_size_dynamic_sections (bfd *output_bfd,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -5913,7 +5913,7 @@ elf32_frvfdpic_finish_dynamic_sections (bfd *output_bfd,
|
||||
Elf32_External_Dyn * dyncon;
|
||||
Elf32_External_Dyn * dynconend;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
BFD_ASSERT (sdyn != NULL);
|
||||
|
||||
|
@ -1005,14 +1005,14 @@ elf32_hppa_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
if (! _bfd_elf_create_dynamic_sections (abfd, info))
|
||||
return FALSE;
|
||||
|
||||
htab->splt = bfd_get_section_by_name (abfd, ".plt");
|
||||
htab->srelplt = bfd_get_section_by_name (abfd, ".rela.plt");
|
||||
htab->splt = bfd_get_linker_section (abfd, ".plt");
|
||||
htab->srelplt = bfd_get_linker_section (abfd, ".rela.plt");
|
||||
|
||||
htab->sgot = bfd_get_section_by_name (abfd, ".got");
|
||||
htab->srelgot = bfd_get_section_by_name (abfd, ".rela.got");
|
||||
htab->sgot = bfd_get_linker_section (abfd, ".got");
|
||||
htab->srelgot = bfd_get_linker_section (abfd, ".rela.got");
|
||||
|
||||
htab->sdynbss = bfd_get_section_by_name (abfd, ".dynbss");
|
||||
htab->srelbss = bfd_get_section_by_name (abfd, ".rela.bss");
|
||||
htab->sdynbss = bfd_get_linker_section (abfd, ".dynbss");
|
||||
htab->srelbss = bfd_get_linker_section (abfd, ".rela.bss");
|
||||
|
||||
/* hppa-linux needs _GLOBAL_OFFSET_TABLE_ to be visible from the main
|
||||
application, because __canonicalize_funcptr_for_compare needs it. */
|
||||
@ -2225,7 +2225,7 @@ elf32_hppa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
sec = bfd_get_section_by_name (dynobj, ".interp");
|
||||
sec = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (sec == NULL)
|
||||
abort ();
|
||||
sec->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
@ -4506,7 +4506,7 @@ elf32_hppa_finish_dynamic_sections (bfd *output_bfd,
|
||||
if (sgot != NULL && bfd_is_abs_section (sgot->output_section))
|
||||
return FALSE;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (htab->etab.dynamic_sections_created)
|
||||
{
|
||||
|
@ -420,23 +420,23 @@ i370_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED);
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".dynsbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".dynsbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
if (s == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (! info->shared)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd, ".rela.sbss",
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rela.sbss",
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, 2))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* XXX beats me, seem to need a rela.text ... */
|
||||
s = bfd_make_section_with_flags (abfd, ".rela.text",
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rela.text",
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, 2))
|
||||
return FALSE;
|
||||
@ -472,7 +472,7 @@ i370_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
&& h->ref_regular
|
||||
&& !h->def_regular)));
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.text");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.text");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += sizeof (Elf32_External_Rela);
|
||||
|
||||
@ -513,9 +513,9 @@ i370_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
only if there were actually SDAREL relocs for that symbol. */
|
||||
|
||||
if (h->size <= elf_gp_size (dynobj))
|
||||
s = bfd_get_section_by_name (dynobj, ".dynsbss");
|
||||
s = bfd_get_linker_section (dynobj, ".dynsbss");
|
||||
else
|
||||
s = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
s = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* We must generate a R_I370_COPY reloc to tell the dynamic linker to
|
||||
@ -527,9 +527,9 @@ i370_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
asection *srel;
|
||||
|
||||
if (h->size <= elf_gp_size (dynobj))
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.sbss");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.sbss");
|
||||
else
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (srel != NULL);
|
||||
srel->size += sizeof (Elf32_External_Rela);
|
||||
h->needs_copy = 1;
|
||||
@ -588,7 +588,7 @@ i370_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -608,7 +608,7 @@ i370_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
|
||||
for (p = rela_sections; *p != NULL; p++)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, *p);
|
||||
s = bfd_get_linker_section (dynobj, *p);
|
||||
if (s != NULL)
|
||||
s->size = 0;
|
||||
}
|
||||
@ -869,20 +869,20 @@ i370_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
{
|
||||
asection *sdyn;
|
||||
bfd *dynobj = elf_hash_table (info)->dynobj;
|
||||
asection *sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
asection *sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf (stderr, "i370_elf_finish_dynamic_sections called\n");
|
||||
#endif
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
asection *splt;
|
||||
Elf32_External_Dyn *dyncon, *dynconend;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL && sdyn != NULL);
|
||||
|
||||
dyncon = (Elf32_External_Dyn *) sdyn->contents;
|
||||
@ -945,7 +945,7 @@ i370_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
|
||||
/* Set up the section symbols for the output sections. */
|
||||
|
||||
sdynsym = bfd_get_section_by_name (dynobj, ".dynsym");
|
||||
sdynsym = bfd_get_linker_section (dynobj, ".dynsym");
|
||||
BFD_ASSERT (sdynsym != NULL);
|
||||
|
||||
sym.st_size = 0;
|
||||
|
@ -1001,9 +1001,9 @@ elf_i386_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
|
||||
if (htab == NULL)
|
||||
return FALSE;
|
||||
|
||||
htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!info->shared)
|
||||
htab->srelbss = bfd_get_section_by_name (dynobj, ".rel.bss");
|
||||
htab->srelbss = bfd_get_linker_section (dynobj, ".rel.bss");
|
||||
|
||||
if (!htab->sdynbss
|
||||
|| (!info->shared && !htab->srelbss))
|
||||
@ -2559,7 +2559,7 @@ elf_i386_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
@ -4662,7 +4662,7 @@ elf_i386_finish_dynamic_sections (bfd *output_bfd,
|
||||
return FALSE;
|
||||
|
||||
dynobj = htab->elf.dynobj;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
abed = get_elf_i386_backend_data (output_bfd);
|
||||
|
||||
if (htab->elf.dynamic_sections_created)
|
||||
|
@ -217,8 +217,8 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
|
||||
asection *s;
|
||||
|
||||
/* This function may be called more than once. */
|
||||
s = bfd_get_section_by_name (dynobj, ".got");
|
||||
if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0)
|
||||
s = bfd_get_linker_section (dynobj, ".got");
|
||||
if (s != NULL)
|
||||
return TRUE;
|
||||
|
||||
htab = lm32_elf_hash_table (info);
|
||||
@ -228,9 +228,9 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
|
||||
if (! _bfd_elf_create_got_section (dynobj, info))
|
||||
return FALSE;
|
||||
|
||||
htab->sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
htab->srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
htab->sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
htab->sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
htab->srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (! htab->sgot || ! htab->sgotplt || ! htab->srelgot)
|
||||
abort ();
|
||||
|
||||
@ -250,16 +250,18 @@ create_rofixup_section (bfd *dynobj, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
|
||||
/* Fixup section for R_LM32_32 relocs. */
|
||||
lm32fdpic_fixup32_section (info) = bfd_make_section_with_flags (dynobj,
|
||||
".rofixup",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
lm32fdpic_fixup32_section (info)
|
||||
= bfd_make_section_anyway_with_flags (dynobj,
|
||||
".rofixup",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (lm32fdpic_fixup32_section (info) == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, lm32fdpic_fixup32_section (info), 2))
|
||||
|| ! bfd_set_section_alignment (dynobj,
|
||||
lm32fdpic_fixup32_section (info), 2))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
@ -1031,7 +1033,8 @@ lm32_elf_relocate_section (bfd *output_bfd,
|
||||
|
||||
/* We need to generate a R_LM32_RELATIVE reloc
|
||||
for the dynamic linker. */
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj,
|
||||
".rela.got");
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
|
||||
outrel.r_offset = (sgot->output_section->vma
|
||||
@ -1346,7 +1349,7 @@ lm32_elf_check_relocs (bfd *abfd,
|
||||
/* Create .rofixup section */
|
||||
if (htab->sfixup32 == NULL)
|
||||
{
|
||||
if (! create_rofixup_section (abfd, info))
|
||||
if (! create_rofixup_section (dynobj, info))
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
@ -1356,7 +1359,9 @@ lm32_elf_check_relocs (bfd *abfd,
|
||||
/* Create .rofixup section. */
|
||||
if (htab->sfixup32 == NULL)
|
||||
{
|
||||
if (! create_rofixup_section (abfd, info))
|
||||
if (dynobj == NULL)
|
||||
htab->root.dynobj = dynobj = abfd;
|
||||
if (! create_rofixup_section (dynobj, info))
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
@ -1427,7 +1432,7 @@ lm32_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
dynobj = htab->root.dynobj;
|
||||
|
||||
sgot = htab->sgotplt;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (htab->root.dynamic_sections_created)
|
||||
{
|
||||
@ -1725,8 +1730,7 @@ lm32_elf_finish_dynamic_symbol (bfd *output_bfd,
|
||||
&& (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak));
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = bfd_get_linker_section (htab->root.dynobj, ".rela.bss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rela.r_offset = (h->root.u.def.value
|
||||
@ -2139,7 +2143,7 @@ lm32_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -2483,7 +2487,7 @@ lm32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
if (bed->plt_readonly)
|
||||
pltflags |= SEC_READONLY;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".plt", pltflags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
|
||||
htab->splt = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
|
||||
@ -2511,9 +2515,10 @@ lm32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
bed->default_use_rela_p ? ".rela.plt" : ".rel.plt",
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
bed->default_use_rela_p
|
||||
? ".rela.plt" : ".rel.plt",
|
||||
flags | SEC_READONLY);
|
||||
htab->srelplt = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
@ -2531,8 +2536,8 @@ lm32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
image and use a R_*_COPY reloc to tell the dynamic linker to
|
||||
initialize them at run time. The linker script puts the .dynbss
|
||||
section into the .bss section of the final image. */
|
||||
s = bfd_make_section_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
htab->sdynbss = s;
|
||||
if (s == NULL)
|
||||
return FALSE;
|
||||
@ -2549,10 +2554,10 @@ lm32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
copy relocs. */
|
||||
if (! info->shared)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
htab->srelbss = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
|
@ -362,7 +362,7 @@ m32c_elf_relocate_section
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
splt = NULL;
|
||||
if (dynobj != NULL)
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
|
||||
for (rel = relocs; rel < relend; rel ++)
|
||||
{
|
||||
@ -633,7 +633,7 @@ m32c_elf_check_relocs
|
||||
elf_hash_table (info)->dynobj = dynobj = abfd;
|
||||
if (splt == NULL)
|
||||
{
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
if (splt == NULL)
|
||||
{
|
||||
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
||||
@ -692,7 +692,7 @@ m32c_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
been filled in. */
|
||||
|
||||
if ((dynobj = elf_hash_table (info)->dynobj) != NULL
|
||||
&& (splt = bfd_get_section_by_name (dynobj, ".plt")) != NULL)
|
||||
&& (splt = bfd_get_linker_section (dynobj, ".plt")) != NULL)
|
||||
{
|
||||
bfd_byte *contents = splt->contents;
|
||||
unsigned int i, size = splt->size;
|
||||
@ -720,7 +720,7 @@ m32c_elf_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
if (dynobj == NULL)
|
||||
return TRUE;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL);
|
||||
|
||||
splt->contents = (bfd_byte *) bfd_zalloc (dynobj, splt->size);
|
||||
|
@ -1625,9 +1625,9 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
|
||||
if (htab == NULL)
|
||||
return FALSE;
|
||||
|
||||
htab->sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
htab->srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
htab->sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
htab->sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
htab->srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (! htab->sgot || ! htab->sgotplt || ! htab->srelgot)
|
||||
abort ();
|
||||
|
||||
@ -1661,7 +1661,7 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
if (bed->plt_readonly)
|
||||
pltflags |= SEC_READONLY;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".plt", pltflags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
|
||||
htab->splt = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
|
||||
@ -1689,9 +1689,10 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
bed->default_use_rela_p ? ".rela.plt" : ".rel.plt",
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
bed->default_use_rela_p
|
||||
? ".rela.plt" : ".rel.plt",
|
||||
flags | SEC_READONLY);
|
||||
htab->srelplt = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
@ -1709,8 +1710,8 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
image and use a R_*_COPY reloc to tell the dynamic linker to
|
||||
initialize them at run time. The linker script puts the .dynbss
|
||||
section into the .bss section of the final image. */
|
||||
s = bfd_make_section_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
htab->sdynbss = s;
|
||||
if (s == NULL)
|
||||
return FALSE;
|
||||
@ -1727,10 +1728,10 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
copy relocs. */
|
||||
if (! info->shared)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
htab->srelbss = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
@ -2176,7 +2177,7 @@ m32r_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -2788,7 +2789,8 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
/* We need to generate a R_M32R_RELATIVE reloc
|
||||
for the dynamic linker. */
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj,
|
||||
".rela.got");
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
|
||||
outrel.r_offset = (sgot->output_section->vma
|
||||
@ -3278,8 +3280,7 @@ m32r_elf_finish_dynamic_symbol (bfd *output_bfd,
|
||||
&& (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak));
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = bfd_get_linker_section (htab->root.dynobj, ".rela.bss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rela.r_offset = (h->root.u.def.value
|
||||
@ -3324,7 +3325,7 @@ m32r_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
dynobj = htab->root.dynobj;
|
||||
|
||||
sgot = htab->sgotplt;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (htab->root.dynamic_sections_created)
|
||||
{
|
||||
|
@ -2468,7 +2468,7 @@ elf_m68k_partition_multi_got (struct bfd_link_info *info)
|
||||
{
|
||||
asection *s;
|
||||
|
||||
s = bfd_get_section_by_name (elf_hash_table (info)->dynobj, ".got");
|
||||
s = bfd_get_linker_section (elf_hash_table (info)->dynobj, ".got");
|
||||
if (s != NULL)
|
||||
s->size = arg_.offset;
|
||||
else
|
||||
@ -2477,7 +2477,7 @@ elf_m68k_partition_multi_got (struct bfd_link_info *info)
|
||||
BFD_ASSERT (arg_.slots_relas_diff <= arg_.n_slots);
|
||||
arg_.n_slots -= arg_.slots_relas_diff;
|
||||
|
||||
s = bfd_get_section_by_name (elf_hash_table (info)->dynobj, ".rela.got");
|
||||
s = bfd_get_linker_section (elf_hash_table (info)->dynobj, ".rela.got");
|
||||
if (s != NULL)
|
||||
s->size = arg_.n_slots * sizeof (Elf32_External_Rela);
|
||||
else
|
||||
@ -2675,24 +2675,22 @@ elf_m68k_check_relocs (abfd, info, sec, relocs)
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
if (srelgot == NULL
|
||||
&& (h != NULL || info->shared))
|
||||
{
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (srelgot == NULL)
|
||||
{
|
||||
srelgot = bfd_make_section_with_flags (dynobj,
|
||||
".rela.got",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_READONLY);
|
||||
srelgot = bfd_make_section_anyway_with_flags (dynobj,
|
||||
".rela.got",
|
||||
flags);
|
||||
if (srelgot == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, srelgot, 2))
|
||||
return FALSE;
|
||||
@ -3182,7 +3180,7 @@ elf_m68k_adjust_dynamic_symbol (info, h)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".plt");
|
||||
s = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* If this is the first .plt entry, make room for the special
|
||||
@ -3209,12 +3207,12 @@ elf_m68k_adjust_dynamic_symbol (info, h)
|
||||
|
||||
/* We also need to make an entry in the .got.plt section, which
|
||||
will be placed in the .got section by the linker script. */
|
||||
s = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += 4;
|
||||
|
||||
/* We also need to make an entry in the .rela.plt section. */
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += sizeof (Elf32_External_Rela);
|
||||
|
||||
@ -3262,7 +3260,7 @@ elf_m68k_adjust_dynamic_symbol (info, h)
|
||||
both the dynamic object and the regular object will refer to the
|
||||
same memory location for the variable. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
s = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* We must generate a R_68K_COPY reloc to tell the dynamic linker to
|
||||
@ -3273,7 +3271,7 @@ elf_m68k_adjust_dynamic_symbol (info, h)
|
||||
{
|
||||
asection *srel;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (srel != NULL);
|
||||
srel->size += sizeof (Elf32_External_Rela);
|
||||
h->needs_copy = 1;
|
||||
@ -3302,7 +3300,7 @@ elf_m68k_size_dynamic_sections (output_bfd, info)
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -3315,7 +3313,7 @@ elf_m68k_size_dynamic_sections (output_bfd, info)
|
||||
not actually use these entries. Reset the size of .rela.got,
|
||||
which will cause it to get stripped from the output file
|
||||
below. */
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (s != NULL)
|
||||
s->size = 0;
|
||||
}
|
||||
@ -3746,7 +3744,7 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
|
||||
if (sgot != NULL)
|
||||
sgot_output_offset = sgot->output_offset;
|
||||
@ -3821,7 +3819,7 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
@ -3892,7 +3890,7 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
{
|
||||
if (srela == NULL)
|
||||
{
|
||||
srela = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srela = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (srela != NULL);
|
||||
}
|
||||
|
||||
@ -3996,7 +3994,7 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
|
||||
if (splt == NULL)
|
||||
{
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL);
|
||||
}
|
||||
|
||||
@ -4015,7 +4013,7 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
|
||||
if (splt == NULL)
|
||||
{
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL);
|
||||
}
|
||||
|
||||
@ -4296,9 +4294,9 @@ elf_m68k_finish_dynamic_symbol (output_bfd, info, h, sym)
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
plt_info = elf_m68k_hash_table (info)->plt_info;
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
srela = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
srela = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (splt != NULL && sgot != NULL && srela != NULL);
|
||||
|
||||
/* Get the index in the procedure linkage table which
|
||||
@ -4363,8 +4361,8 @@ elf_m68k_finish_dynamic_symbol (output_bfd, info, h, sym)
|
||||
/* This symbol has an entry in the global offset table. Set it
|
||||
up. */
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srela = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
srela = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (sgot != NULL && srela != NULL);
|
||||
|
||||
got_entry = elf_m68k_hash_entry (h)->glist;
|
||||
@ -4487,8 +4485,7 @@ elf_m68k_finish_dynamic_symbol (output_bfd, info, h, sym)
|
||||
&& (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak));
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rela.r_offset = (h->root.u.def.value
|
||||
@ -4516,16 +4513,16 @@ elf_m68k_finish_dynamic_sections (output_bfd, info)
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
asection *splt;
|
||||
Elf32_External_Dyn *dyncon, *dynconend;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL && sdyn != NULL);
|
||||
|
||||
dyncon = (Elf32_External_Dyn *) sdyn->contents;
|
||||
|
@ -1875,13 +1875,13 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
|
||||
if (htab == NULL)
|
||||
return FALSE;
|
||||
|
||||
htab->sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
htab->sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
htab->sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
if (!htab->sgot || !htab->sgotplt)
|
||||
return FALSE;
|
||||
|
||||
if (!(htab->srelgot = bfd_get_section_by_name (dynobj, ".rela.got")))
|
||||
htab->srelgot = bfd_make_section (dynobj, ".rela.got");
|
||||
if ((htab->srelgot = bfd_get_linker_section (dynobj, ".rela.got")) == NULL)
|
||||
htab->srelgot = bfd_make_section_anyway (dynobj, ".rela.got");
|
||||
if (htab->srelgot == NULL
|
||||
|| ! bfd_set_section_flags (dynobj, htab->srelgot, SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
@ -2080,18 +2080,19 @@ microblaze_elf_check_relocs (bfd * abfd,
|
||||
htab->elf.dynobj = abfd;
|
||||
dynobj = htab->elf.dynobj;
|
||||
|
||||
sreloc = bfd_get_section_by_name (dynobj, name);
|
||||
sreloc = bfd_get_linker_section (dynobj, name);
|
||||
if (sreloc == NULL)
|
||||
{
|
||||
flagword flags;
|
||||
|
||||
sreloc = bfd_make_section (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;
|
||||
sreloc = bfd_make_section_anyway_with_flags (dynobj,
|
||||
name,
|
||||
flags);
|
||||
if (sreloc == NULL
|
||||
|| ! bfd_set_section_flags (dynobj, sreloc, flags)
|
||||
|| ! bfd_set_section_alignment (dynobj, sreloc, 2))
|
||||
return FALSE;
|
||||
}
|
||||
@ -2167,11 +2168,11 @@ microblaze_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
|
||||
if (!_bfd_elf_create_dynamic_sections (dynobj, info))
|
||||
return FALSE;
|
||||
|
||||
htab->splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
htab->srelplt = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
htab->splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
htab->srelplt = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!info->shared)
|
||||
htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
htab->srelbss = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
|
||||
if (!htab->splt || !htab->srelplt || !htab->sdynbss
|
||||
|| (!info->shared && !htab->srelbss))
|
||||
@ -2868,8 +2869,7 @@ microblaze_elf_finish_dynamic_symbol (bfd *output_bfd,
|
||||
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = bfd_get_linker_section (htab->elf.dynobj, ".rela.bss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rela.r_offset = (h->root.u.def.value
|
||||
@ -2907,14 +2907,14 @@ microblaze_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
|
||||
dynobj = htab->elf.dynobj;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (htab->elf.dynamic_sections_created)
|
||||
{
|
||||
asection *splt;
|
||||
Elf32_External_Dyn *dyncon, *dynconend;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL && sdyn != NULL);
|
||||
|
||||
dyncon = (Elf32_External_Dyn *) sdyn->contents;
|
||||
@ -2969,7 +2969,7 @@ microblaze_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
|
||||
/* Set the first entry in the global offset table to the address of
|
||||
the dynamic section. */
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
if (sgot && sgot->size > 0)
|
||||
{
|
||||
if (sdyn == NULL)
|
||||
@ -3005,7 +3005,7 @@ microblaze_elf_add_symbol_hook (bfd *abfd,
|
||||
{
|
||||
/* Common symbols less than or equal to -G nn bytes are automatically
|
||||
put into .sbss. */
|
||||
*secp = bfd_make_section_anyway (abfd, ".sbss");
|
||||
*secp = bfd_make_section_old_way (abfd, ".sbss");
|
||||
if (*secp == NULL
|
||||
|| ! bfd_set_section_flags (abfd, *secp, SEC_IS_COMMON))
|
||||
return FALSE;
|
||||
|
@ -3209,13 +3209,13 @@ ppc_elf_create_got (bfd *abfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
|
||||
htab = ppc_elf_hash_table (info);
|
||||
htab->got = s = bfd_get_section_by_name (abfd, ".got");
|
||||
htab->got = s = bfd_get_linker_section (abfd, ".got");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
|
||||
if (htab->is_vxworks)
|
||||
{
|
||||
htab->sgotplt = bfd_get_section_by_name (abfd, ".got.plt");
|
||||
htab->sgotplt = bfd_get_linker_section (abfd, ".got.plt");
|
||||
if (!htab->sgotplt)
|
||||
abort ();
|
||||
}
|
||||
@ -3229,7 +3229,7 @@ ppc_elf_create_got (bfd *abfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
htab->relgot = bfd_get_section_by_name (abfd, ".rela.got");
|
||||
htab->relgot = bfd_get_linker_section (abfd, ".rela.got");
|
||||
if (!htab->relgot)
|
||||
abort ();
|
||||
|
||||
@ -3303,7 +3303,7 @@ ppc_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
&& !ppc_elf_create_glink (abfd, info))
|
||||
return FALSE;
|
||||
|
||||
htab->dynbss = bfd_get_section_by_name (abfd, ".dynbss");
|
||||
htab->dynbss = bfd_get_linker_section (abfd, ".dynbss");
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".dynsbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
htab->dynsbss = s;
|
||||
@ -3312,7 +3312,7 @@ ppc_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
|
||||
if (! info->shared)
|
||||
{
|
||||
htab->relbss = bfd_get_section_by_name (abfd, ".rela.bss");
|
||||
htab->relbss = bfd_get_linker_section (abfd, ".rela.bss");
|
||||
flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rela.sbss", flags);
|
||||
@ -3326,8 +3326,8 @@ ppc_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
&& !elf_vxworks_create_dynamic_sections (abfd, info, &htab->srelplt2))
|
||||
return FALSE;
|
||||
|
||||
htab->relplt = bfd_get_section_by_name (abfd, ".rela.plt");
|
||||
htab->plt = s = bfd_get_section_by_name (abfd, ".plt");
|
||||
htab->relplt = bfd_get_linker_section (abfd, ".rela.plt");
|
||||
htab->plt = s = bfd_get_linker_section (abfd, ".plt");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
|
||||
@ -6004,7 +6004,7 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (htab->elf.dynobj, ".interp");
|
||||
s = bfd_get_linker_section (htab->elf.dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -9240,9 +9240,9 @@ ppc_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
|
||||
htab = ppc_elf_hash_table (info);
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
if (htab->is_vxworks)
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
else
|
||||
splt = NULL;
|
||||
|
||||
|
@ -425,7 +425,7 @@ rl78_elf_relocate_section
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
splt = NULL;
|
||||
if (dynobj != NULL)
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
|
||||
for (rel = relocs; rel < relend; rel ++)
|
||||
{
|
||||
@ -1208,13 +1208,14 @@ rl78_elf_check_relocs
|
||||
elf_hash_table (info)->dynobj = dynobj = abfd;
|
||||
if (splt == NULL)
|
||||
{
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
if (splt == NULL)
|
||||
{
|
||||
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_READONLY | SEC_CODE);
|
||||
splt = bfd_make_section_with_flags (dynobj, ".plt", flags);
|
||||
splt = bfd_make_section_anyway_with_flags (dynobj, ".plt",
|
||||
flags);
|
||||
if (splt == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, splt, 1))
|
||||
return FALSE;
|
||||
@ -1272,7 +1273,7 @@ rl78_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
if (info->relax_trip > 0)
|
||||
{
|
||||
if ((dynobj = elf_hash_table (info)->dynobj) != NULL
|
||||
&& (splt = bfd_get_section_by_name (dynobj, ".plt")) != NULL)
|
||||
&& (splt = bfd_get_linker_section (dynobj, ".plt")) != NULL)
|
||||
{
|
||||
bfd_byte *contents = splt->contents;
|
||||
unsigned int i, size = splt->size;
|
||||
@ -1301,7 +1302,7 @@ rl78_elf_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
if (dynobj == NULL)
|
||||
return TRUE;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL);
|
||||
|
||||
splt->contents = (bfd_byte *) bfd_zalloc (dynobj, splt->size);
|
||||
|
@ -846,9 +846,9 @@ create_got_section (dynobj, info)
|
||||
return FALSE;
|
||||
|
||||
htab = elf_s390_hash_table (info);
|
||||
htab->elf.sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
htab->elf.sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
htab->elf.srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
htab->elf.sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
htab->elf.sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
htab->elf.srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (!htab->elf.sgot || !htab->elf.sgotplt || !htab->elf.srelgot)
|
||||
abort ();
|
||||
|
||||
@ -873,11 +873,11 @@ elf_s390_create_dynamic_sections (dynobj, info)
|
||||
if (!_bfd_elf_create_dynamic_sections (dynobj, info))
|
||||
return FALSE;
|
||||
|
||||
htab->elf.splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
htab->elf.srelplt = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
htab->elf.splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
htab->elf.srelplt = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!info->shared)
|
||||
htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
htab->srelbss = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
|
||||
if (!htab->elf.splt || !htab->elf.srelplt || !htab->sdynbss
|
||||
|| (!info->shared && !htab->srelbss))
|
||||
@ -1975,7 +1975,7 @@ elf_s390_size_dynamic_sections (output_bfd, info)
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
@ -3359,7 +3359,7 @@ elf_s390_finish_dynamic_sections (output_bfd, info)
|
||||
|
||||
htab = elf_s390_hash_table (info);
|
||||
dynobj = htab->elf.dynobj;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (htab->elf.dynamic_sections_created)
|
||||
{
|
||||
|
@ -1066,7 +1066,7 @@ score_elf_sort_hash_table_f (struct score_elf_link_hash_entry *h, void *data)
|
||||
static asection *
|
||||
score_elf_got_section (bfd *abfd, bfd_boolean maybe_excluded)
|
||||
{
|
||||
asection *sgot = bfd_get_section_by_name (abfd, ".got");
|
||||
asection *sgot = bfd_get_linker_section (abfd, ".got");
|
||||
|
||||
if (sgot == NULL || (! maybe_excluded && (sgot->flags & SEC_EXCLUDE) != 0))
|
||||
return NULL;
|
||||
@ -1247,16 +1247,16 @@ score_elf_rel_dyn_section (bfd *dynobj, bfd_boolean create_p)
|
||||
static const char dname[] = ".rel.dyn";
|
||||
asection *sreloc;
|
||||
|
||||
sreloc = bfd_get_section_by_name (dynobj, dname);
|
||||
sreloc = bfd_get_linker_section (dynobj, dname);
|
||||
if (sreloc == NULL && create_p)
|
||||
{
|
||||
sreloc = bfd_make_section_with_flags (dynobj, dname,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
sreloc = bfd_make_section_anyway_with_flags (dynobj, dname,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (sreloc == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, sreloc,
|
||||
SCORE_ELF_LOG_FILE_ALIGN (dynobj)))
|
||||
@ -1429,7 +1429,7 @@ score_elf_create_got_section (bfd *abfd,
|
||||
|
||||
/* We have to use an alignment of 2**4 here because this is hardcoded
|
||||
in the function stub generation and in the linker script. */
|
||||
s = bfd_make_section_with_flags (abfd, ".got", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, 4))
|
||||
return FALSE;
|
||||
@ -3123,7 +3123,7 @@ s3_bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
if (!h->def_regular)
|
||||
{
|
||||
/* We need .stub section. */
|
||||
s = bfd_get_section_by_name (dynobj, SCORE_ELF_STUB_SECTION_NAME);
|
||||
s = bfd_get_linker_section (dynobj, SCORE_ELF_STUB_SECTION_NAME);
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
h->root.u.def.section = s;
|
||||
@ -3259,7 +3259,7 @@ s3_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (!info->shared)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = strlen (ELF_DYNAMIC_INTERPRETER) + 1;
|
||||
s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -3417,7 +3417,7 @@ s3_bfd_score_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
| SEC_LINKER_CREATED | SEC_READONLY);
|
||||
|
||||
/* ABI requests the .dynamic section to be read only. */
|
||||
s = bfd_get_section_by_name (abfd, ".dynamic");
|
||||
s = bfd_get_linker_section (abfd, ".dynamic");
|
||||
if (s != NULL)
|
||||
{
|
||||
if (!bfd_set_section_flags (abfd, s, flags))
|
||||
@ -3432,10 +3432,10 @@ s3_bfd_score_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
|
||||
/* Create .stub section. */
|
||||
if (bfd_get_section_by_name (abfd, SCORE_ELF_STUB_SECTION_NAME) == NULL)
|
||||
if (bfd_get_linker_section (abfd, SCORE_ELF_STUB_SECTION_NAME) == NULL)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd, SCORE_ELF_STUB_SECTION_NAME,
|
||||
flags | SEC_CODE);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, SCORE_ELF_STUB_SECTION_NAME,
|
||||
flags | SEC_CODE);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, 2))
|
||||
|
||||
@ -3489,7 +3489,7 @@ s3_bfd_score_elf_finish_dynamic_symbol (bfd *output_bfd,
|
||||
/* This symbol has a stub. Set it up. */
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, SCORE_ELF_STUB_SECTION_NAME);
|
||||
s = bfd_get_linker_section (dynobj, SCORE_ELF_STUB_SECTION_NAME);
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* FIXME: Can h->dynindex be more than 64K? */
|
||||
@ -3568,7 +3568,7 @@ s3_bfd_score_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
sgot = score_elf_got_section (dynobj, FALSE);
|
||||
if (sgot == NULL)
|
||||
|
@ -948,7 +948,7 @@ score_elf_sort_hash_table_f (struct score_elf_link_hash_entry *h, void *data)
|
||||
static asection *
|
||||
score_elf_got_section (bfd *abfd, bfd_boolean maybe_excluded)
|
||||
{
|
||||
asection *sgot = bfd_get_section_by_name (abfd, ".got");
|
||||
asection *sgot = bfd_get_linker_section (abfd, ".got");
|
||||
|
||||
if (sgot == NULL || (! maybe_excluded && (sgot->flags & SEC_EXCLUDE) != 0))
|
||||
return NULL;
|
||||
@ -1103,16 +1103,16 @@ score_elf_rel_dyn_section (bfd *dynobj, bfd_boolean create_p)
|
||||
static const char dname[] = ".rel.dyn";
|
||||
asection *sreloc;
|
||||
|
||||
sreloc = bfd_get_section_by_name (dynobj, dname);
|
||||
sreloc = bfd_get_linker_section (dynobj, dname);
|
||||
if (sreloc == NULL && create_p)
|
||||
{
|
||||
sreloc = bfd_make_section_with_flags (dynobj, dname,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
sreloc = bfd_make_section_anyway_with_flags (dynobj, dname,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (sreloc == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, sreloc,
|
||||
SCORE_ELF_LOG_FILE_ALIGN (dynobj)))
|
||||
@ -1286,7 +1286,7 @@ score_elf_create_got_section (bfd *abfd,
|
||||
|
||||
/* We have to use an alignment of 2**4 here because this is hardcoded
|
||||
in the function stub generation and in the linker script. */
|
||||
s = bfd_make_section_with_flags (abfd, ".got", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, 4))
|
||||
return FALSE;
|
||||
@ -2928,7 +2928,7 @@ s7_bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
if (!h->def_regular)
|
||||
{
|
||||
/* We need .stub section. */
|
||||
s = bfd_get_section_by_name (dynobj, SCORE_ELF_STUB_SECTION_NAME);
|
||||
s = bfd_get_linker_section (dynobj, SCORE_ELF_STUB_SECTION_NAME);
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
h->root.u.def.section = s;
|
||||
@ -3066,7 +3066,7 @@ s7_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (!info->shared)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = strlen (ELF_DYNAMIC_INTERPRETER) + 1;
|
||||
s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -3224,7 +3224,7 @@ s7_bfd_score_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
| SEC_LINKER_CREATED | SEC_READONLY);
|
||||
|
||||
/* ABI requests the .dynamic section to be read only. */
|
||||
s = bfd_get_section_by_name (abfd, ".dynamic");
|
||||
s = bfd_get_linker_section (abfd, ".dynamic");
|
||||
if (s != NULL)
|
||||
{
|
||||
if (!bfd_set_section_flags (abfd, s, flags))
|
||||
@ -3239,10 +3239,10 @@ s7_bfd_score_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
|
||||
/* Create .stub section. */
|
||||
if (bfd_get_section_by_name (abfd, SCORE_ELF_STUB_SECTION_NAME) == NULL)
|
||||
if (bfd_get_linker_section (abfd, SCORE_ELF_STUB_SECTION_NAME) == NULL)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd, SCORE_ELF_STUB_SECTION_NAME,
|
||||
flags | SEC_CODE);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, SCORE_ELF_STUB_SECTION_NAME,
|
||||
flags | SEC_CODE);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, 2))
|
||||
|
||||
@ -3297,7 +3297,7 @@ s7_bfd_score_elf_finish_dynamic_symbol (bfd *output_bfd,
|
||||
/* This symbol has a stub. Set it up. */
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, SCORE_ELF_STUB_SECTION_NAME);
|
||||
s = bfd_get_linker_section (dynobj, SCORE_ELF_STUB_SECTION_NAME);
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* FIXME: Can h->dynindex be more than 64K? */
|
||||
@ -3377,7 +3377,7 @@ s7_bfd_score_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
sgot = score_elf_got_section (dynobj, FALSE);
|
||||
if (sgot == NULL)
|
||||
|
@ -2622,39 +2622,39 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
|
||||
if (htab == NULL)
|
||||
return FALSE;
|
||||
|
||||
htab->sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
htab->srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
htab->sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
htab->sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
htab->srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (! htab->sgot || ! htab->sgotplt || ! htab->srelgot)
|
||||
abort ();
|
||||
|
||||
htab->sfuncdesc = bfd_make_section_with_flags (dynobj, ".got.funcdesc",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
htab->sfuncdesc = bfd_make_section_anyway_with_flags (dynobj, ".got.funcdesc",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (htab->sfuncdesc == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, htab->sfuncdesc, 2))
|
||||
return FALSE;
|
||||
|
||||
htab->srelfuncdesc = bfd_make_section_with_flags (dynobj,
|
||||
".rela.got.funcdesc",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
htab->srelfuncdesc = bfd_make_section_anyway_with_flags (dynobj,
|
||||
".rela.got.funcdesc",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (htab->srelfuncdesc == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, htab->srelfuncdesc, 2))
|
||||
return FALSE;
|
||||
|
||||
/* Also create .rofixup. */
|
||||
htab->srofixup = bfd_make_section_with_flags (dynobj, ".rofixup",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
htab->srofixup = bfd_make_section_anyway_with_flags (dynobj, ".rofixup",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (htab->srofixup == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, htab->srofixup, 2))
|
||||
return FALSE;
|
||||
@ -2708,7 +2708,7 @@ sh_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
if (bed->plt_readonly)
|
||||
pltflags |= SEC_READONLY;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".plt", pltflags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
|
||||
htab->splt = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
|
||||
@ -2737,9 +2737,10 @@ sh_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
bed->default_use_rela_p ? ".rela.plt" : ".rel.plt",
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
bed->default_use_rela_p
|
||||
? ".rela.plt" : ".rel.plt",
|
||||
flags | SEC_READONLY);
|
||||
htab->srelplt = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
@ -2757,8 +2758,8 @@ sh_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
image and use a R_*_COPY reloc to tell the dynamic linker to
|
||||
initialize them at run time. The linker script puts the .dynbss
|
||||
section into the .bss section of the final image. */
|
||||
s = bfd_make_section_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
htab->sdynbss = s;
|
||||
if (s == NULL)
|
||||
return FALSE;
|
||||
@ -2776,10 +2777,10 @@ sh_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
copy relocs. */
|
||||
if (! info->shared)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
htab->srelbss = s;
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
@ -3417,7 +3418,7 @@ sh_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -4672,8 +4673,8 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
|
||||
if (srelgot == NULL)
|
||||
{
|
||||
srelgot = bfd_get_section_by_name (dynobj,
|
||||
".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj,
|
||||
".rela.got");
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
}
|
||||
|
||||
@ -4994,7 +4995,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
|
||||
if (srelgot == NULL)
|
||||
{
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
}
|
||||
|
||||
@ -5284,7 +5285,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
|
||||
if (srelgot == NULL)
|
||||
{
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (srelgot != NULL);
|
||||
}
|
||||
|
||||
@ -7141,8 +7142,7 @@ sh_elf_finish_dynamic_symbol (bfd *output_bfd, struct bfd_link_info *info,
|
||||
&& (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak));
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = bfd_get_linker_section (htab->root.dynobj, ".rela.bss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rel.r_offset = (h->root.u.def.value
|
||||
@ -7178,7 +7178,7 @@ sh_elf_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
|
||||
sgotplt = htab->sgotplt;
|
||||
sdyn = bfd_get_section_by_name (htab->root.dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (htab->root.dynobj, ".dynamic");
|
||||
|
||||
if (htab->root.dynamic_sections_created)
|
||||
{
|
||||
|
@ -1670,9 +1670,9 @@ elf32_tic6x_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
|
||||
|| ! bfd_set_section_alignment (dynobj, htab->elf.splt, 5))
|
||||
return FALSE;
|
||||
|
||||
htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!info->shared)
|
||||
htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
htab->srelbss = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
|
||||
if (!htab->sdynbss
|
||||
|| (!info->shared && !htab->srelbss))
|
||||
@ -1849,8 +1849,8 @@ elf32_tic6x_finish_dynamic_symbol (bfd * output_bfd,
|
||||
/* This symbol has an entry in the global offset table.
|
||||
Set it up. */
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srela = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
srela = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (sgot != NULL && srela != NULL);
|
||||
|
||||
/* If this is a -Bsymbolic link, and the symbol is defined
|
||||
@ -3305,7 +3305,7 @@ elf32_tic6x_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
@ -3607,7 +3607,7 @@ elf32_tic6x_finish_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
htab = elf32_tic6x_hash_table (info);
|
||||
dynobj = htab->elf.dynobj;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
|
@ -1224,8 +1224,8 @@ tilepro_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
struct elf_link_hash_table *htab = elf_hash_table (info);
|
||||
|
||||
/* This function may be called more than once. */
|
||||
s = bfd_get_section_by_name (abfd, ".got");
|
||||
if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0)
|
||||
s = bfd_get_linker_section (abfd, ".got");
|
||||
if (s != NULL)
|
||||
return TRUE;
|
||||
|
||||
flags = bed->dynamic_sec_flags;
|
||||
@ -1297,9 +1297,9 @@ tilepro_elf_create_dynamic_sections (bfd *dynobj,
|
||||
if (!_bfd_elf_create_dynamic_sections (dynobj, info))
|
||||
return FALSE;
|
||||
|
||||
htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!info->shared)
|
||||
htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
htab->srelbss = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
|
||||
if (!htab->elf.splt || !htab->elf.srelplt || !htab->sdynbss
|
||||
|| (!info->shared && !htab->srelbss))
|
||||
@ -2427,7 +2427,7 @@ tilepro_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF32_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF32_DYNAMIC_INTERPRETER;
|
||||
@ -3775,8 +3775,7 @@ tilepro_elf_finish_dynamic_symbol (bfd *output_bfd,
|
||||
/* This symbols needs a copy reloc. Set it up. */
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = htab->srelbss;
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rela.r_offset = (h->root.u.def.value
|
||||
@ -3851,14 +3850,14 @@ tilepro_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
BFD_ASSERT (htab != NULL);
|
||||
dynobj = htab->elf.dynobj;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
asection *splt;
|
||||
bfd_boolean ret;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = htab->elf.splt;
|
||||
BFD_ASSERT (splt != NULL && sdyn != NULL);
|
||||
|
||||
ret = tilepro_finish_dyn (output_bfd, info, dynobj, sdyn, splt);
|
||||
|
@ -613,24 +613,23 @@ elf_vax_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
if (srelgot == NULL
|
||||
&& (h != NULL || info->shared))
|
||||
{
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (srelgot == NULL)
|
||||
{
|
||||
srelgot = bfd_make_section_with_flags (dynobj,
|
||||
".rela.got",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_READONLY);
|
||||
|
||||
srelgot = bfd_make_section_anyway_with_flags (dynobj,
|
||||
".rela.got",
|
||||
flags);
|
||||
if (srelgot == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, srelgot, 2))
|
||||
return FALSE;
|
||||
@ -967,7 +966,7 @@ elf_vax_adjust_dynamic_symbol (info, h)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".plt");
|
||||
s = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* If this is the first .plt entry, make room for the special
|
||||
@ -997,13 +996,13 @@ elf_vax_adjust_dynamic_symbol (info, h)
|
||||
/* We also need to make an entry in the .got.plt section, which
|
||||
will be placed in the .got section by the linker script. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += 4;
|
||||
|
||||
/* We also need to make an entry in the .rela.plt section. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += sizeof (Elf32_External_Rela);
|
||||
|
||||
@ -1046,7 +1045,7 @@ elf_vax_adjust_dynamic_symbol (info, h)
|
||||
both the dynamic object and the regular object will refer to the
|
||||
same memory location for the variable. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
s = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* We must generate a R_VAX_COPY reloc to tell the dynamic linker to
|
||||
@ -1057,7 +1056,7 @@ elf_vax_adjust_dynamic_symbol (info, h)
|
||||
{
|
||||
asection *srel;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (srel != NULL);
|
||||
srel->size += sizeof (Elf32_External_Rela);
|
||||
h->needs_copy = 1;
|
||||
@ -1085,7 +1084,7 @@ elf_vax_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -1098,13 +1097,13 @@ elf_vax_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
|
||||
not actually use these entries. Reset the size of .rela.got
|
||||
and .got, which will cause it to get stripped from the output
|
||||
file below. */
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (s != NULL)
|
||||
s->size = 0;
|
||||
s = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
if (s != NULL)
|
||||
s->size = 0;
|
||||
s = bfd_get_section_by_name (dynobj, ".got");
|
||||
s = bfd_get_linker_section (dynobj, ".got");
|
||||
if (s != NULL)
|
||||
s->size = 0;
|
||||
}
|
||||
@ -1299,8 +1298,8 @@ elf_vax_instantiate_got_entries (struct elf_link_hash_entry *h, PTR infoptr)
|
||||
if (dynobj == NULL)
|
||||
return TRUE;
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
|
||||
if (!elf_hash_table (info)->dynamic_sections_created
|
||||
|| (info->shared && info->symbolic)
|
||||
@ -1470,7 +1469,7 @@ elf_vax_relocate_section (bfd *output_bfd,
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
@ -1546,13 +1545,13 @@ elf_vax_relocate_section (bfd *output_bfd,
|
||||
|
||||
if (splt == NULL)
|
||||
{
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL);
|
||||
}
|
||||
|
||||
if (sgotplt == NULL)
|
||||
{
|
||||
sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (sgotplt != NULL);
|
||||
}
|
||||
|
||||
@ -1808,9 +1807,9 @@ elf_vax_finish_dynamic_symbol (bfd *output_bfd, struct bfd_link_info *info,
|
||||
it up. */
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
srela = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
srela = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (splt != NULL && sgot != NULL && srela != NULL);
|
||||
|
||||
addend = 2 * (h->plt.offset & 1);
|
||||
@ -1872,8 +1871,8 @@ elf_vax_finish_dynamic_symbol (bfd *output_bfd, struct bfd_link_info *info,
|
||||
|
||||
/* This symbol has an entry in the global offset table. Set it
|
||||
up. */
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srela = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
srela = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (sgot != NULL && srela != NULL);
|
||||
|
||||
rela.r_offset = (sgot->output_section->vma
|
||||
@ -1914,8 +1913,7 @@ elf_vax_finish_dynamic_symbol (bfd *output_bfd, struct bfd_link_info *info,
|
||||
&& (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak));
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rela.r_offset = (h->root.u.def.value
|
||||
@ -1946,16 +1944,16 @@ elf_vax_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
asection *splt;
|
||||
Elf32_External_Dyn *dyncon, *dynconend;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL && sdyn != NULL);
|
||||
|
||||
dyncon = (Elf32_External_Dyn *) sdyn->contents;
|
||||
|
@ -456,18 +456,15 @@ xstormy16_elf_check_relocs (bfd *abfd,
|
||||
elf_hash_table (info)->dynobj = dynobj = abfd;
|
||||
if (splt == NULL)
|
||||
{
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
if (splt == NULL)
|
||||
{
|
||||
splt = bfd_make_section_with_flags (dynobj, ".plt",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY
|
||||
| SEC_CODE));
|
||||
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_READONLY | SEC_CODE);
|
||||
|
||||
splt = bfd_make_section_anyway_with_flags (dynobj, ".plt",
|
||||
flags);
|
||||
if (splt == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, splt, 1))
|
||||
return FALSE;
|
||||
@ -719,7 +716,7 @@ xstormy16_elf_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
if (dynobj == NULL)
|
||||
return TRUE;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL);
|
||||
|
||||
splt->contents = bfd_zalloc (dynobj, splt->size);
|
||||
@ -783,7 +780,7 @@ xstormy16_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNU
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
splt = NULL;
|
||||
if (dynobj != NULL)
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
|
||||
for (rel = relocs; rel < relend; rel ++)
|
||||
{
|
||||
@ -973,7 +970,7 @@ xstormy16_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
been filled in. */
|
||||
|
||||
if ((dynobj = elf_hash_table (info)->dynobj) != NULL
|
||||
&& (splt = bfd_get_section_by_name (dynobj, ".plt")) != NULL)
|
||||
&& (splt = bfd_get_linker_section (dynobj, ".plt")) != NULL)
|
||||
{
|
||||
bfd_byte *contents = splt->contents;
|
||||
unsigned int i, size = splt->size;
|
||||
|
@ -1414,11 +1414,11 @@ elf_xtensa_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
|
||||
/* First do all the standard stuff. */
|
||||
if (! _bfd_elf_create_dynamic_sections (dynobj, info))
|
||||
return FALSE;
|
||||
htab->splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
htab->srelplt = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
htab->sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
htab->srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
htab->splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
htab->srelplt = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
htab->sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
htab->sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
htab->srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
|
||||
/* Create any extra PLT sections in case check_relocs has already
|
||||
been called on all the non-dynamic input files. */
|
||||
@ -1435,14 +1435,15 @@ elf_xtensa_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
|
||||
/* Create ".got.loc" (literal tables for use by dynamic linker). */
|
||||
htab->sgotloc = bfd_make_section_with_flags (dynobj, ".got.loc", flags);
|
||||
htab->sgotloc = bfd_make_section_anyway_with_flags (dynobj, ".got.loc",
|
||||
flags);
|
||||
if (htab->sgotloc == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, htab->sgotloc, 2))
|
||||
return FALSE;
|
||||
|
||||
/* Create ".xt.lit.plt" (literal table for ".got.plt*"). */
|
||||
htab->spltlittbl = bfd_make_section_with_flags (dynobj, ".xt.lit.plt",
|
||||
noalloc_flags);
|
||||
htab->spltlittbl = bfd_make_section_anyway_with_flags (dynobj, ".xt.lit.plt",
|
||||
noalloc_flags);
|
||||
if (htab->spltlittbl == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, htab->spltlittbl, 2))
|
||||
return FALSE;
|
||||
@ -1474,14 +1475,14 @@ add_extra_plt_sections (struct bfd_link_info *info, int count)
|
||||
|
||||
sname = (char *) bfd_malloc (10);
|
||||
sprintf (sname, ".plt.%u", chunk);
|
||||
s = bfd_make_section_with_flags (dynobj, sname, flags | SEC_CODE);
|
||||
s = bfd_make_section_anyway_with_flags (dynobj, sname, flags | SEC_CODE);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, s, 2))
|
||||
return FALSE;
|
||||
|
||||
sname = (char *) bfd_malloc (14);
|
||||
sprintf (sname, ".got.plt.%u", chunk);
|
||||
s = bfd_make_section_with_flags (dynobj, sname, flags);
|
||||
s = bfd_make_section_anyway_with_flags (dynobj, sname, flags);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, s, 2))
|
||||
return FALSE;
|
||||
@ -1636,7 +1637,7 @@ elf_xtensa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
@ -3275,7 +3276,7 @@ elf_xtensa_finish_dynamic_sections (bfd *output_bfd,
|
||||
return FALSE;
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
BFD_ASSERT (sdyn != NULL);
|
||||
|
||||
/* Set the first entry in the global offset table to the address of
|
||||
@ -10275,7 +10276,7 @@ elf_xtensa_get_plt_section (struct bfd_link_info *info, int chunk)
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
sprintf (plt_name, ".plt.%u", chunk);
|
||||
return bfd_get_section_by_name (dynobj, plt_name);
|
||||
return bfd_get_linker_section (dynobj, plt_name);
|
||||
}
|
||||
|
||||
|
||||
@ -10296,7 +10297,7 @@ elf_xtensa_get_gotplt_section (struct bfd_link_info *info, int chunk)
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
sprintf (got_name, ".got.plt.%u", chunk);
|
||||
return bfd_get_section_by_name (dynobj, got_name);
|
||||
return bfd_get_linker_section (dynobj, got_name);
|
||||
}
|
||||
|
||||
|
||||
@ -10675,7 +10676,7 @@ xtensa_callback_required_dependence (bfd *abfd,
|
||||
|
||||
/* Find the corresponding ".got.plt*" section. */
|
||||
if (sec->name[4] == '\0')
|
||||
sgotplt = bfd_get_section_by_name (sec->owner, ".got.plt");
|
||||
sgotplt = bfd_get_linker_section (sec->owner, ".got.plt");
|
||||
else
|
||||
{
|
||||
char got_name[14];
|
||||
@ -10685,7 +10686,7 @@ xtensa_callback_required_dependence (bfd *abfd,
|
||||
chunk = strtol (&sec->name[5], NULL, 10);
|
||||
|
||||
sprintf (got_name, ".got.plt.%u", chunk);
|
||||
sgotplt = bfd_get_section_by_name (sec->owner, got_name);
|
||||
sgotplt = bfd_get_linker_section (sec->owner, got_name);
|
||||
}
|
||||
BFD_ASSERT (sgotplt);
|
||||
|
||||
|
@ -2103,7 +2103,7 @@ elf64_alpha_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
{
|
||||
h->needs_plt = TRUE;
|
||||
|
||||
s = bfd_get_section_by_name(dynobj, ".plt");
|
||||
s = bfd_get_linker_section (dynobj, ".plt");
|
||||
if (!s && !elf64_alpha_create_dynamic_sections (dynobj, info))
|
||||
return FALSE;
|
||||
|
||||
@ -2589,7 +2589,7 @@ elf64_alpha_size_plt_section (struct bfd_link_info *info)
|
||||
return;
|
||||
|
||||
dynobj = elf_hash_table(info)->dynobj;
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
if (splt == NULL)
|
||||
return;
|
||||
|
||||
@ -2599,7 +2599,7 @@ elf64_alpha_size_plt_section (struct bfd_link_info *info)
|
||||
elf64_alpha_size_plt_section_1, splt);
|
||||
|
||||
/* Every plt entry requires a JMP_SLOT relocation. */
|
||||
spltrel = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
spltrel = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
entries = 0;
|
||||
if (splt->size)
|
||||
{
|
||||
@ -2615,7 +2615,7 @@ elf64_alpha_size_plt_section (struct bfd_link_info *info)
|
||||
entire contents of the .got.plt section. */
|
||||
if (elf64_alpha_use_secureplt)
|
||||
{
|
||||
sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
sgotplt->size = entries ? 16 : 0;
|
||||
}
|
||||
}
|
||||
@ -2774,7 +2774,7 @@ elf64_alpha_size_rela_got_1 (struct alpha_elf_link_hash_entry *h,
|
||||
if (entries > 0)
|
||||
{
|
||||
bfd *dynobj = elf_hash_table(info)->dynobj;
|
||||
asection *srel = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
asection *srel = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (srel != NULL);
|
||||
srel->size += sizeof (Elf64_External_Rela) * entries;
|
||||
}
|
||||
@ -2824,7 +2824,7 @@ elf64_alpha_size_rela_got_section (struct bfd_link_info *info)
|
||||
}
|
||||
|
||||
dynobj = elf_hash_table(info)->dynobj;
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (!srel)
|
||||
{
|
||||
BFD_ASSERT (entries == 0);
|
||||
@ -2860,7 +2860,7 @@ elf64_alpha_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -4155,7 +4155,7 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
if (dynobj)
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
else
|
||||
srelgot = NULL;
|
||||
|
||||
@ -4166,7 +4166,7 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
(input_bfd, elf_elfheader(input_bfd)->e_shstrndx,
|
||||
_bfd_elf_single_rel_hdr (input_section)->sh_name));
|
||||
BFD_ASSERT(section_name != NULL);
|
||||
srel = bfd_get_section_by_name (dynobj, section_name);
|
||||
srel = bfd_get_linker_section (dynobj, section_name);
|
||||
}
|
||||
else
|
||||
srel = NULL;
|
||||
@ -4782,9 +4782,9 @@ elf64_alpha_finish_dynamic_symbol (bfd *output_bfd, struct bfd_link_info *info,
|
||||
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL);
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (srel != NULL);
|
||||
|
||||
for (gotent = ah->got_entries; gotent ; gotent = gotent->next)
|
||||
@ -4854,7 +4854,7 @@ elf64_alpha_finish_dynamic_symbol (bfd *output_bfd, struct bfd_link_info *info,
|
||||
asection *srel;
|
||||
struct alpha_elf_got_entry *gotent;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (srel != NULL);
|
||||
|
||||
for (gotent = ((struct alpha_elf_link_hash_entry *) h)->got_entries;
|
||||
@ -4919,7 +4919,7 @@ elf64_alpha_finish_dynamic_sections (bfd *output_bfd,
|
||||
asection *sdyn;
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
@ -4927,8 +4927,8 @@ elf64_alpha_finish_dynamic_sections (bfd *output_bfd,
|
||||
Elf64_External_Dyn *dyncon, *dynconend;
|
||||
bfd_vma plt_vma, gotplt_vma;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
srelaplt = bfd_get_section_by_name (output_bfd, ".rela.plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
srelaplt = bfd_get_linker_section (output_bfd, ".rela.plt");
|
||||
BFD_ASSERT (splt != NULL && sdyn != NULL);
|
||||
|
||||
plt_vma = splt->output_section->vma + splt->output_offset;
|
||||
@ -4936,7 +4936,7 @@ elf64_alpha_finish_dynamic_sections (bfd *output_bfd,
|
||||
gotplt_vma = 0;
|
||||
if (elf64_alpha_use_secureplt)
|
||||
{
|
||||
sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (sgotplt != NULL);
|
||||
if (sgotplt->size > 0)
|
||||
gotplt_vma = sgotplt->output_section->vma + sgotplt->output_offset;
|
||||
|
118
bfd/elf64-hppa.c
118
bfd/elf64-hppa.c
@ -416,16 +416,16 @@ get_reloc_section (bfd *abfd,
|
||||
if (!dynobj)
|
||||
hppa_info->root.dynobj = dynobj = abfd;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, srel_name);
|
||||
srel = bfd_get_linker_section (dynobj, srel_name);
|
||||
if (srel == NULL)
|
||||
{
|
||||
srel = bfd_make_section_with_flags (dynobj, srel_name,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
srel = bfd_make_section_anyway_with_flags (dynobj, srel_name,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (srel == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, srel, 3))
|
||||
return FALSE;
|
||||
@ -1157,12 +1157,12 @@ get_opd (bfd *abfd,
|
||||
if (!dynobj)
|
||||
hppa_info->root.dynobj = dynobj = abfd;
|
||||
|
||||
opd = bfd_make_section_with_flags (dynobj, ".opd",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
opd = bfd_make_section_anyway_with_flags (dynobj, ".opd",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (!opd
|
||||
|| !bfd_set_section_alignment (abfd, opd, 3))
|
||||
{
|
||||
@ -1193,12 +1193,12 @@ get_plt (bfd *abfd,
|
||||
if (!dynobj)
|
||||
hppa_info->root.dynobj = dynobj = abfd;
|
||||
|
||||
plt = bfd_make_section_with_flags (dynobj, ".plt",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
plt = bfd_make_section_anyway_with_flags (dynobj, ".plt",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (!plt
|
||||
|| !bfd_set_section_alignment (abfd, plt, 3))
|
||||
{
|
||||
@ -1229,12 +1229,12 @@ get_dlt (bfd *abfd,
|
||||
if (!dynobj)
|
||||
hppa_info->root.dynobj = dynobj = abfd;
|
||||
|
||||
dlt = bfd_make_section_with_flags (dynobj, ".dlt",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
dlt = bfd_make_section_anyway_with_flags (dynobj, ".dlt",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (!dlt
|
||||
|| !bfd_set_section_alignment (abfd, dlt, 3))
|
||||
{
|
||||
@ -1265,12 +1265,12 @@ get_stub (bfd *abfd,
|
||||
if (!dynobj)
|
||||
hppa_info->root.dynobj = dynobj = abfd;
|
||||
|
||||
stub = bfd_make_section_with_flags (dynobj, ".stub",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_READONLY
|
||||
| SEC_LINKER_CREATED));
|
||||
stub = bfd_make_section_anyway_with_flags (dynobj, ".stub",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_READONLY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (!stub
|
||||
|| !bfd_set_section_alignment (abfd, stub, 3))
|
||||
{
|
||||
@ -1345,45 +1345,45 @@ elf64_hppa_create_dynamic_sections (bfd *abfd,
|
||||
if (! get_opd (abfd, info, hppa_info))
|
||||
return FALSE;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".rela.dlt",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_READONLY
|
||||
| SEC_LINKER_CREATED));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rela.dlt",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_READONLY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, 3))
|
||||
return FALSE;
|
||||
hppa_info->dlt_rel_sec = s;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".rela.plt",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_READONLY
|
||||
| SEC_LINKER_CREATED));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rela.plt",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_READONLY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, 3))
|
||||
return FALSE;
|
||||
hppa_info->plt_rel_sec = s;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".rela.data",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_READONLY
|
||||
| SEC_LINKER_CREATED));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rela.data",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_READONLY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, 3))
|
||||
return FALSE;
|
||||
hppa_info->other_rel_sec = s;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".rela.opd",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_READONLY
|
||||
| SEC_LINKER_CREATED));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rela.opd",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_READONLY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, 3))
|
||||
return FALSE;
|
||||
@ -1562,7 +1562,7 @@ elf64_hppa_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
sec = bfd_get_section_by_name (dynobj, ".interp");
|
||||
sec = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (sec != NULL);
|
||||
sec->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
sec->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -1575,7 +1575,7 @@ elf64_hppa_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
|
||||
not actually use these entries. Reset the size of .rela.dlt,
|
||||
which will cause it to get stripped from the output file
|
||||
below. */
|
||||
sec = bfd_get_section_by_name (dynobj, ".rela.dlt");
|
||||
sec = bfd_get_linker_section (dynobj, ".rela.dlt");
|
||||
if (sec != NULL)
|
||||
sec->size = 0;
|
||||
}
|
||||
@ -2492,7 +2492,7 @@ elf64_hppa_finish_dynamic_sections (bfd *output_bfd,
|
||||
elf64_hppa_finalize_dlt,
|
||||
info);
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
|
@ -1270,12 +1270,13 @@ elf64_ia64_create_dynamic_sections (bfd *abfd,
|
||||
|
||||
flags = bed->dynamic_sec_flags;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".dynamic", flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".dynamic",
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
|
||||
return FALSE;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".plt", flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".plt", flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
|
||||
return FALSE;
|
||||
@ -1287,32 +1288,32 @@ elf64_ia64_create_dynamic_sections (bfd *abfd,
|
||||
if (!get_pltoff (abfd, ia64_info))
|
||||
return FALSE;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".vmsdynstr",
|
||||
(SEC_ALLOC
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".vmsdynstr",
|
||||
(SEC_ALLOC
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, 0))
|
||||
return FALSE;
|
||||
|
||||
/* Create a fixup section. */
|
||||
s = bfd_make_section_with_flags (abfd, ".fixups",
|
||||
(SEC_ALLOC
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".fixups",
|
||||
(SEC_ALLOC
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, 3))
|
||||
return FALSE;
|
||||
ia64_info->fixups_sec = s;
|
||||
|
||||
/* Create the transfer fixup section. */
|
||||
s = bfd_make_section_with_flags (abfd, ".transfer",
|
||||
(SEC_ALLOC
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".transfer",
|
||||
(SEC_ALLOC
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED));
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, 3))
|
||||
return FALSE;
|
||||
@ -1721,7 +1722,8 @@ get_got (bfd *abfd, struct elf64_ia64_link_hash_table *ia64_info)
|
||||
|
||||
/* The .got section is always aligned at 8 bytes. */
|
||||
flags = get_elf_backend_data (dynobj)->dynamic_sec_flags;
|
||||
got = bfd_make_section_with_flags (dynobj, ".got", flags | SEC_SMALL_DATA);
|
||||
got = bfd_make_section_anyway_with_flags (dynobj, ".got",
|
||||
flags | SEC_SMALL_DATA);
|
||||
if (got == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, got, 3))
|
||||
return NULL;
|
||||
@ -1750,13 +1752,14 @@ get_fptr (bfd *abfd, struct bfd_link_info *info,
|
||||
if (!dynobj)
|
||||
ia64_info->root.dynobj = dynobj = abfd;
|
||||
|
||||
fptr = bfd_make_section_with_flags (dynobj, ".opd",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| (info->pie ? 0 : SEC_READONLY)
|
||||
| SEC_LINKER_CREATED));
|
||||
fptr = bfd_make_section_anyway_with_flags (dynobj, ".opd",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| (info->pie ? 0
|
||||
: SEC_READONLY)
|
||||
| SEC_LINKER_CREATED));
|
||||
if (!fptr
|
||||
|| !bfd_set_section_alignment (dynobj, fptr, 4))
|
||||
{
|
||||
@ -1769,12 +1772,12 @@ get_fptr (bfd *abfd, struct bfd_link_info *info,
|
||||
if (info->pie)
|
||||
{
|
||||
asection *fptr_rel;
|
||||
fptr_rel = bfd_make_section_with_flags (dynobj, ".rela.opd",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
fptr_rel = bfd_make_section_anyway_with_flags (dynobj, ".rela.opd",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (fptr_rel == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, fptr_rel, 3))
|
||||
{
|
||||
@ -1802,14 +1805,14 @@ get_pltoff (bfd *abfd, struct elf64_ia64_link_hash_table *ia64_info)
|
||||
if (!dynobj)
|
||||
ia64_info->root.dynobj = dynobj = abfd;
|
||||
|
||||
pltoff = bfd_make_section_with_flags (dynobj,
|
||||
ELF_STRING_ia64_pltoff,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_SMALL_DATA
|
||||
| SEC_LINKER_CREATED));
|
||||
pltoff = bfd_make_section_anyway_with_flags (dynobj,
|
||||
ELF_STRING_ia64_pltoff,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_SMALL_DATA
|
||||
| SEC_LINKER_CREATED));
|
||||
if (!pltoff
|
||||
|| !bfd_set_section_alignment (dynobj, pltoff, 4))
|
||||
{
|
||||
@ -1849,15 +1852,15 @@ get_reloc_section (bfd *abfd,
|
||||
if (!dynobj)
|
||||
ia64_info->root.dynobj = dynobj = abfd;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, srel_name);
|
||||
srel = bfd_get_linker_section (dynobj, srel_name);
|
||||
if (srel == NULL && create)
|
||||
{
|
||||
srel = bfd_make_section_with_flags (dynobj, srel_name,
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
srel = bfd_make_section_anyway_with_flags (dynobj, srel_name,
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (srel == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, srel, 3))
|
||||
return NULL;
|
||||
@ -2773,11 +2776,11 @@ elf64_ia64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
unsigned int time_hi, time_lo;
|
||||
|
||||
/* The .dynamic section must exist and be empty. */
|
||||
dynsec = bfd_get_section_by_name (hash_table->dynobj, ".dynamic");
|
||||
dynsec = bfd_get_linker_section (hash_table->dynobj, ".dynamic");
|
||||
BFD_ASSERT (dynsec != NULL);
|
||||
BFD_ASSERT (dynsec->size == 0);
|
||||
|
||||
dynstrsec = bfd_get_section_by_name (hash_table->dynobj, ".vmsdynstr");
|
||||
dynstrsec = bfd_get_linker_section (hash_table->dynobj, ".vmsdynstr");
|
||||
BFD_ASSERT (dynstrsec != NULL);
|
||||
BFD_ASSERT (dynstrsec->size == 0);
|
||||
dynstrsec->size = 1; /* Initial blank. */
|
||||
@ -4061,7 +4064,7 @@ elf64_ia64_finish_dynamic_sections (bfd *abfd,
|
||||
unsigned int unwind_seg = 0;
|
||||
unsigned int code_seg = 0;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
BFD_ASSERT (sdyn != NULL);
|
||||
dyncon = (Elf64_External_Dyn *) sdyn->contents;
|
||||
dynconend = (Elf64_External_Dyn *) (sdyn->contents + sdyn->size);
|
||||
|
@ -4308,7 +4308,7 @@ create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
if (! _bfd_elf_create_got_section (htab->elf.dynobj, info))
|
||||
return FALSE;
|
||||
|
||||
htab->got = bfd_get_section_by_name (htab->elf.dynobj, ".got");
|
||||
htab->got = bfd_get_linker_section (htab->elf.dynobj, ".got");
|
||||
if (!htab->got)
|
||||
abort ();
|
||||
}
|
||||
@ -4347,12 +4347,12 @@ ppc64_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
|
||||
if (!htab->got)
|
||||
htab->got = bfd_get_section_by_name (dynobj, ".got");
|
||||
htab->plt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
htab->relplt = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
htab->dynbss = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
htab->got = bfd_get_linker_section (dynobj, ".got");
|
||||
htab->plt = bfd_get_linker_section (dynobj, ".plt");
|
||||
htab->relplt = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
htab->dynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!info->shared)
|
||||
htab->relbss = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
htab->relbss = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
|
||||
if (!htab->got || !htab->plt || !htab->relplt || !htab->dynbss
|
||||
|| (!info->shared && !htab->relbss))
|
||||
@ -9140,7 +9140,7 @@ ppc64_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
@ -14036,7 +14036,7 @@ ppc64_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
return FALSE;
|
||||
|
||||
dynobj = htab->elf.dynobj;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (htab->elf.dynamic_sections_created)
|
||||
{
|
||||
|
@ -759,9 +759,9 @@ create_got_section (bfd *dynobj,
|
||||
if (htab == NULL)
|
||||
return FALSE;
|
||||
|
||||
htab->elf.sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
htab->elf.sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
htab->elf.srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
htab->elf.sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
htab->elf.sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
htab->elf.srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (!htab->elf.sgot || !htab->elf.sgotplt || !htab->elf.srelgot)
|
||||
abort ();
|
||||
return TRUE;
|
||||
@ -787,11 +787,11 @@ elf_s390_create_dynamic_sections (bfd *dynobj,
|
||||
if (!_bfd_elf_create_dynamic_sections (dynobj, info))
|
||||
return FALSE;
|
||||
|
||||
htab->elf.splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
htab->elf.srelplt = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
htab->elf.splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
htab->elf.srelplt = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!info->shared)
|
||||
htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
htab->srelbss = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
|
||||
if (!htab->elf.splt || !htab->elf.srelplt || !htab->sdynbss
|
||||
|| (!info->shared && !htab->srelbss))
|
||||
@ -1918,7 +1918,7 @@ elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
@ -3211,7 +3211,7 @@ elf_s390_finish_dynamic_sections (bfd *output_bfd,
|
||||
return FALSE;
|
||||
|
||||
dynobj = htab->elf.dynobj;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (htab->elf.dynamic_sections_created)
|
||||
{
|
||||
|
@ -1797,7 +1797,7 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
offset table extension for the procedure linkage table. */
|
||||
if (sgotplt == NULL)
|
||||
{
|
||||
sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (sgotplt != NULL);
|
||||
}
|
||||
|
||||
@ -1820,7 +1820,7 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
offset table. */
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
@ -1914,7 +1914,7 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
Elf_Internal_Rela outrel;
|
||||
bfd_byte *loc;
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
outrel.r_offset = (sgot->output_section->vma
|
||||
@ -1949,7 +1949,7 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
@ -1974,7 +1974,7 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
@ -2012,7 +2012,7 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
if (splt == NULL)
|
||||
{
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (splt != NULL);
|
||||
}
|
||||
|
||||
@ -2490,24 +2490,22 @@ sh_elf64_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
||||
|
||||
if (sgot == NULL)
|
||||
{
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
}
|
||||
|
||||
if (srelgot == NULL
|
||||
&& (h != NULL || info->shared))
|
||||
{
|
||||
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (srelgot == NULL)
|
||||
{
|
||||
srelgot = bfd_make_section_with_flags (dynobj,
|
||||
".rela.got",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_READONLY);
|
||||
srelgot = bfd_make_section_anyway_with_flags (dynobj,
|
||||
".rela.got",
|
||||
flags);
|
||||
if (srelgot == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, srelgot, 2))
|
||||
return FALSE;
|
||||
@ -3159,7 +3157,7 @@ sh64_elf64_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
if (bed->plt_readonly)
|
||||
pltflags |= SEC_READONLY;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".plt", pltflags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
|
||||
return FALSE;
|
||||
@ -3186,9 +3184,10 @@ sh64_elf64_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
bed->default_use_rela_p ? ".rela.plt" : ".rel.plt",
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
bed->default_use_rela_p
|
||||
? ".rela.plt" : ".rel.plt",
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
@ -3204,8 +3203,8 @@ sh64_elf64_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
image and use a R_*_COPY reloc to tell the dynamic linker to
|
||||
initialize them at run time. The linker script puts the .dynbss
|
||||
section into the .bss section of the final image. */
|
||||
s = bfd_make_section_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
|
||||
SEC_ALLOC | SEC_LINKER_CREATED);
|
||||
if (s == NULL)
|
||||
return FALSE;
|
||||
|
||||
@ -3222,10 +3221,10 @@ sh64_elf64_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
copy relocs. */
|
||||
if (! info->shared)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
(bed->default_use_rela_p
|
||||
? ".rela.bss" : ".rel.bss"),
|
||||
flags | SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, ptralign))
|
||||
return FALSE;
|
||||
@ -3284,7 +3283,7 @@ sh64_elf64_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".plt");
|
||||
s = bfd_get_linker_section (dynobj, ".plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* If this is the first .plt entry, make room for the special
|
||||
@ -3312,13 +3311,13 @@ sh64_elf64_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
/* We also need to make an entry in the .got.plt section, which
|
||||
will be placed in the .got section by the linker script. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += 8;
|
||||
|
||||
/* We also need to make an entry in the .rela.plt section. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size += sizeof (Elf64_External_Rela);
|
||||
|
||||
@ -3362,7 +3361,7 @@ sh64_elf64_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
both the dynamic object and the regular object will refer to the
|
||||
same memory location for the variable. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
s = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* We must generate a R_SH_COPY reloc to tell the dynamic linker to
|
||||
@ -3373,7 +3372,7 @@ sh64_elf64_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
{
|
||||
asection *srel;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (srel != NULL);
|
||||
srel->size += sizeof (Elf64_External_Rela);
|
||||
h->needs_copy = 1;
|
||||
@ -3425,7 +3424,7 @@ sh64_elf64_size_dynamic_sections (bfd *output_bfd,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
||||
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
|
||||
@ -3438,7 +3437,7 @@ sh64_elf64_size_dynamic_sections (bfd *output_bfd,
|
||||
not actually use these entries. Reset the size of .rela.got,
|
||||
which will cause it to get stripped from the output file
|
||||
below. */
|
||||
s = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (s != NULL)
|
||||
s->size = 0;
|
||||
}
|
||||
@ -3607,9 +3606,9 @@ sh64_elf64_finish_dynamic_symbol (bfd *output_bfd,
|
||||
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.plt");
|
||||
BFD_ASSERT (splt != NULL && sgot != NULL && srel != NULL);
|
||||
|
||||
/* Get the index in the procedure linkage table which
|
||||
@ -3710,8 +3709,8 @@ sh64_elf64_finish_dynamic_symbol (bfd *output_bfd,
|
||||
/* This symbol has an entry in the global offset table. Set it
|
||||
up. */
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got");
|
||||
srel = bfd_get_section_by_name (dynobj, ".rela.got");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
srel = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
BFD_ASSERT (sgot != NULL && srel != NULL);
|
||||
|
||||
rel.r_offset = (sgot->output_section->vma
|
||||
@ -3756,8 +3755,7 @@ sh64_elf64_finish_dynamic_symbol (bfd *output_bfd,
|
||||
&& (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak));
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rel.r_offset = (h->root.u.def.value
|
||||
@ -3790,9 +3788,9 @@ sh64_elf64_finish_dynamic_sections (bfd *output_bfd,
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
|
||||
sgot = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sgot = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (sgot != NULL);
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
@ -3875,7 +3873,7 @@ sh64_elf64_finish_dynamic_sections (bfd *output_bfd,
|
||||
}
|
||||
|
||||
/* Fill in the first entry in the procedure linkage table. */
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = bfd_get_linker_section (dynobj, ".plt");
|
||||
if (splt && splt->size > 0)
|
||||
{
|
||||
if (info->shared)
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* SPARC-specific support for 64-bit ELF
|
||||
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@ -563,7 +563,7 @@ elf64_sparc_output_arch_syms (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
if (elf_hash_table (info)->dynlocal)
|
||||
{
|
||||
bfd * dynobj = elf_hash_table (info)->dynobj;
|
||||
asection *dynsymsec = bfd_get_section_by_name (dynobj, ".dynsym");
|
||||
asection *dynsymsec = bfd_get_linker_section (dynobj, ".dynsym");
|
||||
struct elf_link_local_dynamic_entry *e;
|
||||
|
||||
for (e = elf_hash_table (info)->dynlocal; e ; e = e->next)
|
||||
|
@ -970,9 +970,9 @@ elf_x86_64_create_dynamic_sections (bfd *dynobj,
|
||||
if (htab == NULL)
|
||||
return FALSE;
|
||||
|
||||
htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!info->shared)
|
||||
htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
htab->srelbss = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
|
||||
if (!htab->sdynbss
|
||||
|| (!info->shared && !htab->srelbss))
|
||||
@ -2599,7 +2599,7 @@ elf_x86_64_size_dynamic_sections (bfd *output_bfd,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
if (s == NULL)
|
||||
abort ();
|
||||
s->size = htab->dynamic_interpreter_size;
|
||||
@ -4564,7 +4564,7 @@ elf_x86_64_finish_dynamic_sections (bfd *output_bfd,
|
||||
return FALSE;
|
||||
|
||||
dynobj = htab->elf.dynobj;
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (htab->elf.dynamic_sections_created)
|
||||
{
|
||||
|
@ -104,8 +104,8 @@ _bfd_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
struct elf_link_hash_table *htab = elf_hash_table (info);
|
||||
|
||||
/* This function may be called more than once. */
|
||||
s = bfd_get_section_by_name (abfd, ".got");
|
||||
if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0)
|
||||
s = bfd_get_linker_section (abfd, ".got");
|
||||
if (s != NULL)
|
||||
return TRUE;
|
||||
|
||||
flags = bed->dynamic_sec_flags;
|
||||
@ -779,8 +779,7 @@ _bfd_elf_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
asection *ip;
|
||||
|
||||
if (htab->dynobj != NULL
|
||||
&& (ip = bfd_get_section_by_name (htab->dynobj, p->name)) != NULL
|
||||
&& (ip->flags & SEC_LINKER_CREATED)
|
||||
&& (ip = bfd_get_linker_section (htab->dynobj, p->name)) != NULL
|
||||
&& ip->output_section == p)
|
||||
return TRUE;
|
||||
}
|
||||
@ -3036,7 +3035,7 @@ _bfd_elf_add_dynamic_entry (struct bfd_link_info *info,
|
||||
return FALSE;
|
||||
|
||||
bed = get_elf_backend_data (hash_table->dynobj);
|
||||
s = bfd_get_section_by_name (hash_table->dynobj, ".dynamic");
|
||||
s = bfd_get_linker_section (hash_table->dynobj, ".dynamic");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
newsize = s->size + bed->s->sizeof_dyn;
|
||||
@ -3084,7 +3083,7 @@ elf_add_dt_needed_tag (bfd *abfd,
|
||||
bfd_byte *extdyn;
|
||||
|
||||
bed = get_elf_backend_data (hash_table->dynobj);
|
||||
sdyn = bfd_get_section_by_name (hash_table->dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (hash_table->dynobj, ".dynamic");
|
||||
if (sdyn != NULL)
|
||||
for (extdyn = sdyn->contents;
|
||||
extdyn < sdyn->contents + sdyn->size;
|
||||
@ -3181,7 +3180,7 @@ elf_finalize_dynstr (bfd *output_bfd, struct bfd_link_info *info)
|
||||
size = _bfd_elf_strtab_size (dynstr);
|
||||
|
||||
bed = get_elf_backend_data (dynobj);
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
BFD_ASSERT (sdyn != NULL);
|
||||
|
||||
/* Update all .dynamic entries referencing .dynstr strings. */
|
||||
@ -3230,7 +3229,7 @@ elf_finalize_dynstr (bfd *output_bfd, struct bfd_link_info *info)
|
||||
Elf_Internal_Verdef def;
|
||||
Elf_Internal_Verdaux defaux;
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".gnu.version_d");
|
||||
s = bfd_get_linker_section (dynobj, ".gnu.version_d");
|
||||
p = s->contents;
|
||||
do
|
||||
{
|
||||
@ -3262,7 +3261,7 @@ elf_finalize_dynstr (bfd *output_bfd, struct bfd_link_info *info)
|
||||
Elf_Internal_Verneed need;
|
||||
Elf_Internal_Vernaux needaux;
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".gnu.version_r");
|
||||
s = bfd_get_linker_section (dynobj, ".gnu.version_r");
|
||||
p = s->contents;
|
||||
do
|
||||
{
|
||||
@ -5603,7 +5602,7 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
asection *s;
|
||||
bfd_boolean all_defined;
|
||||
|
||||
*sinterpptr = bfd_get_section_by_name (dynobj, ".interp");
|
||||
*sinterpptr = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (*sinterpptr != NULL || !info->executable);
|
||||
|
||||
if (soname != NULL)
|
||||
@ -5871,7 +5870,7 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
dynstr = bfd_get_section_by_name (dynobj, ".dynstr");
|
||||
dynstr = bfd_get_linker_section (dynobj, ".dynstr");
|
||||
/* If .dynstr is excluded from the link, we don't want any of
|
||||
these tags. Strictly, we should be checking each section
|
||||
individually; This quick check covers for the case where
|
||||
@ -5911,7 +5910,7 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
asection *s;
|
||||
|
||||
/* Set up the version definition section. */
|
||||
s = bfd_get_section_by_name (dynobj, ".gnu.version_d");
|
||||
s = bfd_get_linker_section (dynobj, ".gnu.version_d");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
/* We may have created additional version definitions if we are
|
||||
@ -6174,7 +6173,7 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
|
||||
/* Work out the size of the version reference section. */
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".gnu.version_r");
|
||||
s = bfd_get_linker_section (dynobj, ".gnu.version_r");
|
||||
BFD_ASSERT (s != NULL);
|
||||
{
|
||||
struct elf_find_verdep_info sinfo;
|
||||
@ -6286,7 +6285,7 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
|| _bfd_elf_link_renumber_dynsyms (output_bfd, info,
|
||||
§ion_sym_count) == 0)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".gnu.version");
|
||||
s = bfd_get_linker_section (dynobj, ".gnu.version");
|
||||
s->flags |= SEC_EXCLUDE;
|
||||
}
|
||||
}
|
||||
@ -6370,7 +6369,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *output_bfd, struct bfd_link_info *info)
|
||||
§ion_sym_count);
|
||||
|
||||
/* Work out the size of the symbol version section. */
|
||||
s = bfd_get_section_by_name (dynobj, ".gnu.version");
|
||||
s = bfd_get_linker_section (dynobj, ".gnu.version");
|
||||
BFD_ASSERT (s != NULL);
|
||||
if (dynsymcount != 0
|
||||
&& (s->flags & SEC_EXCLUDE) == 0)
|
||||
@ -6390,7 +6389,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *output_bfd, struct bfd_link_info *info)
|
||||
the final symbol table, because until then we do not know the
|
||||
correct value to give the symbols. We built the .dynstr
|
||||
section as we went along in elf_link_add_object_symbols. */
|
||||
s = bfd_get_section_by_name (dynobj, ".dynsym");
|
||||
s = bfd_get_linker_section (dynobj, ".dynsym");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = dynsymcount * bed->s->sizeof_sym;
|
||||
|
||||
@ -6448,7 +6447,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *output_bfd, struct bfd_link_info *info)
|
||||
|
||||
elf_hash_table (info)->bucketcount = bucketcount;
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".hash");
|
||||
s = bfd_get_linker_section (dynobj, ".hash");
|
||||
BFD_ASSERT (s != NULL);
|
||||
hash_entry_size = elf_section_data (s)->this_hdr.sh_entsize;
|
||||
s->size = ((2 + bucketcount + dynsymcount) * hash_entry_size);
|
||||
@ -6502,7 +6501,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *output_bfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".gnu.hash");
|
||||
s = bfd_get_linker_section (dynobj, ".gnu.hash");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
if (cinfo.nsyms == 0)
|
||||
@ -6630,7 +6629,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *output_bfd, struct bfd_link_info *info)
|
||||
}
|
||||
}
|
||||
|
||||
s = bfd_get_section_by_name (dynobj, ".dynstr");
|
||||
s = bfd_get_linker_section (dynobj, ".dynstr");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
elf_finalize_dynstr (output_bfd, info);
|
||||
@ -10345,10 +10344,10 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
|
||||
}
|
||||
else
|
||||
{
|
||||
flinfo.dynsym_sec = bfd_get_section_by_name (dynobj, ".dynsym");
|
||||
flinfo.hash_sec = bfd_get_section_by_name (dynobj, ".hash");
|
||||
flinfo.dynsym_sec = bfd_get_linker_section (dynobj, ".dynsym");
|
||||
flinfo.hash_sec = bfd_get_linker_section (dynobj, ".hash");
|
||||
/* Note that dynsym_sec can be NULL (on VMS). */
|
||||
flinfo.symver_sec = bfd_get_section_by_name (dynobj, ".gnu.version");
|
||||
flinfo.symver_sec = bfd_get_linker_section (dynobj, ".gnu.version");
|
||||
/* Note that it is OK if symver_sec is NULL. */
|
||||
}
|
||||
|
||||
@ -11077,7 +11076,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
|
||||
bfd_byte *dyncon, *dynconend;
|
||||
|
||||
/* Fix up .dynamic entries. */
|
||||
o = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
o = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
BFD_ASSERT (o != NULL);
|
||||
|
||||
dyncon = o->contents;
|
||||
@ -11253,7 +11252,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
|
||||
/* Check for DT_TEXTREL (late, in case the backend removes it). */
|
||||
if (((info->warn_shared_textrel && info->shared)
|
||||
|| info->error_textrel)
|
||||
&& (o = bfd_get_section_by_name (dynobj, ".dynamic")) != NULL)
|
||||
&& (o = bfd_get_linker_section (dynobj, ".dynamic")) != NULL)
|
||||
{
|
||||
bfd_byte *dyncon, *dynconend;
|
||||
|
||||
@ -11294,9 +11293,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
|
||||
continue;
|
||||
if (elf_hash_table (info)->eh_info.hdr_sec == o)
|
||||
continue;
|
||||
if ((elf_section_data (o->output_section)->this_hdr.sh_type
|
||||
!= SHT_STRTAB)
|
||||
&& (strcmp (bfd_get_section_name (abfd, o), ".dynstr") != 0))
|
||||
if (strcmp (o->name, ".dynstr") != 0)
|
||||
{
|
||||
/* FIXME: octets_per_byte. */
|
||||
if (! bfd_set_section_contents (abfd, o->output_section,
|
||||
@ -12842,7 +12839,7 @@ _bfd_elf_get_dynamic_reloc_section (bfd * abfd,
|
||||
|
||||
if (name != NULL)
|
||||
{
|
||||
reloc_sec = bfd_get_section_by_name (abfd, name);
|
||||
reloc_sec = bfd_get_linker_section (abfd, name);
|
||||
|
||||
if (reloc_sec != NULL)
|
||||
elf_section_data (sec)->sreloc = reloc_sec;
|
||||
@ -12878,17 +12875,16 @@ _bfd_elf_make_dynamic_reloc_section (asection * sec,
|
||||
if (name == NULL)
|
||||
return NULL;
|
||||
|
||||
reloc_sec = bfd_get_section_by_name (dynobj, name);
|
||||
reloc_sec = bfd_get_linker_section (dynobj, name);
|
||||
|
||||
if (reloc_sec == NULL)
|
||||
{
|
||||
flagword flags;
|
||||
|
||||
flags = (SEC_HAS_CONTENTS | SEC_READONLY | SEC_IN_MEMORY | SEC_LINKER_CREATED);
|
||||
flagword flags = (SEC_HAS_CONTENTS | SEC_READONLY
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED);
|
||||
if ((sec->flags & SEC_ALLOC) != 0)
|
||||
flags |= SEC_ALLOC | SEC_LOAD;
|
||||
|
||||
reloc_sec = bfd_make_section_with_flags (dynobj, name, flags);
|
||||
reloc_sec = bfd_make_section_anyway_with_flags (dynobj, name, flags);
|
||||
if (reloc_sec != NULL)
|
||||
{
|
||||
if (! bfd_set_section_alignment (dynobj, reloc_sec, alignment))
|
||||
|
@ -1552,12 +1552,12 @@ elfNN_ia64_create_dynamic_sections (bfd *abfd,
|
||||
if (!get_pltoff (abfd, info, ia64_info))
|
||||
return FALSE;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".rela.IA_64.pltoff",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rela.IA_64.pltoff",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, LOG_SECTION_ALIGN))
|
||||
return FALSE;
|
||||
@ -1986,13 +1986,14 @@ get_fptr (bfd *abfd, struct bfd_link_info *info,
|
||||
if (!dynobj)
|
||||
ia64_info->root.dynobj = dynobj = abfd;
|
||||
|
||||
fptr = bfd_make_section_with_flags (dynobj, ".opd",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| (info->pie ? 0 : SEC_READONLY)
|
||||
| SEC_LINKER_CREATED));
|
||||
fptr = bfd_make_section_anyway_with_flags (dynobj, ".opd",
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| (info->pie ? 0
|
||||
: SEC_READONLY)
|
||||
| SEC_LINKER_CREATED));
|
||||
if (!fptr
|
||||
|| !bfd_set_section_alignment (abfd, fptr, 4))
|
||||
{
|
||||
@ -2005,12 +2006,12 @@ get_fptr (bfd *abfd, struct bfd_link_info *info,
|
||||
if (info->pie)
|
||||
{
|
||||
asection *fptr_rel;
|
||||
fptr_rel = bfd_make_section_with_flags (dynobj, ".rela.opd",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
fptr_rel = bfd_make_section_anyway_with_flags (dynobj, ".rela.opd",
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (fptr_rel == NULL
|
||||
|| !bfd_set_section_alignment (abfd, fptr_rel,
|
||||
LOG_SECTION_ALIGN))
|
||||
@ -2040,14 +2041,14 @@ get_pltoff (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED,
|
||||
if (!dynobj)
|
||||
ia64_info->root.dynobj = dynobj = abfd;
|
||||
|
||||
pltoff = bfd_make_section_with_flags (dynobj,
|
||||
ELF_STRING_ia64_pltoff,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_SMALL_DATA
|
||||
| SEC_LINKER_CREATED));
|
||||
pltoff = bfd_make_section_anyway_with_flags (dynobj,
|
||||
ELF_STRING_ia64_pltoff,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_SMALL_DATA
|
||||
| SEC_LINKER_CREATED));
|
||||
if (!pltoff
|
||||
|| !bfd_set_section_alignment (abfd, pltoff, 4))
|
||||
{
|
||||
@ -2080,15 +2081,15 @@ get_reloc_section (bfd *abfd,
|
||||
if (!dynobj)
|
||||
ia64_info->root.dynobj = dynobj = abfd;
|
||||
|
||||
srel = bfd_get_section_by_name (dynobj, srel_name);
|
||||
srel = bfd_get_linker_section (dynobj, srel_name);
|
||||
if (srel == NULL && create)
|
||||
{
|
||||
srel = bfd_make_section_with_flags (dynobj, srel_name,
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
srel = bfd_make_section_anyway_with_flags (dynobj, srel_name,
|
||||
(SEC_ALLOC | SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (srel == NULL
|
||||
|| !bfd_set_section_alignment (dynobj, srel,
|
||||
LOG_SECTION_ALIGN))
|
||||
@ -2988,7 +2989,7 @@ elfNN_ia64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
if (ia64_info->root.dynamic_sections_created
|
||||
&& info->executable)
|
||||
{
|
||||
sec = bfd_get_section_by_name (dynobj, ".interp");
|
||||
sec = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (sec != NULL);
|
||||
sec->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
|
||||
sec->size = strlen (ELF_DYNAMIC_INTERPRETER) + 1;
|
||||
@ -3045,7 +3046,7 @@ elfNN_ia64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
/* If we've got a .plt, we need some extra memory for the dynamic
|
||||
linker. We stuff these in .got.plt. */
|
||||
sec = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sec = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
sec->size = 8 * PLT_RESERVED_WORDS;
|
||||
}
|
||||
|
||||
@ -4612,8 +4613,8 @@ elfNN_ia64_finish_dynamic_sections (bfd *abfd,
|
||||
asection *sdyn, *sgotplt;
|
||||
bfd_vma gp_val;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
sgotplt = bfd_get_linker_section (dynobj, ".got.plt");
|
||||
BFD_ASSERT (sdyn != NULL);
|
||||
dyncon = (ElfNN_External_Dyn *) sdyn->contents;
|
||||
dynconend = (ElfNN_External_Dyn *) (sdyn->contents + sdyn->size);
|
||||
|
@ -2860,16 +2860,16 @@ mips_elf_rel_dyn_section (struct bfd_link_info *info, bfd_boolean create_p)
|
||||
|
||||
dname = MIPS_ELF_REL_DYN_NAME (info);
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
sreloc = bfd_get_section_by_name (dynobj, dname);
|
||||
sreloc = bfd_get_linker_section (dynobj, dname);
|
||||
if (sreloc == NULL && create_p)
|
||||
{
|
||||
sreloc = bfd_make_section_with_flags (dynobj, dname,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
sreloc = bfd_make_section_anyway_with_flags (dynobj, dname,
|
||||
(SEC_ALLOC
|
||||
| SEC_LOAD
|
||||
| SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY
|
||||
| SEC_LINKER_CREATED
|
||||
| SEC_READONLY));
|
||||
if (sreloc == NULL
|
||||
|| ! bfd_set_section_alignment (dynobj, sreloc,
|
||||
MIPS_ELF_LOG_FILE_ALIGN (dynobj)))
|
||||
@ -4832,12 +4832,12 @@ mips_elf_create_compact_rel_section
|
||||
flagword flags;
|
||||
register asection *s;
|
||||
|
||||
if (bfd_get_section_by_name (abfd, ".compact_rel") == NULL)
|
||||
if (bfd_get_linker_section (abfd, ".compact_rel") == NULL)
|
||||
{
|
||||
flags = (SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_READONLY);
|
||||
|
||||
s = bfd_make_section_with_flags (abfd, ".compact_rel", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".compact_rel", flags);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s,
|
||||
MIPS_ELF_LOG_FILE_ALIGN (abfd)))
|
||||
@ -6178,7 +6178,7 @@ mips_elf_create_dynamic_relocation (bfd *output_bfd,
|
||||
/* On IRIX5, make an entry of compact relocation info. */
|
||||
if (IRIX_COMPAT (output_bfd) == ict_irix5)
|
||||
{
|
||||
asection *scpt = bfd_get_section_by_name (dynobj, ".compact_rel");
|
||||
asection *scpt = bfd_get_linker_section (dynobj, ".compact_rel");
|
||||
bfd_byte *cr;
|
||||
|
||||
if (scpt)
|
||||
@ -7220,7 +7220,7 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
EABI doesn't. */
|
||||
if (!htab->is_vxworks)
|
||||
{
|
||||
s = bfd_get_section_by_name (abfd, ".dynamic");
|
||||
s = bfd_get_linker_section (abfd, ".dynamic");
|
||||
if (s != NULL)
|
||||
{
|
||||
if (! bfd_set_section_flags (abfd, s, flags))
|
||||
@ -7236,9 +7236,9 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
|
||||
/* Create .stub section. */
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
MIPS_ELF_STUB_SECTION_NAME (abfd),
|
||||
flags | SEC_CODE);
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
MIPS_ELF_STUB_SECTION_NAME (abfd),
|
||||
flags | SEC_CODE);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s,
|
||||
MIPS_ELF_LOG_FILE_ALIGN (abfd)))
|
||||
@ -7247,10 +7247,10 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
|
||||
if ((IRIX_COMPAT (abfd) == ict_irix5 || IRIX_COMPAT (abfd) == ict_none)
|
||||
&& !info->shared
|
||||
&& bfd_get_section_by_name (abfd, ".rld_map") == NULL)
|
||||
&& bfd_get_linker_section (abfd, ".rld_map") == NULL)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd, ".rld_map",
|
||||
flags &~ (flagword) SEC_READONLY);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".rld_map",
|
||||
flags &~ (flagword) SEC_READONLY);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s,
|
||||
MIPS_ELF_LOG_FILE_ALIGN (abfd)))
|
||||
@ -7288,19 +7288,20 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
}
|
||||
|
||||
/* Change alignments of some sections. */
|
||||
s = bfd_get_section_by_name (abfd, ".hash");
|
||||
s = bfd_get_linker_section (abfd, ".hash");
|
||||
if (s != NULL)
|
||||
bfd_set_section_alignment (abfd, s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
|
||||
s = bfd_get_section_by_name (abfd, ".dynsym");
|
||||
s = bfd_get_linker_section (abfd, ".dynsym");
|
||||
if (s != NULL)
|
||||
bfd_set_section_alignment (abfd, s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
|
||||
s = bfd_get_section_by_name (abfd, ".dynstr");
|
||||
s = bfd_get_linker_section (abfd, ".dynstr");
|
||||
if (s != NULL)
|
||||
bfd_set_section_alignment (abfd, s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
|
||||
/* ??? */
|
||||
s = bfd_get_section_by_name (abfd, ".reginfo");
|
||||
if (s != NULL)
|
||||
bfd_set_section_alignment (abfd, s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
|
||||
s = bfd_get_section_by_name (abfd, ".dynamic");
|
||||
s = bfd_get_linker_section (abfd, ".dynamic");
|
||||
if (s != NULL)
|
||||
bfd_set_section_alignment (abfd, s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
|
||||
}
|
||||
@ -7330,7 +7331,7 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
and is filled in by the rtld to contain a pointer to
|
||||
the _r_debug structure. Its symbol value will be set in
|
||||
_bfd_mips_elf_finish_dynamic_symbol. */
|
||||
s = bfd_get_section_by_name (abfd, ".rld_map");
|
||||
s = bfd_get_linker_section (abfd, ".rld_map");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
name = SGI_COMPAT (abfd) ? "__rld_map" : "__RLD_MAP";
|
||||
@ -7357,15 +7358,15 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
return FALSE;
|
||||
|
||||
/* Cache the sections created above. */
|
||||
htab->splt = bfd_get_section_by_name (abfd, ".plt");
|
||||
htab->sdynbss = bfd_get_section_by_name (abfd, ".dynbss");
|
||||
htab->splt = bfd_get_linker_section (abfd, ".plt");
|
||||
htab->sdynbss = bfd_get_linker_section (abfd, ".dynbss");
|
||||
if (htab->is_vxworks)
|
||||
{
|
||||
htab->srelbss = bfd_get_section_by_name (abfd, ".rela.bss");
|
||||
htab->srelplt = bfd_get_section_by_name (abfd, ".rela.plt");
|
||||
htab->srelbss = bfd_get_linker_section (abfd, ".rela.bss");
|
||||
htab->srelplt = bfd_get_linker_section (abfd, ".rela.plt");
|
||||
}
|
||||
else
|
||||
htab->srelplt = bfd_get_section_by_name (abfd, ".rel.plt");
|
||||
htab->srelplt = bfd_get_linker_section (abfd, ".rel.plt");
|
||||
if (!htab->sdynbss
|
||||
|| (htab->is_vxworks && !htab->srelbss && !info->shared)
|
||||
|| !htab->srelplt
|
||||
@ -9027,7 +9028,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size
|
||||
= strlen (ELF_DYNAMIC_INTERPRETER (output_bfd)) + 1;
|
||||
@ -10510,7 +10511,7 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
sgot = htab->sgot;
|
||||
gg = htab->got_info;
|
||||
@ -10856,7 +10857,7 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
if (SGI_COMPAT (output_bfd))
|
||||
{
|
||||
/* Write .compact_rel section out. */
|
||||
s = bfd_get_section_by_name (dynobj, ".compact_rel");
|
||||
s = bfd_get_linker_section (dynobj, ".compact_rel");
|
||||
if (s != NULL)
|
||||
{
|
||||
cpt.id1 = 1;
|
||||
|
@ -1207,9 +1207,9 @@ _bfd_sparc_elf_create_dynamic_sections (bfd *dynobj,
|
||||
if (!_bfd_elf_create_dynamic_sections (dynobj, info))
|
||||
return FALSE;
|
||||
|
||||
htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!info->shared)
|
||||
htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
htab->srelbss = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
|
||||
if (htab->is_vxworks)
|
||||
{
|
||||
@ -2532,7 +2532,7 @@ _bfd_sparc_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = htab->dynamic_interpreter_size;
|
||||
s->contents = (unsigned char *) htab->dynamic_interpreter;
|
||||
@ -4496,8 +4496,8 @@ _bfd_sparc_elf_finish_dynamic_symbol (bfd *output_bfd,
|
||||
/* This symbols needs a copy reloc. Set it up. */
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = bfd_get_linker_section (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rela.r_offset = (h->root.u.def.value
|
||||
@ -4736,13 +4736,13 @@ _bfd_sparc_elf_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
|
||||
BFD_ASSERT (htab != NULL);
|
||||
dynobj = htab->elf.dynobj;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
asection *splt;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = htab->elf.splt;
|
||||
BFD_ASSERT (splt != NULL && sdyn != NULL);
|
||||
|
||||
if (!sparc_finish_dyn (output_bfd, info, dynobj, sdyn, splt))
|
||||
|
@ -1424,23 +1424,23 @@ tilegx_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
struct elf_link_hash_table *htab = elf_hash_table (info);
|
||||
|
||||
/* This function may be called more than once. */
|
||||
s = bfd_get_section_by_name (abfd, ".got");
|
||||
if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0)
|
||||
s = bfd_get_linker_section (abfd, ".got");
|
||||
if (s != NULL)
|
||||
return TRUE;
|
||||
|
||||
flags = bed->dynamic_sec_flags;
|
||||
|
||||
s = bfd_make_section_with_flags (abfd,
|
||||
(bed->rela_plts_and_copies_p
|
||||
? ".rela.got" : ".rel.got"),
|
||||
(bed->dynamic_sec_flags
|
||||
| SEC_READONLY));
|
||||
s = bfd_make_section_anyway_with_flags (abfd,
|
||||
(bed->rela_plts_and_copies_p
|
||||
? ".rela.got" : ".rel.got"),
|
||||
(bed->dynamic_sec_flags
|
||||
| SEC_READONLY));
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
|
||||
return FALSE;
|
||||
htab->srelgot = s;
|
||||
|
||||
s = s_got = bfd_make_section_with_flags (abfd, ".got", flags);
|
||||
s = s_got = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
|
||||
return FALSE;
|
||||
@ -1451,7 +1451,7 @@ tilegx_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
|
||||
|
||||
if (bed->want_got_plt)
|
||||
{
|
||||
s = bfd_make_section_with_flags (abfd, ".got.plt", flags);
|
||||
s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
|
||||
if (s == NULL
|
||||
|| !bfd_set_section_alignment (abfd, s,
|
||||
bed->s->log_file_align))
|
||||
@ -1497,9 +1497,9 @@ tilegx_elf_create_dynamic_sections (bfd *dynobj,
|
||||
if (!_bfd_elf_create_dynamic_sections (dynobj, info))
|
||||
return FALSE;
|
||||
|
||||
htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
|
||||
htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
|
||||
if (!info->shared)
|
||||
htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss");
|
||||
htab->srelbss = bfd_get_linker_section (dynobj, ".rela.bss");
|
||||
|
||||
if (!htab->elf.splt || !htab->elf.srelplt || !htab->sdynbss
|
||||
|| (!info->shared && !htab->srelbss))
|
||||
@ -2655,7 +2655,7 @@ tilegx_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* Set the contents of the .interp section to the interpreter. */
|
||||
if (info->executable)
|
||||
{
|
||||
s = bfd_get_section_by_name (dynobj, ".interp");
|
||||
s = bfd_get_linker_section (dynobj, ".interp");
|
||||
BFD_ASSERT (s != NULL);
|
||||
s->size = strlen (htab->dynamic_interpreter) + 1;
|
||||
s->contents = (unsigned char *) htab->dynamic_interpreter;
|
||||
@ -4116,8 +4116,7 @@ tilegx_elf_finish_dynamic_symbol (bfd *output_bfd,
|
||||
/* This symbols needs a copy reloc. Set it up. */
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
s = bfd_get_section_by_name (h->root.u.def.section->owner,
|
||||
".rela.bss");
|
||||
s = htab->srelbss;
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
rela.r_offset = (h->root.u.def.value
|
||||
@ -4196,14 +4195,14 @@ tilegx_elf_finish_dynamic_sections (bfd *output_bfd,
|
||||
BFD_ASSERT (htab != NULL);
|
||||
dynobj = htab->elf.dynobj;
|
||||
|
||||
sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
||||
|
||||
if (elf_hash_table (info)->dynamic_sections_created)
|
||||
{
|
||||
asection *splt;
|
||||
bfd_boolean ret;
|
||||
|
||||
splt = bfd_get_section_by_name (dynobj, ".plt");
|
||||
splt = htab->elf.splt;
|
||||
BFD_ASSERT (splt != NULL && sdyn != NULL);
|
||||
|
||||
ret = tilegx_finish_dyn (output_bfd, info, dynobj, sdyn, splt);
|
||||
|
@ -896,6 +896,28 @@ bfd_get_next_section_by_name (asection *sec)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
FUNCTION
|
||||
bfd_get_linker_section
|
||||
|
||||
SYNOPSIS
|
||||
asection *bfd_get_linker_section (bfd *abfd, const char *name);
|
||||
|
||||
DESCRIPTION
|
||||
Return the linker created section attached to @var{abfd}
|
||||
named @var{name}. Return NULL if no such section exists.
|
||||
*/
|
||||
|
||||
asection *
|
||||
bfd_get_linker_section (bfd *abfd, const char *name)
|
||||
{
|
||||
asection *sec = bfd_get_section_by_name (abfd, name);
|
||||
|
||||
while (sec != NULL && (sec->flags & SEC_LINKER_CREATED) == 0)
|
||||
sec = bfd_get_next_section_by_name (sec);
|
||||
return sec;
|
||||
}
|
||||
|
||||
/*
|
||||
FUNCTION
|
||||
bfd_get_section_by_name_if
|
||||
|
Loading…
Reference in New Issue
Block a user