. bfd_arch_bfin, {* ADI Blackfin *}
.#define bfd_mach_bfin 1
. bfd_arch_cr16, {* National Semiconductor CompactRISC (ie CR16). *}
-@@ -454,6 +460,7 @@ extern const bfd_arch_info_type bfd_alph
+@@ -449,6 +455,7 @@ extern const bfd_arch_info_type bfd_alph
extern const bfd_arch_info_type bfd_arc_arch;
extern const bfd_arch_info_type bfd_arm_arch;
extern const bfd_arch_info_type bfd_avr_arch;
extern const bfd_arch_info_type bfd_bfin_arch;
extern const bfd_arch_info_type bfd_cr16_arch;
extern const bfd_arch_info_type bfd_cr16c_arch;
-@@ -526,6 +533,7 @@ static const bfd_arch_info_type * const
+@@ -520,6 +527,7 @@ static const bfd_arch_info_type * const
&bfd_arc_arch,
&bfd_arm_arch,
&bfd_avr_arch,
bfd_arch_bfin, /* ADI Blackfin */
#define bfd_mach_bfin 1
bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
-@@ -3748,6 +3754,88 @@ instructions */
+@@ -3743,6 +3749,88 @@ instructions */
instructions */
BFD_RELOC_AVR_6_ADIW,
cpu-bfin.lo \
cpu-cr16.lo \
cpu-cr16c.lo \
-@@ -247,6 +248,7 @@ BFD32_BACKENDS = \
+@@ -245,6 +246,7 @@ BFD32_BACKENDS = \
elf32-arc.lo \
elf32-arm.lo \
elf32-avr.lo \
elf32-bfin.lo \
elf32-cr16.lo \
elf32-cr16c.lo \
-@@ -1355,6 +1357,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
+@@ -1350,6 +1352,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
$(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
cpu-bfin.lo \
cpu-cr16.lo \
cpu-cr16c.lo \
-@@ -501,6 +502,7 @@ BFD32_BACKENDS = \
+@@ -499,6 +500,7 @@ BFD32_BACKENDS = \
elf32-arc.lo \
elf32-arm.lo \
elf32-avr.lo \
elf32-bfin.lo \
elf32-cr16.lo \
elf32-cr16c.lo \
-@@ -1939,6 +1941,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
+@@ -1934,6 +1936,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
$(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
extern const bfd_target bfd_elf32_bfin_vec;
extern const bfd_target bfd_elf32_bfinfdpic_vec;
extern const bfd_target bfd_elf32_big_generic_vec;
-@@ -898,6 +899,7 @@ static const bfd_target * const _bfd_tar
+@@ -896,6 +897,7 @@ static const bfd_target * const _bfd_tar
&bfd_efi_rtdrv_ia64_vec,
#endif
&bfd_elf32_avr_vec,
bfin*) cpu_type=bfin endian=little ;;
c4x*) cpu_type=tic4x ;;
cr16*) cpu_type=cr16 endian=little ;;
-@@ -134,6 +135,9 @@ case ${generic_target} in
+@@ -133,6 +134,9 @@ case ${generic_target} in
cr16-*-elf*) fmt=elf ;;
bfin \
cr16 \
cris \
-@@ -242,6 +243,7 @@ TARGET_CPU_CFILES = \
+@@ -241,6 +242,7 @@ TARGET_CPU_CFILES = \
config/tc-arc.c \
config/tc-arm.c \
config/tc-avr.c \
config/tc-bfin.c \
config/tc-cr16.c \
config/tc-cris.c \
-@@ -303,6 +305,7 @@ TARGET_CPU_HFILES = \
+@@ -301,6 +303,7 @@ TARGET_CPU_HFILES = \
config/tc-arc.h \
config/tc-arm.h \
config/tc-avr.h \
config/tc-bfin.h \
config/tc-cr16.h \
config/tc-cris.h \
-@@ -1075,6 +1078,11 @@ DEPTC_avr_elf = $(srcdir)/config/obj-elf
+@@ -1073,6 +1076,11 @@ DEPTC_avr_elf = $(srcdir)/config/obj-elf
$(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
$(INCDIR)/opcode/avr.h
DEPTC_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
$(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
-@@ -1511,6 +1519,11 @@ DEPOBJ_avr_elf = $(srcdir)/config/obj-el
+@@ -1501,6 +1509,11 @@ DEPOBJ_avr_elf = $(srcdir)/config/obj-el
$(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h $(INCDIR)/aout/aout64.h
DEPOBJ_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
$(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
-@@ -1884,6 +1897,9 @@ DEP_cr16_elf = $(srcdir)/config/obj-elf.
+@@ -1869,6 +1882,9 @@ DEP_cr16_elf = $(srcdir)/config/obj-elf.
$(INCDIR)/bfdlink.h $(srcdir)/config/tc-cr16.h dwarf2dbg.h \
$(srcdir)/config/obj-coff.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h
bfin \
cr16 \
cris \
-@@ -489,6 +490,7 @@ TARGET_CPU_CFILES = \
+@@ -488,6 +489,7 @@ TARGET_CPU_CFILES = \
config/tc-arc.c \
config/tc-arm.c \
config/tc-avr.c \
config/tc-bfin.c \
config/tc-cr16.c \
config/tc-cris.c \
-@@ -550,6 +552,7 @@ TARGET_CPU_HFILES = \
+@@ -548,6 +550,7 @@ TARGET_CPU_HFILES = \
config/tc-arc.h \
config/tc-arm.h \
config/tc-avr.h \
config/tc-bfin.h \
config/tc-cr16.h \
config/tc-cris.h \
-@@ -844,6 +847,12 @@ DEPTC_avr_elf = $(srcdir)/config/obj-elf
+@@ -841,6 +844,12 @@ DEPTC_avr_elf = $(srcdir)/config/obj-elf
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
$(INCDIR)/opcode/avr.h
DEPTC_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
$(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
-@@ -1359,6 +1368,12 @@ DEPOBJ_avr_elf = $(srcdir)/config/obj-el
+@@ -1349,6 +1358,12 @@ DEPOBJ_avr_elf = $(srcdir)/config/obj-el
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h $(INCDIR)/aout/aout64.h
DEPOBJ_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
$(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
-@@ -1814,6 +1829,10 @@ DEP_cr16_elf = $(srcdir)/config/obj-elf.
+@@ -1799,6 +1814,10 @@ DEP_cr16_elf = $(srcdir)/config/obj-elf.
$(srcdir)/config/obj-coff.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h
extern int print_insn_bfin (bfd_vma, disassemble_info *);
extern int print_insn_big_arm (bfd_vma, disassemble_info *);
extern int print_insn_big_mips (bfd_vma, disassemble_info *);
-@@ -293,7 +294,9 @@ extern void print_i386_disassembler_opti
+@@ -292,7 +293,9 @@ extern void print_i386_disassembler_opti
extern void print_mips_disassembler_options (FILE *);
extern void print_ppc_disassembler_options (FILE *);
extern void print_arm_disassembler_options (FILE *);
ecoff_i860.o \
ecoff_sparc.o \
eelf32_spu.o \
-@@ -648,6 +695,194 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
+@@ -646,6 +693,194 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr6 "$(tdir_avr2)"
ecoff_i860.o \
ecoff_sparc.o \
eelf32_spu.o \
-@@ -1480,6 +1527,194 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
+@@ -1478,6 +1525,194 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr6 "$(tdir_avr2)"
#define ARCH_bfin
#define ARCH_cr16
#define ARCH_cris
-@@ -129,6 +130,11 @@ disassembler (abfd)
+@@ -128,6 +129,11 @@ disassembler (abfd)
disassemble = print_insn_avr;
break;
#endif
#ifdef ARCH_bfin
case bfd_arch_bfin:
disassemble = print_insn_bfin;
-@@ -472,6 +478,9 @@ disassembler_usage (stream)
+@@ -466,6 +472,9 @@ disassembler_usage (stream)
#ifdef ARCH_i386
print_i386_disassembler_options (stream);
#endif
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
-@@ -5631,6 +5631,10 @@ bfd_elf32_arm_init_maps (bfd *abfd)
+@@ -5637,6 +5637,10 @@ bfd_elf32_arm_init_maps (bfd *abfd)
if (! is_arm_elf (abfd))
return;
--- a/gas/configure.tgt
+++ b/gas/configure.tgt
-@@ -431,6 +431,12 @@ case ${generic_target} in
+@@ -432,6 +432,12 @@ case ${generic_target} in
*-*-netware) fmt=elf em=netware ;;
esac
/* True if NAME is the recognized name of any SHT_MIPS_OPTIONS section.
Some IRIX system files do not use MIPS_ELF_OPTIONS_SECTION_NAME. */
#define MIPS_ELF_OPTIONS_SECTION_NAME_P(NAME) \
-@@ -7686,7 +7694,9 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
+@@ -7690,7 +7698,9 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
/* We need a stub, not a plt entry for the undefined
function. But we record it as if it needs plt. See
h->needs_plt = 1;
h->type = STT_FUNC;
}
-@@ -7793,6 +7803,8 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
+@@ -7796,6 +7806,8 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
case R_MIPS_32:
case R_MIPS_REL32:
case R_MIPS_64:
/* In VxWorks executables, references to external symbols
are handled using copy relocs or PLT stubs, so there's
no need to add a .rela.dyn entry for this relocation. */
-@@ -7848,11 +7860,21 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
+@@ -7851,11 +7863,21 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
case R_MIPS_GPREL16:
case R_MIPS_LITERAL:
case R_MIPS_GPREL32:
/* This relocation describes the C++ object vtable hierarchy.
Reconstruct it for later use during GC. */
case R_MIPS_GNU_VTINHERIT:
-@@ -7875,20 +7897,20 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
+@@ -7878,20 +7900,20 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
/* We must not create a stub for a symbol that has relocations
related to taking the function's address. This doesn't apply to
}
/* See if this reloc would need to refer to a MIPS16 hard-float stub,
-@@ -12601,7 +12623,9 @@ _bfd_mips_elf_merge_private_bfd_data (bf
+@@ -12607,7 +12629,9 @@ _bfd_mips_elf_merge_private_bfd_data (bf
break;
}
}
if (! bfd_set_arch_mach (stdoutput, bfd_arch_mips, file_mips_arch))
as_warn (_("Could not set architecture and machine"));
-@@ -11270,6 +11276,7 @@ enum options
+@@ -11256,6 +11262,7 @@ enum options
OPTION_PDR,
OPTION_NO_PDR,
OPTION_MVXWORKS_PIC,
#endif /* OBJ_ELF */
OPTION_END_OF_ENUM
};
-@@ -11377,6 +11384,7 @@ struct option md_longopts[] =
+@@ -11363,6 +11370,7 @@ struct option md_longopts[] =
{"mpdr", no_argument, NULL, OPTION_PDR},
{"mno-pdr", no_argument, NULL, OPTION_NO_PDR},
{"mvxworks-pic", no_argument, NULL, OPTION_MVXWORKS_PIC},
#endif /* OBJ_ELF */
{NULL, no_argument, NULL, 0}
-@@ -11825,6 +11833,11 @@ md_parse_option (int c, char *arg)
+@@ -11811,6 +11819,11 @@ md_parse_option (int c, char *arg)
case OPTION_MVXWORKS_PIC:
mips_pic = VXWORKS_PIC;
break;
EMULATION_OFILES = @EMULATION_OFILES@
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
-@@ -360,7 +360,7 @@ AM_CFLAGS = $(WARN_CFLAGS)
+@@ -365,7 +365,7 @@ AM_CFLAGS = $(WARN_CFLAGS)
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
-@@ -1270,6 +1270,8 @@ fragment <<EOF
+@@ -1272,6 +1272,8 @@ fragment <<EOF
&& command_line.rpath == NULL)
{
lib_path = (const char *) getenv ("LD_RUN_PATH");
if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
force))
break;
-@@ -1497,6 +1499,8 @@ gld${EMULATION_NAME}_before_allocation (
+@@ -1499,6 +1501,8 @@ gld${EMULATION_NAME}_before_allocation (
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");
&bfd_cr16c_arch,
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
-@@ -2053,6 +2053,12 @@ enum bfd_architecture
+@@ -2060,6 +2060,12 @@ enum bfd_architecture
#define bfd_mach_avr5 5
#define bfd_mach_avr51 51
#define bfd_mach_avr6 6
bfd_arch_bfin, /* ADI Blackfin */
#define bfd_mach_bfin 1
bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
-@@ -3989,6 +3995,88 @@ instructions */
+@@ -3996,6 +4002,88 @@ instructions */
BFD_RELOC_RX_ABS16UL,
BFD_RELOC_RX_RELAX,
;;
--- a/bfd/configure
+++ b/bfd/configure
-@@ -15040,6 +15040,7 @@ do
+@@ -15188,6 +15188,7 @@ do
bfd_pei_ia64_vec) tb="$tb pei-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
--- a/bfd/configure.in
+++ b/bfd/configure.in
-@@ -675,6 +675,7 @@ do
+@@ -679,6 +679,7 @@ do
bfd_pei_ia64_vec) tb="$tb pei-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
+ N(bfd_mach_avr32_ap, "avr32", TRUE, &cpu_info[0]);
--- /dev/null
+++ b/bfd/elf32-avr32.c
-@@ -0,0 +1,3915 @@
+@@ -0,0 +1,3944 @@
+/* AVR32-specific support for 32-bit ELF.
+ Copyright 2003,2004,2005,2006,2007,2008,2009 Atmel Corporation.
+
+ unsigned int relax_pass;
+};
+#define avr32_elf_hash_table(p) \
-+ ((struct elf_avr32_link_hash_table *)((p)->hash))
++ (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
++ == AVR32_ELF_DATA ? ((struct elf_avr32_link_hash_table *) ((p)->hash)) : NULL)
+
+static struct bfd_hash_entry *
+avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
+
+ if (! _bfd_elf_link_hash_table_init(&ret->root, abfd,
+ avr32_elf_link_hash_newfunc,
-+ sizeof (struct elf_avr32_link_hash_entry)))
++ sizeof (struct elf_avr32_link_hash_entry),
++ AVR32_ELF_DATA))
+ {
+ free(ret);
+ return NULL;
+ htab = avr32_elf_hash_table(info);
+ flags = bed->dynamic_sec_flags;
+
++ if (htab == NULL)
++ return FALSE;
++
+ if (htab->sgot)
+ return TRUE;
+
+ htab = avr32_elf_hash_table(info);
+ flags = bed->dynamic_sec_flags;
+
++ if (htab == NULL)
++ return FALSE;
++
+ if (!avr32_elf_create_got_section (dynobj, info))
+ return FALSE;
+
+ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes(abfd);
+ htab = avr32_elf_hash_table(info);
++ if (htab == NULL)
++ return FALSE;
++
+ local_got_ents = elf_local_got_ents(abfd);
+ sgot = htab->sgot;
+
+ havr = (struct elf_avr32_link_hash_entry *)h;
+ dynobj = elf_hash_table(info)->dynobj;
+
++ if (htab == NULL)
++ return FALSE;
++
+ /* Make sure we know what is going on here. */
+ BFD_ASSERT (dynobj != NULL
+ && (h->u.weakdef != NULL
+ htab = avr32_elf_hash_table(info);
+ havr = (struct elf_avr32_link_hash_entry *)h;
+
++ if (htab == NULL)
++ return FALSE;
++
+ got = h->got.glist;
+
+ /* If got is NULL, the symbol is never referenced through the GOT */
+ pr_debug("(4) size dynamic sections\n");
+
+ htab = avr32_elf_hash_table(info);
++ if (htab == NULL)
++ return FALSE;
++
+ dynobj = htab->root.dynobj;
+ BFD_ASSERT(dynobj != NULL);
+
+ return TRUE;
+
+ htab = avr32_elf_hash_table(info);
++ if (htab == NULL)
++ return FALSE;
++
+ symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes(input_bfd);
+ local_got_ents = elf_local_got_ents(input_bfd);
+ pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string);
+
+ htab = avr32_elf_hash_table(info);
++ if (htab == NULL)
++ return FALSE;
++
+ got = h->got.glist;
+
+ if (got && got->refcount > 0)
+ pr_debug("(8) finish dynamic sections\n");
+
+ htab = avr32_elf_hash_table(info);
++ if (htab == NULL)
++ return FALSE;
++
+ sgot = htab->sgot;
+ sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic");
+
+
+void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
+ int direct_data_refs);
---- b/bfd/elf-bfd.h
+--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
-@@ -406,6 +406,7 @@
+@@ -402,6 +402,7 @@ enum elf_target_id
ALPHA_ELF_DATA = 1,
ARM_ELF_DATA,
AVR_ELF_DATA,
BFIN_ELF_DATA,
CRIS_ELF_DATA,
FRV_ELF_DATA,
-@@ -1553,6 +1554,10 @@
+@@ -1549,6 +1550,10 @@ struct elf_obj_tdata
find_nearest_line. */
struct mips_elf_find_line *find_line_info;
--- a/binutils/doc/binutils.info
+++ b/binutils/doc/binutils.info
-@@ -1705,6 +1705,10 @@ equivalent. At least one option from th
+@@ -1707,6 +1707,10 @@ equivalent. At least one option from th
useful when attempting to disassemble thumb code produced by other
compilers.
the following may be specified as a comma separated string.
--- a/binutils/doc/binutils.texi
+++ b/binutils/doc/binutils.texi
-@@ -1980,6 +1980,10 @@ using the switch @option{--disassembler-
+@@ -1982,6 +1982,10 @@ using the switch @option{--disassembler-
useful when attempting to disassemble thumb code produced by other
compilers.
following may be specified as a comma separated string.
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
-@@ -95,6 +95,7 @@
+@@ -96,6 +96,7 @@
#include "elf/arc.h"
#include "elf/arm.h"
#include "elf/avr.h"
#include "elf/bfin.h"
#include "elf/cr16.h"
#include "elf/cris.h"
-@@ -619,6 +620,7 @@ guess_is_rela (unsigned int e_machine)
+@@ -544,6 +545,7 @@ guess_is_rela (unsigned int e_machine)
case EM_ALPHA:
case EM_ALTERA_NIOS2:
case EM_AVR:
case EM_AVR_OLD:
case EM_BLACKFIN:
case EM_CR16:
-@@ -1072,6 +1074,10 @@ dump_relocations (FILE * file,
+@@ -997,6 +999,10 @@ dump_relocations (FILE * file,
rtype = elf_avr_reloc_type (type);
break;
case EM_SPARCV9:
--- a/gas/as.c
+++ b/gas/as.c
-@@ -459,10 +459,10 @@ parse_args (int * pargc, char *** pargv)
+@@ -464,10 +464,10 @@ parse_args (int * pargc, char *** pargv)
the end of the preceeding line so that it is simpler to
selectively add and remove lines from this list. */
{"alternate", no_argument, NULL, OPTION_ALTERNATE}
,{"a", optional_argument, NULL, 'a'}
/* Handle -al=<FILE>. */
,{"al", optional_argument, NULL, OPTION_AL}
-@@ -839,8 +839,15 @@ This program has absolutely no warranty.
+@@ -854,8 +854,15 @@ This program has absolutely no warranty.
case 'a':
if (optarg)
{
@set CRIS
--- a/gas/doc/as.texinfo
+++ b/gas/doc/as.texinfo
-@@ -6865,6 +6865,9 @@ subject, see the hardware manufacturer's
+@@ -6877,6 +6877,9 @@ subject, see the hardware manufacturer's
@ifset AVR
* AVR-Dependent:: AVR Dependent Features
@end ifset
@ifset Blackfin
* Blackfin-Dependent:: Blackfin Dependent Features
@end ifset
-@@ -7006,6 +7009,10 @@ subject, see the hardware manufacturer's
+@@ -7018,6 +7021,10 @@ subject, see the hardware manufacturer's
@include c-avr.texi
@end ifset
+.L2: nop
--- a/gas/write.c
+++ b/gas/write.c
-@@ -2221,6 +2221,10 @@ relax_frag (segT segment, fragS *fragP,
+@@ -2227,6 +2227,10 @@ relax_frag (segT segment, fragS *fragP,
#endif /* defined (TC_GENERIC_RELAX_TABLE) */
/* Relax_align. Advance location counter to next address that has 'alignment'
lowest order bits all 0s, return size of adjustment made. */
static relax_addressT
-@@ -2240,6 +2244,7 @@ relax_align (register relax_addressT add
+@@ -2246,6 +2250,7 @@ relax_align (register relax_addressT add
#endif
return (new_address - address);
}
/* Now we have a segment, not a crowd of sub-segments, we can make
fr_address values.
-@@ -2286,7 +2291,7 @@ relax_segment (struct frag *segment_frag
+@@ -2292,7 +2297,7 @@ relax_segment (struct frag *segment_frag
case rs_align_code:
case rs_align_test:
{
if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype)
offset = 0;
-@@ -2497,10 +2502,10 @@ relax_segment (struct frag *segment_frag
+@@ -2503,10 +2508,10 @@ relax_segment (struct frag *segment_frag
{
addressT oldoff, newoff;
+LDEMUL_SET_SYMBOLS=avr32_elf_set_symbols
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
-@@ -162,6 +162,53 @@ ALL_EMULATION_SOURCES = \
+@@ -163,6 +163,53 @@ ALL_EMULATION_SOURCES = \
eavr5.c \
eavr51.c \
eavr6.c \
+ eavr32linux.c \
ecoff_i860.c \
ecoff_sparc.c \
- eelf32_spu.c \
-@@ -760,6 +807,214 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
+ ecrisaout.c \
+@@ -766,6 +813,214 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr6 "$(tdir_avr2)"
ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
-@@ -2052,7 +2307,9 @@ install-exec-local: ld-new$(EXEEXT) inst
+@@ -2059,7 +2314,9 @@ install-exec-local: ld-new$(EXEEXT) inst
fi; \
fi
$(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
-@@ -462,6 +462,53 @@ ALL_EMULATION_SOURCES = \
+@@ -468,6 +468,53 @@ ALL_EMULATION_SOURCES = \
eavr5.c \
eavr51.c \
eavr6.c \
+ eavr32linux.c \
ecoff_i860.c \
ecoff_sparc.c \
- eelf32_spu.c \
-@@ -2183,6 +2230,194 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
+ ecrisaout.c \
+@@ -2201,6 +2248,194 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr6 "$(tdir_avr2)"
#ifdef ARCH_s390
print_s390_disassembler_options (stream);
#endif
---- a/bfd/elf32-avr32.c
-+++ b/bfd/elf32-avr32.c
-@@ -352,7 +352,8 @@ struct elf_avr32_link_hash_table
- unsigned int relax_pass;
- };
- #define avr32_elf_hash_table(p) \
-- ((struct elf_avr32_link_hash_table *)((p)->hash))
-+ (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-+ == AVR32_ELF_DATA ? ((struct elf_avr32_link_hash_table *) ((p)->hash)) : NULL)
-
- static struct bfd_hash_entry *
- avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
-@@ -414,7 +415,8 @@ avr32_elf_link_hash_table_create(bfd *ab
-
- if (! _bfd_elf_link_hash_table_init(&ret->root, abfd,
- avr32_elf_link_hash_newfunc,
-- sizeof (struct elf_avr32_link_hash_entry)))
-+ sizeof (struct elf_avr32_link_hash_entry),
-+ AVR32_ELF_DATA))
- {
- free(ret);
- return NULL;
-@@ -497,6 +499,9 @@ avr32_elf_create_got_section (bfd *dynob
- htab = avr32_elf_hash_table(info);
- flags = bed->dynamic_sec_flags;
-
-+ if (htab == NULL)
-+ return FALSE;
-+
- if (htab->sgot)
- return TRUE;
-
-@@ -534,6 +539,9 @@ avr32_elf_create_dynamic_sections (bfd *
- htab = avr32_elf_hash_table(info);
- flags = bed->dynamic_sec_flags;
-
-+ if (htab == NULL)
-+ return FALSE;
-+
- if (!avr32_elf_create_got_section (dynobj, info))
- return FALSE;
-
-@@ -574,6 +582,9 @@ avr32_check_relocs (bfd *abfd, struct bf
- symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
- sym_hashes = elf_sym_hashes(abfd);
- htab = avr32_elf_hash_table(info);
-+ if (htab == NULL)
-+ return FALSE;
-+
- local_got_ents = elf_local_got_ents(abfd);
- sgot = htab->sgot;
-
-@@ -756,6 +767,9 @@ avr32_elf_adjust_dynamic_symbol(struct b
- havr = (struct elf_avr32_link_hash_entry *)h;
- dynobj = elf_hash_table(info)->dynobj;
-
-+ if (htab == NULL)
-+ return FALSE;
-+
- /* Make sure we know what is going on here. */
- BFD_ASSERT (dynobj != NULL
- && (h->u.weakdef != NULL
-@@ -1066,6 +1080,9 @@ allocate_dynrelocs(struct elf_link_hash_
- htab = avr32_elf_hash_table(info);
- havr = (struct elf_avr32_link_hash_entry *)h;
-
-+ if (htab == NULL)
-+ return FALSE;
-+
- got = h->got.glist;
-
- /* If got is NULL, the symbol is never referenced through the GOT */
-@@ -1117,6 +1134,9 @@ avr32_elf_size_dynamic_sections (bfd *ou
- pr_debug("(4) size dynamic sections\n");
-
- htab = avr32_elf_hash_table(info);
-+ if (htab == NULL)
-+ return FALSE;
-+
- dynobj = htab->root.dynobj;
- BFD_ASSERT(dynobj != NULL);
-
-@@ -3260,6 +3280,9 @@ avr32_elf_relocate_section(bfd *output_b
- return TRUE;
-
- htab = avr32_elf_hash_table(info);
-+ if (htab == NULL)
-+ return FALSE;
-+
- symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr;
- sym_hashes = elf_sym_hashes(input_bfd);
- local_got_ents = elf_local_got_ents(input_bfd);
-@@ -3582,6 +3605,9 @@ avr32_elf_finish_dynamic_symbol(bfd *out
- pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string);
-
- htab = avr32_elf_hash_table(info);
-+ if (htab == NULL)
-+ return FALSE;
-+
- got = h->got.glist;
-
- if (got && got->refcount > 0)
-@@ -3648,6 +3674,9 @@ avr32_elf_finish_dynamic_sections(bfd *o
- pr_debug("(8) finish dynamic sections\n");
-
- htab = avr32_elf_hash_table(info);
-+ if (htab == NULL)
-+ return FALSE;
-+
- sgot = htab->sgot;
- sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic");
-
-diff --git a/config.sub b/config.sub
--- a/config.sub
+++ b/config.sub
-@@ -125,6 +125,7 @@
+@@ -125,6 +125,7 @@ esac
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
-@@ -1335,6 +1336,7 @@
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-uclibc* \
-+ | -linux-musl* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
See http://sourceware.org/bugzilla/show_bug.cgi?id=13990 for details.
---
-diff -u -r1.287 -r1.288
---- a/bfd/elf32-arm.c 2012/04/24 05:12:31 1.287
-+++ b/bfd/elf32-arm.c 2012/04/24 16:09:12 1.288
-@@ -12256,8 +12256,19 @@
+--- a/bfd/elf32-arm.c
++++ b/bfd/elf32-arm.c
+@@ -12046,8 +12046,19 @@ elf32_arm_gc_sweep_hook (bfd *
if (may_need_local_target_p
&& elf32_arm_get_plt_info (abfd, eh, r_symndx, &root_plt, &arm_plt))
{
if (!call_reloc_p)
arm_plt->noncall_refcount--;
-
--- a/gas/configure.tgt
+++ b/gas/configure.tgt
-@@ -428,6 +428,12 @@ case ${generic_target} in
+@@ -450,6 +450,12 @@ case ${generic_target} in
*-*-netware) fmt=elf em=netware ;;
esac
+esac
+
case ${cpu_type} in
- alpha | arm | i386 | ia64 | microblaze | mips | ns32k | pdp11 | ppc | sparc | z80 | z8k)
+ aarch64 | alpha | arm | i386 | ia64 | microblaze | mips | ns32k | pdp11 | ppc | sparc | z80 | z8k)
bfd_gas=yes
--- a/configure
+++ b/configure
-@@ -3570,7 +3570,7 @@ case "${target}" in
+@@ -3595,7 +3595,7 @@ case "${target}" in
mips*-*-*)
noconfigdirs="$noconfigdirs gprof"
;;
;;
--- a/configure.ac
+++ b/configure.ac
-@@ -1006,7 +1006,7 @@ case "${target}" in
+@@ -1021,7 +1021,7 @@ case "${target}" in
mips*-*-*)
noconfigdirs="$noconfigdirs gprof"
;;
EMULATION_OFILES = @EMULATION_OFILES@
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
-@@ -366,7 +366,7 @@ AM_CFLAGS = $(WARN_CFLAGS)
+@@ -367,7 +367,7 @@ AM_CFLAGS = $(WARN_CFLAGS)
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
-@@ -1273,6 +1273,8 @@ fragment <<EOF
+@@ -1274,6 +1274,8 @@ fragment <<EOF
&& command_line.rpath == NULL)
{
lib_path = (const char *) getenv ("LD_RUN_PATH");
if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
force))
break;
-@@ -1500,6 +1502,8 @@ gld${EMULATION_NAME}_before_allocation (
+@@ -1501,6 +1503,8 @@ gld${EMULATION_NAME}_before_allocation (
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");