Remove arm-symbianelf

* configure.ac: Delete arm*-*-symbianelf* entry.
	* configure: Regenerate.
bfd/
	* config.bfd (arm*-*-symbianelf*): Move from obsolete to removed.
	* configure.ac: Delete symbian entries.
	* elf-bfd.h (enum elf_target_os): Delete is_symbian.
	* elf32-arm.c: Remove symbian support.  Formatting.
	* targets.c: Delete symbian entries.
	* configure: Regenerate.
binutils/
	* testsuite/lib/binutils-common.exp (supports_gnu_osabi): Remove
	symbianelf.
gas/
	* Makefile.am (TARG_ENV_HFILES): Remove config/te-symbian.h.
	* config/tc-arm.c (elf32_arm_target_format): Remove TE_SYMBIAN
	support.
	* config/te-symbian.h: Delete.
	* configure.tgt: Remove arm-*-symbianelf*.
	* testsuite/gas/arm/arch4t-eabi.d: Don't mention symbianelf in
	target selection.
	* testsuite/gas/arm/arch4t.d: Likewise.
	* testsuite/gas/arm/got_prel.d: Likewise.
	* testsuite/gas/arm/mapdir.d: Likewise.
	* testsuite/gas/arm/mapmisc.d: Likewise.
	* testsuite/gas/arm/mapsecs.d: Likewise.
	* testsuite/gas/arm/mapshort-eabi.d: Likewise.
	* testsuite/gas/arm/thumb-eabi.d: Likewise.
	* testsuite/gas/arm/thumb.d: Likewise.
	* testsuite/gas/arm/thumbrel.d: Likewise.
	* Makefile.in: Regenerate.
	* po/POTFILES.in: Regenerate.
ld/
	* Makefile.am (ALL_EMULATION_SOURCES): Remove earmsymbian.c.
	Don't include symbian dep file.
	* configure.tgt: Remove arm*-*-symbianelf* entry.
	* emulparams/armsymbian.sh: Delete.
	* ld.texi: Don't mention symbian.
	* scripttempl/armbpabi.sc: Delete.
	* testsuite/ld-arm/symbian-seg1.d: Delete.
	* testsuite/ld-arm/symbian-seg1.s: Delete.
	* testsuite/ld-arm/arm-elf.exp: Don't run symbian-seg1.
	* Makefile.in: Regenerate.
	* po/BLD-POTFILES.in: Regenerate.
This commit is contained in:
Alan Modra 2021-02-08 21:06:17 +10:30
parent 4a68fcd7f7
commit a57d17732e
40 changed files with 480 additions and 1266 deletions

View file

@ -1,3 +1,8 @@
2021-02-09 Alan Modra <amodra@gmail.com>
* configure.ac: Delete arm*-*-symbianelf* entry.
* configure: Regenerate.
2021-01-26 Nick Alcock <nick.alcock@oracle.com>
* Makefile.def: Add install-libctf dependency to install-ld.

View file

@ -1,3 +1,12 @@
2021-02-09 Alan Modra <amodra@gmail.com>
* config.bfd (arm*-*-symbianelf*): Move from obsolete to removed.
* configure.ac: Delete symbian entries.
* elf-bfd.h (enum elf_target_os): Delete is_symbian.
* elf32-arm.c: Remove symbian support. Formatting.
* targets.c: Delete symbian entries.
* configure: Regenerate.
2021-02-04 H.J. Lu <hongjiu.lu@intel.com>
PR ld/19609

View file

@ -53,7 +53,6 @@ case $targ in
echo "*** Use or1k-*-elf or or1k-*-linux as the target instead" >&2
exit 1
;;
arm*-*-symbianelf* | \
ia64*-*-* | \
null)
if test "x$enable_obsolete" != xyes; then
@ -85,6 +84,7 @@ case $targ in
arm-*-openbsd* | \
arm-*-oabi | \
arm-*-riscix* | \
arm*-*-symbianelf* | \
arm-epoc-pe* | \
c30-*-*aout* | tic30-*-*aout* | \
cr16c-*-* | \
@ -394,10 +394,6 @@ case "${targ}" in
targ_defvec=arm_elf32_vxworks_le_vec
targ_selvecs=arm_elf32_vxworks_be_vec
;;
arm*-*-symbianelf*)
targ_defvec=arm_elf32_symbian_le_vec
targ_selvecs=arm_elf32_symbian_be_vec
;;
arm9e-*-elf)
targ_defvec=arm_elf32_le_vec
targ_selvecs=arm_elf32_be_vec

2
bfd/configure vendored
View file

@ -14781,8 +14781,6 @@ do
arm_elf32_fdpic_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_nacl_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_nacl_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_symbian_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_symbian_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_vxworks_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_vxworks_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_pe_be_vec) tb="$tb pe-arm.lo peigen.lo $coff" ;;

View file

@ -466,8 +466,6 @@ do
arm_elf32_fdpic_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_nacl_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_nacl_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_symbian_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_symbian_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_vxworks_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_elf32_vxworks_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
arm_pe_be_vec) tb="$tb pe-arm.lo peigen.lo $coff" ;;

View file

