diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 2c4719c..2918efe 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,41 @@ +2013-12-20 Alan Modra + + * elflink.c (_bfd_elf_merge_symbol): If merging a new weak + symbol that will be skipped, we don't have a new definition. + +2013-11-26 Will Newton + + * elfnn-aarch64.c (elfNN_aarch64_finish_dynamic_symbol): + Handle STT_GNU_IFUNC symbols correctly in static links. + +2013-11-26 Will Newton + + * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Ensure + PLT_INDEX is calculated using correct header size. + +2013-12-08 Alan Modra + + * elflink.c (_bfd_elf_add_default_symbol): Set dynamic_def + and ref_dynamic_nonweak when chaining together indirect + symbols. + +2013-12-05 Alan Modra + + * elf64-ppc.c (ppc_build_one_stub ): + Don't omit saving of r2 for ELFv2. Don't addi 2,2,0. + (ppc_size_one_stub ): Adjust to suit. + +2013-12-05 Alan Modra + + * elf64-ppc.c (ppc64_elf_link_just_syms): Remove .got check. + Handle ELFv2. + +2013-12-02 Tristan Gingold + + * configure.in: Bump version to 2.24.0 + * Makefile.am (RELEASE): Unset. + * configure, Makefile.in: Regenerate. + 2013-12-02 Tristan Gingold * configure.in: Bump version to 2.24 diff --git a/bfd/Makefile.am b/bfd/Makefile.am index c645563..6f0e477 100644 --- a/bfd/Makefile.am +++ b/bfd/Makefile.am @@ -21,7 +21,7 @@ AUTOMAKE_OPTIONS = 1.11 no-dist foreign ACLOCAL_AMFLAGS = -I . -I .. -I ../config # Uncomment the following line when doing a release. -RELEASE=y +# RELEASE=y INCDIR = $(srcdir)/../include CSEARCH = -I. -I$(srcdir) -I$(INCDIR) diff --git a/bfd/Makefile.in b/bfd/Makefile.in index 78d2d2c..8a38a76 100644 --- a/bfd/Makefile.in +++ b/bfd/Makefile.in @@ -339,7 +339,7 @@ AUTOMAKE_OPTIONS = 1.11 no-dist foreign ACLOCAL_AMFLAGS = -I . -I .. -I ../config # Uncomment the following line when doing a release. -RELEASE = y +# RELEASE=y INCDIR = $(srcdir)/../include CSEARCH = -I. -I$(srcdir) -I$(INCDIR) SUBDIRS = doc po diff --git a/bfd/configure b/bfd/configure index 90cd397..7facd8a 100755 --- a/bfd/configure +++ b/bfd/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64 for bfd 2.24. +# Generated by GNU Autoconf 2.64 for bfd 2.24.0. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software @@ -556,8 +556,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bfd' PACKAGE_TARNAME='bfd' -PACKAGE_VERSION='2.24' -PACKAGE_STRING='bfd 2.24' +PACKAGE_VERSION='2.24.0' +PACKAGE_STRING='bfd 2.24.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1349,7 +1349,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bfd 2.24 to adapt to many kinds of systems. +\`configure' configures bfd 2.24.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1420,7 +1420,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bfd 2.24:";; + short | recursive ) echo "Configuration of bfd 2.24.0:";; esac cat <<\_ACEOF @@ -1541,7 +1541,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bfd configure 2.24 +bfd configure 2.24.0 generated by GNU Autoconf 2.64 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2183,7 +2183,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bfd $as_me 2.24, which was +It was created by bfd $as_me 2.24.0, which was generated by GNU Autoconf 2.64. Invocation command line was $ $0 $@ @@ -3991,7 +3991,7 @@ fi # Define the identity of the package. PACKAGE='bfd' - VERSION='2.24' + VERSION='2.24.0' cat >>confdefs.h <<_ACEOF @@ -16481,7 +16481,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bfd $as_me 2.24, which was +This file was extended by bfd $as_me 2.24.0, which was generated by GNU Autoconf 2.64. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16545,7 +16545,7 @@ Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -bfd config.status 2.24 +bfd config.status 2.24.0 configured by $0, generated by GNU Autoconf 2.64, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/bfd/configure.in b/bfd/configure.in index 0e88d78..24ca63a 100644 --- a/bfd/configure.in +++ b/bfd/configure.in @@ -18,7 +18,7 @@ dnl . dnl AC_PREREQ(2.59) -AC_INIT([bfd], [2.24]) +AC_INIT([bfd], [2.24.0]) AC_CONFIG_SRCDIR([libbfd.c]) AC_CANONICAL_TARGET diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index bf13a5d..96719a9 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -5001,10 +5001,8 @@ ppc64_elf_link_just_syms (asection *sec, struct bfd_link_info *info) && (sec->owner->flags & (EXEC_P | DYNAMIC)) != 0 && is_ppc64_elf (sec->owner)) { - asection *got = bfd_get_section_by_name (sec->owner, ".got"); - if (got != NULL - && got->size >= elf_backend_got_header_size - && bfd_get_section_by_name (sec->owner, ".opd") != NULL) + if (abiversion (sec->owner) >= 2 + || bfd_get_section_by_name (sec->owner, ".opd") != NULL) sec->has_toc_reloc = 1; } _bfd_elf_link_just_syms (sec, info); @@ -10599,8 +10597,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) r[0].r_offset = loc - stub_entry->stub_sec->contents; if (bfd_big_endian (info->output_bfd)) r[0].r_offset += 2; - if (stub_entry->stub_type == ppc_stub_plt_branch_r2off - && htab->opd_abi) + if (stub_entry->stub_type == ppc_stub_plt_branch_r2off) r[0].r_offset += 4; r[0].r_info = ELF64_R_INFO (0, R_PPC64_TOC16_DS); r[0].r_addend = dest; @@ -10613,8 +10610,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) } } - if (stub_entry->stub_type != ppc_stub_plt_branch_r2off - || !htab->opd_abi) + if (stub_entry->stub_type != ppc_stub_plt_branch_r2off) { if (PPC_HA (off) != 0) { @@ -10633,7 +10629,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) { bfd_vma r2off = get_r2off (info, stub_entry); - if (r2off == 0) + if (r2off == 0 && htab->opd_abi) { htab->stub_error = TRUE; return FALSE; @@ -10641,28 +10637,29 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) bfd_put_32 (htab->stub_bfd, STD_R2_0R1 + STK_TOC (htab), loc); loc += 4; - size = 20; + size = 16; if (PPC_HA (off) != 0) { size += 4; bfd_put_32 (htab->stub_bfd, ADDIS_R11_R2 | PPC_HA (off), loc); loc += 4; bfd_put_32 (htab->stub_bfd, LD_R12_0R11 | PPC_LO (off), loc); - loc += 4; } else - { - bfd_put_32 (htab->stub_bfd, LD_R12_0R2 | PPC_LO (off), loc); - loc += 4; - } + bfd_put_32 (htab->stub_bfd, LD_R12_0R2 | PPC_LO (off), loc); if (PPC_HA (r2off) != 0) { size += 4; + loc += 4; bfd_put_32 (htab->stub_bfd, ADDIS_R2_R2 | PPC_HA (r2off), loc); + } + if (PPC_LO (r2off) != 0) + { + size += 4; loc += 4; + bfd_put_32 (htab->stub_bfd, ADDI_R2_R2 | PPC_LO (r2off), loc); } - bfd_put_32 (htab->stub_bfd, ADDI_R2_R2 | PPC_LO (r2off), loc); } loc += 4; bfd_put_32 (htab->stub_bfd, MTCTR_R12, loc); @@ -10956,8 +10953,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) stub_entry->stub_sec->flags |= SEC_RELOC; } - if (stub_entry->stub_type != ppc_stub_plt_branch_r2off - || !htab->opd_abi) + if (stub_entry->stub_type != ppc_stub_plt_branch_r2off) { size = 12; if (PPC_HA (off) != 0) @@ -10965,12 +10961,14 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) } else { - size = 20; + size = 16; if (PPC_HA (off) != 0) size += 4; if (PPC_HA (r2off) != 0) size += 4; + if (PPC_LO (r2off) != 0) + size += 4; } } else if (info->emitrelocations) diff --git a/bfd/elflink.c b/bfd/elflink.c index 99b7ca1..742996d 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -1437,7 +1437,10 @@ _bfd_elf_merge_symbol (bfd *abfd, if (!(oldbfd != NULL && (oldbfd->flags & BFD_PLUGIN) != 0 && (abfd->flags & BFD_PLUGIN) == 0)) - *skip = TRUE; + { + newdef = FALSE; + *skip = TRUE; + } /* Merge st_other. If the symbol already has a dynamic index, but visibility says it should not be visible, turn it into a @@ -1702,6 +1705,12 @@ _bfd_elf_add_default_symbol (bfd *abfd, ht = (struct elf_link_hash_entry *) hi->root.u.i.link; (*bed->elf_backend_copy_indirect_symbol) (info, ht, hi); + /* A reference to the SHORTNAME symbol from a dynamic library + will be satisfied by the versioned symbol at runtime. In + effect, we have a reference to the versioned symbol. */ + ht->ref_dynamic_nonweak |= hi->ref_dynamic_nonweak; + hi->dynamic_def |= ht->dynamic_def; + /* See if the new flags lead us to realize that the symbol must be dynamic. */ if (! *dynsym) @@ -1771,6 +1780,8 @@ nondefault: if (hi->root.type == bfd_link_hash_indirect) { (*bed->elf_backend_copy_indirect_symbol) (info, h, hi); + h->ref_dynamic_nonweak |= hi->ref_dynamic_nonweak; + hi->dynamic_def |= h->dynamic_def; /* See if the new flags lead us to realize that the symbol must be dynamic. */ diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 6bc414e..9053635 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -3589,7 +3589,8 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto, if (globals->root.splt != NULL) { - plt_index = h->plt.offset / globals->plt_entry_size - 1; + plt_index = ((h->plt.offset - globals->plt_header_size) / + globals->plt_entry_size); off = (plt_index + 3) * GOT_ENTRY_SIZE; base_got = globals->root.sgotplt; } @@ -6823,7 +6824,34 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd, + htab->root.sgot->output_offset + (h->got.offset & ~(bfd_vma) 1)); - if (info->shared && SYMBOL_REFERENCES_LOCAL (info, h)) + if (h->def_regular + && h->type == STT_GNU_IFUNC) + { + if (info->shared) + { + /* Generate R_AARCH64_GLOB_DAT. */ + goto do_glob_dat; + } + else + { + asection *plt; + + if (!h->pointer_equality_needed) + abort (); + + /* For non-shared object, we can't use .got.plt, which + contains the real function address if we need pointer + equality. We load the GOT entry with the PLT entry. */ + plt = htab->root.splt ? htab->root.splt : htab->root.iplt; + bfd_put_NN (output_bfd, (plt->output_section->vma + + plt->output_offset + + h->plt.offset), + htab->root.sgot->contents + + (h->got.offset & ~(bfd_vma) 1)); + return TRUE; + } + } + else if (info->shared && SYMBOL_REFERENCES_LOCAL (info, h)) { if (!h->def_regular) return FALSE; @@ -6836,6 +6864,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd, } else { +do_glob_dat: BFD_ASSERT ((h->got.offset & 1) == 0); bfd_put_NN (output_bfd, (bfd_vma) 0, htab->root.sgot->contents + h->got.offset); diff --git a/bfd/version.h b/bfd/version.h index dec6798..f11bf3f 100644 --- a/bfd/version.h +++ b/bfd/version.h @@ -1,4 +1,4 @@ -#define BFD_VERSION_DATE 20131202 +#define BFD_VERSION_DATE 20140113 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@ #define REPORT_BUGS_TO @report_bugs_to@ diff --git a/binutils/ChangeLog b/binutils/ChangeLog index f9014b5..829b8c5 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2013-12-10 Roland McGrath + + * Makefile.am (install-exec-local): Prefix libtool invocation with + $(INSTALL_PROGRAM_ENV). + * Makefile.in: Regenerate. + 2013-11-22 Cory Fields * windres.c (define_resource): Use zero for timestamp, making diff --git a/binutils/Makefile.am b/binutils/Makefile.am index e2f8630..e35db01 100644 --- a/binutils/Makefile.am +++ b/binutils/Makefile.am @@ -1,17 +1,17 @@ ## Process this file with automake to generate Makefile.in # -# Copyright 2012 Free Software Foundation +# Copyright 2012, 2013 Free Software Foundation # # This file 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; see the file COPYING3. If not see # . @@ -528,8 +528,8 @@ mostlyclean-local: install-exec-local: install-binPROGRAMS $(bin_PROGRAMS) $(noinst_PROGRAMS) @list='$(RENAMED_PROGS)'; for p in $$list; do \ if test -f $$p$(EXEEXT); then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin @@ -540,7 +540,7 @@ install-exec-local: install-binPROGRAMS $(bin_PROGRAMS) $(noinst_PROGRAMS) if [ "$(bindir)/$$k" != "$(tooldir)/bin/$$j" ]; then \ rm -f $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$$k$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$i$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$i$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \ fi; \ else true; \ fi; \ diff --git a/binutils/Makefile.in b/binutils/Makefile.in index e1e61dc..3408769 100644 --- a/binutils/Makefile.in +++ b/binutils/Makefile.in @@ -16,18 +16,18 @@ @SET_MAKE@ # -# Copyright 2012 Free Software Foundation +# Copyright 2012, 2013 Free Software Foundation # # This file 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; see the file COPYING3. If not see # . @@ -1458,8 +1458,8 @@ mostlyclean-local: install-exec-local: install-binPROGRAMS $(bin_PROGRAMS) $(noinst_PROGRAMS) @list='$(RENAMED_PROGS)'; for p in $$list; do \ if test -f $$p$(EXEEXT); then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin @@ -1470,7 +1470,7 @@ install-exec-local: install-binPROGRAMS $(bin_PROGRAMS) $(noinst_PROGRAMS) if [ "$(bindir)/$$k" != "$(tooldir)/bin/$$j" ]; then \ rm -f $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$$k$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$i$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$i$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \ fi; \ else true; \ fi; \ diff --git a/gas/ChangeLog b/gas/ChangeLog index 7fafa26..67bcc50 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,21 @@ +2014-01-08 H.J. Lu + + * as.c (parse_args): Update copyright year to 2014. + * config/tc-i386.c (regbnd): Removed. + (vec_disp8): Likewise. + +2013-12-18 Yufeng Zhang + + * config/tc-aarch64.c (md_assemble): Defer the feature checking until + do_encode () succeeds. + +2013-12-10 Roland McGrath + + * Makefile.am (install-exec-bindir): Prefix libtool invocation + with $(INSTALL_PROGRAM_ENV). + (install-exec-tooldir): Likewise. + * Makefile.in: Regenerate. + 2013-11-18 H.J. Lu * config/tc-i386.c (lex_got): Add a dummy "int bnd_prefix" diff --git a/gas/Makefile.am b/gas/Makefile.am index b85755d..40a833c 100644 --- a/gas/Makefile.am +++ b/gas/Makefile.am @@ -1,17 +1,17 @@ ## Process this file with automake to generate Makefile.in # -# Copyright 2012 Free Software Foundation +# Copyright 2012, 2013 Free Software Foundation # # This file 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; see the file COPYING3. If not see # . @@ -600,8 +600,8 @@ install-exec-bindir: $(noinst_PROGRAMS) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(noinst_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done @@ -611,7 +611,7 @@ install-exec-tooldir: install-exec-bindir $(noinst_PROGRAMS) if [ "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/as$(EXEEXT)" ]; then \ rm -f $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) as-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) as-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ else \ true ; \ fi diff --git a/gas/Makefile.in b/gas/Makefile.in index 89ce4f5..dd0318f 100644 --- a/gas/Makefile.in +++ b/gas/Makefile.in @@ -16,18 +16,18 @@ @SET_MAKE@ # -# Copyright 2012 Free Software Foundation +# Copyright 2012, 2013 Free Software Foundation # # This file 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; see the file COPYING3. If not see # . @@ -2597,8 +2597,8 @@ install-exec-bindir: $(noinst_PROGRAMS) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(noinst_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done @@ -2608,7 +2608,7 @@ install-exec-tooldir: install-exec-bindir $(noinst_PROGRAMS) if [ "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/as$(EXEEXT)" ]; then \ rm -f $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) as-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) as-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ else \ true ; \ fi diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index fb0ae33..7a69d00 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -5531,14 +5531,6 @@ md_assemble (char *str) dump_opcode_operands (opcode); #endif /* DEBUG_AARCH64 */ - /* Check that this instruction is supported for this CPU. */ - if (!opcode->avariant - || !AARCH64_CPU_HAS_FEATURE (cpu_variant, *opcode->avariant)) - { - as_bad (_("selected processor does not support `%s'"), str); - return; - } - mapping_state (MAP_INSN); inst_base = &inst.base; @@ -5563,6 +5555,14 @@ md_assemble (char *str) && programmer_friendly_fixup (&inst) && do_encode (inst_base->opcode, &inst.base, &inst_base->value)) { + /* Check that this instruction is supported for this CPU. */ + if (!opcode->avariant + || !AARCH64_CPU_HAS_FEATURE (cpu_variant, *opcode->avariant)) + { + as_bad (_("selected processor does not support `%s'"), str); + return; + } + if (inst.reloc.type == BFD_RELOC_UNUSED || !inst.reloc.need_libopcodes_p) output_inst (NULL); diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 3c423da..8e8d826 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -1,7 +1,7 @@ /* tc-i386.c -- Assemble code for the Intel 80386 Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, - 2012 + 2012, 2013, 2014 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -1665,8 +1665,6 @@ static const i386_operand_type imm16_32 = OPERAND_TYPE_IMM16_32; static const i386_operand_type imm16_32s = OPERAND_TYPE_IMM16_32S; static const i386_operand_type imm16_32_32s = OPERAND_TYPE_IMM16_32_32S; static const i386_operand_type vec_imm4 = OPERAND_TYPE_VEC_IMM4; -static const i386_operand_type regbnd = OPERAND_TYPE_REGBND; -static const i386_operand_type vec_disp8 = OPERAND_TYPE_VEC_DISP8; enum operand_type { diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index be67b6e..3541bc7 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-12-18 Yufeng Zhang + + * gas/aarch64/rm-simd-ext.d: New file. + * gas/aarch64/rm-simd-ext.l: Likewise. + * gas/aarch64/rm-simd-ext.s: Likewise. + 2013-11-20 Yufeng Zhang * gas/aarch64/msr.s: Add tests. diff --git a/gas/testsuite/gas/aarch64/rm-simd-ext.d b/gas/testsuite/gas/aarch64/rm-simd-ext.d new file mode 100644 index 0000000..a60f987 --- /dev/null +++ b/gas/testsuite/gas/aarch64/rm-simd-ext.d @@ -0,0 +1,4 @@ +#name: SIMD Extension Removal +#source: rm-simd-ext.s +#error-output: rm-simd-ext.l +#as: -mcpu=cortex-a57+nosimd diff --git a/gas/testsuite/gas/aarch64/rm-simd-ext.l b/gas/testsuite/gas/aarch64/rm-simd-ext.l new file mode 100644 index 0000000..2e24967 --- /dev/null +++ b/gas/testsuite/gas/aarch64/rm-simd-ext.l @@ -0,0 +1,2 @@ +[^:]*: Assembler messages: +[^:]*:27: Error: selected processor does not support `orr v0.16b,v1.16b,v2.16b' diff --git a/gas/testsuite/gas/aarch64/rm-simd-ext.s b/gas/testsuite/gas/aarch64/rm-simd-ext.s new file mode 100644 index 0000000..1994a4d --- /dev/null +++ b/gas/testsuite/gas/aarch64/rm-simd-ext.s @@ -0,0 +1,28 @@ +/* rm-simd-ext.s Test file for AArch64 extension removal in -mcpu option. + + Copyright 2013 Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of GAS. + + 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 of the license, 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 this program; see the file COPYING3. If not, + see . */ + + .text + mov w3, 200 + mul w3, w2, w3 + add w1, w1, w3 + add w2, w0, w2, lsl 2 + orr v0.16b, v1.16b, v2.16b + orr w1, w1, w3 diff --git a/gold/ChangeLog b/gold/ChangeLog index dcf7ed4..227d342 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2013-12-10 Roland McGrath + + * Makefile.am (install-exec-local): Prefix $(INSTALL_PROGRAM) uses + with $(INSTALL_PROGRAM_ENV). + * Makefile.in: Regenerate. + 2013-11-22 Cary Coutant * testsuite/Makefile.am (exception_x86_64_bnd_test): Use in-tree diff --git a/gold/Makefile.am b/gold/Makefile.am index 8e2fff1..42704ce 100644 --- a/gold/Makefile.am +++ b/gold/Makefile.am @@ -7,12 +7,12 @@ # 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; see the file COPYING3. If not see # . @@ -211,21 +211,22 @@ check: libgold.a install-exec-local: ld-new$(EXEEXT) $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin n=`echo $(installed_linker) | sed '$(transform)'`; \ - $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${n}$(EXEEXT); \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) \ + ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${n}$(EXEEXT); \ if test "$(bindir)" != "$(tooldir)/bin"; then \ rm -f $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT) >/dev/null 2>/dev/null \ - || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ fi; \ if test "x$(install_as_default)" = "xyes"; then \ ld=`echo ld | sed '$(transform)'`; \ rm -f $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT) >/dev/null 2>/dev/null \ - || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \ if test "$(bindir)" != "$(tooldir)/bin"; then \ rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ fi; \ fi diff --git a/gold/Makefile.in b/gold/Makefile.in index 3bd9fae..661613e 100644 --- a/gold/Makefile.in +++ b/gold/Makefile.in @@ -23,12 +23,12 @@ # 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; see the file COPYING3. If not see # . @@ -1295,21 +1295,22 @@ check: libgold.a install-exec-local: ld-new$(EXEEXT) $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin n=`echo $(installed_linker) | sed '$(transform)'`; \ - $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${n}$(EXEEXT); \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) \ + ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${n}$(EXEEXT); \ if test "$(bindir)" != "$(tooldir)/bin"; then \ rm -f $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT) >/dev/null 2>/dev/null \ - || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ fi; \ if test "x$(install_as_default)" = "xyes"; then \ ld=`echo ld | sed '$(transform)'`; \ rm -f $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT) >/dev/null 2>/dev/null \ - || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \ if test "$(bindir)" != "$(tooldir)/bin"; then \ rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ fi; \ fi diff --git a/ld/ChangeLog b/ld/ChangeLog index 1687785..2474ee2 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2013-12-10 Roland McGrath + + * Makefile.am (install-exec-local): Prefix libtool invocation with + $(INSTALL_PROGRAM_ENV). + * Makefile.in: Regenerate. + 2013-11-25 Yufeng Zhang Backport from master diff --git a/ld/Makefile.am b/ld/Makefile.am index b2b2a6e..b6d4306 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -1,17 +1,17 @@ ## Process this file with automake to generate Makefile.in # -# Copyright 2012 Free Software Foundation +# Copyright 2012, 2013 Free Software Foundation # # This file 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; see the file COPYING3. If not see # . @@ -2317,17 +2317,17 @@ install-exec-local: ld-new$(EXEEXT) install-binPROGRAMS if test "$(bindir)" != "$(tooldir)/bin"; then \ rm -f $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ fi; \ if test "x$(install_as_default)" = "xyes"; then \ ld=`echo ld | sed '$(transform)'`; \ rm -f $(DESTDIR)$(bindir)/$$ld$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(bindir)/$$ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$$ld$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$$ld$(EXEEXT); \ if test "$(bindir)" != "$(tooldir)/bin"; then \ rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ fi; \ fi diff --git a/ld/Makefile.in b/ld/Makefile.in index b95a3d1..987a068 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -16,18 +16,18 @@ @SET_MAKE@ # -# Copyright 2012 Free Software Foundation +# Copyright 2012, 2013 Free Software Foundation # # This file 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; see the file COPYING3. If not see # . @@ -3733,17 +3733,17 @@ install-exec-local: ld-new$(EXEEXT) install-binPROGRAMS if test "$(bindir)" != "$(tooldir)/bin"; then \ rm -f $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \ fi; \ if test "x$(install_as_default)" = "xyes"; then \ ld=`echo ld | sed '$(transform)'`; \ rm -f $(DESTDIR)$(bindir)/$$ld$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(bindir)/$$ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$$ld$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$$ld$(EXEEXT); \ if test "$(bindir)" != "$(tooldir)/bin"; then \ rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + || $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ fi; \ fi diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 342d5b2..0f87f11 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,21 @@ +2013-12-11 Will Newton + + * ld-aarch64/ifunc-21.d: Make test more generic to support + aarch64_be and ELF targets. + * ld-aarch64/ifunc-22.d: Likewise. + +2013-11-26 Will Newton + + * ld-aarch64/aarch64-elf.exp: Add ifunc-22. + * ld-aarch64/ifunc-22.d: New file. + * ld-aarch64/ifunc-22.s: Likewise. + +2013-11-26 Will Newton + + * ld-aarch64/aarch64-elf.exp: Add ifunc-21 test. + * ld-aarch64/ifunc-21.d: New file. + * ld-aarch64/ifunc-21.s: Likewise. + 2013-11-19 Roland McGrath * ld-elf/ehdr_start-userdef.t: New file. diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp index 5c150dd..692bf34 100644 --- a/ld/testsuite/ld-aarch64/aarch64-elf.exp +++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp @@ -155,3 +155,5 @@ run_dump_test "ifunc-18b" run_dump_test "ifunc-19a" run_dump_test "ifunc-19b" run_dump_test "ifunc-20" +run_dump_test "ifunc-21" +run_dump_test "ifunc-22" diff --git a/ld/testsuite/ld-aarch64/ifunc-21.d b/ld/testsuite/ld-aarch64/ifunc-21.d new file mode 100644 index 0000000..9ea01e6 --- /dev/null +++ b/ld/testsuite/ld-aarch64/ifunc-21.d @@ -0,0 +1,26 @@ +#source: ifunc-21.s +#ld: -shared -z nocombreloc +#objdump: -d -s -j .got.plt -j .text +#target: aarch64*-*-* + +# Ensure the .got.plt slot used is correct + +.*: file format elf64-(little|big)aarch64 + +Contents of section .text: + [0-9a-f]+ .* +Contents of section .got.plt: + [0-9a-f]+ 0+ 0+ 0+ 0+ .* + (103b8|10408) 0+ 0+ [0-9a-f]+ [0-9a-f]+ .* + +Disassembly of section .text: + +.* : + .*: d65f03c0 ret + +.* : + .*: 90000080 adrp x0, 10000 <.*> + .*: .* ldr x0, \[x0,#(960|1040)\] + .*: d65f03c0 ret + +#pass \ No newline at end of file diff --git a/ld/testsuite/ld-aarch64/ifunc-21.s b/ld/testsuite/ld-aarch64/ifunc-21.s new file mode 100644 index 0000000..a1563dc --- /dev/null +++ b/ld/testsuite/ld-aarch64/ifunc-21.s @@ -0,0 +1,13 @@ + .text + .type ifunc, @gnu_indirect_function + .hidden ifunc +ifunc: + ret + .size ifunc, .-ifunc + .type bar, @function + .globl bar +bar: + adrp x0, :got:ifunc + ldr x0, [x0, #:got_lo12:ifunc] + ret + .size bar, .-bar diff --git a/ld/testsuite/ld-aarch64/ifunc-22.d b/ld/testsuite/ld-aarch64/ifunc-22.d new file mode 100644 index 0000000..7f0978d --- /dev/null +++ b/ld/testsuite/ld-aarch64/ifunc-22.d @@ -0,0 +1,11 @@ +#source: ifunc-22.s +#objdump: -s -j .got +#ld: -static +#target: aarch64*-*-* + +# Ensure GOT is populated correctly in static link + +.*: file format elf64-(little|big)aarch64 + +Contents of section \.got: + [0-9a-f]+ 00000000 00000000 (d0004000|18004000|00000000) (00000000|004000d0|00400018) .* diff --git a/ld/testsuite/ld-aarch64/ifunc-22.s b/ld/testsuite/ld-aarch64/ifunc-22.s new file mode 100644 index 0000000..69a87bb --- /dev/null +++ b/ld/testsuite/ld-aarch64/ifunc-22.s @@ -0,0 +1,14 @@ + .text + .type ifunc, @gnu_indirect_function + .global ifunc +ifunc: + ret + .size ifunc, .-ifunc + .type _start, @function + .globl _start +_start: + adrp x0, :got:ifunc + ldr x0, [x0, #:got_lo12:ifunc] + .size _start, .-_start + .data + .xword ifunc diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 89e108a..a1e94c8 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,9 @@ +2014-01-06 Mike Frysinger + + PR other/56780 + * configure.ac: Delete target_header_dir assignment. + * configure: Regenerated. + 2013-09-10 Paolo Carlini PR bootstrap/58386 diff --git a/libiberty/configure b/libiberty/configure index e601ccd..878fa53 100755 --- a/libiberty/configure +++ b/libiberty/configure @@ -5507,7 +5507,6 @@ fi setobjs= CHECK= -target_header_dir= if test -n "${with_target_subdir}"; then # We are being configured as a target library. AC_REPLACE_FUNCS diff --git a/libiberty/configure.ac b/libiberty/configure.ac index fcea46f..f17e6b6 100644 --- a/libiberty/configure.ac +++ b/libiberty/configure.ac @@ -405,7 +405,6 @@ fi setobjs= CHECK= -target_header_dir= if test -n "${with_target_subdir}"; then # We are being configured as a target library. AC_REPLACE_FUNCS diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 0b72d5b..c168d65 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,9 @@ +2014-01-09 Bradley Nelson + Roland McGrath + + * i386-dis.c (print_insn): Do not touch all_prefixes[-1] when + last_rex_prefix is -1. + 2013-11-20 Yufeng Zhang * aarch64-opc.c (aarch64_pstatefields): Update. diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 8e55724..d278272 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -12635,7 +12635,7 @@ print_insn (bfd_vma pc, disassemble_info *info) } /* Check if the REX prefix is used. */ - if (rex_ignored == 0 && (rex ^ rex_used) == 0) + if (rex_ignored == 0 && (rex ^ rex_used) == 0 && last_rex_prefix >= 0) all_prefixes[last_rex_prefix] = 0; /* Check if the SEG prefix is used. */