* 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:
Alan Modra 2012-06-29 14:46:03 +00:00
parent b6ba681cda
commit 3d4d4302b9
42 changed files with 943 additions and 880 deletions

View File

@ -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

View File

@ -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,

View File

@ -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)

View File

@ -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;

View File

@ -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);

View File

@ -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;
}

View File

@ -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)
{

View File

@ -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);

View File

@ -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);

View File

@ -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)
{

View File

@ -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;

View File

@ -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)

View File

@ -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))

View File

@ -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);

View File

@ -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)
{

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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)
{

View File

@ -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)

View File

@ -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)

View File

@ -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)
{

View File

@ -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)
{

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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)
{

View File

@ -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);

View File

@ -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)
{

View File

@ -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)
{

View File

@ -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)

View File

@ -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)

View File

@ -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)
{

View File

@ -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,
&section_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)
&section_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))

View File

@ -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);

View File

@ -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;

View File

@ -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))

View File

@ -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);

View File

@ -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