@ -543,7 +543,6 @@ struct bfd_link_needed_list
enum elf_target_os
{
is_normal,
is_symbian, /* Symbian OS. */
is_solaris, /* Solaris. */
is_vxworks, /* VxWorks. */
is_nacl /* Native Client. */

View file

@ -2497,14 +2497,6 @@ static const bfd_vma elf32_arm_plt_thumb_stub [] =
0xe7fd /* b .-2 */
};
/* The entries in a PLT when using a DLL-based target with multiple
address spaces. */
static const bfd_vma elf32_arm_symbian_plt_entry [] =
{
0xe51ff004, /* ldr pc, [pc, #-4] */
0x00000000, /* dcd R_ARM_GLOB_DAT(X) */
};
/* The first entry in a procedure linkage table looks like
this. It is set up so that any shared library function that is
called before the relocation has been set up calls the dynamic
@ -3794,10 +3786,6 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
if (htab == NULL)
return FALSE;
/* BPABI objects never have a GOT, or associated sections. */
if (htab->root.target_os == is_symbian)
return TRUE;
if (! _bfd_elf_create_got_section (dynobj, info))
return FALSE;
@ -9558,8 +9546,6 @@ elf32_arm_allocate_plt_entry (struct bfd_link_info *info,
root_plt->offset = splt->size;
splt->size += htab->plt_entry_size;
if (htab->root.target_os != is_symbian)
{
/* We also need to make an entry in the .got.plt section, which
will be placed in the .got section by the linker script. */
if (is_iplt_entry)
@ -9571,7 +9557,6 @@ elf32_arm_allocate_plt_entry (struct bfd_link_info *info,
sgotplt->size += 8;
else
sgotplt->size += 4;
}
}
static bfd_vma
@ -9610,7 +9595,6 @@ elf32_arm_populate_plt_entry (bfd *output_bfd, struct bfd_link_info *info,
bfd_byte *loc;
bfd_vma plt_index;
Elf_Internal_Rela rel;
bfd_vma plt_header_size;
bfd_vma got_header_size;
htab = elf32_arm_hash_table (info);
@ -9625,7 +9609,6 @@ elf32_arm_populate_plt_entry (bfd *output_bfd, struct bfd_link_info *info,
/* There are no reserved entries in .igot.plt, and no special
first entry in .iplt. */
got_header_size = 0;
plt_header_size = 0;
}
else
{
@ -9634,36 +9617,9 @@ elf32_arm_populate_plt_entry (bfd *output_bfd, struct bfd_link_info *info,
srel = htab->root.srelplt;
got_header_size = get_elf_backend_data (output_bfd)->got_header_size;
plt_header_size = htab->plt_header_size;
}
BFD_ASSERT (splt != NULL && srel != NULL);
/* Fill in the entry in the procedure linkage table. */
if (htab->root.target_os == is_symbian)
{
BFD_ASSERT (dynindx >= 0);
put_arm_insn (htab, output_bfd,
elf32_arm_symbian_plt_entry[0],
splt->contents + root_plt->offset);
bfd_put_32 (output_bfd,
elf32_arm_symbian_plt_entry[1],
splt->contents + root_plt->offset + 4);
/* Fill in the entry in the .rel.plt section. */
rel.r_offset = (splt->output_section->vma
+ splt->output_offset
+ root_plt->offset + 4);
rel.r_info = ELF32_R_INFO (dynindx, R_ARM_GLOB_DAT);
/* Get the index in the procedure linkage table which
corresponds to this symbol. This is the index of this symbol
in all the symbols for which we are making plt entries. The
first entry in the procedure linkage table is reserved. */
plt_index = ((root_plt->offset - plt_header_size)
/ htab->plt_entry_size);
}
else
{
bfd_vma got_offset, got_address, plt_address;
bfd_vma got_displacement, initial_got_entry;
bfd_byte * ptr;
@ -9976,7 +9932,6 @@ elf32_arm_populate_plt_entry (bfd *output_bfd, struct bfd_link_info *info,
bfd_put_32(output_bfd, -1 /*TODO*/,
sgot->contents + got_offset + 4);
}
}
if (dynindx == -1)
elf32_arm_add_dynreloc (output_bfd, info, srel, &rel);
@ -10588,43 +10543,6 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
/* This symbol is local, or marked to become local. */
BFD_ASSERT (r_type == R_ARM_ABS32 || r_type == R_ARM_ABS32_NOI
|| (globals->fdpic_p && !bfd_link_pic(info)));
if (globals->root.target_os == is_symbian)
{
asection *osec;
/* On Symbian OS, the data segment and text segement
can be relocated independently. Therefore, we
must indicate the segment to which this
relocation is relative. The BPABI allows us to
use any symbol in the right segment; we just use
the section symbol as it is convenient. (We
cannot use the symbol given by "h" directly as it
will not appear in the dynamic symbol table.)
Note that the dynamic linker ignores the section
symbol value, so we don't subtract osec->vma
from the emitted reloc addend. */
if (sym_sec)
osec = sym_sec->output_section;
else
osec = input_section->output_section;
symbol = 0;
if (osec && elf_section_data (osec))
symbol = elf_section_data (osec)->dynindx;
if (symbol == 0)
{
struct elf_link_hash_table *htab = elf_hash_table (info);
if ((osec->flags & SEC_READONLY) == 0
&& htab->data_index_section != NULL)
osec = htab->data_index_section;
else
osec = htab->text_index_section;
symbol = elf_section_data (osec)->dynindx;
}
BFD_ASSERT (symbol != 0);
}
else
/* On SVR4-ish systems, the dynamic loader cannot
relocate the text and data segments independently,
so the symbol does not matter. */
@ -15641,16 +15559,6 @@ elf32_arm_check_relocs (bfd *abfd, struct bfd_link_info *info,
if (sreloc == NULL)
return FALSE;
/* BPABI objects never have dynamic relocations mapped. */
if (htab->root.target_os == is_symbian)
{
flagword flags;
flags = bfd_section_flags (sreloc);
flags &= ~(SEC_LOAD | SEC_ALLOC);
bfd_set_section_flags (sreloc, flags);
}
}
/* If this is a global symbol, count the number of
@ -16284,15 +16192,15 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
/* Make sure this symbol is output as a dynamic symbol.
Undefined weak syms won't yet be marked as dynamic. */
if (htab->root.dynamic_sections_created && h->dynindx == -1 && !h->forced_local
if (htab->root.dynamic_sections_created
&& h->dynindx == -1
&& !h->forced_local
&& h->root.type == bfd_link_hash_undefweak)
{
if (! bfd_elf_link_record_dynamic_symbol (info, h))
return FALSE;
}
if (htab->root.target_os != is_symbian)
{
s = htab->root.sgot;
h->got.offset = s->size;
@ -16336,9 +16244,7 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
dyn = htab->root.dynamic_sections_created;
indx = 0;
if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
bfd_link_pic (info),
h)
if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h)
&& (!bfd_link_pic (info)
|| !SYMBOL_REFERENCES_LOCAL (info, h)))
indx = h->dynindx;
@ -16389,7 +16295,6 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
resolved. */
htab->srofixup->size += 4;
}
}
else
h->got.offset = (bfd_vma) -1;
@ -16400,7 +16305,8 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
if (h->dynindx != -1)
abort();
/* We only allocate one function descriptor with its associated relocation. */
/* We only allocate one function descriptor with its associated
relocation. */
if (eh->fdpic_cnts.funcdesc_offset == -1)
{
asection *s = htab->root.sgot;
@ -16426,13 +16332,15 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
if (h->dynindx == -1)
{
/* We only allocate one function descriptor with its associated relocation. q */
/* We only allocate one function descriptor with its
associated relocation. */
if (eh->fdpic_cnts.funcdesc_offset == -1)
{
eh->fdpic_cnts.funcdesc_offset = s->size;
s->size += 8;
/* We will add an R_ARM_FUNCDESC_VALUE relocation or two rofixups. */
/* We will add an R_ARM_FUNCDESC_VALUE relocation or two
rofixups. */
if (bfd_link_pic(info))
elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
else
@ -16459,14 +16367,16 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
if (h->dynindx == -1)
{
/* We only allocate one function descriptor with its associated relocation. */
/* We only allocate one function descriptor with its
associated relocation. */
if (eh->fdpic_cnts.funcdesc_offset == -1)
{
asection *s = htab->root.sgot;
eh->fdpic_cnts.funcdesc_offset = s->size;
s->size += 8;
/* We will add an R_ARM_FUNCDESC_VALUE relocation or two rofixups. */
/* We will add an R_ARM_FUNCDESC_VALUE relocation or two
rofixups. */
if (bfd_link_pic(info))
elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
else
@ -16529,7 +16439,9 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
space for pc-relative relocs that have become local due to symbol
visibility changes. */
if (bfd_link_pic (info) || htab->root.is_relocatable_executable || htab->fdpic_p)
if (bfd_link_pic (info)
|| htab->root.is_relocatable_executable
|| htab->fdpic_p)
{
/* Relocs that use pc_count are PC-relative forms, which will appear
on something like ".long foo - ." or "movw REG, foo - .". We want
@ -16637,7 +16549,8 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
&& eh->plt.noncall_refcount == 0
&& SYMBOL_REFERENCES_LOCAL (info, h))
elf32_arm_allocate_irelocs (info, sreloc, p->count);
else if (h->dynindx != -1 && (!bfd_link_pic(info) || !info->symbolic || !h->def_regular))
else if (h->dynindx != -1
&& (!bfd_link_pic(info) || !info->symbolic || !h->def_regular))
elf32_arm_allocate_dynrelocs (info, sreloc, p->count);
else if (htab->fdpic_p && !bfd_link_pic(info))
htab->srofixup->size += 4 * p->count;
@ -17267,7 +17180,7 @@ elf32_arm_finish_dynamic_sections (bfd * output_bfd, struct bfd_link_info * info
splt = htab->root.splt;
BFD_ASSERT (splt != NULL && sdyn != NULL);
BFD_ASSERT (htab->root.target_os == is_symbian || sgot != NULL);
BFD_ASSERT (sgot != NULL);
dyncon = (Elf32_External_Dyn *) sdyn->contents;
dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size);
@ -17282,8 +17195,6 @@ elf32_arm_finish_dynamic_sections (bfd * output_bfd, struct bfd_link_info * info
switch (dyn.d_tag)
{
unsigned int type;
default:
if (htab->root.target_os == is_vxworks
&& elf_vxworks_finish_dynamic_entry (output_bfd, &dyn))
@ -17291,27 +17202,15 @@ elf32_arm_finish_dynamic_sections (bfd * output_bfd, struct bfd_link_info * info
break;
case DT_HASH:
name = ".hash";
goto get_vma_if_bpabi;
case DT_STRTAB:
name = ".dynstr";
goto get_vma_if_bpabi;
case DT_SYMTAB:
name = ".dynsym";
goto get_vma_if_bpabi;
case DT_VERSYM:
name = ".gnu.version";
goto get_vma_if_bpabi;
case DT_VERDEF:
name = ".gnu.version_d";
goto get_vma_if_bpabi;
case DT_VERNEED:
name = ".gnu.version_r";
goto get_vma_if_bpabi;
break;
case DT_PLTGOT:
name = (htab->root.target_os == is_symbian
? ".got" : ".got.plt");
name = ".got.plt";
goto get_vma;
case DT_JMPREL:
name = RELOC_SECTION (htab, ".plt");
@ -17324,21 +17223,10 @@ elf32_arm_finish_dynamic_sections (bfd * output_bfd, struct bfd_link_info * info
bfd_set_error (bfd_error_invalid_operation);
return FALSE;
}
if (htab->root.target_os != is_symbian)
dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
else
/* In the BPABI, tags in the PT_DYNAMIC section point
at the file offset, not the memory address, for the
convenience of the post linker. */
dyn.d_un.d_ptr = s->output_section->filepos + s->output_offset;
bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
break;
get_vma_if_bpabi:
if (htab->root.target_os == is_symbian)
goto get_vma;
break;
case DT_PLTRELSZ:
s = htab->root.srelplt;
BFD_ASSERT (s != NULL);
@ -17350,35 +17238,6 @@ elf32_arm_finish_dynamic_sections (bfd * output_bfd, struct bfd_link_info * info
case DT_RELASZ:
case DT_REL:
case DT_RELA:
/* In the BPABI, the DT_REL tag must point at the file
offset, not the VMA, of the first relocation
section. So, we use code similar to that in
elflink.c, but do not check for SHF_ALLOC on the
relocation section, since relocation sections are
never allocated under the BPABI. PLT relocs are also
included. */
if (htab->root.target_os == is_symbian)
{
unsigned int i;
type = ((dyn.d_tag == DT_REL || dyn.d_tag == DT_RELSZ)
? SHT_REL : SHT_RELA);
dyn.d_un.d_val = 0;
for (i = 1; i < elf_numsections (output_bfd); i++)
{
Elf_Internal_Shdr *hdr
= elf_elfsections (output_bfd)[i];
if (hdr->sh_type == type)
{
if (dyn.d_tag == DT_RELSZ
|| dyn.d_tag == DT_RELASZ)
dyn.d_un.d_val += hdr->sh_size;
else if ((ufile_ptr) hdr->sh_offset
<= dyn.d_un.d_val - 1)
dyn.d_un.d_val = hdr->sh_offset;
}
}
bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
}
break;
case DT_TLSDESC_PLT:
@ -17846,14 +17705,7 @@ elf32_arm_output_plt_map_1 (output_arch_syminfo *osi,
(osi->info->output_bfd, osi->sec->output_section));
addr = root_plt->offset & -2;
if (htab->root.target_os == is_symbian)
{
if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
return FALSE;
if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 4))
return FALSE;
}
else if (htab->root.target_os == is_vxworks)
if (htab->root.target_os == is_vxworks)
{
if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
return FALSE;
@ -18224,8 +18076,7 @@ elf32_arm_output_arch_local_syms (bfd *output_bfd,
osi.sec_shndx = (_bfd_elf_section_from_bfd_section
(output_bfd, osi.sec->output_section));
/* Output mapping symbols for the plt header. SymbianOS does not have a
plt header. */
/* Output mapping symbols for the plt header. */
if (htab->root.target_os == is_vxworks)
{
/* VxWorks shared libraries have no PLT header. */
@ -18251,7 +18102,7 @@ elf32_arm_output_arch_local_syms (bfd *output_bfd,
if (!elf32_arm_output_map_sym (&osi, ARM_MAP_THUMB, 16))
return FALSE;
}
else if (htab->root.target_os != is_symbian && !htab->fdpic_p)
else if (!htab->fdpic_p)
{
if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0))
return FALSE;
@ -20778,167 +20629,3 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
return flags_compatible;
}
/* Symbian OS Targets. */
#undef TARGET_LITTLE_SYM
#define TARGET_LITTLE_SYM arm_elf32_symbian_le_vec
#undef TARGET_LITTLE_NAME
#define TARGET_LITTLE_NAME "elf32-littlearm-symbian"
#undef TARGET_BIG_SYM
#define TARGET_BIG_SYM arm_elf32_symbian_be_vec
#undef TARGET_BIG_NAME
#define TARGET_BIG_NAME "elf32-bigarm-symbian"
/* Like elf32_arm_link_hash_table_create -- but overrides
appropriately for Symbian OS. */
static struct bfd_link_hash_table *
elf32_arm_symbian_link_hash_table_create (bfd *abfd)
{
struct bfd_link_hash_table *ret;
ret = elf32_arm_link_hash_table_create (abfd);
if (ret)
{
struct elf32_arm_link_hash_table *htab
= (struct elf32_arm_link_hash_table *)ret;
/* There is no PLT header for Symbian OS. */
htab->plt_header_size = 0;
/* The PLT entries are each one instruction and one word. */
htab->plt_entry_size = 4 * ARRAY_SIZE (elf32_arm_symbian_plt_entry);
/* Symbian uses armv5t or above, so use_blx is always true. */
htab->use_blx = 1;
htab->root.is_relocatable_executable = 1;
}
return ret;
}
static const struct bfd_elf_special_section
elf32_arm_symbian_special_sections[] =
{
/* In a BPABI executable, the dynamic linking sections do not go in
the loadable read-only segment. The post-linker may wish to
refer to these sections, but they are not part of the final
program image. */
{ STRING_COMMA_LEN (".dynamic"), 0, SHT_DYNAMIC, 0 },
{ STRING_COMMA_LEN (".dynstr"), 0, SHT_STRTAB, 0 },
{ STRING_COMMA_LEN (".dynsym"), 0, SHT_DYNSYM, 0 },
{ STRING_COMMA_LEN (".got"), 0, SHT_PROGBITS, 0 },
{ STRING_COMMA_LEN (".hash"), 0, SHT_HASH, 0 },
/* These sections do not need to be writable as the SymbianOS
postlinker will arrange things so that no dynamic relocation is
required. */
{ STRING_COMMA_LEN (".init_array"), 0, SHT_INIT_ARRAY, SHF_ALLOC },
{ STRING_COMMA_LEN (".fini_array"), 0, SHT_FINI_ARRAY, SHF_ALLOC },
{ STRING_COMMA_LEN (".preinit_array"), 0, SHT_PREINIT_ARRAY, SHF_ALLOC },
{ NULL, 0, 0, 0, 0 }
};
static void
elf32_arm_symbian_begin_write_processing (bfd *abfd,
struct bfd_link_info *link_info)
{
/* BPABI objects are never loaded directly by an OS kernel; they are
processed by a postlinker first, into an OS-specific format. If
the D_PAGED bit is set on the file, BFD will align segments on
page boundaries, so that an OS can directly map the file. With
BPABI objects, that just results in wasted space. In addition,
because we clear the D_PAGED bit, map_sections_to_segments will
recognize that the program headers should not be mapped into any
loadable segment. */
abfd->flags &= ~D_PAGED;
elf32_arm_begin_write_processing (abfd, link_info);
}
static bfd_boolean
elf32_arm_symbian_modify_segment_map (bfd *abfd,
struct bfd_link_info *info)
{
struct elf_segment_map *m;
asection *dynsec;
/* BPABI shared libraries and executables should have a PT_DYNAMIC
segment. However, because the .dynamic section is not marked
with SEC_LOAD, the generic ELF code will not create such a
segment. */
dynsec = bfd_get_section_by_name (abfd, ".dynamic");
if (dynsec)
{
for (m = elf_seg_map (abfd); m != NULL; m = m->next)
if (m->p_type == PT_DYNAMIC)
break;
if (m == NULL)
{
m = _bfd_elf_make_dynamic_segment (abfd, dynsec);
m->next = elf_seg_map (abfd);
elf_seg_map (abfd) = m;
}
}
/* Also call the generic arm routine. */
return elf32_arm_modify_segment_map (abfd, info);
}
/* Return address for Ith PLT stub in section PLT, for relocation REL
or (bfd_vma) -1 if it should not be included. */
static bfd_vma
elf32_arm_symbian_plt_sym_val (bfd_vma i, const asection *plt,
const arelent *rel ATTRIBUTE_UNUSED)
{
return plt->vma + 4 * ARRAY_SIZE (elf32_arm_symbian_plt_entry) * i;
}
#undef elf32_bed
#define elf32_bed elf32_arm_symbian_bed
/* The dynamic sections are not allocated on SymbianOS; the postlinker
will process them and then discard them. */
#undef ELF_DYNAMIC_SEC_FLAGS
#define ELF_DYNAMIC_SEC_FLAGS \
(SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED)
#undef elf_backend_emit_relocs
#undef bfd_elf32_bfd_link_hash_table_create
#define bfd_elf32_bfd_link_hash_table_create elf32_arm_symbian_link_hash_table_create
#undef elf_backend_special_sections
#define elf_backend_special_sections elf32_arm_symbian_special_sections
#undef elf_backend_begin_write_processing
#define elf_backend_begin_write_processing elf32_arm_symbian_begin_write_processing
#undef elf_backend_final_write_processing
#define elf_backend_final_write_processing elf32_arm_final_write_processing
#undef elf_backend_modify_segment_map
#define elf_backend_modify_segment_map elf32_arm_symbian_modify_segment_map
/* There is no .got section for BPABI objects, and hence no header. */
#undef elf_backend_got_header_size
#define elf_backend_got_header_size 0
/* Similarly, there is no .got.plt section. */
#undef elf_backend_want_got_plt
#define elf_backend_want_got_plt 0
#undef elf_backend_plt_sym_val
#define elf_backend_plt_sym_val elf32_arm_symbian_plt_sym_val
#undef elf_backend_may_use_rel_p
#define elf_backend_may_use_rel_p 1
#undef elf_backend_may_use_rela_p
#define elf_backend_may_use_rela_p 0
#undef elf_backend_default_use_rela_p
#define elf_backend_default_use_rela_p 0
#undef elf_backend_want_plt_sym
#define elf_backend_want_plt_sym 0
#undef elf_backend_dtrel_excludes_plt
#define elf_backend_dtrel_excludes_plt 0
#undef ELF_MAXPAGESIZE
#define ELF_MAXPAGESIZE 0x8000
#undef ELF_TARGET_OS
#define ELF_TARGET_OS is_symbian
#include "elf32-target.h"

View file

@ -697,8 +697,6 @@ extern const bfd_target arm_elf32_fdpic_be_vec;
extern const bfd_target arm_elf32_fdpic_le_vec;
extern const bfd_target arm_elf32_nacl_be_vec;
extern const bfd_target arm_elf32_nacl_le_vec;
extern const bfd_target arm_elf32_symbian_be_vec;
extern const bfd_target arm_elf32_symbian_le_vec;
extern const bfd_target arm_elf32_vxworks_be_vec;
extern const bfd_target arm_elf32_vxworks_le_vec;
extern const bfd_target arm_mach_o_vec;
@ -1021,8 +1019,6 @@ static const bfd_target * const _bfd_target_vector[] =
&arm_elf32_le_vec,
&arm_elf32_fdpic_be_vec,
&arm_elf32_fdpic_le_vec,
&arm_elf32_symbian_be_vec,
&arm_elf32_symbian_le_vec,
&arm_elf32_vxworks_be_vec,
&arm_elf32_vxworks_le_vec,
&arm_mach_o_vec,

View file

@ -1,3 +1,8 @@
2021-02-09 Alan Modra <amodra@gmail.com>
* testsuite/lib/binutils-common.exp (supports_gnu_osabi): Remove
symbianelf.
2021-02-07 Alan Modra <amodra@gmail.com>
* unwind-ia64.c (unw_print_xyreg): Don't leave output buffer

View file

@ -213,7 +213,6 @@ proc supports_gnu_osabi {} {
|| [istarget *-*-linux*]
|| [istarget *-*-nacl*]
|| ( [istarget *-*-*bsd*] && ![istarget arm*-*-netbsd*] )
|| [istarget *-*-symbianelf]
|| [istarget *-*-lynxos]
|| ( [istarget *-*-nto*] && ![istarget arm*-*-*] )
|| [istarget *-*-irix*]

3
configure vendored
View file

@ -3442,9 +3442,6 @@ case "${target}" in
arm-wince-pe)
noconfigdirs="$noconfigdirs target-libffi"
;;
arm*-*-symbianelf*)
noconfigdirs="$noconfigdirs target-libffi"
;;
cris-*-* | crisv32-*-*)
case "${target}" in
*-*-linux*)

View file

@ -728,9 +728,6 @@ case "${target}" in
arm-wince-pe)
noconfigdirs="$noconfigdirs target-libffi"
;;
arm*-*-symbianelf*)
noconfigdirs="$noconfigdirs target-libffi"
;;
cris-*-* | crisv32-*-*)
case "${target}" in
*-*-linux*)

