elf-ifunc.lo \
elf-m10200.lo \
elf-m10300.lo \
- elf-nacl.lo \
elf-sframe.lo \
elf-strtab.lo \
elf-vxworks.lo \
elf-ifunc.c \
elf-m10200.c \
elf-m10300.c \
- elf-nacl.c \
elf-sframe.c \
elf-strtab.c \
elf-vxworks.c \
elf32-tic6x.h elf32-tilegx.h elf32-tilepro.h elf32-v850.h \
elf64-hppa.h elf64-ppc.h elf64-tilegx.h \
elf-bfd.h elfcode.h elfcore.h elf-hppa.h elf-linker-x86.h \
- elf-linux-core.h elf-nacl.h elf-s390.h elf-vxworks.h \
+ elf-linux-core.h elf-s390.h elf-vxworks.h \
elfxx-aarch64.h elfxx-ia64.h elfxx-mips.h elfxx-riscv.h \
elfxx-sparc.h elfxx-tilegx.h elfxx-x86.h elfxx-loongarch.h \
genlink.h go32stub.h \
elf-ifunc.lo \
elf-m10200.lo \
elf-m10300.lo \
- elf-nacl.lo \
elf-sframe.lo \
elf-strtab.lo \
elf-vxworks.lo \
elf-ifunc.c \
elf-m10200.c \
elf-m10300.c \
- elf-nacl.c \
elf-sframe.c \
elf-strtab.c \
elf-vxworks.c \
elf32-tic6x.h elf32-tilegx.h elf32-tilepro.h elf32-v850.h \
elf64-hppa.h elf64-ppc.h elf64-tilegx.h \
elf-bfd.h elfcode.h elfcore.h elf-hppa.h elf-linker-x86.h \
- elf-linux-core.h elf-nacl.h elf-s390.h elf-vxworks.h \
+ elf-linux-core.h elf-s390.h elf-vxworks.h \
elfxx-aarch64.h elfxx-ia64.h elfxx-mips.h elfxx-riscv.h \
elfxx-sparc.h elfxx-tilegx.h elfxx-x86.h elfxx-loongarch.h \
genlink.h go32stub.h \
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-ifunc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-m10200.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-m10300.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-nacl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-properties.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-sframe.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-strtab.Plo@am__quote@
*-sony-* | \
*-tandem-* | \
*-*-ieee* | \
+ *-*-nacl* | \
*-*-netbsdpe* | \
*-*-netware* | \
*-*-rtemsaout* | \
targ_defvec=arm_elf32_le_vec
targ_selvecs="arm_elf32_fdpic_le_vec arm_elf32_be_vec arm_elf32_fdpic_be_vec arm_pe_le_vec arm_pe_be_vec arm_pei_le_vec arm_pei_be_vec"
;;
- arm-*-nacl*)
- targ_defvec=arm_elf32_nacl_le_vec
- targ_selvecs="arm_elf32_nacl_be_vec"
- ;;
- armeb-*-nacl*)
- targ_defvec=arm_elf32_nacl_be_vec
- targ_selvecs="arm_elf32_nacl_le_vec"
- ;;
armeb-*-netbsd*)
targ_defvec=arm_elf32_be_vec
targ_selvecs="arm_elf32_le_vec"
aout_vec) tb="$tb host-aout.lo aout32.lo" ;;
arc_elf32_be_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
arc_elf32_le_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
- arm_elf32_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
- arm_elf32_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
- arm_elf32_fdpic_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
- 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_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_elf32_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+ arm_elf32_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+ arm_elf32_fdpic_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+ arm_elf32_fdpic_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+ arm_elf32_vxworks_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+ arm_elf32_vxworks_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
arm_pe_be_vec) tb="$tb pe-arm.lo peigen.lo $coff" ;;
arm_pe_le_vec) tb="$tb pe-arm.lo peigen.lo $coff" ;;
arm_pe_wince_be_vec) tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo $coff" ;;
aout_vec) tb="$tb host-aout.lo aout32.lo" ;;
arc_elf32_be_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
arc_elf32_le_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
- arm_elf32_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
- arm_elf32_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
- arm_elf32_fdpic_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
- 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_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_elf32_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+ arm_elf32_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+ arm_elf32_fdpic_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+ arm_elf32_fdpic_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+ arm_elf32_vxworks_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+ arm_elf32_vxworks_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
arm_pe_be_vec) tb="$tb pe-arm.lo peigen.lo $coff" ;;
arm_pe_le_vec) tb="$tb pe-arm.lo peigen.lo $coff" ;;
arm_pe_wince_be_vec) tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo $coff" ;;
{
is_normal,
is_solaris, /* Solaris. */
- is_vxworks, /* VxWorks. */
- is_nacl /* Native Client. */
+ is_vxworks /* VxWorks. */
};
/* Used by bfd_sym_from_r_symndx to cache a small number of local
+++ /dev/null
-/* Native Client support for ELF
- Copyright (C) 2012-2025 Free Software Foundation, Inc.
-
- This file is part of BFD, the Binary File Descriptor library.
-
- This program 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 of the License, or
- (at your option) any later version.
-
- This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
-#include "elf-bfd.h"
-#include "elf-nacl.h"
-#include "elf/common.h"
-#include "elf/internal.h"
-
-static bool
-segment_executable (struct elf_segment_map *seg)
-{
- if (seg->p_flags_valid)
- return (seg->p_flags & PF_X) != 0;
- else
- {
- /* The p_flags value has not been computed yet,
- so we have to look through the sections. */
- unsigned int i;
- for (i = 0; i < seg->count; ++i)
- if (seg->sections[i]->flags & SEC_CODE)
- return true;
- }
- return false;
-}
-
-/* Determine if this segment is eligible to receive the file and program
- headers. It must be read-only and non-executable.
- Its first section must start far enough past the page boundary to
- allow space for the headers. */
-static bool
-segment_eligible_for_headers (struct elf_segment_map *seg,
- bfd_vma minpagesize, bfd_vma sizeof_headers)
-{
- unsigned int i;
- if (seg->count == 0 || seg->sections[0]->lma % minpagesize < sizeof_headers)
- return false;
- for (i = 0; i < seg->count; ++i)
- {
- if ((seg->sections[i]->flags & (SEC_CODE|SEC_READONLY)) != SEC_READONLY)
- return false;
- }
- return true;
-}
-
-
-/* We permute the segment_map to get BFD to do the file layout we want:
- The first non-executable PT_LOAD segment appears first in the file
- and contains the ELF file header and phdrs. */
-bool
-nacl_modify_segment_map (bfd *abfd, struct bfd_link_info *info)
-{
- const struct elf_backend_data *const bed = get_elf_backend_data (abfd);
- struct elf_segment_map **m = &elf_seg_map (abfd);
- struct elf_segment_map **first_load = NULL;
- struct elf_segment_map **headers = NULL;
- int sizeof_headers;
-
- if (info != NULL && info->user_phdrs)
- /* The linker script used PHDRS explicitly, so don't change what the
- user asked for. */
- return true;
-
- if (info != NULL)
- /* We're doing linking, so evalute SIZEOF_HEADERS as in a linker script. */
- sizeof_headers = bfd_sizeof_headers (abfd, info);
- else
- {
- /* We're not doing linking, so this is objcopy or suchlike.
- We just need to collect the size of the existing headers. */
- struct elf_segment_map *seg;
- sizeof_headers = bed->s->sizeof_ehdr;
- for (seg = *m; seg != NULL; seg = seg->next)
- sizeof_headers += bed->s->sizeof_phdr;
- }
-
- while (*m != NULL)
- {
- struct elf_segment_map *seg = *m;
-
- if (seg->p_type == PT_LOAD)
- {
- bool executable = segment_executable (seg);
-
- if (executable
- && seg->count > 0
- && seg->sections[0]->vma % bed->minpagesize == 0)
- {
- asection *lastsec = seg->sections[seg->count - 1];
- bfd_vma end = lastsec->vma + lastsec->size;
- if (end % bed->minpagesize != 0)
- {
- /* This is an executable segment that starts on a page
- boundary but does not end on a page boundary. Fill
- it out to a whole page with code fill (the tail of
- the segment will not be within any section). Thus
- the entire code segment can be mapped from the file
- as whole pages and that mapping will contain only
- valid instructions.
-
- To accomplish this, we must fake out the code in
- assign_file_positions_for_load_sections (elf.c) so
- that it advances past the rest of the final page,
- rather than trying to put the next (unaligned, or
- unallocated) section. We do this by appending a
- dummy section record to this element in the segment
- map. No such output section ever actually exists,
- but this gets the layout logic to advance the file
- positions past this partial page. Since we are
- lying to BFD like this, nothing will ever know to
- write the section contents. So we do that by hand
- after the fact, in nacl_final_write_processing, below. */
-
- struct elf_segment_map *newseg;
- asection *sec;
- struct bfd_elf_section_data *secdata;
-
- BFD_ASSERT (!seg->p_size_valid);
-
- secdata = bfd_zalloc (abfd, sizeof *secdata);
- if (secdata == NULL)
- return false;
-
- sec = bfd_zalloc (abfd, sizeof *sec);
- if (sec == NULL)
- return false;
-
- /* Fill in only the fields that actually affect the logic
- in assign_file_positions_for_load_sections. */
- sec->vma = end;
- sec->lma = lastsec->lma + lastsec->size;
- sec->size = bed->minpagesize - (end % bed->minpagesize);
- sec->flags = (SEC_ALLOC | SEC_LOAD
- | SEC_READONLY | SEC_CODE | SEC_LINKER_CREATED);
- sec->used_by_bfd = secdata;
-
- secdata->this_hdr.sh_type = SHT_PROGBITS;
- secdata->this_hdr.sh_flags = SHF_ALLOC | SHF_EXECINSTR;
- secdata->this_hdr.sh_addr = sec->vma;
- secdata->this_hdr.sh_size = sec->size;
-
- newseg
- = bfd_alloc (abfd, (sizeof (*newseg)
- + seg->count * sizeof (asection *)));
- if (newseg == NULL)
- return false;
- memcpy (newseg, seg, (sizeof (*newseg) - sizeof (asection *)
- + seg->count * sizeof (asection *)));
- newseg->sections[newseg->count++] = sec;
- *m = seg = newseg;
- }
- }
-
- /* First, we're just finding the earliest PT_LOAD.
- By the normal rules, this will be the lowest-addressed one. */
- if (first_load == NULL)
- first_load = m;
-
- /* Now that we've noted the first PT_LOAD, we're looking for
- the first non-executable PT_LOAD with a nonempty p_filesz. */
- else if (headers == NULL
- && segment_eligible_for_headers (seg, bed->minpagesize,
- sizeof_headers))
- headers = m;
- }
- m = &seg->next;
- }
-
- if (headers != NULL)
- {
- struct elf_segment_map **last_load = NULL;
- struct elf_segment_map *seg;
-
- m = first_load;
- while ((seg = *m) != NULL)
- {
- if (seg->p_type == PT_LOAD)
- {
- /* Clear the flags on any previous segment that
- included the file header and phdrs. */
- seg->includes_filehdr = 0;
- seg->includes_phdrs = 0;
- seg->no_sort_lma = 1;
- /* Also strip out empty segments. */
- if (seg->count == 0)
- {
- if (headers == &seg->next)
- headers = m;
- *m = seg->next;
- continue;
- }
- last_load = m;
- }
- m = &seg->next;
- }
-
- /* This segment will include those headers instead. */
- seg = *headers;
- seg->includes_filehdr = 1;
- seg->includes_phdrs = 1;
-
- if (last_load != NULL && first_load != last_load && first_load != headers)
- {
- /* Put the first PT_LOAD header last. */
- struct elf_segment_map *first = *first_load;
- struct elf_segment_map *last = *last_load;
- *first_load = first->next;
- first->next = last->next;
- last->next = first;
- }
- }
-
- return true;
-}
-
-/* After nacl_modify_segment_map has done its work, the file layout has
- been done as we wanted. But the PT_LOAD phdrs are no longer in the
- proper order for the ELF rule that they must appear in ascending address
- order. So find the two segments we swapped before, and swap them back. */
-bool
-nacl_modify_headers (bfd *abfd, struct bfd_link_info *info)
-{
- if (info != NULL && info->user_phdrs)
- /* The linker script used PHDRS explicitly, so don't change what the
- user asked for. */
- ;
- else
- {
- struct elf_segment_map **m = &elf_seg_map (abfd);
- Elf_Internal_Phdr *phdr = elf_tdata (abfd)->phdr;
- Elf_Internal_Phdr *p = phdr;
-
- /* Find the PT_LOAD that contains the headers (should be the first). */
- while (*m != NULL)
- {
- if ((*m)->p_type == PT_LOAD && (*m)->includes_filehdr)
- break;
-
- m = &(*m)->next;
- ++p;
- }
-
- if (*m != NULL)
- {
- struct elf_segment_map **first_load_seg = m;
- Elf_Internal_Phdr *first_load_phdr = p;
- struct elf_segment_map **next_load_seg = NULL;
- Elf_Internal_Phdr *next_load_phdr = NULL;
-
- /* Now move past that first one and find the PT_LOAD that should be
- before it by address order. */
-
- m = &(*m)->next;
- ++p;
-
- while (*m != NULL)
- {
- if (p->p_type == PT_LOAD && p->p_vaddr < first_load_phdr->p_vaddr)
- {
- next_load_seg = m;
- next_load_phdr = p;
- break;
- }
-
- m = &(*m)->next;
- ++p;
- }
-
- /* Swap their positions in the segment_map back to how they
- used to be. The phdrs have already been set up by now,
- so we have to slide up the earlier ones to insert the one
- that should be first. */
- if (next_load_seg != NULL)
- {
- Elf_Internal_Phdr move_phdr;
- struct elf_segment_map *first_seg = *first_load_seg;
- struct elf_segment_map *next_seg = *next_load_seg;
- struct elf_segment_map *first_next = first_seg->next;
- struct elf_segment_map *next_next = next_seg->next;
-
- if (next_load_seg == &first_seg->next)
- {
- *first_load_seg = next_seg;
- next_seg->next = first_seg;
- first_seg->next = next_next;
- }
- else
- {
- *first_load_seg = first_next;
- *next_load_seg = next_next;
-
- first_seg->next = *next_load_seg;
- *next_load_seg = first_seg;
-
- next_seg->next = *first_load_seg;
- *first_load_seg = next_seg;
- }
-
- move_phdr = *next_load_phdr;
- memmove (first_load_phdr + 1, first_load_phdr,
- (next_load_phdr - first_load_phdr) * sizeof move_phdr);
- *first_load_phdr = move_phdr;
- }
- }
- }
-
- return _bfd_elf_modify_headers (abfd, info);
-}
-
-bool
-nacl_final_write_processing (bfd *abfd)
-{
- struct elf_segment_map *seg;
- for (seg = elf_seg_map (abfd); seg != NULL; seg = seg->next)
- if (seg->p_type == PT_LOAD
- && seg->count > 1
- && seg->sections[seg->count - 1]->owner == NULL)
- {
- /* This is a fake section added in nacl_modify_segment_map, above.
- It's not a real BFD section, so nothing wrote its contents.
- Now write out its contents. */
-
- asection *sec = seg->sections[seg->count - 1];
- char *fill;
-
- BFD_ASSERT (sec->flags & SEC_LINKER_CREATED);
- BFD_ASSERT (sec->flags & SEC_CODE);
- BFD_ASSERT (sec->size > 0);
-
- fill = abfd->arch_info->fill (sec->size, bfd_big_endian (abfd), true);
-
- if (fill == NULL
- || bfd_seek (abfd, sec->filepos, SEEK_SET) != 0
- || bfd_write (fill, sec->size, abfd) != sec->size)
- {
- /* We don't have a proper way to report an error here. So
- instead fudge things so that elf_write_shdrs_and_ehdr will
- fail. */
- elf_elfheader (abfd)->e_shoff = (file_ptr) -1;
- }
-
- free (fill);
- }
- return _bfd_elf_final_write_processing (abfd);
-}
+++ /dev/null
-/* Native Client support for ELF
- Copyright (C) 2012-2025 Free Software Foundation, Inc.
-
- This file is part of BFD, the Binary File Descriptor library.
-
- This program 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 of the License, or
- (at your option) any later version.
-
- This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
-
-bool nacl_modify_segment_map (bfd *, struct bfd_link_info *);
-bool nacl_modify_headers (bfd *, struct bfd_link_info *);
-bool nacl_final_write_processing (bfd *);
#include "libiberty.h"
#include "libbfd.h"
#include "elf-bfd.h"
-#include "elf-nacl.h"
#include "elf-vxworks.h"
#include "elf/arm.h"
#include "elf32-arm.h"
0xe7fd /* b .-2 */
};
-/* 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
- linker first. */
-static const bfd_vma elf32_arm_nacl_plt0_entry [] =
-{
- /* First bundle: */
- 0xe300c000, /* movw ip, #:lower16:&GOT[2]-.+8 */
- 0xe340c000, /* movt ip, #:upper16:&GOT[2]-.+8 */
- 0xe08cc00f, /* add ip, ip, pc */
- 0xe52dc008, /* str ip, [sp, #-8]! */
- /* Second bundle: */
- 0xe3ccc103, /* bic ip, ip, #0xc0000000 */
- 0xe59cc000, /* ldr ip, [ip] */
- 0xe3ccc13f, /* bic ip, ip, #0xc000000f */
- 0xe12fff1c, /* bx ip */
- /* Third bundle: */
- 0xe320f000, /* nop */
- 0xe320f000, /* nop */
- 0xe320f000, /* nop */
- /* .Lplt_tail: */
- 0xe50dc004, /* str ip, [sp, #-4] */
- /* Fourth bundle: */
- 0xe3ccc103, /* bic ip, ip, #0xc0000000 */
- 0xe59cc000, /* ldr ip, [ip] */
- 0xe3ccc13f, /* bic ip, ip, #0xc000000f */
- 0xe12fff1c, /* bx ip */
-};
-#define ARM_NACL_PLT_TAIL_OFFSET (11 * 4)
-
-/* Subsequent entries in a procedure linkage table look like this. */
-static const bfd_vma elf32_arm_nacl_plt_entry [] =
-{
- 0xe300c000, /* movw ip, #:lower16:&GOT[n]-.+8 */
- 0xe340c000, /* movt ip, #:upper16:&GOT[n]-.+8 */
- 0xe08cc00f, /* add ip, ip, pc */
- 0xea000000, /* b .Lplt_tail */
-};
-
/* PR 28924:
There was a bug due to too high values of THM_MAX_FWD_BRANCH_OFFSET and
THM2_MAX_FWD_BRANCH_OFFSET. The first macro concerns the case when Thumb-2
DATA_WORD (0, R_ARM_REL32, -4), /* dcd R_ARM_REL32(X) */
};
-/* NaCl ARM -> ARM long branch stub. */
-static const insn_sequence elf32_arm_stub_long_branch_arm_nacl[] =
-{
- ARM_INSN (0xe59fc00c), /* ldr ip, [pc, #12] */
- ARM_INSN (0xe3ccc13f), /* bic ip, ip, #0xc000000f */
- ARM_INSN (0xe12fff1c), /* bx ip */
- ARM_INSN (0xe320f000), /* nop */
- ARM_INSN (0xe125be70), /* bkpt 0x5be0 */
- DATA_WORD (0, R_ARM_ABS32, 0), /* dcd R_ARM_ABS32(X) */
- DATA_WORD (0, R_ARM_NONE, 0), /* .word 0 */
- DATA_WORD (0, R_ARM_NONE, 0), /* .word 0 */
-};
-
-/* NaCl ARM -> ARM long branch stub, PIC. */
-static const insn_sequence elf32_arm_stub_long_branch_arm_nacl_pic[] =
-{
- ARM_INSN (0xe59fc00c), /* ldr ip, [pc, #12] */
- ARM_INSN (0xe08cc00f), /* add ip, ip, pc */
- ARM_INSN (0xe3ccc13f), /* bic ip, ip, #0xc000000f */
- ARM_INSN (0xe12fff1c), /* bx ip */
- ARM_INSN (0xe125be70), /* bkpt 0x5be0 */
- DATA_WORD (0, R_ARM_REL32, 8), /* dcd R_ARM_REL32(X+8) */
- DATA_WORD (0, R_ARM_NONE, 0), /* .word 0 */
- DATA_WORD (0, R_ARM_NONE, 0), /* .word 0 */
-};
-
/* Stub used for transition to secure state (aka SG veneer). */
static const insn_sequence elf32_arm_stub_cmse_branch_thumb_only[] =
{
DEF_STUB (long_branch_thumb_only_pic) \
DEF_STUB (long_branch_any_tls_pic) \
DEF_STUB (long_branch_v4t_thumb_tls_pic) \
- DEF_STUB (long_branch_arm_nacl) \
- DEF_STUB (long_branch_arm_nacl_pic) \
DEF_STUB (cmse_branch_thumb_only) \
DEF_STUB (a8_veneer_b_cond) \
DEF_STUB (a8_veneer_b) \
? (r_type == R_ARM_TLS_CALL
/* TLS PIC Stub. */
? arm_stub_long_branch_any_tls_pic
- : (globals->root.target_os == is_nacl
- ? arm_stub_long_branch_arm_nacl_pic
- : arm_stub_long_branch_any_arm_pic))
+ : arm_stub_long_branch_any_arm_pic)
/* non-PIC stubs. */
- : (globals->root.target_os == is_nacl
- ? arm_stub_long_branch_arm_nacl
- : arm_stub_long_branch_any_any);
+ : arm_stub_long_branch_any_any;
}
}
}
stub_sec_p = &htab->stub_group[link_sec->id].stub_sec;
stub_sec_prefix = link_sec->name;
out_sec = link_sec->output_section;
- align = htab->root.target_os == is_nacl ? 4 : 3;
+ align = 3;
}
if (*stub_sec_p == NULL)
case arm_stub_a8_veneer_blx:
return 4;
- case arm_stub_long_branch_arm_nacl:
- case arm_stub_long_branch_arm_nacl_pic:
- return 16;
-
default:
abort (); /* Should be unreachable. */
}
splt = htab->root.iplt;
sgotplt = htab->root.igotplt;
- /* NaCl uses a special first entry in .iplt too. */
- if (htab->root.target_os == is_nacl && splt->size == 0)
- splt->size += htab->plt_header_size;
-
/* Allocate room for an R_ARM_IRELATIVE relocation in .rel.iplt. */
elf32_arm_allocate_irelocs (info, htab->root.irelplt, 1);
}
sgotplt->size += 4;
}
-static bfd_vma
-arm_movw_immediate (bfd_vma value)
-{
- return (value & 0x00000fff) | ((value & 0x0000f000) << 4);
-}
-
-static bfd_vma
-arm_movt_immediate (bfd_vma value)
-{
- return ((value & 0x0fff0000) >> 16) | ((value & 0xf0000000) >> 12);
-}
-
/* Fill in a PLT entry and its associated GOT slot. If DYNINDX == -1,
the entry lives in .iplt and resolves to (*SYM_VALUE)().
Otherwise, DYNINDX is the index of the symbol in the dynamic
rel.r_addend = 0;
SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
}
- else if (htab->root.target_os == is_nacl)
- {
- /* Calculate the displacement between the PLT slot and the
- common tail that's part of the special initial PLT slot. */
- int32_t tail_displacement
- = ((splt->output_section->vma + splt->output_offset
- + ARM_NACL_PLT_TAIL_OFFSET)
- - (plt_address + htab->plt_entry_size + 4));
- BFD_ASSERT ((tail_displacement & 3) == 0);
- tail_displacement >>= 2;
-
- BFD_ASSERT ((tail_displacement & 0xff000000) == 0
- || (-tail_displacement & 0xff000000) == 0);
-
- /* Calculate the displacement between the PLT slot and the entry
- in the GOT. The offset accounts for the value produced by
- adding to pc in the penultimate instruction of the PLT stub. */
- got_displacement = (got_address
- - (plt_address + htab->plt_entry_size));
-
- /* NaCl does not support interworking at all. */
- BFD_ASSERT (!elf32_arm_plt_needs_thumb_stub_p (info, arm_plt));
-
- put_arm_insn (htab, output_bfd,
- elf32_arm_nacl_plt_entry[0]
- | arm_movw_immediate (got_displacement),
- ptr + 0);
- put_arm_insn (htab, output_bfd,
- elf32_arm_nacl_plt_entry[1]
- | arm_movt_immediate (got_displacement),
- ptr + 4);
- put_arm_insn (htab, output_bfd,
- elf32_arm_nacl_plt_entry[2],
- ptr + 8);
- put_arm_insn (htab, output_bfd,
- elf32_arm_nacl_plt_entry[3]
- | (tail_displacement & 0x00ffffff),
- ptr + 12);
- }
else if (htab->fdpic_p)
{
const bfd_vma *plt_entry = using_thumb_only (htab)
}
}
-/* Install the special first PLT entry for elf32-arm-nacl. Unlike
- other variants, NaCl needs this entry in a static executable's
- .iplt too. When we're handling that case, GOT_DISPLACEMENT is
- zero. For .iplt really only the last bundle is useful, and .iplt
- could have a shorter first entry, with each individual PLT entry's
- relative branch calculated differently so it targets the last
- bundle instead of the instruction before it (labelled .Lplt_tail
- above). But it's simpler to keep the size and layout of PLT0
- consistent with the dynamic case, at the cost of some dead code at
- the start of .iplt and the one dead store to the stack at the start
- of .Lplt_tail. */
-static void
-arm_nacl_put_plt0 (struct elf32_arm_link_hash_table *htab, bfd *output_bfd,
- asection *plt, bfd_vma got_displacement)
-{
- unsigned int i;
-
- put_arm_insn (htab, output_bfd,
- elf32_arm_nacl_plt0_entry[0]
- | arm_movw_immediate (got_displacement),
- plt->contents + 0);
- put_arm_insn (htab, output_bfd,
- elf32_arm_nacl_plt0_entry[1]
- | arm_movt_immediate (got_displacement),
- plt->contents + 4);
-
- for (i = 2; i < ARRAY_SIZE (elf32_arm_nacl_plt0_entry); ++i)
- put_arm_insn (htab, output_bfd,
- elf32_arm_nacl_plt0_entry[i],
- plt->contents + (i * 4));
-}
-
/* Finish up the dynamic sections. */
static bool
SWAP_RELOC_OUT (htab) (output_bfd, &rel,
htab->srelplt2->contents);
}
- else if (htab->root.target_os == is_nacl)
- arm_nacl_put_plt0 (htab, output_bfd, splt,
- got_address + 8 - (plt_address + 16));
else if (using_thumb_only (htab))
{
got_displacement = got_address - (plt_address + 12);
}
}
- if (htab->root.target_os == is_nacl
- && htab->root.iplt != NULL
- && htab->root.iplt->size > 0)
- /* NaCl uses a special first entry in .iplt too. */
- arm_nacl_put_plt0 (htab, output_bfd, htab->root.iplt, 0);
-
/* Fill in the first three entries in the global offset table. */
if (sgot)
{
if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 20))
return false;
}
- else if (htab->root.target_os == is_nacl)
- {
- if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
- return false;
- }
else if (htab->fdpic_p)
{
enum map_symbol_type type = using_thumb_only (htab)
return false;
}
}
- else if (htab->root.target_os == is_nacl)
- {
- if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0))
- return false;
- }
else if (using_thumb_only (htab) && !htab->fdpic_p)
{
if (!elf32_arm_output_map_sym (&osi, ARM_MAP_THUMB, 0))
#endif
}
}
- if (htab->root.target_os == is_nacl
- && htab->root.iplt
- && htab->root.iplt->size > 0)
- {
- /* NaCl uses a special first entry in .iplt too. */
- osi.sec = htab->root.iplt;
- osi.sec_shndx = (_bfd_elf_section_from_bfd_section
- (output_bfd, osi.sec->output_section));
- if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0))
- return false;
- }
if ((htab->root.splt && htab->root.splt->size > 0)
|| (htab->root.iplt && htab->root.iplt->size > 0))
{
#include "elf32-target.h"
-/* Native Client targets. */
-
-#undef TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM arm_elf32_nacl_le_vec
-#undef TARGET_LITTLE_NAME
-#define TARGET_LITTLE_NAME "elf32-littlearm-nacl"
-#undef TARGET_BIG_SYM
-#define TARGET_BIG_SYM arm_elf32_nacl_be_vec
-#undef TARGET_BIG_NAME
-#define TARGET_BIG_NAME "elf32-bigarm-nacl"
-
-/* Like elf32_arm_link_hash_table_create -- but overrides
- appropriately for NaCl. */
-
-static struct bfd_link_hash_table *
-elf32_arm_nacl_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;
-
- htab->plt_header_size = 4 * ARRAY_SIZE (elf32_arm_nacl_plt0_entry);
- htab->plt_entry_size = 4 * ARRAY_SIZE (elf32_arm_nacl_plt_entry);
- }
- return ret;
-}
-
-/* Since NaCl doesn't use the ARM-specific unwind format, we don't
- really need to use elf32_arm_modify_segment_map. But we do it
- anyway just to reduce gratuitous differences with the stock ARM backend. */
-
-static bool
-elf32_arm_nacl_modify_segment_map (bfd *abfd, struct bfd_link_info *info)
-{
- return (elf32_arm_modify_segment_map (abfd, info)
- && nacl_modify_segment_map (abfd, info));
-}
-
-static bool
-elf32_arm_nacl_final_write_processing (bfd *abfd)
-{
- arm_final_write_processing (abfd);
- return nacl_final_write_processing (abfd);
-}
-
-static bfd_vma
-elf32_arm_nacl_plt_sym_val (bfd_vma i, const asection *plt,
- const arelent *rel ATTRIBUTE_UNUSED)
-{
- return plt->vma
- + 4 * (ARRAY_SIZE (elf32_arm_nacl_plt0_entry) +
- i * ARRAY_SIZE (elf32_arm_nacl_plt_entry));
-}
-
-#undef elf32_bed
-#define elf32_bed elf32_arm_nacl_bed
-#undef bfd_elf32_bfd_link_hash_table_create
-#define bfd_elf32_bfd_link_hash_table_create \
- elf32_arm_nacl_link_hash_table_create
-#undef elf_backend_plt_alignment
-#define elf_backend_plt_alignment 4
-#undef elf_backend_modify_segment_map
-#define elf_backend_modify_segment_map elf32_arm_nacl_modify_segment_map
-#undef elf_backend_modify_headers
-#define elf_backend_modify_headers nacl_modify_headers
-#undef elf_backend_final_write_processing
-#define elf_backend_final_write_processing elf32_arm_nacl_final_write_processing
-#undef bfd_elf32_get_synthetic_symtab
-#undef elf_backend_plt_sym_val
-#define elf_backend_plt_sym_val elf32_arm_nacl_plt_sym_val
-#undef elf_backend_copy_special_section_fields
-
-#undef ELF_MINPAGESIZE
-#undef ELF_COMMONPAGESIZE
-
-#undef ELF_TARGET_OS
-#define ELF_TARGET_OS is_nacl
-
-#include "elf32-target.h"
-
/* Reset to defaults. */
#undef elf_backend_plt_alignment
#undef elf_backend_modify_segment_map
elf-linux-core.h
elf-m10200.c
elf-m10300.c
-elf-nacl.c
-elf-nacl.h
elf-properties.c
elf-s390.h
elf-sframe.c
extern const bfd_target arm_elf32_le_vec;
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_vxworks_be_vec;
extern const bfd_target arm_elf32_vxworks_le_vec;
extern const bfd_target arm_mach_o_vec;
-*- text -*-
+* NaCl target support is removed.
+
Changes in 2.45:
* New versioned release of libsframe: libsframe.so.2. This release introduces
&& ![istarget kvx-*-*]
&& ![istarget *-*-*linux*]
&& ![istarget *-*-lynxos*]
- && ![istarget *-*-nacl*]
&& ![istarget *-*-netbsd*]
&& ![istarget *-*-nto*]
&& ![istarget *-*-openbsd*]
proc supports_gnu_osabi {} {
if { [istarget *-*-gnu*]
|| [istarget *-*-linux*]
- || [istarget *-*-nacl*]
|| ( [istarget *-*-*bsd*] && ![istarget arm*-*-netbsd*] )
|| [istarget *-*-lynxos]
|| ( [istarget *-*-nto*] && ![istarget arm*-*-*] )
-*- text -*-
+* NaCl target support is removed.
+
Changes in 2.45:
* Add support to generate SFrame stack trace information (.sframe)
return (target_big_endian
? "elf32-bigarm-vxworks"
: "elf32-littlearm-vxworks");
-#elif defined (TE_NACL)
- return (target_big_endian
- ? "elf32-bigarm-nacl"
- : "elf32-littlearm-nacl");
#else
if (arm_fdpic)
{
+++ /dev/null
-/* Copyright (C) 2012-2025 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_NACL
-
-#define LOCAL_LABELS_DOLLAR 1
-#define LOCAL_LABELS_FB 1
-
-/* These are for ARM but don't hurt other CPU targets.
- They match the settings from te-armeabi.h; NaCl/ARM is based on EABI. */
-#define FPU_DEFAULT FPU_ARCH_SOFTVFP
-#define EABI_DEFAULT EF_ARM_EABI_VER5
-
-#include "obj-format.h"
arm-*-linux-*) fmt=elf em=linux ;;
arm-*-uclinux*eabi*) fmt=elf em=armlinuxeabi ;;
arm-*-uclinux*) fmt=elf em=linux ;;
- arm-*-nacl*) fmt=elf em=nacl ;;
arm-*-netbsd* | arm-*-openbsd*) fmt=elf em=nbsd ;;
arm-*-nto*) fmt=elf ;;
arm-wince-pe | arm-*-wince | arm*-*-mingw32ce* | arm*-*-cegcc*)
# as: -mthumb
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
#source: archv8m-cmse-main.s
#as:
#readelf: -A
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
#source: archv8m-cmse.s
#as:
#readelf: -A
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv4t
# objdump: -dr --prefix-addresses --show-raw-insn
# source: arch4t.s
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
.*: +file format .*arm.*
# as: -march=armv4t
# objdump: -dr --prefix-addresses --show-raw-insn
# EABI targets have their own variant.
-# notarget: *-*-*eabi* *-*-nacl*
+# notarget: *-*-*eabi*
.*: +file format .*arm.*
# as: -march=armv8-m.base
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv9-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -T -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7e-m+fp.dp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7e-m+fpv5
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-r+idiv
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-a+mp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7ve+neon-fp16
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-a+simd
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7ve+simd
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-a+sec
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7ve+vfpv3-d16-fp16
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7+fp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7ve+vfpv3-fp16
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7a+vfpv3
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-r+vfpv3xd-fp16
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-r+fp.sp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7ve+fp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7e-m+fp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7ve+vfpv4
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=all
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv1
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv2
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv2a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv2s
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv3
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv3m
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv4
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv4t
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv4txm
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv4xm
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv5
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv5t
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv5te
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv5tej
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv5texp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv5txm
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6-m+os
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6-m
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6j
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6k+sec
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6k
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6kt2
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6kz
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6kzt2
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6-m
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6t2
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6z
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6zk
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6zkt2
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv6zt2
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-a+idiv
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-a+mp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-a+sec+virt
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-a+sec
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-a+virt
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-m
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-r+mp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-r
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7e-m
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7m
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7r
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7ve
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-a+crypto
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-a+fp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-a+rdma
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-a+simd
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-r+crypto
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-r+fp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-r+simd
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-r
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8.1-a+simd
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8.1-m.main
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8.4-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8.5-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8.6-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8.7-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8.8-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8.9-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-m.base
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-m.main
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv8-m.main+dsp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv9.1-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv9.2-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv9.3-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv9.4-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv9.5-a
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=iwmmxt
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=iwmmxt2
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=xscale
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mcpu=cortex-a8 -mfpu=neon
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=arm1020e
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=arm1020t
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=arm1136jf-s
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=arm1136jfs
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -march=armv7-a+neon-fp16
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
#...
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-2
# as: -mfpu=neon
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=softvfp+vfp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=softvfp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=vfp
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=vfp10-r0
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=vfp10
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=vfp3
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=vfp9
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=vfpv2
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=vfpv3-d16
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=vfpv3
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=vfpv4-d16
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=vfpv4
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mfpu=vfpxd
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# name: EABI attribute - non-null terminated string
# source: attr-non-null-terminated-string.s
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
# as:
# readelf: --silent-truncation -A
Attribute Section: aeabi
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mcpu=cortex-a8
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
#name: bl local conversion to blx
#objdump: -drw --prefix-addresses --show-raw-insn
-#target: *-*-*eabi* *-*-nacl*
+#target: *-*-*eabi*
#as:
#name: bl local instructions for v4t.
#objdump: -drw --prefix-addresses --show-raw-insn
-#target: *-*-*eabi* *-*-nacl*
+#target: *-*-*eabi*
#as:
.*: +file format .*arm.*
#name: Local BLX instructions
#objdump: -drw --prefix-addresses --show-raw-insn
-#target: *-*-*eabi* *-*-nacl*
+#target: *-*-*eabi*
#as:
#warning_output: blx-local.l
# Test assembler resolution of blx and bl instructions in ARM mode.
#name: Inter-section branch relocations
#This test is only valid on EABI based ports.
-#target: *-*-*eabi* *-*-nacl*
+#target: *-*-*eabi*
#as: -march=armv5t
#objdump: -rd
#warning_output: branch-reloc.l
# as: --fatal-warnings
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# source: got_prel.s
# as: -march=armv5te -meabi=5 --generate-missing-build-notes=no
# readelf: -x 4 -r
-# target: *-*-*eabi* *-*-linux-* *-*-elf *-*-nacl*
+# target: *-*-*eabi* *-*-linux-* *-*-elf
Relocation section '.rel.text.foo' at offset .* contains 1 entry:
Offset Info Type Sym.Value Sym. Name
#objdump: --syms --special-syms -d
#name: ARM Mapping Symbols for .arm/.thumb
# This test is only valid on EABI based ports.
-#target: *-*-*eabi* *-*-linux-* *-*-elf *-*-nacl*
+#target: *-*-*eabi* *-*-linux-* *-*-elf
#source: mapdir.s
#objdump: --syms --special-syms -d
#name: ARM Mapping Symbols for miscellaneous directives
# This test is only valid on EABI based ports.
-#target: *-*-*eabi* *-*-linux-* *-*-elf *-*-nacl*
+#target: *-*-*eabi* *-*-linux-* *-*-elf
#source: mapmisc.s
#objdump: --syms --special-syms -d
#name: ARM Mapping Symbols with multiple sections
# This test is only valid on EABI based ports.
-#target: *-*-*eabi* *-*-linux-* *-*-elf *-*-nacl*
+#target: *-*-*eabi* *-*-linux-* *-*-elf
#source: mapsecs.s
#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* *-*-linux-* *-*-elf *-*-nacl*
+#target: *-*-*eabi* *-*-linux-* *-*-elf
#source: mapshort.s
# Test the generation and use of ARM ELF Mapping Symbols
# name: MOV highregs
# readelf: -A
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
Tag_CPU_arch: v4T
# name: MOV lowregs
# readelf: -A
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
Tag_CPU_arch: v6
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# objcopy_linked_file:
# readelf: -p .note.gnu.arm.ident
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
String dump of section '.note.gnu.arm.ident':
\[\s*[0-9a-f]+\] arch:
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as:
# readelf: -A
# This test is only valid on EABI based ports.
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
Attribute Section: aeabi
File Attributes
# as: -mcpu=arm7t
# objdump: -dr --prefix-addresses --show-raw-insn
# source: thumb.s
-# target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
.*: +file format .*arm.*
# 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* *-*-nacl*
+# notarget: *-*-pe *-*-*eabi*
.*: +file format .*arm.*
#objdump: -sr
#as: --generate-missing-build-notes=no
# This test is only valid on EABI based ports.
-#target: *-*-*eabi* *-*-nacl*
+# target: *-*-*eabi*
.*: file format.*
earmelf_linux.c \
earmelf_linux_eabi.c \
earmelf_linux_fdpiceabi.c \
- earmelf_nacl.c \
earmelf_nbsd.c \
earmelf_phoenix.c \
earmelf_vxworks.c \
earmelfb_linux.c \
earmelfb_linux_eabi.c \
earmelfb_linux_fdpiceabi.c \
- earmelfb_nacl.c \
earmelfb_nbsd.c \
earmnto.c \
earmpe.c \
earmelf_linux.c \
earmelf_linux_eabi.c \
earmelf_linux_fdpiceabi.c \
- earmelf_nacl.c \
earmelf_nbsd.c \
earmelf_phoenix.c \
earmelf_vxworks.c \
earmelfb_linux.c \
earmelfb_linux_eabi.c \
earmelfb_linux_fdpiceabi.c \
- earmelfb_nacl.c \
earmelfb_nbsd.c \
earmnto.c \
earmpe.c \
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_linux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_linux_eabi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_linux_fdpiceabi.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_nacl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_nbsd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_phoenix.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_vxworks.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_linux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_linux_eabi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_linux_fdpiceabi.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_nacl.Po@am__quote@
@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@
-*- text -*-
+* NaCl target support is removed.
+
Changes in 2.45:
* On s390 64-bit (s390x), generate SFrame stack trace information (.sframe)
case "${target}" in
# Enable gnu hash only on GNU targets, but not mips
mips*-*-*) enable_default_hash_style=sysv ;;
- *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
+ *-*-gnu* | *-*-linux*) enable_default_hash_style=both ;;
*) enable_default_hash_style=sysv ;;
esac
fi
[case "${target}" in
# Enable gnu hash only on GNU targets, but not mips
mips*-*-*) enable_default_hash_style=sysv ;;
- *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
+ *-*-gnu* | *-*-linux*) enable_default_hash_style=both ;;
*) enable_default_hash_style=sysv ;;
esac])
targ_extra_emuls="armelf armelfb armelfb_linux"
targ_extra_libpath="armelfb_linux"
;;
-arm*b-*-nacl*) targ_emul=armelfb_nacl
- targ_extra_emuls="armelf_nacl"
- targ_extra_libpath=$targ_extra_emuls
- ;;
-arm*-*-nacl*) targ_emul=armelf_nacl
- targ_extra_emuls="armelfb_nacl"
- targ_extra_libpath=$targ_extra_emuls
- ;;
arm*-*-uclinux*eabi*) targ_emul=armelf_linux_eabi
targ_extra_emuls=armelfb_linux_eabi
targ_extra_libpath=$targ_extra_emuls
+++ /dev/null
-source_sh ${srcdir}/emulparams/armelf_linux_eabi.sh
-source_sh ${srcdir}/emulparams/elf_nacl.sh
-BIG_OUTPUT_FORMAT="elf32-bigarm-nacl"
-LITTLE_OUTPUT_FORMAT="elf32-littlearm-nacl"
-OUTPUT_FORMAT="$LITTLE_OUTPUT_FORMAT"
+++ /dev/null
-source_sh ${srcdir}/emulparams/armelf_nacl.sh
-OUTPUT_FORMAT="$BIG_OUTPUT_FORMAT"
+++ /dev/null
-ENABLE_INITFINI_ARRAY=yes
-SEPARATE_CODE=yes
-TEXT_START_ADDR=0x20000
-NACL_RODATA_DISTANCE=0x10000000
-
-nacl_rodata_addr()
-{
- nacl_text_addr="SEGMENT_START(\"text-segment\", $1)"
- nacl_rodata_addr="$nacl_text_addr + ${NACL_RODATA_DISTANCE}"
- echo "$nacl_rodata_addr"
-}
-
-RODATA_ADDR=`nacl_rodata_addr "${TEXT_START_ADDR}"`
-SHLIB_RODATA_ADDR=`nacl_rodata_addr 0`
earmelf_linux.c
earmelf_linux_eabi.c
earmelf_linux_fdpiceabi.c
-earmelf_nacl.c
earmelf_nbsd.c
earmelf_phoenix.c
earmelf_vxworks.c
earmelfb_linux.c
earmelfb_linux_eabi.c
earmelfb_linux_fdpiceabi.c
-earmelfb_nacl.c
earmelfb_nbsd.c
earmnto.c
earmpe.c
run_ld_link_tests $armelftests_common
-set armelftests_nonacl {
+set armelftests {
{"Thumb-1 BL" "-Ttext 0x1000 --section-start .foo=0x401000" "" "" {thumb1-bl.s}
{{objdump -dr thumb1-bl.d}}
"thumb1-bl"}
{{objdump -fdw arm-app.d} {objdump -Rw arm-app.r}}
"arm-app"}
}
-if [check_shared_lib_support] { append armelftests_nonacl $tmp }
+if [check_shared_lib_support] { append armelftests $tmp }
set tmp {
{"Simple static application without .rel.plt in linker script"
"-T arm-no-rel-plt.ld" "" "" {arm-static-app.s}
{{objdump -fdw arm-static-app.d} {objdump -rw arm-static-app.r}}
"arm-static-app-no-rel-plt"}
}
-append armelftests_nonacl $tmp
+append armelftests $tmp
set tmp {
{"Simple dynamic application without .rel.plt in linker script"
"tmpdir/arm-lib.so -T arm-no-rel-plt.ld" "" "" {arm-app.s}
{{objdump -fdw tls-lib-loc.d} {objdump -Rw tls-lib-loc.r}}
"tls-lib-loc.so"}
}
-if [check_shared_lib_support] { append armelftests_nonacl $tmp }
+if [check_shared_lib_support] { append armelftests $tmp }
-if { ![istarget "arm*-*-nacl*"] } {
- run_ld_link_tests $armelftests_nonacl
-}
+run_ld_link_tests $armelftests
run_dump_test "group-relocs-alu-bad"
run_dump_test "group-relocs-alu-bad-2"
return
}
-if { ![istarget "arm*-*-*eabi*"] && ![istarget "arm*-*-nacl*"] } {
+if { ![istarget "arm*-*-*eabi*"] } {
# Special variants of these tests, as a different farcall stub is
# generated for a non-ARM-EABI target: indeed in such a case,
# there are no attributes to indicate that blx can be used.
# Farcalls stubs are fully supported for ARM-EABI only.
# This list is massaged below into run_ld_link_tests standard format.
-# The source list is almost that same format. The one difference is
-# that each "action" (elements of element 5) might have four elements
-# instead of three; in that case, the fourth element is the name of
-# the dump file to use for arm*-*nacl* targets instead of the canonical
-# dump file (the third element).
+# The source list is almost that same format.
set armeabitests_common {
{"EABI attribute merging" "-r" "" "" {attr-merge.s attr-merge.s}
{{readelf -A attr-merge.attr}}
"movw-merge"}
{"ARM-ARM farcall" "-Ttext 0x1000 --section-start .foo=0x2001020" "" "" {farcall-arm-arm.s}
- {{objdump -d farcall-arm-arm.d farcall-arm-nacl.d}}
+ {{objdump -d farcall-arm-arm.d}}
"farcall-arm-arm"}
{"ARM-ARM farcall (PIC veneer)" "-Ttext 0x1000 --section-start .foo=0x2001020 --pic-veneer" "" "" {farcall-arm-arm.s}
- {{objdump -d farcall-arm-arm-pic-veneer.d farcall-arm-nacl-pic.d}}
+ {{objdump -d farcall-arm-arm-pic-veneer.d}}
"farcall-arm-arm-pic-veneer"}
{"ARM-ARM farcall (BE8)" "-Ttext 0x1000 --section-start .foo=0x2001020 -EB --be8" "" "-EB" {farcall-arm-arm.s}
- {{objdump -d farcall-arm-arm.d farcall-arm-nacl.d}}
+ {{objdump -d farcall-arm-arm.d}}
"farcall-arm-arm-be8"}
{"ARM-ARM farcall (BE)" "-Ttext 0x1000 --section-start .foo=0x2001020 -EB" "" "-EB" {farcall-arm-arm.s}
- {{objdump -d farcall-arm-arm.d farcall-arm-nacl.d}}
+ {{objdump -d farcall-arm-arm.d}}
"farcall-arm-arm-be"}
{"Long branch with mixed text and data" "-T arm.ld" "" "" {farcall-data.s}
- {{objdump -dr farcall-data.d farcall-data-nacl.d}}
+ {{objdump -dr farcall-data.d}}
"farcall-data"}
{"callweak-2" "-static -T arm.ld" "" "" {callweak-2.s}
{{objdump -dr callweak-2.d}}
if [check_shared_lib_support] { append armeabitests_common $armeabitests_common_shared}
-set armeabitests_nonacl {
+set armeabitests {
{"ARM-Thumb farcall" "-Ttext 0x1000 --section-start .foo=0x2001014" "" "" {farcall-arm-thumb.s}
{{objdump -d farcall-arm-thumb.d}}
"farcall-arm-thumb"}
"arm-pic-veneer"}
}
-set armeabitests_nonacl_shared {
+set armeabitests_shared {
{"TLS gnu shared library"
"--no-fix-arm1176 -shared -T arm-dyn.ld --hash-style=sysv" ""
"" {tls-gdesc.s}
{{readelf -Ds preempt-app.sym}}
"preempt-app"}
}
-if [check_shared_lib_support] { append armeabitests_nonacl $armeabitests_nonacl_shared}
+if [check_shared_lib_support] { append armeabitests $armeabitests_shared}
set armfdpiceabitests {
# Massage the $armeabitests_common list into run_ld_link_tests standard form.
# See the comment before 'set armeabitests_common', above.
set elide_action_elt 3
-set is_nacl [istarget "arm*-*-nacl*"]
-if {$is_nacl} {
- set elide_action_elt 2
-}
set neabi_common [llength $armeabitests_common]
for {set i 0} {$i < $neabi_common} {incr i} {
set case [lindex $armeabitests_common $i]
}
run_ld_link_tests $armeabitests_common
-if { !$is_nacl } {
- run_ld_link_tests $armeabitests_nonacl
-}
+run_ld_link_tests $armeabitests
if { [istarget "arm*-*-uclinuxfdpiceabi"] } {
run_ld_link_tests $armfdpiceabitests
run_dump_test "attr-merge-hardfp-use-1"
run_dump_test "attr-merge-hardfp-use-2"
run_dump_test "unresolved-1"
-if { !$is_nacl && [check_shared_lib_support] } {
+if { [check_shared_lib_support] } {
run_dump_test "unresolved-1-dyn"
}
run_dump_test "unresolved-2"
run_dump_test "non-contiguous-arm6"
run_dump_test "non-contiguous-arm7"
-if { !$is_nacl && [check_shared_lib_support] } {
+if { [check_shared_lib_support] } {
run_dump_test "thumb-plt"
run_dump_test "thumb-plt-got"
}
-#target: *-*-*eabi* *-*-nacl*
+#target: *-*-*eabi*
.*: file format .*
+++ /dev/null
-.*: file format .*
-
-Disassembly of section \.text:
-
-0+1000 <_start>:
-\s*1000:\s+eb000002\s+bl\s+1010 <__bar_veneer>
-#...
-
-0+1010 <__bar_veneer>:
-\s*1010:\s+e59fc00c\s+ldr\s+ip, \[pc, #12\]\s+@ 1024 <__bar_veneer\+0x14>
-\s*1014:\s+e08cc00f\s+add\s+ip, ip, pc
-\s*1018:\s+e3ccc13f\s+bic\s+ip, ip, #-1073741809\s+@ 0xc000000f
-\s*101c:\s+e12fff1c\s+bx\s+ip
-\s*1020:\s+e125be70\s+bkpt\s+0x5be0
-\s*1024:\s+02000004\s+.word\s+0x02000004
-#...
-
-\s*Disassembly of section \.foo:
-\s*02001020 <bar>:
-\s*2001020:\s+e12fff1e\s+bx\s+lr
+++ /dev/null
-.*: file format .*
-
-Disassembly of section \.text:
-
-0+1000 <_start>:
-\s*1000:\s+eb000002\s+bl\s+1010 <__bar_veneer>
-#...
-
-0+1010 <__bar_veneer>:
-\s*1010:\s+e59fc00c\s+ldr\s+ip, \[pc, #12\]\s+@ 1024 <__bar_veneer\+0x14>
-\s*1014:\s+e3ccc13f\s+bic\s+ip, ip, #-1073741809\s+@ 0xc000000f
-\s*1018:\s+e12fff1c\s+bx\s+ip
-\s*101c:\s+e320f000\s+nop\s+\{0\}
-\s*1020:\s+e125be70\s+bkpt\s+0x5be0
-\s*1024:\s+02001020\s+.word\s+0x02001020
-#...
-
-\s*Disassembly of section \.foo:
-\s*02001020 <bar>:
-\s*2001020:\s+e12fff1e\s+bx\s+lr
+++ /dev/null
-.*: file format .*
-
-Disassembly of section .text:
-
-0+8000 <_start>:
-\s*8000:\s+ea000002\s+b\s+8010 <__far_veneer>
-#...
-
-0+8010 <__far_veneer>:
-\s*8010:\s+e59fc00c\s+ldr\s+ip, \[pc, #12\]\s+@ 8024 <__far_veneer\+0x14>
-\s*8014:\s+e3ccc13f\s+bic\s+ip, ip, #-1073741809\s+@ 0xc000000f
-\s*8018:\s+e12fff1c\s+bx\s+ip
-\s*801c:\s+e320f000\s+nop\s+\{0\}
-\s*8020:\s+e125be70\s+bkpt\s+0x5be0
-\s*8024:\s+12340000\s+.word\s+0x12340000
-#...
-
-0+8030 <after>:
-\s*8030:\s+11111111\s+\.word\s+0x11111111
-
-Disassembly of section \.far:
-
-12340000 <far>:
-12340000:\s+e12fff1e\s+bx\s+lr
Disassembly of section .foo:
02001020 <_start>:
- 2001020: f000 f802 bl 2001028 <__bar_veneer>
- 2001024: f000 f806 bl 2001034 <__baz_veneer>
+ 2001020: f000 f808 bl 2001034 <__bar_veneer>
+ 2001024: f000 f800 bl 2001028 <__baz_veneer>
-02001028 <__bar_veneer>:
- 2001028: f241 0c01 movw ip, #4097 @ 0x1001
+02001028 <__baz_veneer>:
+ 2001028: f241 0c03 movw ip, #4099 @ 0x1003
200102c: f2c0 0c00 movt ip, #0
2001030: 4760 bx ip
2001032: bf00 nop
-02001034 <__baz_veneer>:
- 2001034: f241 0c03 movw ip, #4099 @ 0x1003
+02001034 <__bar_veneer>:
+ 2001034: f241 0c01 movw ip, #4097 @ 0x1001
2001038: f2c0 0c00 movt ip, #0
200103c: 4760 bx ip
200103e: bf00 nop
#ld: --enable-non-contiguous-regions -T non-contiguous-arm3.ld -z max-page-size=0x10000
#objdump: -rdth
#xfail: [is_generic]
-#skip: arm*nacl
.*: file format elf32-(little|big)arm
#ld: --enable-non-contiguous-regions -T non-contiguous-arm6.ld -z max-page-size=0x10000
#objdump: -rdth
#xfail: [is_generic]
-#skip: arm*nacl
.*: file format elf32-(little|big)arm
if { !([istarget *-*-linux*]
|| [istarget arm*-*-uclinuxfdpiceabi]
- || [istarget *-*-nacl*]
|| [istarget *-*-gnu*]) || [istarget *ecoff] } then {
return
}
if { !([istarget *-*-linux*]
|| [istarget arm*-*-uclinuxfdpiceabi]
- || [istarget *-*-nacl*]
|| [istarget *-*-gnu*]) } then {
return
}
#source: ehdr_start-strongref.s
#ld: -e _start -T ehdr_start-missing.t --no-dynamic-linker
#error: .*: undefined reference to `__ehdr_start'
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: bfin-*-*
#source: ehdr_start.s
#ld: -e _start -shared -z notext
#nm: -n
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: bfin-*-* cris*-*-* frv-*-* lm32-*-* ![check_shared_lib_support]
#...
#source: ehdr_start-strongref.s
#ld: -e _start -T ehdr_start-userdef.t
#readelf: -Ws
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: bfin-*-* frv-*-*
#...
#source: ehdr_start.s
#ld: -e _start -T ehdr_start-missing.t --no-dynamic-linker
#nm: -n
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: bfin-*-* frv-*-*
#failif
#source: ehdr_start.s
#ld: -e _start --build-id
#nm: -n
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: bfin-*-* frv-*-* lm32-*-*
#...
}
if { [istarget *-*-*linux*]
- || [istarget *-*-nacl*]
|| [istarget *-*-gnu*] } {
run_ld_link_tests [list \
[list "stack exec" \
run_ld_link_exec_tests $array_tests $xfails
if { [istarget *-*-linux*]
- || [istarget *-*-nacl*]
|| [istarget *-*-gnu*] } {
run_ld_link_exec_tests $array_tests_pie $xfails
# if you like.
if { ![istarget *-*-linux*]
&& ![istarget arm*-*-uclinuxfdpiceabi]
- && ![istarget *-*-nacl*]
&& ![istarget *-*-gnu*] } {
return
}
#ld: --no-dynamic-linker --fatal-warnings -z dynamic-undefined-weak
#readelf: -r -x .data.rel.ro
#error: unsupported option: -z dynamic-undefined-weak
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
#ld: --no-dynamic-linker -z dynamic-undefined-weak --fatal-warnings
#readelf: -r -x .data.rel.ro
#error: unsupported option: -z dynamic-undefined-weak
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
#source: orphan-region.s
#ld: -T orphan-region.ld -N -z stack-size=0 --no-warn-rwx-segments
#readelf: -S -l --wide
-#xfail: [uses_genelf] hppa*64*-*-* spu-*-* *-*-nacl*
+#xfail: [uses_genelf] hppa*64*-*-* spu-*-*
# if not using elf.em, you don't get fancy orphan handling
-# spu twiddles LOAD range, hppa64 adds PHDR, nacl splits to two segments
+# spu twiddles LOAD range, hppa64 adds PHDR
#...
\[[ 0-9]+\] \.text[ \t]+PROGBITS[ \t]+0*40000000[ \t]+.*
if { !([istarget *-*-linux*]
|| [istarget arm*-*-uclinuxfdpiceabi]
- || [istarget *-*-nacl*]
|| [istarget *-*-gnu*]) } then {
return
}
#ld: -shared -z relro -z noseparate-code
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: ![check_shared_lib_support]
#xfail: ![check_relro_support]
#ld: -shared -T pr16498a.t
#readelf: -l --wide
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: ![check_shared_lib_support]
#...
#source: pr16498a.s
#ld: -shared -T pr16498b.t
#readelf: -l --wide
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: ![check_shared_lib_support]
#...
#source: pr19162b.s
#ld: -shared -z max-page-size=0x200000 -z noseparate-code
#readelf: -l --wide
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: hppa*-*-* ![check_shared_lib_support]
# hppa fails due to PR 12376.
#source: pr22269.s
#ld: -pie --no-dynamic-linker
#readelf: -r -x .data.rel.ro
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
# The BFIN target always generates a relocation.
#xfail: ![check_pie_support] || bfin-*-*
#ld: -pie --no-dynamic-linker -z dynamic-undefined-weak
#readelf: -r -x .data.rel.ro
#warning: -z dynamic-undefined-weak ignored
-#target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
# The BFIN target always generates a relocation.
#xfail: ![check_pie_support] || bfin-*-*
#source: pr22393-1.s
#ld: -shared -z separate-code -z relro
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: ![check_shared_lib_support]
#xfail: ![check_relro_support]
#source: pr22393-1.s
#ld: -shared -z relro -z separate-code
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: ![check_shared_lib_support]
#xfail: ![check_relro_support]
#source: pr22393-1.s
#ld: -pie -z separate-code
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: ![check_pie_support]
#failif
#source: pr22393-1.s
#ld: -pie -z separate-code
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: ![check_pie_support]
#failif
#source: pr22393-1.s
#ld: -z separate-code
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: rx-*-linux*
#failif
#source: pr22393-1.s
#ld: -z separate-code
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: rx-*-linux*
#failif
#source: pr22393-1.s
#ld: -shared -z separate-code --no-rosegment
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl*
+#target: *-*-linux-gnu *-*-gnu*
#failif
#...
#source: pr22393-1.s
#ld: -shared -z separate-code --no-rosegment
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl*
+#target: *-*-linux-gnu *-*-gnu*
#failif
#...
#source: pr23900-1.s
#ld:
#readelf: -l --wide
-#target: *-*-linux* *-*-gnu* *-*-nacl*
+#target: *-*-linux* *-*-gnu*
#...
GNU_PROPERTY .* +0x4
#source: pr23900-1.s
#ld:
#readelf: -l --wide
-#target: *-*-linux* *-*-gnu* *-*-nacl*
+#target: *-*-linux* *-*-gnu*
#...
GNU_PROPERTY .* +0x8
#ld:
#readelf: --notes --wide -l
-#target: *-*-linux* *-*-gnu* *-*-nacl*
+#target: *-*-linux* *-*-gnu*
#...
GNU_PROPERTY .*
#source: pr23900-2.s
#ld:
#readelf: --notes --wide
-#target: *-*-linux* *-*-gnu* *-*-nacl*
+#target: *-*-linux* *-*-gnu*
#...
Displaying notes found in: \.note
#source: pr23900-2.s
#ld:
#readelf: -l --wide
-#target: *-*-linux* *-*-gnu* *-*-nacl*
+#target: *-*-linux* *-*-gnu*
#failif
#...
#ld: -z separate-code --no-rosegment
#objcopy_linked_file: -R .foo
#readelf: -lW
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: mips*-*-* rx-*-linux*
#...
#source: pr22393-1.s
#ld: -shared -z separate-code -z relro --rosegment
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: ![check_shared_lib_support]
#xfail: ![check_relro_support]
#source: pr22393-1.s
#ld: -shared -z separate-code -z relro --rosegment
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: ![check_shared_lib_support]
#xfail: ![check_relro_support]
#ld: --build-id -z separate-code -z relro --rosegment
#readelf: -l --wide
-#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
#xfail: ![check_relro_support]
#failif
if { [istarget *-*-linux*]
|| [istarget kvx-*-*]
- || [istarget *-*-nacl*]
|| [istarget *-*-gnu*] } {
run_ld_link_tests {
{"Weak symbols in dynamic objects 1 (support)"
run_ld_link_exec_tests $run_cxx_tests
if { [istarget *-*-linux*]
- || [istarget *-*-nacl*]
|| [istarget *-*-gnu*] } {
run_cc_link_tests [list \
[list \
}
if { ([istarget "*-*-linux*"]
- || [istarget "*-*-nacl*"]
|| [istarget "*-*-gnu*"])
&& ![istarget "mips*-*-*"] } {
run_ld_link_tests [list \
if { !([istarget *-*-linux*]
|| [istarget arm*-*-uclinuxfdpiceabi]
- || [istarget *-*-nacl*]
|| [istarget *-*-gnu*]) || [istarget *ecoff] } then {
return
}
if { !([istarget *-*-linux*]
|| [istarget arm*-*-uclinuxfdpiceabi]
- || [istarget *-*-nacl*]
|| [istarget *-*-gnu*]) || [istarget *ecoff] } then {
return
}
&& ![istarget sparc*-*-elf]
&& ![istarget sparc*-*-solaris2*]
&& ![istarget sparc*-*-linux*]
- && ![istarget x86_64-*-linux*]
- && ![istarget *-*-nacl*] } {
+ && ![istarget x86_64-*-linux*] } {
return
}
if { [check_compiler_available] } {
if { [istarget "*-*-linux*"]
- || [istarget "*-*-nacl*"]
|| [istarget "*-*-gnu*"] } {
ld_compile "$CC_FOR_TARGET -fPIC $cflags" $srcdir/$subdir/pr11218-1.c tmpdir/pr11218-1.o
ld_link $ld tmpdir/pr11218-1.so "-shared tmpdir/pr11218-1.o"
# MA 02110-1301, USA.
#
-if { ![istarget *-*-linux*]
- && ![istarget *-*-nacl*]
- && ![istarget *-*-gnu*] } {
+if { ![istarget *-*-linux*] && ![istarget *-*-gnu*] } {
return
}
if { !([istarget *-*-linux*]
|| [istarget arm*-*-uclinuxfdpiceabi]
- || [istarget *-*-nacl*]
|| [istarget *-*-gnu*]) || [istarget *ecoff] } then {
return
}
# source: rgn-at.s
# ld: -T rgn-at3.t
# objdump: -w -h
-# xfail: rx-*-* *-*-nacl*
+# xfail: rx-*-*
# FAILS on the RX because the linker has to set LMA == VMA for the
# Renesas loader.
-# FAILs on NaCl targets because the linker extends the first segment
-# to fill out the page, making its p_vaddr+p_memsz cover the sh_addr
-# of .bss too, which makes BFD compute its LMA from the p_paddr of the
-# text segment.
.*: file format .*
&& ![istarget i?86-*-elf*] \
&& ![istarget i?86-*-linux*] \
&& ![istarget i?86-*-gnu*] \
- && ![istarget *-*-nacl*] \
&& ![istarget ia64-*-elf*] \
&& ![istarget ia64-*-linux*] \
&& ![istarget m68k-*-linux*] \
if {!(([istarget "i?86-*-*"]
|| [istarget "x86_64-*-*"])
&& ([istarget "*-*-elf*"]
- || [istarget "*-*-nacl*"]
|| [istarget "*-*-linux*"]
|| [istarget "*-*-gnu*"])) } {
verbose "Size relocations tests not run - no target support"
return
}
-# So as to avoid rewriting every last test case here in a nacl variant,
-# we use black magic to massage the generic cases into nacl-variant cases.
-if [istarget "*-*-nacl*"] {
- # Change all the -melf_i386 to -melf_i386_nacl so linking can succeed.
- set options_regsub(ld) {-m(\\S+) -m\\1_nacl}
-}
-
set test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
foreach t $test_list {
# We need to strip the ".d", but can leave the dirname.
&& ![istarget hppa*-*-linux*] \
&& ![istarget i?86-*-linux*] \
&& ![istarget i?86-*-gnu*] \
- && ![istarget *-*-nacl*] \
&& ![istarget ia64-*-linux*] \
&& ![istarget m68k-*-linux*] \
&& ![istarget mips*-*-linux*] \
set support_protected "no"
if { [istarget *-*-linux*]
- || [istarget *-*-nacl*]
|| [istarget *-*-gnu*] } {
if [ld_compile "$CC_FOR_TARGET -g -DPROTECTED_CHECK" $srcdir/$subdir/main.c $tmpdir/main.o] {
if [ld_link $CC_FOR_TARGET $tmpdir/main "$tmpdir/main.o"] {