* common.h: Fix case of "Meta".
* metag.h: New file. * dis-asm.h (print_insn_metag): New declaration. * metag.h: New file. * Makefile.am: Add Meta. * Makefile.in: Regenerate. * configure: Regenerate. * configure.in: Add Meta. * disassemble.c: Add Meta support. * metag-dis.c: New file. * Makefile.am: Add Meta. * Makefile.in: Regenerate. * archures.c (bfd_mach_metag): New. * bfd-in2.h: Regenerate. * config.bfd: Add Meta. * configure: Regenerate. * configure.in: Add Meta. * cpu-metag.c: New file. * elf-bfd.h: Add Meta. * elf32-metag.c: New file. * elf32-metag.h: New file. * libbfd.h: Regenerate. * reloc.c: Add Meta relocations. * targets.c: Add Meta. * Makefile.am: Add Meta. * Makefile.in: Regenerate. * config/tc-metag.c: New file. * config/tc-metag.h: New file. * configure.tgt: Add Meta. * doc/Makefile.am: Add Meta. * doc/Makefile.in: Regenerate. * doc/all.texi: Add Meta. * doc/as.texiinfo: Document Meta options. * doc/c-metag.texi: New file. * gas/metag/labelarithmetic.d: New file. * gas/metag/labelarithmetic.s: New file. * gas/metag/metacore12.d: New file. * gas/metag/metacore12.s: New file. * gas/metag/metacore21-invalid.l: New file. * gas/metag/metacore21-invalid.s: New file. * gas/metag/metacore21.d: New file. * gas/metag/metacore21.s: New file. * gas/metag/metacore21ext.d: New file. * gas/metag/metacore21ext.s: New file. * gas/metag/metadsp21-invalid.l: New file. * gas/metag/metadsp21-invalid.s: New file. * gas/metag/metadsp21.d: New file. * gas/metag/metadsp21.s: New file. * gas/metag/metadsp21ext.d: New file. * gas/metag/metadsp21ext.s: New file. * gas/metag/metafpu21.d: New file. * gas/metag/metafpu21.s: New file. * gas/metag/metafpu21ext.d: New file. * gas/metag/metafpu21ext.s: New file. * gas/metag/metag.exp: New file. * gas/metag/tls.d: New file. * gas/metag/tls.s: New file. * Makefile.am: Add Meta. * Makefile.in: Regenerate. * configure.tgt: Add Meta. * emulparams/elf32metag.sh: New file. * emultempl/metagelf.em: New file. * ld-elf/merge.d: Mark Meta as xfail. * ld-gc/start.d: Skip this test on Meta. * ld-gc/personality.d: Skip this test on Meta. * ld-metag/external.s: New file. * ld-metag/metag.exp: New file. * ld-metag/pcrel.d: New file. * ld-metag/pcrel.s: New file. * ld-metag/shared.d: New file. * ld-metag/shared.r: New file. * ld-metag/shared.s: New file. * ld-metag/stub.d: New file. * ld-metag/stub.s: New file. * ld-metag/stub_pic_app.d: New file. * ld-metag/stub_pic_app.r: New file. * ld-metag/stub_pic_app.s: New file. * ld-metag/stub_pic_shared.d: New file. * ld-metag/stub_pic_shared.s: New file. * ld-metag/stub_shared.d: New file. * ld-metag/stub_shared.r: New file. * ld-metag/stub_shared.s: New file. * binutils/readelf.c: (guess_is_rela): Add EM_METAG. (dump_relocations): Add EM_METAG. (get_machine_name): Correct case for Meta. (is_32bit_abs_reloc): Add support for Meta ADDR32 reloc. (is_none_reloc): Add support for Meta NONE reloc.
This commit is contained in:
parent
9e9143bc87
commit
a3c629886c
@ -1,3 +1,20 @@
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* Makefile.am: Add Meta.
|
||||
* Makefile.in: Regenerate.
|
||||
* archures.c (bfd_mach_metag): New.
|
||||
* bfd-in2.h: Regenerate.
|
||||
* config.bfd: Add Meta.
|
||||
* configure: Regenerate.
|
||||
* configure.in: Add Meta.
|
||||
* cpu-metag.c: New file.
|
||||
* elf-bfd.h: Add Meta.
|
||||
* elf32-metag.c: New file.
|
||||
* elf32-metag.h: New file.
|
||||
* libbfd.h: Regenerate.
|
||||
* reloc.c: Add Meta relocations.
|
||||
* targets.c: Add Meta.
|
||||
|
||||
2013-01-08 Yufeng Zhang <yufeng.zhang@arm.com>
|
||||
|
||||
* elf-bfd.h (elfcore_write_aarch_tls): Add prototype.
|
||||
|
@ -129,6 +129,7 @@ ALL_MACHINES = \
|
||||
cpu-m88k.lo \
|
||||
cpu-mcore.lo \
|
||||
cpu-mep.lo \
|
||||
cpu-metag.lo \
|
||||
cpu-microblaze.lo \
|
||||
cpu-mips.lo \
|
||||
cpu-mmix.lo \
|
||||
@ -211,6 +212,7 @@ ALL_MACHINES_CFILES = \
|
||||
cpu-m88k.c \
|
||||
cpu-mcore.c \
|
||||
cpu-mep.c \
|
||||
cpu-metag.c \
|
||||
cpu-microblaze.c \
|
||||
cpu-mips.c \
|
||||
cpu-mmix.c \
|
||||
@ -340,6 +342,7 @@ BFD32_BACKENDS = \
|
||||
elf32-m88k.lo \
|
||||
elf32-mcore.lo \
|
||||
elf32-mep.lo \
|
||||
elf32-metag.lo \
|
||||
elf32-microblaze.lo \
|
||||
elf32-mips.lo \
|
||||
elf32-moxie.lo \
|
||||
@ -528,6 +531,7 @@ BFD32_BACKENDS_CFILES = \
|
||||
elf32-m88k.c \
|
||||
elf32-mcore.c \
|
||||
elf32-mep.c \
|
||||
elf32-metag.c \
|
||||
elf32-microblaze.c \
|
||||
elf32-mips.c \
|
||||
elf32-moxie.c \
|
||||
|
@ -430,6 +430,7 @@ ALL_MACHINES = \
|
||||
cpu-m88k.lo \
|
||||
cpu-mcore.lo \
|
||||
cpu-mep.lo \
|
||||
cpu-metag.lo \
|
||||
cpu-microblaze.lo \
|
||||
cpu-mips.lo \
|
||||
cpu-mmix.lo \
|
||||
@ -512,6 +513,7 @@ ALL_MACHINES_CFILES = \
|
||||
cpu-m88k.c \
|
||||
cpu-mcore.c \
|
||||
cpu-mep.c \
|
||||
cpu-metag.c \
|
||||
cpu-microblaze.c \
|
||||
cpu-mips.c \
|
||||
cpu-mmix.c \
|
||||
@ -642,6 +644,7 @@ BFD32_BACKENDS = \
|
||||
elf32-m88k.lo \
|
||||
elf32-mcore.lo \
|
||||
elf32-mep.lo \
|
||||
elf32-metag.lo \
|
||||
elf32-microblaze.lo \
|
||||
elf32-mips.lo \
|
||||
elf32-moxie.lo \
|
||||
@ -830,6 +833,7 @@ BFD32_BACKENDS_CFILES = \
|
||||
elf32-m88k.c \
|
||||
elf32-mcore.c \
|
||||
elf32-mep.c \
|
||||
elf32-metag.c \
|
||||
elf32-microblaze.c \
|
||||
elf32-mips.c \
|
||||
elf32-moxie.c \
|
||||
@ -1336,6 +1340,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m9s12xg.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mcore.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mep.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-metag.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-microblaze.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mips.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mmix.Plo@am__quote@
|
||||
@ -1424,6 +1429,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m88k.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-mcore.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-mep.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-metag.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-microblaze.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-mips.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-moxie.Plo@am__quote@
|
||||
|
@ -365,6 +365,8 @@ DESCRIPTION
|
||||
.#define bfd_mach_mep 1
|
||||
.#define bfd_mach_mep_h1 0x6831
|
||||
.#define bfd_mach_mep_c5 0x6335
|
||||
. bfd_arch_metag,
|
||||
.#define bfd_mach_metag 1
|
||||
. bfd_arch_ia64, {* HP/Intel ia64 *}
|
||||
.#define bfd_mach_ia64_elf64 64
|
||||
.#define bfd_mach_ia64_elf32 32
|
||||
@ -548,6 +550,7 @@ extern const bfd_arch_info_type bfd_m68k_arch;
|
||||
extern const bfd_arch_info_type bfd_m88k_arch;
|
||||
extern const bfd_arch_info_type bfd_mcore_arch;
|
||||
extern const bfd_arch_info_type bfd_mep_arch;
|
||||
extern const bfd_arch_info_type bfd_metag_arch;
|
||||
extern const bfd_arch_info_type bfd_mips_arch;
|
||||
extern const bfd_arch_info_type bfd_microblaze_arch;
|
||||
extern const bfd_arch_info_type bfd_mmix_arch;
|
||||
@ -635,6 +638,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
|
||||
&bfd_m88k_arch,
|
||||
&bfd_mcore_arch,
|
||||
&bfd_mep_arch,
|
||||
&bfd_metag_arch,
|
||||
&bfd_microblaze_arch,
|
||||
&bfd_mips_arch,
|
||||
&bfd_mmix_arch,
|
||||
|
@ -2096,6 +2096,8 @@ enum bfd_architecture
|
||||
#define bfd_mach_mep 1
|
||||
#define bfd_mach_mep_h1 0x6831
|
||||
#define bfd_mach_mep_c5 0x6335
|
||||
bfd_arch_metag,
|
||||
#define bfd_mach_metag 1
|
||||
bfd_arch_ia64, /* HP/Intel ia64 */
|
||||
#define bfd_mach_ia64_elf64 64
|
||||
#define bfd_mach_ia64_elf32 32
|
||||
@ -3996,6 +3998,46 @@ short offset into 11 bits. */
|
||||
BFD_RELOC_MEP_GNU_VTENTRY,
|
||||
|
||||
|
||||
/* Imagination Technologies Meta relocations. */
|
||||
BFD_RELOC_METAG_HIADDR16,
|
||||
BFD_RELOC_METAG_LOADDR16,
|
||||
BFD_RELOC_METAG_RELBRANCH,
|
||||
BFD_RELOC_METAG_GETSETOFF,
|
||||
BFD_RELOC_METAG_HIOG,
|
||||
BFD_RELOC_METAG_LOOG,
|
||||
BFD_RELOC_METAG_REL8,
|
||||
BFD_RELOC_METAG_REL16,
|
||||
BFD_RELOC_METAG_HI16_GOTOFF,
|
||||
BFD_RELOC_METAG_LO16_GOTOFF,
|
||||
BFD_RELOC_METAG_GETSET_GOTOFF,
|
||||
BFD_RELOC_METAG_GETSET_GOT,
|
||||
BFD_RELOC_METAG_HI16_GOTPC,
|
||||
BFD_RELOC_METAG_LO16_GOTPC,
|
||||
BFD_RELOC_METAG_HI16_PLT,
|
||||
BFD_RELOC_METAG_LO16_PLT,
|
||||
BFD_RELOC_METAG_RELBRANCH_PLT,
|
||||
BFD_RELOC_METAG_GOTOFF,
|
||||
BFD_RELOC_METAG_PLT,
|
||||
BFD_RELOC_METAG_COPY,
|
||||
BFD_RELOC_METAG_JMP_SLOT,
|
||||
BFD_RELOC_METAG_RELATIVE,
|
||||
BFD_RELOC_METAG_GLOB_DAT,
|
||||
BFD_RELOC_METAG_TLS_GD,
|
||||
BFD_RELOC_METAG_TLS_LDM,
|
||||
BFD_RELOC_METAG_TLS_LDO_HI16,
|
||||
BFD_RELOC_METAG_TLS_LDO_LO16,
|
||||
BFD_RELOC_METAG_TLS_LDO,
|
||||
BFD_RELOC_METAG_TLS_IE,
|
||||
BFD_RELOC_METAG_TLS_IENONPIC,
|
||||
BFD_RELOC_METAG_TLS_IENONPIC_HI16,
|
||||
BFD_RELOC_METAG_TLS_IENONPIC_LO16,
|
||||
BFD_RELOC_METAG_TLS_TPOFF,
|
||||
BFD_RELOC_METAG_TLS_DTPMOD,
|
||||
BFD_RELOC_METAG_TLS_DTPOFF,
|
||||
BFD_RELOC_METAG_TLS_LE,
|
||||
BFD_RELOC_METAG_TLS_LE_HI16,
|
||||
BFD_RELOC_METAG_TLS_LE_LO16,
|
||||
|
||||
/* These are relocations for the GETA instruction. */
|
||||
BFD_RELOC_MMIX_GETA,
|
||||
BFD_RELOC_MMIX_GETA_1,
|
||||
|
@ -938,6 +938,11 @@ case "${targ}" in
|
||||
targ_selvecs=bfd_elf32_mep_little_vec
|
||||
;;
|
||||
|
||||
metag-*-*)
|
||||
targ_defvec=bfd_elf32_metag_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
|
||||
microblazeel*-*)
|
||||
targ_defvec=bfd_elf32_microblazeel_vec
|
||||
targ_selvecs=bfd_elf32_microblaze_vec
|
||||
|
1
bfd/configure
vendored
1
bfd/configure
vendored
@ -15283,6 +15283,7 @@ do
|
||||
bfd_elf32_mcore_little_vec) tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_mep_vec) tb="$tb elf32-mep.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_mep_little_vec) tb="$tb elf32-mep.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_metag_vec) tb="$tb elf32-metag.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_microblazeel_vec) tb="$tb elf32-microblaze.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_microblaze_vec) tb="$tb elf32-microblaze.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_mn10200_vec) tb="$tb elf-m10200.lo elf32.lo $elf" ;;
|
||||
|
@ -780,6 +780,7 @@ do
|
||||
bfd_elf32_mcore_little_vec) tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_mep_vec) tb="$tb elf32-mep.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_mep_little_vec) tb="$tb elf32-mep.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_metag_vec) tb="$tb elf32-metag.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_microblazeel_vec) tb="$tb elf32-microblaze.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_microblaze_vec) tb="$tb elf32-microblaze.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_mn10200_vec) tb="$tb elf-m10200.lo elf32.lo $elf" ;;
|
||||
|
41
bfd/cpu-metag.c
Normal file
41
bfd/cpu-metag.c
Normal file
@ -0,0 +1,41 @@
|
||||
/* BFD support for the Imagination Technologies Meta processor.
|
||||
Copyright (C) 2013 Free Software Foundation, Inc.
|
||||
Contributed by Imagination Technologies Ltd.
|
||||
|
||||
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, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
|
||||
const bfd_arch_info_type bfd_metag_arch =
|
||||
{
|
||||
32, /* Bits per word. */
|
||||
32, /* Bits per address. */
|
||||
8, /* Bits per byte. */
|
||||
bfd_arch_metag, /* Architecture. */
|
||||
bfd_mach_metag, /* Machine. */
|
||||
"metag", /* Architecture name. */
|
||||
"metag", /* Printable name. */
|
||||
4, /* Section align power. */
|
||||
TRUE, /* The default ? */
|
||||
bfd_default_compatible, /* Architecture comparison fn. */
|
||||
bfd_default_scan, /* String to architecture convert fn. */
|
||||
bfd_arch_default_fill, /* Default fill. */
|
||||
NULL /* Next in list. */
|
||||
};
|
@ -417,6 +417,7 @@ enum elf_target_id
|
||||
M32R_ELF_DATA,
|
||||
M68HC11_ELF_DATA,
|
||||
M68K_ELF_DATA,
|
||||
METAG_ELF_DATA,
|
||||
MICROBLAZE_ELF_DATA,
|
||||
MIPS_ELF_DATA,
|
||||
MN10300_ELF_DATA,
|
||||
|
4313
bfd/elf32-metag.c
Normal file
4313
bfd/elf32-metag.c
Normal file
File diff suppressed because it is too large
Load Diff
38
bfd/elf32-metag.h
Normal file
38
bfd/elf32-metag.h
Normal file
@ -0,0 +1,38 @@
|
||||
/* Meta support for 32-bit ELF
|
||||
Copyright (C) 2013 Free Software Foundation, Inc.
|
||||
Contributed by Imagination Technologies Ltd.
|
||||
|
||||
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, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#ifndef _ELF32_METAG_H
|
||||
#define _ELF32_METAG_H
|
||||
|
||||
extern int elf_metag_setup_section_lists
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
extern void elf_metag_next_input_section
|
||||
(struct bfd_link_info *, asection *);
|
||||
|
||||
extern bfd_boolean elf_metag_size_stubs
|
||||
(bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
|
||||
asection * (*) (const char *, asection *), void (*) (void));
|
||||
|
||||
extern bfd_boolean elf_metag_build_stubs
|
||||
(struct bfd_link_info *);
|
||||
|
||||
#endif /* _ELF32_METAG_H */
|
38
bfd/libbfd.h
38
bfd/libbfd.h
@ -1844,6 +1844,44 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
|
||||
"BFD_RELOC_MEP_GNU_VTINHERIT",
|
||||
"BFD_RELOC_MEP_GNU_VTENTRY",
|
||||
|
||||
"BFD_RELOC_METAG_HIADDR16",
|
||||
"BFD_RELOC_METAG_LOADDR16",
|
||||
"BFD_RELOC_METAG_RELBRANCH",
|
||||
"BFD_RELOC_METAG_GETSETOFF",
|
||||
"BFD_RELOC_METAG_HIOG",
|
||||
"BFD_RELOC_METAG_LOOG",
|
||||
"BFD_RELOC_METAG_REL8",
|
||||
"BFD_RELOC_METAG_REL16",
|
||||
"BFD_RELOC_METAG_HI16_GOTOFF",
|
||||
"BFD_RELOC_METAG_LO16_GOTOFF",
|
||||
"BFD_RELOC_METAG_GETSET_GOTOFF",
|
||||
"BFD_RELOC_METAG_GETSET_GOT",
|
||||
"BFD_RELOC_METAG_HI16_GOTPC",
|
||||
"BFD_RELOC_METAG_LO16_GOTPC",
|
||||
"BFD_RELOC_METAG_HI16_PLT",
|
||||
"BFD_RELOC_METAG_LO16_PLT",
|
||||
"BFD_RELOC_METAG_RELBRANCH_PLT",
|
||||
"BFD_RELOC_METAG_GOTOFF",
|
||||
"BFD_RELOC_METAG_PLT",
|
||||
"BFD_RELOC_METAG_COPY",
|
||||
"BFD_RELOC_METAG_JMP_SLOT",
|
||||
"BFD_RELOC_METAG_RELATIVE",
|
||||
"BFD_RELOC_METAG_GLOB_DAT",
|
||||
"BFD_RELOC_METAG_TLS_GD",
|
||||
"BFD_RELOC_METAG_TLS_LDM",
|
||||
"BFD_RELOC_METAG_TLS_LDO_HI16",
|
||||
"BFD_RELOC_METAG_TLS_LDO_LO16",
|
||||
"BFD_RELOC_METAG_TLS_LDO",
|
||||
"BFD_RELOC_METAG_TLS_IE",
|
||||
"BFD_RELOC_METAG_TLS_IENONPIC",
|
||||
"BFD_RELOC_METAG_TLS_IENONPIC_HI16",
|
||||
"BFD_RELOC_METAG_TLS_IENONPIC_LO16",
|
||||
"BFD_RELOC_METAG_TLS_TPOFF",
|
||||
"BFD_RELOC_METAG_TLS_DTPMOD",
|
||||
"BFD_RELOC_METAG_TLS_DTPOFF",
|
||||
"BFD_RELOC_METAG_TLS_LE",
|
||||
"BFD_RELOC_METAG_TLS_LE_HI16",
|
||||
"BFD_RELOC_METAG_TLS_LE_LO16",
|
||||
"BFD_RELOC_MMIX_GETA",
|
||||
"BFD_RELOC_MMIX_GETA_1",
|
||||
"BFD_RELOC_MMIX_GETA_2",
|
||||
|
79
bfd/reloc.c
79
bfd/reloc.c
@ -4197,6 +4197,85 @@ ENUMDOC
|
||||
Toshiba Media Processor Relocations.
|
||||
COMMENT
|
||||
|
||||
ENUM
|
||||
BFD_RELOC_METAG_HIADDR16
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_LOADDR16
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_RELBRANCH
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_GETSETOFF
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_HIOG
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_LOOG
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_REL8
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_REL16
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_HI16_GOTOFF
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_LO16_GOTOFF
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_GETSET_GOTOFF
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_GETSET_GOT
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_HI16_GOTPC
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_LO16_GOTPC
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_HI16_PLT
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_LO16_PLT
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_RELBRANCH_PLT
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_GOTOFF
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_PLT
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_COPY
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_JMP_SLOT
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_RELATIVE
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_GLOB_DAT
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_GD
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_LDM
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_LDO_HI16
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_LDO_LO16
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_LDO
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_IE
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_IENONPIC
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_IENONPIC_HI16
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_IENONPIC_LO16
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_TPOFF
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_DTPMOD
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_DTPOFF
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_LE
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_LE_HI16
|
||||
ENUMX
|
||||
BFD_RELOC_METAG_TLS_LE_LO16
|
||||
ENUMDOC
|
||||
Imagination Technologies Meta relocations.
|
||||
|
||||
ENUM
|
||||
BFD_RELOC_MMIX_GETA
|
||||
ENUMX
|
||||
|
@ -659,6 +659,7 @@ extern const bfd_target bfd_elf32_mcore_big_vec;
|
||||
extern const bfd_target bfd_elf32_mcore_little_vec;
|
||||
extern const bfd_target bfd_elf32_mep_vec;
|
||||
extern const bfd_target bfd_elf32_mep_little_vec;
|
||||
extern const bfd_target bfd_elf32_metag_vec;
|
||||
extern const bfd_target bfd_elf32_microblazeel_vec;
|
||||
extern const bfd_target bfd_elf32_microblaze_vec;
|
||||
extern const bfd_target bfd_elf32_mn10200_vec;
|
||||
@ -1036,6 +1037,7 @@ static const bfd_target * const _bfd_target_vector[] =
|
||||
&bfd_elf32_mcore_big_vec,
|
||||
&bfd_elf32_mcore_little_vec,
|
||||
&bfd_elf32_mep_vec,
|
||||
&bfd_elf32_metag_vec,
|
||||
&bfd_elf32_microblaze_vec,
|
||||
&bfd_elf32_mn10200_vec,
|
||||
&bfd_elf32_mn10300_vec,
|
||||
|
@ -1,3 +1,11 @@
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* binutils/readelf.c: (guess_is_rela): Add EM_METAG.
|
||||
(dump_relocations): Add EM_METAG.
|
||||
(get_machine_name): Correct case for Meta.
|
||||
(is_32bit_abs_reloc): Add support for Meta ADDR32 reloc.
|
||||
(is_none_reloc): Add support for Meta NONE reloc.
|
||||
|
||||
2013-01-08 Yufeng Zhang <yufeng.zhang@arm.com>
|
||||
|
||||
* readelf.c (get_note_type): Handle NT_ARM_TLS, NT_ARM_HW_BREAK
|
||||
|
@ -124,6 +124,7 @@
|
||||
#include "elf/m68hc11.h"
|
||||
#include "elf/mcore.h"
|
||||
#include "elf/mep.h"
|
||||
#include "elf/metag.h"
|
||||
#include "elf/microblaze.h"
|
||||
#include "elf/mips.h"
|
||||
#include "elf/mmix.h"
|
||||
@ -610,6 +611,7 @@ guess_is_rela (unsigned int e_machine)
|
||||
case EM_M32R:
|
||||
case EM_MCORE:
|
||||
case EM_CYGNUS_MEP:
|
||||
case EM_METAG:
|
||||
case EM_MMIX:
|
||||
case EM_MN10200:
|
||||
case EM_CYGNUS_MN10200:
|
||||
@ -1264,6 +1266,10 @@ dump_relocations (FILE * file,
|
||||
rtype = elf_rx_reloc_type (type);
|
||||
break;
|
||||
|
||||
case EM_METAG:
|
||||
rtype = elf_metag_reloc_type (type);
|
||||
break;
|
||||
|
||||
case EM_XC16X:
|
||||
case EM_C166:
|
||||
rtype = elf_xc16x_reloc_type (type);
|
||||
@ -2029,7 +2035,7 @@ get_machine_name (unsigned e_machine)
|
||||
case EM_MICROBLAZE_OLD: return "Xilinx MicroBlaze";
|
||||
case EM_RL78: return "Renesas RL78";
|
||||
case EM_RX: return "Renesas RX";
|
||||
case EM_METAG: return "Imagination Technologies META processor architecture";
|
||||
case EM_METAG: return "Imagination Technologies Meta processor architecture";
|
||||
case EM_MCST_ELBRUS: return "MCST Elbrus general purpose hardware architecture";
|
||||
case EM_ECOG16: return "Cyan Technology eCOG16 family";
|
||||
case EM_ETPU: return "Freescale Extended Time Processing Unit";
|
||||
@ -10049,6 +10055,8 @@ is_32bit_abs_reloc (unsigned int reloc_type)
|
||||
return reloc_type == 1; /* R_MCORE_ADDR32. */
|
||||
case EM_CYGNUS_MEP:
|
||||
return reloc_type == 4; /* R_MEP_32. */
|
||||
case EM_METAG:
|
||||
return reloc_type == 2; /* R_METAG_ADDR32. */
|
||||
case EM_MICROBLAZE:
|
||||
return reloc_type == 1; /* R_MICROBLAZE_32. */
|
||||
case EM_MIPS:
|
||||
@ -10384,6 +10392,8 @@ is_none_reloc (unsigned int reloc_type)
|
||||
|| reloc_type == 17 /* R_XTENSA_DIFF8. */
|
||||
|| reloc_type == 18 /* R_XTENSA_DIFF16. */
|
||||
|| reloc_type == 19 /* R_XTENSA_DIFF32. */);
|
||||
case EM_METAG:
|
||||
return reloc_type == 3; /* R_METAG_NONE. */
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -1,3 +1,16 @@
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* Makefile.am: Add Meta.
|
||||
* Makefile.in: Regenerate.
|
||||
* config/tc-metag.c: New file.
|
||||
* config/tc-metag.h: New file.
|
||||
* configure.tgt: Add Meta.
|
||||
* doc/Makefile.am: Add Meta.
|
||||
* doc/Makefile.in: Regenerate.
|
||||
* doc/all.texi: Add Meta.
|
||||
* doc/as.texiinfo: Document Meta options.
|
||||
* doc/c-metag.texi: New file.
|
||||
|
||||
2013-01-09 Steve Ellcey <sellcey@mips.com>
|
||||
|
||||
* config/tc-i386.c (md_begin): Remove 'internal Error' from as_fatal
|
||||
|
@ -155,6 +155,7 @@ TARGET_CPU_CFILES = \
|
||||
config/tc-m68k.c \
|
||||
config/tc-mcore.c \
|
||||
config/tc-mep.c \
|
||||
config/tc-metag.c \
|
||||
config/tc-microblaze.c \
|
||||
config/tc-mips.c \
|
||||
config/tc-mmix.c \
|
||||
@ -225,6 +226,7 @@ TARGET_CPU_HFILES = \
|
||||
config/tc-m68k.h \
|
||||
config/tc-mcore.h \
|
||||
config/tc-mep.h \
|
||||
config/tc-metag.h \
|
||||
config/tc-microblaze.h \
|
||||
config/tc-mips.h \
|
||||
config/tc-mmix.h \
|
||||
|
@ -424,6 +424,7 @@ TARGET_CPU_CFILES = \
|
||||
config/tc-m68k.c \
|
||||
config/tc-mcore.c \
|
||||
config/tc-mep.c \
|
||||
config/tc-metag.c \
|
||||
config/tc-microblaze.c \
|
||||
config/tc-mips.c \
|
||||
config/tc-mmix.c \
|
||||
@ -494,6 +495,7 @@ TARGET_CPU_HFILES = \
|
||||
config/tc-m68k.h \
|
||||
config/tc-mcore.h \
|
||||
config/tc-mep.h \
|
||||
config/tc-metag.h \
|
||||
config/tc-microblaze.h \
|
||||
config/tc-mips.h \
|
||||
config/tc-mmix.h \
|
||||
@ -844,6 +846,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-m68k.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-mcore.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-mep.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-metag.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-microblaze.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-mips.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-mmix.Po@am__quote@
|
||||
@ -1339,6 +1342,20 @@ tc-mep.obj: config/tc-mep.c
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-mep.obj `if test -f 'config/tc-mep.c'; then $(CYGPATH_W) 'config/tc-mep.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-mep.c'; fi`
|
||||
|
||||
tc-metag.o: config/tc-metag.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-metag.o -MD -MP -MF $(DEPDIR)/tc-metag.Tpo -c -o tc-metag.o `test -f 'config/tc-metag.c' || echo '$(srcdir)/'`config/tc-metag.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-metag.Tpo $(DEPDIR)/tc-metag.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config/tc-metag.c' object='tc-metag.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-metag.o `test -f 'config/tc-metag.c' || echo '$(srcdir)/'`config/tc-metag.c
|
||||
|
||||
tc-metag.obj: config/tc-metag.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-metag.obj -MD -MP -MF $(DEPDIR)/tc-metag.Tpo -c -o tc-metag.obj `if test -f 'config/tc-metag.c'; then $(CYGPATH_W) 'config/tc-metag.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-metag.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-metag.Tpo $(DEPDIR)/tc-metag.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config/tc-metag.c' object='tc-metag.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-metag.obj `if test -f 'config/tc-metag.c'; then $(CYGPATH_W) 'config/tc-metag.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-metag.c'; fi`
|
||||
|
||||
tc-microblaze.o: config/tc-microblaze.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-microblaze.o -MD -MP -MF $(DEPDIR)/tc-microblaze.Tpo -c -o tc-microblaze.o `test -f 'config/tc-microblaze.c' || echo '$(srcdir)/'`config/tc-microblaze.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-microblaze.Tpo $(DEPDIR)/tc-microblaze.Po
|
||||
|
2
gas/NEWS
2
gas/NEWS
@ -1,5 +1,7 @@
|
||||
-*- text -*-
|
||||
|
||||
* Add support for the Imagination Technologies Meta processor.
|
||||
|
||||
* Add support for the v850e3v5.
|
||||
|
||||
Changes in 2.23:
|
||||
|
7115
gas/config/tc-metag.c
Normal file
7115
gas/config/tc-metag.c
Normal file
File diff suppressed because it is too large
Load Diff
72
gas/config/tc-metag.h
Normal file
72
gas/config/tc-metag.h
Normal file
@ -0,0 +1,72 @@
|
||||
/* tc-metag.h -- Header file for tc-metag.c.
|
||||
Copyright (C) 2013 Free Software Foundation, Inc.
|
||||
Contributed by Imagination Technologies Ltd.
|
||||
|
||||
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 TC_METAG
|
||||
|
||||
#define LISTING_HEADER "META GAS "
|
||||
|
||||
/* The target BFD architecture. */
|
||||
#define TARGET_ARCH bfd_arch_metag
|
||||
|
||||
#define TARGET_FORMAT "elf32-metag"
|
||||
|
||||
#define TARGET_BYTES_BIG_ENDIAN 0
|
||||
|
||||
/* Permit temporary numeric labels. */
|
||||
#define LOCAL_LABELS_FB 1
|
||||
|
||||
#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */
|
||||
|
||||
/* We don't need to handle .word strangely. */
|
||||
#define WORKING_DOT_WORD
|
||||
|
||||
/* Values passed to md_apply_fix don't include the symbol value. */
|
||||
#define MD_APPLY_SYM_VALUE(FIX) 0
|
||||
|
||||
#define tc_fix_adjustable(FIX) metag_fix_adjustable (FIX)
|
||||
extern bfd_boolean metag_fix_adjustable (struct fix *);
|
||||
|
||||
#define TC_FORCE_RELOCATION(fix) metag_force_relocation (fix)
|
||||
extern int metag_force_relocation (struct fix *);
|
||||
|
||||
#define TC_HANDLES_FX_DONE
|
||||
|
||||
/* Call md_pcrel_from_section(), not md_pcrel_from(). */
|
||||
#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
|
||||
extern long md_pcrel_from_section (struct fix *, segT);
|
||||
|
||||
#define HANDLE_ALIGN(fragp) metag_handle_align (fragp)
|
||||
extern void metag_handle_align (struct frag *);
|
||||
|
||||
#define DWARF2_LINE_MIN_INSN_LENGTH 1
|
||||
|
||||
#define md_parse_name(name, exprP, mode, nextcharP) \
|
||||
metag_parse_name ((name), (exprP), (mode), (nextcharP))
|
||||
extern int metag_parse_name (char const *, expressionS *, enum expr_mode, char *);
|
||||
|
||||
/* This is used to construct expressions out of @GOTOFF, @PLT and @GOT
|
||||
symbols. The relocation type is stored in X_md. */
|
||||
#define O_PIC_reloc O_md1
|
||||
|
||||
#define TC_CASE_SENSITIVE
|
||||
|
||||
extern const char metag_symbol_chars[];
|
||||
#define tc_symbol_chars metag_symbol_chars
|
@ -306,6 +306,9 @@ case ${generic_target} in
|
||||
|
||||
mep-*-elf) fmt=elf ;;
|
||||
|
||||
metag-*-elf) fmt=elf ;;
|
||||
metag-*-linux*) fmt=elf em=linux ;;
|
||||
|
||||
mcore-*-elf) fmt=elf ;;
|
||||
mcore-*-pe) fmt=coff em=pe bfd_gas=yes ;;
|
||||
|
||||
|
@ -68,6 +68,7 @@ CPU_DOCS = \
|
||||
c-m32r.texi \
|
||||
c-m68hc11.texi \
|
||||
c-m68k.texi \
|
||||
c-metag.texi \
|
||||
c-microblaze.texi \
|
||||
c-mips.texi \
|
||||
c-mmix.texi \
|
||||
|
@ -310,6 +310,7 @@ CPU_DOCS = \
|
||||
c-m32r.texi \
|
||||
c-m68hc11.texi \
|
||||
c-m68k.texi \
|
||||
c-metag.texi \
|
||||
c-microblaze.texi \
|
||||
c-mips.texi \
|
||||
c-mmix.texi \
|
||||
|
@ -52,6 +52,7 @@
|
||||
@set M68HC11
|
||||
@set M680X0
|
||||
@set MCORE
|
||||
@set METAG
|
||||
@set MICROBLAZE
|
||||
@set MIPS
|
||||
@set MMIX
|
||||
|
@ -387,6 +387,11 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
|
||||
[@b{-jsri2bsr}] [@b{-sifilter}] [@b{-relax}]
|
||||
[@b{-mcpu=[210|340]}]
|
||||
@end ifset
|
||||
@ifset METAG
|
||||
|
||||
@emph{Target Meta options:}
|
||||
[@b{-mcpu=@var{cpu}}] [@b{-mfpu=@var{cpu}}] [@b{-mdsp=@var{cpu}}]
|
||||
@end ifset
|
||||
@ifset MICROBLAZE
|
||||
@emph{Target MICROBLAZE options:}
|
||||
@c MicroBlaze has no machine-dependent assembler options.
|
||||
@ -1372,7 +1377,28 @@ Assemble for a little endian target.
|
||||
|
||||
@end table
|
||||
@end ifset
|
||||
@c man end
|
||||
|
||||
@ifset METAG
|
||||
|
||||
@ifclear man
|
||||
@xref{Meta Options}, for the options available when @value{AS} is configured
|
||||
for a Meta processor.
|
||||
@end ifclear
|
||||
|
||||
@ifset man
|
||||
@c man begin OPTIONS
|
||||
The following options are available when @value{AS} is configured for a
|
||||
Meta processor.
|
||||
@c man end
|
||||
@c man begin INCLUDE
|
||||
@include c-metag.texi
|
||||
@c ended inside the included file
|
||||
@end ifset
|
||||
|
||||
@end ifset
|
||||
|
||||
@c man begin OPTIONS
|
||||
@ifset MMIX
|
||||
See the info pages for documentation of the MMIX-specific options.
|
||||
@end ifset
|
||||
@ -7018,6 +7044,9 @@ subject, see the hardware manufacturer's manual.
|
||||
@ifset M68HC11
|
||||
* M68HC11-Dependent:: M68HC11 and 68HC12 Dependent Features
|
||||
@end ifset
|
||||
@ifset METAG
|
||||
* Meta-Dependent :: Meta Dependent Features
|
||||
@end ifset
|
||||
@ifset MICROBLAZE
|
||||
* MicroBlaze-Dependent:: MICROBLAZE Dependent Features
|
||||
@end ifset
|
||||
@ -7221,6 +7250,10 @@ family.
|
||||
@include c-m68hc11.texi
|
||||
@end ifset
|
||||
|
||||
@ifset METAG
|
||||
@include c-metag.texi
|
||||
@end ifset
|
||||
|
||||
@ifset MICROBLAZE
|
||||
@include c-microblaze.texi
|
||||
@end ifset
|
||||
|
82
gas/doc/c-metag.texi
Normal file
82
gas/doc/c-metag.texi
Normal file
@ -0,0 +1,82 @@
|
||||
@c Copyright 2013 Free Software Foundation, Inc.
|
||||
@c Contributed by Imagination Technologies Ltd.
|
||||
@c This is part of the GAS manual.
|
||||
@c For copying conditions, see the file as.texinfo.
|
||||
@ifset GENERIC
|
||||
@page
|
||||
@node Meta-Dependent
|
||||
@chapter Meta Dependent Features
|
||||
@end ifset
|
||||
@ifclear GENERIC
|
||||
@node Machine Dependencies
|
||||
@chapter Meta Dependent Features
|
||||
@end ifclear
|
||||
|
||||
@cindex Meta support
|
||||
@menu
|
||||
* Meta Options:: Options
|
||||
* Meta Syntax:: Meta Assembler Syntax
|
||||
@end menu
|
||||
|
||||
@node Meta Options
|
||||
@section Options
|
||||
|
||||
@cindex options for Meta
|
||||
@cindex Meta options
|
||||
@cindex architectures, Meta
|
||||
@cindex Meta architectures
|
||||
|
||||
The Imagination Technologies Meta architecture is implemented in a
|
||||
number of versions, with each new version adding new features such as
|
||||
instructions and registers. For precise details of what instructions
|
||||
each core supports, please see the chip's technical reference manual.
|
||||
|
||||
The following table lists all available Meta options.
|
||||
|
||||
@table @code
|
||||
@item -mcpu=metac11
|
||||
Generate code for Meta 1.1.
|
||||
|
||||
@item -mcpu=metac12
|
||||
Generate code for Meta 1.2.
|
||||
|
||||
@item -mcpu=metac21
|
||||
Generate code for Meta 2.1.
|
||||
|
||||
@item -mfpu=metac21
|
||||
Allow code to use FPU hardware of Meta 2.1.
|
||||
|
||||
@end table
|
||||
|
||||
@node Meta Syntax
|
||||
@section Syntax
|
||||
|
||||
@menu
|
||||
* Meta-Chars:: Special Characters
|
||||
* Meta-Regs:: Register Names
|
||||
@end menu
|
||||
|
||||
@node Meta-Chars
|
||||
@subsection Special Characters
|
||||
|
||||
@cindex line comment character, Meta
|
||||
@cindex Meta line comment character
|
||||
@samp{!} is the line comment character.
|
||||
|
||||
@cindex line separator, Meta
|
||||
@cindex statement separator, Meta
|
||||
@cindex Meta line separator
|
||||
You can use @samp{;} instead of a newline to separate statements.
|
||||
|
||||
@cindex symbol names, @samp{$} in
|
||||
@cindex @code{$} in symbol names
|
||||
Since @samp{$} has no special meaning, you may use it in symbol names.
|
||||
|
||||
@node Meta-Regs
|
||||
@subsection Register Names
|
||||
|
||||
@cindex Meta registers
|
||||
@cindex registers, Meta
|
||||
Registers can be specified either using their mnemonic names, such as
|
||||
@samp{D0Re0}, or using the unit plus register number separated by a @samp{.},
|
||||
such as @samp{D0.0}.
|
@ -1,3 +1,29 @@
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* gas/metag/labelarithmetic.d: New file.
|
||||
* gas/metag/labelarithmetic.s: New file.
|
||||
* gas/metag/metacore12.d: New file.
|
||||
* gas/metag/metacore12.s: New file.
|
||||
* gas/metag/metacore21-invalid.l: New file.
|
||||
* gas/metag/metacore21-invalid.s: New file.
|
||||
* gas/metag/metacore21.d: New file.
|
||||
* gas/metag/metacore21.s: New file.
|
||||
* gas/metag/metacore21ext.d: New file.
|
||||
* gas/metag/metacore21ext.s: New file.
|
||||
* gas/metag/metadsp21-invalid.l: New file.
|
||||
* gas/metag/metadsp21-invalid.s: New file.
|
||||
* gas/metag/metadsp21.d: New file.
|
||||
* gas/metag/metadsp21.s: New file.
|
||||
* gas/metag/metadsp21ext.d: New file.
|
||||
* gas/metag/metadsp21ext.s: New file.
|
||||
* gas/metag/metafpu21.d: New file.
|
||||
* gas/metag/metafpu21.s: New file.
|
||||
* gas/metag/metafpu21ext.d: New file.
|
||||
* gas/metag/metafpu21ext.s: New file.
|
||||
* gas/metag/metag.exp: New file.
|
||||
* gas/metag/tls.d: New file.
|
||||
* gas/metag/tls.s: New file.
|
||||
|
||||
2013-01-08 Yufeng Zhang <yufeng.zhang@arm.com>
|
||||
|
||||
* gas/aarch64/diagnostic.s: Add test.
|
||||
|
@ -1,3 +1,7 @@
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* dis-asm.h (print_insn_metag): New declaration.
|
||||
|
||||
2012-12-18 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
PR other/54324
|
||||
|
@ -267,6 +267,7 @@ extern int print_insn_m68k (bfd_vma, disassemble_info *);
|
||||
extern int print_insn_m88k (bfd_vma, disassemble_info *);
|
||||
extern int print_insn_mcore (bfd_vma, disassemble_info *);
|
||||
extern int print_insn_mep (bfd_vma, disassemble_info *);
|
||||
extern int print_insn_metag (bfd_vma, disassemble_info *);
|
||||
extern int print_insn_microblaze (bfd_vma, disassemble_info *);
|
||||
extern int print_insn_mmix (bfd_vma, disassemble_info *);
|
||||
extern int print_insn_mn10200 (bfd_vma, disassemble_info *);
|
||||
|
@ -1,3 +1,8 @@
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* common.h: Fix case of "Meta".
|
||||
* metag.h: New file.
|
||||
|
||||
2013-01-08 Yufeng Zhang <yufeng.zhang@arm.com>
|
||||
|
||||
* common.h (NT_ARM_TLS, NT_ARM_HW_BREAK, NT_ARM_HW_WATCH): New macro
|
||||
|
@ -279,7 +279,7 @@
|
||||
#define EM_MANIK 171 /* M2000 Reconfigurable RISC Microprocessor */
|
||||
#define EM_CRAYNV2 172 /* Cray Inc. NV2 vector architecture */
|
||||
#define EM_RX 173 /* Renesas RX family */
|
||||
#define EM_METAG 174 /* Imagination Technologies META processor architecture */
|
||||
#define EM_METAG 174 /* Imagination Technologies Meta processor architecture */
|
||||
#define EM_MCST_ELBRUS 175 /* MCST Elbrus general purpose hardware architecture */
|
||||
#define EM_ECOG16 176 /* Cyan Technology eCOG16 family */
|
||||
#define EM_CR16 177 /* National Semiconductor CompactRISC 16-bit processor */
|
||||
|
91
include/elf/metag.h
Normal file
91
include/elf/metag.h
Normal file
@ -0,0 +1,91 @@
|
||||
/* Meta ELF support for BFD.
|
||||
Copyright (C) 2013 Free Software Foundation, Inc.
|
||||
Contributed by Imagination Technologies Ltd.
|
||||
|
||||
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, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
#ifndef _ELF_METAG_H
|
||||
#define _ELF_METAG_H
|
||||
|
||||
#include "elf/reloc-macros.h"
|
||||
|
||||
/* Relocation types. */
|
||||
|
||||
START_RELOC_NUMBERS (elf_metag_reloc_type)
|
||||
RELOC_NUMBER (R_METAG_HIADDR16, 0)
|
||||
RELOC_NUMBER (R_METAG_LOADDR16, 1)
|
||||
RELOC_NUMBER (R_METAG_ADDR32, 2)
|
||||
RELOC_NUMBER (R_METAG_NONE, 3)
|
||||
RELOC_NUMBER (R_METAG_RELBRANCH, 4)
|
||||
RELOC_NUMBER (R_METAG_GETSETOFF, 5)
|
||||
|
||||
/* Backward compatability */
|
||||
RELOC_NUMBER (R_METAG_REG32OP1, 6)
|
||||
RELOC_NUMBER (R_METAG_REG32OP2, 7)
|
||||
RELOC_NUMBER (R_METAG_REG32OP3, 8)
|
||||
RELOC_NUMBER (R_METAG_REG16OP1, 9)
|
||||
RELOC_NUMBER (R_METAG_REG16OP2, 10)
|
||||
RELOC_NUMBER (R_METAG_REG16OP3, 11)
|
||||
RELOC_NUMBER (R_METAG_REG32OP4, 12)
|
||||
|
||||
RELOC_NUMBER (R_METAG_HIOG, 13)
|
||||
RELOC_NUMBER (R_METAG_LOOG, 14)
|
||||
|
||||
RELOC_NUMBER (R_METAG_REL8, 15)
|
||||
RELOC_NUMBER (R_METAG_REL16, 16)
|
||||
|
||||
/* GNU */
|
||||
RELOC_NUMBER (R_METAG_GNU_VTINHERIT,30)
|
||||
RELOC_NUMBER (R_METAG_GNU_VTENTRY, 31)
|
||||
|
||||
/* PIC relocations */
|
||||
RELOC_NUMBER (R_METAG_HI16_GOTOFF, 32)
|
||||
RELOC_NUMBER (R_METAG_LO16_GOTOFF, 33)
|
||||
RELOC_NUMBER (R_METAG_GETSET_GOTOFF,34)
|
||||
RELOC_NUMBER (R_METAG_GETSET_GOT, 35)
|
||||
RELOC_NUMBER (R_METAG_HI16_GOTPC, 36)
|
||||
RELOC_NUMBER (R_METAG_LO16_GOTPC, 37)
|
||||
RELOC_NUMBER (R_METAG_HI16_PLT, 38)
|
||||
RELOC_NUMBER (R_METAG_LO16_PLT, 39)
|
||||
RELOC_NUMBER (R_METAG_RELBRANCH_PLT,40)
|
||||
RELOC_NUMBER (R_METAG_GOTOFF, 41)
|
||||
RELOC_NUMBER (R_METAG_PLT, 42)
|
||||
RELOC_NUMBER (R_METAG_COPY, 43)
|
||||
RELOC_NUMBER (R_METAG_JMP_SLOT, 44)
|
||||
RELOC_NUMBER (R_METAG_RELATIVE, 45)
|
||||
RELOC_NUMBER (R_METAG_GLOB_DAT, 46)
|
||||
|
||||
/* TLS relocations */
|
||||
RELOC_NUMBER (R_METAG_TLS_GD, 47)
|
||||
RELOC_NUMBER (R_METAG_TLS_LDM, 48)
|
||||
RELOC_NUMBER (R_METAG_TLS_LDO_HI16, 49)
|
||||
RELOC_NUMBER (R_METAG_TLS_LDO_LO16, 50)
|
||||
RELOC_NUMBER (R_METAG_TLS_LDO, 51)
|
||||
RELOC_NUMBER (R_METAG_TLS_IE, 52)
|
||||
RELOC_NUMBER (R_METAG_TLS_IENONPIC, 53)
|
||||
RELOC_NUMBER (R_METAG_TLS_IENONPIC_HI16,54)
|
||||
RELOC_NUMBER (R_METAG_TLS_IENONPIC_LO16,55)
|
||||
RELOC_NUMBER (R_METAG_TLS_TPOFF, 56)
|
||||
RELOC_NUMBER (R_METAG_TLS_DTPMOD, 57)
|
||||
RELOC_NUMBER (R_METAG_TLS_DTPOFF, 58)
|
||||
RELOC_NUMBER (R_METAG_TLS_LE, 59)
|
||||
RELOC_NUMBER (R_METAG_TLS_LE_HI16, 60)
|
||||
RELOC_NUMBER (R_METAG_TLS_LE_LO16, 61)
|
||||
|
||||
END_RELOC_NUMBERS (R_METAG_MAX)
|
||||
|
||||
#endif /* _ELF_METAG_H */
|
@ -1,3 +1,7 @@
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* metag.h: New file.
|
||||
|
||||
2013-01-07 Kaushik Phatak <kaushik.phatak@kpitcummins.com>
|
||||
|
||||
* cr16.h (make_instruction): Rename to cr16_make_instruction.
|
||||
|
2079
include/opcode/metag.h
Normal file
2079
include/opcode/metag.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,11 @@
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* Makefile.am: Add Meta.
|
||||
* Makefile.in: Regenerate.
|
||||
* configure.tgt: Add Meta.
|
||||
* emulparams/elf32metag.sh: New file.
|
||||
* emultempl/metagelf.em: New file.
|
||||
|
||||
2013-01-09 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* emulparams/elf_x86_64.sh (LARGE_BSS_AFTER_BSS): Define.
|
||||
|
@ -257,6 +257,7 @@ ALL_EMULATION_SOURCES = \
|
||||
eelf32mb_linux.c \
|
||||
eelf32mcore.c \
|
||||
eelf32mep.c \
|
||||
eelf32metag.c \
|
||||
eelf32microblazeel.c \
|
||||
eelf32microblaze.c \
|
||||
eelf32mipswindiss.c \
|
||||
@ -1157,6 +1158,10 @@ eelf32mcore.c: $(srcdir)/emulparams/elf32mcore.sh \
|
||||
eelf32mep.c: $(srcdir)/emulparams/elf32mep.sh \
|
||||
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/mep.sc ${GEN_DEPENDS}
|
||||
${GENSCRIPTS} elf32mep "$(tdir_mep)"
|
||||
eelf32metag.c: $(srcdir)/emulparams/elf32metag.sh \
|
||||
$(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/metagelf.em \
|
||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
||||
${GENSCRIPTS} elf32metag "$(tdir_metag)"
|
||||
eelf32microblazeel.c: $(srcdir)/emulparams/elf32microblazeel.sh \
|
||||
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfmicroblaze.sc ${GEN_DEPENDS}
|
||||
${GENSCRIPTS} elf32microblazeel "$(tdir_microblazeel)"
|
||||
|
@ -565,6 +565,7 @@ ALL_EMULATION_SOURCES = \
|
||||
eelf32mb_linux.c \
|
||||
eelf32mcore.c \
|
||||
eelf32mep.c \
|
||||
eelf32metag.c \
|
||||
eelf32microblazeel.c \
|
||||
eelf32microblaze.c \
|
||||
eelf32mipswindiss.c \
|
||||
@ -1198,6 +1199,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32mb_linux.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32mcore.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32mep.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32metag.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32microblaze.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32microblazeel.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32mipswindiss.Po@am__quote@
|
||||
@ -2640,6 +2642,10 @@ eelf32mcore.c: $(srcdir)/emulparams/elf32mcore.sh \
|
||||
eelf32mep.c: $(srcdir)/emulparams/elf32mep.sh \
|
||||
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/mep.sc ${GEN_DEPENDS}
|
||||
${GENSCRIPTS} elf32mep "$(tdir_mep)"
|
||||
eelf32metag.c: $(srcdir)/emulparams/elf32metag.sh \
|
||||
$(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/metagelf.em \
|
||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
||||
${GENSCRIPTS} elf32metag "$(tdir_metag)"
|
||||
eelf32microblazeel.c: $(srcdir)/emulparams/elf32microblazeel.sh \
|
||||
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfmicroblaze.sc ${GEN_DEPENDS}
|
||||
${GENSCRIPTS} elf32microblazeel "$(tdir_microblazeel)"
|
||||
|
2
ld/NEWS
2
ld/NEWS
@ -1,5 +1,7 @@
|
||||
-*- text -*-
|
||||
|
||||
* Add support for the Imagination Technologies Meta processor.
|
||||
|
||||
Changes in 2.23:
|
||||
|
||||
* Enable compressed debug section feature for x86/x86_64 pe-coff.
|
||||
|
@ -415,6 +415,7 @@ mcore-*-pe) targ_emul=mcorepe ;
|
||||
mcore-*-elf) targ_emul=elf32mcore
|
||||
;;
|
||||
mep-*-elf) targ_emul=elf32mep ;;
|
||||
metag-*-*) targ_emul=elf32metag ;;
|
||||
microblazeel*-linux*) targ_emul="elf32mbel_linux"
|
||||
targ_extra_emuls="elf32mb_linux"
|
||||
;;
|
||||
|
30
ld/emulparams/elf32metag.sh
Normal file
30
ld/emulparams/elf32metag.sh
Normal file
@ -0,0 +1,30 @@
|
||||
MACHINE=
|
||||
SCRIPT_NAME=elf
|
||||
TEMPLATE_NAME=elf32
|
||||
GENERATE_SHLIB_SCRIPT=yes
|
||||
GENERATE_PIE_SCRIPT=yes
|
||||
OUTPUT_FORMAT="elf32-metag"
|
||||
TEXT_START_ADDR=0x10005000
|
||||
ARCH=metag
|
||||
MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
|
||||
ENTRY=__start
|
||||
NOP=0xa0fffffe
|
||||
EXTRA_EM_FILE=metagelf
|
||||
USER_LABEL_PREFIX=_
|
||||
OTHER_SECTIONS="
|
||||
.core_text 0x80000000 :
|
||||
{
|
||||
*(.core_text)
|
||||
}
|
||||
.core_data 0x82000000 :
|
||||
{
|
||||
*(.core_data)
|
||||
*(.core_rodata)
|
||||
}
|
||||
.internal_memory 0xe0200000 :
|
||||
{
|
||||
*(.internal_text)
|
||||
*(.internal_data)
|
||||
*(.internal_rodata)
|
||||
}
|
||||
"
|
337
ld/emultempl/metagelf.em
Normal file
337
ld/emultempl/metagelf.em
Normal file
@ -0,0 +1,337 @@
|
||||
# This shell script emits a C file. -*- C -*-
|
||||
# Copyright 2013 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Binutils.
|
||||
#
|
||||
# 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, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
# MA 02110-1301, USA.
|
||||
#
|
||||
|
||||
# This file is sourced from elf32.em, and defines extra metagelf
|
||||
# specific routines. Taken from hppaelf.em.
|
||||
#
|
||||
fragment <<EOF
|
||||
|
||||
#include "ldctor.h"
|
||||
#include "elf32-metag.h"
|
||||
|
||||
|
||||
/* Fake input file for stubs. */
|
||||
static lang_input_statement_type *stub_file;
|
||||
|
||||
/* Whether we need to call metag_layout_sections_again. */
|
||||
static int need_laying_out = 0;
|
||||
|
||||
/* Maximum size of a group of input sections that can be handled by
|
||||
one stub section. A value of +/-1 indicates the bfd back-end
|
||||
should use a suitable default size. */
|
||||
static bfd_signed_vma group_size = 1;
|
||||
|
||||
/* This is called before the input files are opened. We create a new
|
||||
fake input file to hold the stub sections. */
|
||||
|
||||
static void
|
||||
metagelf_create_output_section_statements (void)
|
||||
{
|
||||
extern const bfd_target bfd_elf32_metag_vec;
|
||||
|
||||
if (link_info.output_bfd->xvec != &bfd_elf32_metag_vec)
|
||||
return;
|
||||
|
||||
stub_file = lang_add_input_file ("linker stubs",
|
||||
lang_input_file_is_fake_enum,
|
||||
NULL);
|
||||
stub_file->the_bfd = bfd_create ("linker stubs", link_info.output_bfd);
|
||||
if (stub_file->the_bfd == NULL
|
||||
|| ! bfd_set_arch_mach (stub_file->the_bfd,
|
||||
bfd_get_arch (link_info.output_bfd),
|
||||
bfd_get_mach (link_info.output_bfd)))
|
||||
{
|
||||
einfo ("%X%P: can not create BFD %E\n");
|
||||
return;
|
||||
}
|
||||
|
||||
stub_file->the_bfd->flags |= BFD_LINKER_CREATED;
|
||||
ldlang_add_file (stub_file);
|
||||
}
|
||||
|
||||
|
||||
struct hook_stub_info
|
||||
{
|
||||
lang_statement_list_type add;
|
||||
asection *input_section;
|
||||
};
|
||||
|
||||
/* Traverse the linker tree to find the spot where the stub goes. */
|
||||
|
||||
static bfd_boolean
|
||||
hook_in_stub (struct hook_stub_info *info, lang_statement_union_type **lp)
|
||||
{
|
||||
lang_statement_union_type *l;
|
||||
bfd_boolean ret;
|
||||
|
||||
for (; (l = *lp) != NULL; lp = &l->header.next)
|
||||
{
|
||||
switch (l->header.type)
|
||||
{
|
||||
case lang_constructors_statement_enum:
|
||||
ret = hook_in_stub (info, &constructor_list.head);
|
||||
if (ret)
|
||||
return ret;
|
||||
break;
|
||||
|
||||
case lang_output_section_statement_enum:
|
||||
ret = hook_in_stub (info,
|
||||
&l->output_section_statement.children.head);
|
||||
if (ret)
|
||||
return ret;
|
||||
break;
|
||||
|
||||
case lang_wild_statement_enum:
|
||||
ret = hook_in_stub (info, &l->wild_statement.children.head);
|
||||
if (ret)
|
||||
return ret;
|
||||
break;
|
||||
|
||||
case lang_group_statement_enum:
|
||||
ret = hook_in_stub (info, &l->group_statement.children.head);
|
||||
if (ret)
|
||||
return ret;
|
||||
break;
|
||||
|
||||
case lang_input_section_enum:
|
||||
if (l->input_section.section == info->input_section)
|
||||
{
|
||||
/* We've found our section. Insert the stub immediately
|
||||
before its associated input section. */
|
||||
*lp = info->add.head;
|
||||
*(info->add.tail) = l;
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
case lang_data_statement_enum:
|
||||
case lang_reloc_statement_enum:
|
||||
case lang_object_symbols_statement_enum:
|
||||
case lang_output_statement_enum:
|
||||
case lang_target_statement_enum:
|
||||
case lang_input_statement_enum:
|
||||
case lang_assignment_statement_enum:
|
||||
case lang_padding_statement_enum:
|
||||
case lang_address_statement_enum:
|
||||
case lang_fill_statement_enum:
|
||||
break;
|
||||
|
||||
default:
|
||||
FAIL ();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/* Call-back for elf_metag_size_stubs. */
|
||||
|
||||
/* Create a new stub section, and arrange for it to be linked
|
||||
immediately before INPUT_SECTION. */
|
||||
|
||||
static asection *
|
||||
metagelf_add_stub_section (const char *stub_sec_name, asection *input_section)
|
||||
{
|
||||
asection *stub_sec;
|
||||
flagword flags;
|
||||
asection *output_section;
|
||||
const char *secname;
|
||||
lang_output_section_statement_type *os;
|
||||
struct hook_stub_info info;
|
||||
|
||||
flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE
|
||||
| SEC_HAS_CONTENTS | SEC_RELOC | SEC_IN_MEMORY | SEC_KEEP);
|
||||
stub_sec = bfd_make_section_anyway_with_flags (stub_file->the_bfd,
|
||||
stub_sec_name, flags);
|
||||
if (stub_sec == NULL)
|
||||
goto err_ret;
|
||||
|
||||
output_section = input_section->output_section;
|
||||
secname = bfd_get_section_name (output_section->owner, output_section);
|
||||
os = lang_output_section_find (secname);
|
||||
|
||||
info.input_section = input_section;
|
||||
lang_list_init (&info.add);
|
||||
lang_add_section (&info.add, stub_sec, NULL, os);
|
||||
|
||||
if (info.add.head == NULL)
|
||||
goto err_ret;
|
||||
|
||||
if (hook_in_stub (&info, &os->children.head))
|
||||
return stub_sec;
|
||||
|
||||
err_ret:
|
||||
einfo ("%X%P: can not make stub section: %E\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/* Another call-back for elf_metag_size_stubs. */
|
||||
|
||||
static void
|
||||
metagelf_layout_sections_again (void)
|
||||
{
|
||||
/* If we have changed sizes of the stub sections, then we need
|
||||
to recalculate all the section offsets. This may mean we need to
|
||||
add even more stubs. */
|
||||
gld${EMULATION_NAME}_map_segments (TRUE);
|
||||
need_laying_out = -1;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
build_section_lists (lang_statement_union_type *statement)
|
||||
{
|
||||
if (statement->header.type == lang_input_section_enum)
|
||||
{
|
||||
asection *i = statement->input_section.section;
|
||||
|
||||
if (!((lang_input_statement_type *) i->owner->usrdata)->flags.just_syms
|
||||
&& (i->flags & SEC_EXCLUDE) == 0
|
||||
&& i->output_section != NULL
|
||||
&& i->output_section->owner == link_info.output_bfd)
|
||||
{
|
||||
elf_metag_next_input_section (&link_info, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* For Meta we use this opportunity to build linker stubs. */
|
||||
|
||||
static void
|
||||
gld${EMULATION_NAME}_after_allocation (void)
|
||||
{
|
||||
/* bfd_elf_discard_info just plays with data and debugging sections,
|
||||
ie. doesn't affect code size, so we can delay resizing the
|
||||
sections. It's likely we'll resize everything in the process of
|
||||
adding stubs. */
|
||||
if (bfd_elf_discard_info (link_info.output_bfd, &link_info))
|
||||
need_laying_out = 1;
|
||||
|
||||
/* If generating a relocatable output file, then we don't
|
||||
have to examine the relocs. */
|
||||
if (stub_file != NULL && !link_info.relocatable)
|
||||
{
|
||||
int ret = elf_metag_setup_section_lists (link_info.output_bfd,
|
||||
&link_info);
|
||||
|
||||
if (ret != 0)
|
||||
{
|
||||
if (ret < 0)
|
||||
{
|
||||
einfo ("%X%P: can not size stub section: %E\n");
|
||||
return;
|
||||
}
|
||||
|
||||
lang_for_each_statement (build_section_lists);
|
||||
|
||||
/* Call into the BFD backend to do the real work. */
|
||||
if (! elf_metag_size_stubs (link_info.output_bfd,
|
||||
stub_file->the_bfd,
|
||||
&link_info,
|
||||
group_size,
|
||||
&metagelf_add_stub_section,
|
||||
&metagelf_layout_sections_again))
|
||||
{
|
||||
einfo ("%X%P: can not size stub section: %E\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (need_laying_out != -1)
|
||||
gld${EMULATION_NAME}_map_segments (need_laying_out);
|
||||
|
||||
if (! link_info.relocatable)
|
||||
{
|
||||
/* Now build the linker stubs. */
|
||||
if (stub_file != NULL && stub_file->the_bfd->sections != NULL)
|
||||
{
|
||||
if (! elf_metag_build_stubs (&link_info))
|
||||
einfo ("%X%P: can not build stubs: %E\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Avoid processing the fake stub_file in vercheck, stat_needed and
|
||||
check_needed routines. */
|
||||
|
||||
static void (*real_func) (lang_input_statement_type *);
|
||||
|
||||
static void metag_for_each_input_file_wrapper (lang_input_statement_type *l)
|
||||
{
|
||||
if (l != stub_file)
|
||||
(*real_func) (l);
|
||||
}
|
||||
|
||||
static void
|
||||
metag_lang_for_each_input_file (void (*func) (lang_input_statement_type *))
|
||||
{
|
||||
real_func = func;
|
||||
lang_for_each_input_file (&metag_for_each_input_file_wrapper);
|
||||
}
|
||||
|
||||
#define lang_for_each_input_file metag_lang_for_each_input_file
|
||||
|
||||
EOF
|
||||
|
||||
# Define some shell vars to insert bits of code into the standard elf
|
||||
# parse_args and list_options functions.
|
||||
#
|
||||
PARSE_AND_LIST_PROLOGUE='
|
||||
#define OPTION_STUBGROUP_SIZE 301
|
||||
'
|
||||
|
||||
PARSE_AND_LIST_LONGOPTS='
|
||||
{ "stub-group-size", required_argument, NULL, OPTION_STUBGROUP_SIZE },
|
||||
'
|
||||
|
||||
PARSE_AND_LIST_OPTIONS='
|
||||
fprintf (file, _("\
|
||||
--stub-group-size=N Maximum size of a group of input sections that\n\
|
||||
can be handled by one stub section. A negative\n\
|
||||
value locates all stubs before their branches\n\
|
||||
(with a group size of -N), while a positive\n\
|
||||
value allows two groups of input sections, one\n\
|
||||
before, and one after each stub section.\n\
|
||||
Values of +/-1 indicate the linker should\n\
|
||||
choose suitable defaults.\n"
|
||||
));
|
||||
'
|
||||
|
||||
PARSE_AND_LIST_ARGS_CASES='
|
||||
case OPTION_STUBGROUP_SIZE:
|
||||
{
|
||||
const char *end;
|
||||
group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
einfo (_("%P%F: invalid number `%s'\''\n"), optarg);
|
||||
}
|
||||
break;
|
||||
'
|
||||
|
||||
# Put these extra metagelf routines in ld_${EMULATION_NAME}_emulation
|
||||
#
|
||||
LDEMUL_AFTER_ALLOCATION=gld${EMULATION_NAME}_after_allocation
|
||||
LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=metagelf_create_output_section_statements
|
@ -1,3 +1,26 @@
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* ld-elf/merge.d: Mark Meta as xfail.
|
||||
* ld-gc/start.d: Skip this test on Meta.
|
||||
* ld-gc/personality.d: Skip this test on Meta.
|
||||
* ld-metag/external.s: New file.
|
||||
* ld-metag/metag.exp: New file.
|
||||
* ld-metag/pcrel.d: New file.
|
||||
* ld-metag/pcrel.s: New file.
|
||||
* ld-metag/shared.d: New file.
|
||||
* ld-metag/shared.r: New file.
|
||||
* ld-metag/shared.s: New file.
|
||||
* ld-metag/stub.d: New file.
|
||||
* ld-metag/stub.s: New file.
|
||||
* ld-metag/stub_pic_app.d: New file.
|
||||
* ld-metag/stub_pic_app.r: New file.
|
||||
* ld-metag/stub_pic_app.s: New file.
|
||||
* ld-metag/stub_pic_shared.d: New file.
|
||||
* ld-metag/stub_pic_shared.s: New file.
|
||||
* ld-metag/stub_shared.d: New file.
|
||||
* ld-metag/stub_shared.r: New file.
|
||||
* ld-metag/stub_shared.s: New file.
|
||||
|
||||
2013-01-08 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* ld-i386/export-class.exp: Restore (and reword) comment about
|
||||
|
@ -6,7 +6,7 @@
|
||||
#xfail: "i370-*-*" "i860-*-*" "i960-*-*" "ip2k-*-*" "iq2000-*-*" "lm32-*-*"
|
||||
#xfail: "mcore-*-*" "mn102*-*-*" "mips*-*-*" "ms1-*-*" "msp430-*-*" "mep-*-*"
|
||||
#xfail: "or32-*-*" "pj-*-*" "sparc*-*-*" "tic6x-*-*" "vax-*-*" "xstormy16-*-*"
|
||||
#xfail: "xtensa*-*-*"
|
||||
#xfail: "xtensa*-*-*" "metag-*-*"
|
||||
|
||||
.*: file format .*elf.*
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#name: --gc-sections with __gxx_personality
|
||||
#ld: --gc-sections -e main -L tmpdir -lpersonality
|
||||
#nm: -n
|
||||
#xfail: bfin-*-* cris*-*-* frv-*-* mn10300-*-* vax-*-* xtensa-*-*
|
||||
#xfail: bfin-*-* cris*-*-* frv-*-* mn10300-*-* vax-*-* xtensa-*-* metag-*-*
|
||||
# above targets don't support cfi
|
||||
|
||||
#failif
|
||||
|
@ -2,7 +2,7 @@
|
||||
#ld: --gc-sections -e _start
|
||||
#nm: -n
|
||||
#target: *-*-linux* *-*-gnu*
|
||||
#notarget: *-*-*aout *-*-*oldld frv-*-linux*
|
||||
#notarget: *-*-*aout *-*-*oldld frv-*-linux* metag-*-linux*
|
||||
|
||||
#...
|
||||
[0-9a-f]+ D +__start__foo
|
||||
|
@ -1,3 +1,12 @@
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* Makefile.am: Add Meta.
|
||||
* configure.in: Add Meta.
|
||||
* disassemble.c: Add Meta support.
|
||||
* metag-dis.c: New file.
|
||||
* Makefile.in: Regenerate.
|
||||
* configure: Regenerate.
|
||||
|
||||
2013-01-07 Kaushik Phatak <kaushik.phatak@kpitcummins.com>
|
||||
|
||||
* cr16-dis.c (make_instruction): Rename to cr16_make_instruction.
|
||||
|
@ -189,6 +189,7 @@ TARGET_LIBOPCODES_CFILES = \
|
||||
mep-dis.c \
|
||||
mep-ibld.c \
|
||||
mep-opc.c \
|
||||
metag-dis.c \
|
||||
microblaze-dis.c \
|
||||
micromips-opc.c \
|
||||
mips-dis.c \
|
||||
|
@ -461,6 +461,7 @@ TARGET_LIBOPCODES_CFILES = \
|
||||
mep-dis.c \
|
||||
mep-ibld.c \
|
||||
mep-opc.c \
|
||||
metag-dis.c \
|
||||
microblaze-dis.c \
|
||||
micromips-opc.c \
|
||||
mips-dis.c \
|
||||
@ -857,6 +858,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mep-dis.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mep-ibld.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mep-opc.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metag-dis.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/microblaze-dis.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/micromips-opc.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mips-dis.Plo@am__quote@
|
||||
|
1
opcodes/configure
vendored
1
opcodes/configure
vendored
@ -12532,6 +12532,7 @@ if test x${all_targets} = xfalse ; then
|
||||
bfd_m88k_arch) ta="$ta m88k-dis.lo" ;;
|
||||
bfd_mcore_arch) ta="$ta mcore-dis.lo" ;;
|
||||
bfd_mep_arch) ta="$ta mep-asm.lo mep-desc.lo mep-dis.lo mep-ibld.lo mep-opc.lo" using_cgen=yes ;;
|
||||
bfd_metag_arch) ta="$ta metag-dis.lo" ;;
|
||||
bfd_microblaze_arch) ta="$ta microblaze-dis.lo" ;;
|
||||
bfd_mips_arch) ta="$ta mips-dis.lo mips-opc.lo mips16-opc.lo micromips-opc.lo" ;;
|
||||
bfd_mmix_arch) ta="$ta mmix-dis.lo mmix-opc.lo" ;;
|
||||
|
@ -285,6 +285,7 @@ if test x${all_targets} = xfalse ; then
|
||||
bfd_m88k_arch) ta="$ta m88k-dis.lo" ;;
|
||||
bfd_mcore_arch) ta="$ta mcore-dis.lo" ;;
|
||||
bfd_mep_arch) ta="$ta mep-asm.lo mep-desc.lo mep-dis.lo mep-ibld.lo mep-opc.lo" using_cgen=yes ;;
|
||||
bfd_metag_arch) ta="$ta metag-dis.lo" ;;
|
||||
bfd_microblaze_arch) ta="$ta microblaze-dis.lo" ;;
|
||||
bfd_mips_arch) ta="$ta mips-dis.lo mips-opc.lo mips16-opc.lo micromips-opc.lo" ;;
|
||||
bfd_mmix_arch) ta="$ta mmix-dis.lo mmix-opc.lo" ;;
|
||||
|
@ -58,6 +58,7 @@
|
||||
#define ARCH_m88k
|
||||
#define ARCH_mcore
|
||||
#define ARCH_mep
|
||||
#define ARCH_metag
|
||||
#define ARCH_microblaze
|
||||
#define ARCH_mips
|
||||
#define ARCH_mmix
|
||||
@ -309,6 +310,11 @@ disassembler (abfd)
|
||||
disassemble = print_insn_mep;
|
||||
break;
|
||||
#endif
|
||||
#ifdef ARCH_metag
|
||||
case bfd_arch_metag:
|
||||
disassemble = print_insn_metag;
|
||||
break;
|
||||
#endif
|
||||
#ifdef ARCH_mips
|
||||
case bfd_arch_mips:
|
||||
if (bfd_big_endian (abfd))
|
||||
@ -581,6 +587,11 @@ disassemble_init_for_target (struct disassemble_info * info)
|
||||
info->skip_zeroes_at_end = 0;
|
||||
break;
|
||||
#endif
|
||||
#ifdef ARCH_metag
|
||||
case bfd_arch_metag:
|
||||
info->disassembler_needs_relocs = TRUE;
|
||||
break;
|
||||
#endif
|
||||
#ifdef ARCH_m32c
|
||||
case bfd_arch_m32c:
|
||||
/* This processor in fact is little endian. The value set here
|
||||
|
3384
opcodes/metag-dis.c
Normal file
3384
opcodes/metag-dis.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user