View file

@ -1,3 +1,24 @@
2021-02-09 Alan Modra <amodra@gmail.com>
* Makefile.am (TARG_ENV_HFILES): Remove config/te-symbian.h.
* config/tc-arm.c (elf32_arm_target_format): Remove TE_SYMBIAN
support.
* config/te-symbian.h: Delete.
* configure.tgt: Remove arm-*-symbianelf*.
* testsuite/gas/arm/arch4t-eabi.d: Don't mention symbianelf in
target selection.
* testsuite/gas/arm/arch4t.d: Likewise.
* testsuite/gas/arm/got_prel.d: Likewise.
* testsuite/gas/arm/mapdir.d: Likewise.
* testsuite/gas/arm/mapmisc.d: Likewise.
* testsuite/gas/arm/mapsecs.d: Likewise.
* testsuite/gas/arm/mapshort-eabi.d: Likewise.
* testsuite/gas/arm/thumb-eabi.d: Likewise.
* testsuite/gas/arm/thumb.d: Likewise.
* testsuite/gas/arm/thumbrel.d: Likewise.
* Makefile.in: Regenerate.
* po/POTFILES.in: Regenerate.
2021-02-09 Nick Clifton <nickc@redhat.com>
PR 27384

View file

@ -332,7 +332,6 @@ TARG_ENV_HFILES = \
config/te-pe.h \
config/te-solaris.h \
config/te-svr4.h \
config/te-symbian.h \
config/te-tmips.h \
config/te-vxworks.h \
config/te-wince-pe.h

View file

@ -723,7 +723,6 @@ TARG_ENV_HFILES = \
config/te-pe.h \
config/te-solaris.h \
config/te-svr4.h \
config/te-symbian.h \
config/te-tmips.h \
config/te-vxworks.h \
config/te-wince-pe.h

View file

@ -30495,11 +30495,7 @@ arm_fix_adjustable (fixS * fixP)
const char *
elf32_arm_target_format (void)
{
#ifdef TE_SYMBIAN
return (target_big_endian
? "elf32-bigarm-symbian"
: "elf32-littlearm-symbian");
#elif defined (TE_VXWORKS)
#if defined (TE_VXWORKS)
return (target_big_endian
? "elf32-bigarm-vxworks"
: "elf32-littlearm-vxworks");

View file

@ -1,22 +0,0 @@
/* Copyright (C) 2004-2021 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3,
or (at your option) any later version.
GAS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#define TE_SYMBIAN 1
#include "te-armeabi.h"

View file

@ -144,7 +144,6 @@ case ${generic_target} in
arm-*-phoenix*) fmt=elf ;;
arm-*-elf) fmt=elf ;;
arm-*-eabi* | arm-*-rtems* | arm-*-genode*) fmt=elf em=armeabi ;;
arm-*-symbianelf*) fmt=elf em=symbian ;;
arm-*-kaos*) fmt=elf ;;
arm-*-conix*) fmt=elf ;;
arm-*-freebsd[89].* | armeb-*-freebsd[89].*)

View file

@ -208,7 +208,6 @@ config/te-pc532mach.h
config/te-pe.h
config/te-solaris.h
config/te-svr4.h
config/te-symbian.h
config/te-tmips.h
config/te-vms.c
config/te-vxworks.h

View file

@ -2,7 +2,7 @@
# as: -march=armv4t
# objdump: -dr --prefix-addresses --show-raw-insn
# source: arch4t.s
# target: *-*-*eabi* *-*-symbianelf *-*-nacl*
# target: *-*-*eabi* *-*-nacl*
.*: +file format .*arm.*

View file

@ -2,7 +2,7 @@
# as: -march=armv4t
# objdump: -dr --prefix-addresses --show-raw-insn
# EABI targets have their own variant.
# notarget: *-*-*eabi* *-*-symbianelf *-*-nacl*
# notarget: *-*-*eabi* *-*-nacl*
.*: +file format .*arm.*

View file

@ -2,7 +2,7 @@
# source: got_prel.s
# as: -march=armv5te -meabi=5 --generate-missing-build-notes=no
# readelf: -x 4 -r
# target: *-*-*eabi* *-*-symbianelf *-*-linux-* *-*-elf *-*-nacl*
# target: *-*-*eabi* *-*-linux-* *-*-elf *-*-nacl*
Relocation section '.rel.text.foo' at offset .* contains 1 entry:
Offset Info Type Sym.Value Sym. Name

View file

@ -2,7 +2,7 @@
#objdump: --syms --special-syms -d
#name: ARM Mapping Symbols for .arm/.thumb
# This test is only valid on EABI based ports.
#target: *-*-*eabi* *-*-symbianelf *-*-linux-* *-*-elf *-*-nacl*
#target: *-*-*eabi* *-*-linux-* *-*-elf *-*-nacl*
#source: mapdir.s

View file

@ -2,7 +2,7 @@
#objdump: --syms --special-syms -d
#name: ARM Mapping Symbols for miscellaneous directives
# This test is only valid on EABI based ports.
#target: *-*-*eabi* *-*-symbianelf *-*-linux-* *-*-elf *-*-nacl*
#target: *-*-*eabi* *-*-linux-* *-*-elf *-*-nacl*
#source: mapmisc.s

View file

@ -2,7 +2,7 @@
#objdump: --syms --special-syms -d
#name: ARM Mapping Symbols with multiple sections
# This test is only valid on EABI based ports.
#target: *-*-*eabi* *-*-symbianelf *-*-linux-* *-*-elf *-*-nacl*
#target: *-*-*eabi* *-*-linux-* *-*-elf *-*-nacl*
#source: mapsecs.s

View file

@ -2,7 +2,7 @@
#as: --generate-missing-build-notes=no
#name: ARM Mapping Symbols for .short (EABI version)
# This test is only valid on EABI based ports.
#target: *-*-*eabi* *-*-symbianelf *-*-linux-* *-*-elf *-*-nacl*
#target: *-*-*eabi* *-*-linux-* *-*-elf *-*-nacl*
#source: mapshort.s
# Test the generation and use of ARM ELF Mapping Symbols

View file

@ -2,7 +2,7 @@
# as: -mcpu=arm7t
# objdump: -dr --prefix-addresses --show-raw-insn
# source: thumb.s
# target: *-*-*eabi* *-*-symbianelf *-*-nacl*
# target: *-*-*eabi* *-*-nacl*
.*: +file format .*arm.*

View file

@ -3,7 +3,7 @@
# objdump: -dr --prefix-addresses --show-raw-insn
# The arm-aout and arm-pe ports do not support Thumb branch relocations.
# EABI targets have their own variant.
# notarget: *-*-pe *-*-*eabi* *-*-symbianelf *-*-nacl*
# notarget: *-*-pe *-*-*eabi* *-*-nacl*
.*: +file format .*arm.*

View file

@ -1,7 +1,7 @@
#objdump: -sr
#as: --generate-missing-build-notes=no
# This test is only valid on EABI based ports.
#target: *-*-*eabi* *-*-symbianelf *-*-nacl*
#target: *-*-*eabi* *-*-nacl*
.*: file format.*

View file

@ -1,3 +1,17 @@
2021-02-09 Alan Modra <amodra@gmail.com>
* Makefile.am (ALL_EMULATION_SOURCES): Remove earmsymbian.c.
Don't include symbian dep file.
* configure.tgt: Remove arm*-*-symbianelf* entry.
* emulparams/armsymbian.sh: Delete.
* ld.texi: Don't mention symbian.
* scripttempl/armbpabi.sc: Delete.
* testsuite/ld-arm/symbian-seg1.d: Delete.
* testsuite/ld-arm/symbian-seg1.s: Delete.
* testsuite/ld-arm/arm-elf.exp: Don't run symbian-seg1.
* Makefile.in: Regenerate.
* po/BLD-POTFILES.in: Regenerate.
2021-02-07 H.J. Lu <hongjiu.lu@intel.com>
PR ld/27358

View file

@ -184,7 +184,6 @@ ALL_EMULATION_SOURCES = \
earmelfb_nbsd.c \
earmnto.c \
earmpe.c \
earmsymbian.c \
eavr1.c \
eavr2.c \
eavr25.c \
@ -675,7 +674,6 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_nbsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmnto.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmpe.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmsymbian.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr1.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr2.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr25.Pc@am__quote@

View file

@ -674,7 +674,6 @@ ALL_EMULATION_SOURCES = \
earmelfb_nbsd.c \
earmnto.c \
earmpe.c \
earmsymbian.c \
eavr1.c \
eavr2.c \
eavr25.c \
@ -1279,7 +1278,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_nbsd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmnto.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmpe.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmsymbian.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr25.Po@am__quote@
@ -2334,7 +2332,6 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_nbsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmnto.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmpe.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmsymbian.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr1.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr2.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eavr25.Pc@am__quote@

View file

@ -151,7 +151,6 @@ armeb-*-elf | armeb-*-eabi*)
arm-*-elf | arm*-*-eabi* | arm-*-rtems* | arm-*-genode*)
targ_emul=armelf
;;
arm*-*-symbianelf*) targ_emul=armsymbian;;
arm-*-kaos*) targ_emul=armelf
;;
arm9e-*-elf) targ_emul=armelf

View file

@ -1,25 +0,0 @@
source_sh ${srcdir}/emulparams/armelf.sh
SCRIPT_NAME="armbpabi"
GENERATE_COMBRELOC_SCRIPT=1
OUTPUT_FORMAT="elf32-littlearm-symbian"
BIG_OUTPUT_FORMAT="elf32-bigarm-symbian"
LITTLE_OUTPUT_FORMAT="$OUTPUT_FORMAT"
TARGET1_IS_REL=1
TARGET2_TYPE=abs
# On BPABI systems, program headers should not be mapped.
EMBEDDED=yes
# As for armelf.sh, but add the SymbianOS-specific
# .ARM.exidx$${Base,Limit} symbols.
OTHER_READONLY_SECTIONS="
.ARM.extab ${RELOCATING-0} : { *(.ARM.extab${RELOCATING+* .gnu.linkonce.armextab.*}) }
.ARM.exidx ${RELOCATING-0} :
{
${RELOCATING+PROVIDE_HIDDEN (.ARM.exidx\$\$Base = .);}
${RELOCATING+PROVIDE_HIDDEN (__exidx_start = .);}
*(.ARM.exidx${RELOCATING+* .gnu.linkonce.armexidx.*})
${RELOCATING+PROVIDE_HIDDEN (__exidx_end = .);}
${RELOCATING+PROVIDE_HIDDEN (.ARM.exidx\$\$Limit = .);}
}"
MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"

View file

@ -7316,7 +7316,7 @@ meanings, and target defaults are as follows:
@item rel
@samp{R_ARM_REL32} (arm*-*-elf, arm*-*-eabi)
@item abs
@samp{R_ARM_ABS32} (arm*-*-symbianelf)
@samp{R_ARM_ABS32}
@item got-rel
@samp{R_ARM_GOT_PREL} (arm*-*-linux, arm*-*-*bsd)
@end table
@ -7358,9 +7358,6 @@ situations. Currently it is used to perform calls via the PLT from Thumb
code using BLX rather than using BX and a mode-switching stub before
each PLT entry. This should lead to such calls executing slightly faster.
This option is enabled implicitly for SymbianOS, so there is no need to
specify it if you are using that target.
@cindex VFP11_DENORM_FIX
@kindex --vfp11-denorm-fix
The @samp{--vfp11-denorm-fix} switch enables a link-time workaround for a

View file

@ -42,7 +42,6 @@ earmelfb_nacl.c
earmelfb_nbsd.c
earmnto.c
earmpe.c
earmsymbian.c
eavr1.c
eavr2.c
eavr25.c

View file

@ -1,417 +0,0 @@
# This variant of elf.sc is used for ARM BPABI platforms, like Symbian
# OS, where a separate postlinker will operated on the generated
# executable or shared object. See elf.sc for configuration variables
# that apply; only BPABI-specific variables will be noted here.
#
# Copyright (C) 2014-2021 Free Software Foundation, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.
test -z "$ENTRY" && ENTRY=_start
test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
test -z "${ELFSIZE}" && ELFSIZE=32
test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
test "$LD_FLAG" = "N" && DATA_ADDR=.
test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
DATA_SEGMENT_ALIGN="ALIGN(${SEGMENT_SIZE}) + (. & (${MAXPAGESIZE} - 1))"
DATA_SEGMENT_RELRO_END=""
DATA_SEGMENT_RELRO_GOTPLT_END=""
DATA_SEGMENT_END=""
if test -n "${COMMONPAGESIZE}"; then
DATA_SEGMENT_ALIGN="ALIGN (${SEGMENT_SIZE}) - ((${MAXPAGESIZE} - .) & (${MAXPAGESIZE} - 1)); . = DATA_SEGMENT_ALIGN (${MAXPAGESIZE}, ${COMMONPAGESIZE})"
DATA_SEGMENT_END=". = DATA_SEGMENT_END (.);"
if test -n "${SEPARATE_GOTPLT}"; then
DATA_SEGMENT_RELRO_GOTPLT_END=". = DATA_SEGMENT_RELRO_END (. + ${SEPARATE_GOTPLT});"
else
DATA_SEGMENT_RELRO_END=". = DATA_SEGMENT_RELRO_END (.);"
fi
fi
INTERP=".interp 0 : { *(.interp) }"
PLT=".plt ${RELOCATING-0} : { *(.plt) }"
RODATA=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro .data.rel.ro.*) }"
DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }"
if test -z "${NO_SMALL_DATA}"; then
SBSS=".sbss ${RELOCATING-0} :
{
${RELOCATING+PROVIDE (__sbss_start = .);}
${RELOCATING+PROVIDE (___sbss_start = .);}
${RELOCATING+*(.dynsbss)}
*(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
${RELOCATING+*(.scommon)}
${RELOCATING+PROVIDE (__sbss_end = .);}
${RELOCATING+PROVIDE (___sbss_end = .);}
}"
SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }"
SDATA="/* We want the small data sections together, so single-instruction offsets
can access them all, and initialized data all before uninitialized, so
we can shorten the on-disk segment size. */
.sdata ${RELOCATING-0} :
{
${RELOCATING+${SDATA_START_SYMBOLS}}
*(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
}"
SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }"
REL_SDATA=".rel.sdata ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }
.rela.sdata ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
REL_SBSS=".rel.sbss ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }
.rela.sbss ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }"
REL_SDATA2=".rel.sdata2 ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }
.rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }"
REL_SBSS2=".rel.sbss2 ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }
.rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }"
else
NO_SMALL_DATA=" "
fi
test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
INIT_ARRAY=".init_array ${RELOCATING-0} :
{
/* SymbianOS uses this symbol. */
${RELOCATING+PROVIDE (SHT\$\$INIT_ARRAY\$\$Base = .);}
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_start = .);}}
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array))
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_end = .);}}
/* SymbianOS uses this symbol. */
${RELOCATING+PROVIDE (SHT\$\$INIT_ARRAY\$\$Limit = .);}
}"
FINI_ARRAY=".fini_array ${RELOCATING-0} :
{
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_start = .);}}
KEEP (*(SORT(.fini_array.*)))
KEEP (*(.fini_array))
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_end = .);}}
}"
CTOR=".ctors ${CONSTRUCTING-0} :
{
${CONSTRUCTING+${CTOR_START}}
/* gcc uses crtbegin.o to find the start of
the constructors, so we make sure it is
first. Because this is a wildcard, it
doesn't matter if the user does not
actually link against crtbegin.o; the
linker won't look for a file to match a
wildcard. The wildcard also means that it
doesn't matter which directory crtbegin.o
is in. */
KEEP (*crtbegin.o(.ctors))
KEEP (*crtbegin?.o(.ctors))
/* We don't want to include the .ctor section from
the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the
end of ctors marker and it must be last */
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors))
${CONSTRUCTING+${CTOR_END}}
}"
DTOR=".dtors ${CONSTRUCTING-0} :
{
${CONSTRUCTING+${DTOR_START}}
KEEP (*crtbegin.o(.dtors))
KEEP (*crtbegin?.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors))
${CONSTRUCTING+${DTOR_END}}
}"
STACK=" .stack ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
{
${RELOCATING+_stack = .;}
*(.stack)
}"
TEXT_START_ADDR="SEGMENT_START(\"text\", ${TEXT_START_ADDR})"
SHLIB_TEXT_START_ADDR="SEGMENT_START(\"text\", ${SHLIB_TEXT_START_ADDR:-0})"
DATA_ADDR="SEGMENT_START(\"data\", ${DATA_ADDR-${DATA_SEGMENT_ALIGN}})"
SHLIB_DATA_ADDR="SEGMENT_START(\"data\", ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}})"
# If this is for an embedded system, don't add SIZEOF_HEADERS.
if [ -z "$EMBEDDED" ]; then
test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
SHLIB_BASE_ADDRESS="${SHLIB_TEXT_START_ADDR} + SIZEOF_HEADERS"
else
test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
SHLIB_BASE_ADDRESS="${SHLIB_TEXT_START_ADDR}"
fi
cat <<EOF
/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
Copying and distribution of this script, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. */
OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
"${LITTLE_OUTPUT_FORMAT}")
OUTPUT_ARCH(${OUTPUT_ARCH})
EOF
test -n "${RELOCATING}" && cat <<EOF
ENTRY(${ENTRY})
${LIB_SEARCH_DIRS}
/* Do we need any of these for elf?
__DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */
${EXECUTABLE_SYMBOLS}
${INPUT_FILES}
/* ARM's proprietary toolchain generate these symbols to match the start
and end of particular sections of the image. SymbianOS uses these
symbols. We provide them for compatibility with ARM's toolchains.
These symbols should be bound locally; each shared object may define
its own version of these symbols. */
VERSION
{
/* Give these a dummy version to work around linker lameness.
The name used shouldn't matter as these are all local symbols. */
__GNU {
local:
Image\$\$ER_RO\$\$Base;
Image\$\$ER_RO\$\$Limit;
SHT\$\$INIT_ARRAY\$\$Base;
SHT\$\$INIT_ARRAY\$\$Limit;
.ARM.exidx\$\$Base;
.ARM.exidx\$\$Limit;
};
}
EOF
cat <<EOF
SECTIONS
{
/* Read-only sections, merged into text segment: */
${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR});}}}
${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+ . = ${TEXT_BASE_ADDRESS};}}}
${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_BASE_ADDRESS};}}
${CREATE_PIE+${RELOCATING+. = ${SHLIB_BASE_ADDRESS};}}
/* Define Image\$\$ER_RO\$\$Base. */
${RELOCATING+PROVIDE (Image\$\$ER_RO\$\$Base = .);}
${INITIAL_READONLY_SECTIONS}
EOF
cat <<EOF
.init ${RELOCATING-0} :
{
${RELOCATING+${INIT_START}}
KEEP (*(SORT_NONE(.init)))
${RELOCATING+${INIT_END}}
} =${NOP-0}
.text ${RELOCATING-0} :
{
${RELOCATING+${TEXT_START_SYMBOLS}}
*(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
/* .gnu.warning sections are handled specially by elf.em. */
*(.gnu.warning)
${RELOCATING+${OTHER_TEXT_SECTIONS}}
} =${NOP-0}
.fini ${RELOCATING-0} :
{
${RELOCATING+${FINI_START}}
KEEP (*(SORT_NONE(.fini)))
${RELOCATING+${FINI_END}}
} =${NOP-0}
/* The SymbianOS kernel requires that the PLT go at the end of the
text section. */
${DATA_PLT-${BSS_PLT-${PLT}}}
${RELOCATING+PROVIDE (__etext = .);}
${RELOCATING+PROVIDE (_etext = .);}
${RELOCATING+PROVIDE (etext = .);}
/* Define Image\$\$ER_RO\$\$Limit. */
${RELOCATING+PROVIDE (Image\$\$ER_RO\$\$Limit = .);}
${WRITABLE_RODATA-${RODATA}}
.rodata1 ${RELOCATING-0} : { *(.rodata1) }
${CREATE_SHLIB-${SDATA2}}
${CREATE_SHLIB-${SBSS2}}
/* On SymbianOS, put .init_array and friends in the read-only
segment; there is no runtime relocation applied to these
arrays. */
.preinit_array ${RELOCATING-0} :
{
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__preinit_array_start = .);}}
KEEP (*(.preinit_array))
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__preinit_array_end = .);}}
}
${RELOCATING+${INIT_ARRAY}}
${RELOCATING+${FINI_ARRAY}}
${OTHER_READONLY_SECTIONS}
.eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) }
.eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }
.gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table${RELOCATING+ .gcc_except_table.*})) }
/* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */
${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+. = ${DATA_ADDR};}}}
${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_DATA_ADDR};}}
${CREATE_PIE+${RELOCATING+. = ${SHLIB_DATA_ADDR};}}
/* Exception handling */
.eh_frame ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }
.gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table${RELOCATING+ .gcc_except_table.*})) }
/* Thread Local Storage sections */
.tdata ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }
.tbss ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }
${RELOCATING+${CTOR}}
${RELOCATING+${DTOR}}
.jcr ${RELOCATING-0} : { KEEP (*(.jcr)) }
${RELOCATING+${DATARELRO}}
${OTHER_RELRO_SECTIONS}
${RELOCATING+${DATA_SEGMENT_RELRO_END}}
${DATA_PLT+${PLT_BEFORE_GOT-${PLT}}}
.data ${RELOCATING-0} :
{
${RELOCATING+${DATA_START_SYMBOLS}}
*(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
${CONSTRUCTING+SORT(CONSTRUCTORS)}
}
.data1 ${RELOCATING-0} : { *(.data1) }
${WRITABLE_RODATA+${RODATA}}
${OTHER_READWRITE_SECTIONS}
${DATA_PLT+${PLT_BEFORE_GOT+${PLT}}}
${CREATE_SHLIB+${SDATA2}}
${CREATE_SHLIB+${SBSS2}}
${SDATA}
${OTHER_SDATA_SECTIONS}
${RELOCATING+_edata = .;}
${RELOCATING+PROVIDE (edata = .);}
${RELOCATING+. = DEFINED(__bss_segment_start) ? __bss_segment_start : .;}
${RELOCATING+__bss_start = .;}
${RELOCATING+${OTHER_BSS_SYMBOLS}}
${SBSS}
${BSS_PLT+${PLT}}
.bss ${RELOCATING-0} :
{
${RELOCATING+*(.dynbss)}
*(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
${RELOCATING+*(COMMON)
/* Align here to ensure that the .bss section occupies space up to
_end. Align after .bss to ensure correct alignment even if the
.bss section disappears because there are no input sections. */
. = ALIGN(${ALIGNMENT});}
}
${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
${RELOCATING+. = ALIGN(${ALIGNMENT});}
${RELOCATING+${OTHER_END_SYMBOLS}}
${RELOCATING+_end = .;}
${RELOCATING+PROVIDE (end = .);}
${RELOCATING+${DATA_SEGMENT_END}}
${STACK_ADDR+${STACK}}
/* These sections are not mapped under the BPABI. */
.dynamic 0 : { *(.dynamic) }
.hash 0 : { *(.hash) }
.dynsym 0 : { *(.dynsym) }
.dynstr 0 : { *(.dynstr) }
.gnu.version 0 : { *(.gnu.version) }
.gnu.version_d 0: { *(.gnu.version_d) }
.gnu.version_r 0: { *(.gnu.version_r) }
${CREATE_SHLIB-${INTERP}}
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
EOF
. $srcdir/scripttempl/DWARF.sc
cat <<EOF
${OTHER_SECTIONS}
${RELOCATING+${OTHER_SYMBOLS}}
${RELOCATING+${DISCARDED}}
EOF
# These relocations sections are part of the read-only segment in SVR4
# executables, but are not mapped in BPABI executables.
if [ "x$COMBRELOC" = x ]; then
COMBRELOCCAT=cat
else
COMBRELOCCAT="cat > $COMBRELOC"
fi
eval $COMBRELOCCAT <<EOF
.rel.init 0 : { *(.rel.init) }
.rela.init 0 : { *(.rela.init) }
.rel.text 0 : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }
.rela.text 0 : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }
.rel.fini 0 : { *(.rel.fini) }
.rela.fini 0 : { *(.rela.fini) }
.rel.rodata 0 : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }
.rela.rodata 0 : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }
${OTHER_READONLY_RELOC_SECTIONS}
.rel.data.rel.ro 0 : { *(.rel.data.rel.ro${RELOCATING+ .rel.data.rel.ro.*}) }
.rela.data.rel.ro 0 : { *(.rela.data.rel.ro${RELOCATING+ .rela.data.rel.ro.*}) }
.rel.data 0 : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }
.rela.data 0 : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }
.rel.tdata 0 : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }
.rela.tdata 0 : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }
.rel.tbss 0 : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }
.rela.tbss 0 : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }
.rel.ctors 0 : { *(.rel.ctors) }
.rela.ctors 0 : { *(.rela.ctors) }
.rel.dtors 0 : { *(.rel.dtors) }
.rela.dtors 0 : { *(.rela.dtors) }
${REL_SDATA}
${REL_SBSS}
${REL_SDATA2}
${REL_SBSS2}
.rel.bss 0 : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }
.rela.bss 0 : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }
.rel.init_array 0 : { *(.rel.init_array) }
.rela.init_array 0 : { *(.rela.init_array) }
.rel.fini_array 0 : { *(.rel.fini_array) }
.rela.fini_array 0 : { *(.rela.fini_array) }
EOF
if [ -n "$COMBRELOC" ]; then
cat <<EOF
.rel.dyn 0 :
{
EOF
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
cat <<EOF
}
.rela.dyn 0 :
{
EOF
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
cat <<EOF
}
EOF
fi
cat <<EOF
.rel.plt 0 : { *(.rel.plt) }
.rela.plt 0 : { *(.rela.plt) }
${OTHER_PLT_RELOC_SECTIONS}
.rel.other 0 : { *(.rel.*) }
.rela.other 0 : { *(.rela.*) }
.reli.other 0 : { *(.reli.*) }
}
EOF

View file

@ -53,10 +53,6 @@ if {[istarget "arm-*-vxworks"]} {
run_dump_test "emit-relocs1-vxworks"
}
if { [istarget "arm*-*-symbianelf*"] } {
run_dump_test "symbian-seg1"
}
# Exclude non-ARM-ELF targets.
if { ![is_elf_format] || ![istarget "arm*-*-*"] } {

View file

@ -1,8 +0,0 @@
#source: symbian-seg1.s
#ld: -Ttext 0x10000 -Tdata 0x400000
#objdump: -dR
#...
+10000: 00400000 .word 0x00400000
+10000: R_ARM_RELATIVE .data
+10004: 00010008 .word 0x00010008
+10004: R_ARM_RELATIVE .text

View file

@ -1,13 +0,0 @@
.text
.globl _start
_start:
.word datavar
.word rodatavar
.section ".rodata", "a"
rodatavar:
.word 0
.section ".data", "aw"
datavar:
.word 0