diff -uprN binutils-2.14.90.0.7/COPYING.NEWLIB binutils-2.14.90.0.8/COPYING.NEWLIB --- binutils-2.14.90.0.7/COPYING.NEWLIB 2003-07-23 08:08:07.000000000 -0700 +++ binutils-2.14.90.0.8/COPYING.NEWLIB 2004-01-14 13:07:42.000000000 -0800 @@ -644,7 +644,33 @@ to the following restrictions: 4. This notice may not be removed or altered. -(26) Red Hat Incorporated +(26) Mike Barcroft + +Copyright (c) 2001 Mike Barcroft +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(27) Red Hat Incorporated Unless otherwise stated in each remaining newlib file, the remaining files in the newlib subdirectory default to the following copyright. diff -uprN binutils-2.14.90.0.7/ChangeLog binutils-2.14.90.0.8/ChangeLog --- binutils-2.14.90.0.7/ChangeLog 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/ChangeLog 2004-01-14 13:07:42.000000000 -0800 @@ -1,3 +1,61 @@ +2004-01-04 Nathanael Nerode + + * configure.in: Use ./config.cache, not config.cache. + * configure: Regenerate. + * Makefile.tpl: Special-casing not needed for GCC any more. + * Makefile.in: Regenerate. + + * configure.in: Don't share a cache file for host dirs. + * configure: Regenerate. + + * config-ml.in: Don't mess with the cache file. + +2004-01-03 Nathanael Nerode + + * Makefile.tpl: Make GCC use a separate config.cache. + * Makefile.in: Regenerate. + + PR bootstrap/11932, PR bootstrap/11933 + (I don't know if it will fix either of them, but it relates + to them.) + * configure.in: Don't use shared config.cache for target + directories. + * configure: Regenerate. + +2003-12-31 Roger Sayle + + * configure.in (ia64*-*-hpux*): Disable building java libraries. + * configure: Regenerated. + +2003-12-21 Bernardo Innocenti + + * configure.in (*-*-uclinux): Exclude newlib, libgloss and rda. + * configure: Regenerated. + +2003-12-19 Nathanael Nerode + + Port change over from GCC: + 2003-11-20 Kelley Cook + * Makefile.tpl (BASE_FLAGS_TO_PASS): Pass along CONFIG_SHELL. + (configure-build-[+module+], configure-[+module+]): Likewise. + (configure-target-[+module+], configure-gcc, config.status): Likewise. + * Makefile.in: Regenerate. + +2003-12-08 Thomas Fitzsimmons + + * configure.in (raw_libstdcxx_flags): Remove the leading space. + * configure: Regenerate. + +2003-11-27 Jeff Johnston + + * COPYING.NEWLIB: Add license info for long long routines added to + stdlib. + +2003-11-14 Arnaud Charlet + + * Makefile.tpl (EXTRA_GCC_FLAGS): Pass BOOT_ADAFLAGS. + * Makefile.in: Regenerate. + 2003-10-20 Phil Edwards * configure.in (*-*-vxworks): Add target-libiberty to noconfdirs. diff -uprN binutils-2.14.90.0.7/Makefile.def binutils-2.14.90.0.8/Makefile.def --- binutils-2.14.90.0.7/Makefile.def 2003-10-29 09:38:20.000000000 -0800 +++ binutils-2.14.90.0.8/Makefile.def 2004-01-14 13:07:42.000000000 -0800 @@ -25,7 +25,6 @@ AutoGen definitions Makefile.tpl; // that recursive target in its Makefile. build_modules= { module= libiberty; }; -build_modules= { module= demangler; no_install=true; }; host_modules= { module= ash; }; host_modules= { module= autoconf; }; @@ -38,7 +37,6 @@ host_modules= { module= bison; no_check_ host_modules= { module= byacc; no_check_cross= true; }; host_modules= { module= bzip2; }; host_modules= { module= dejagnu; }; -host_modules= { module= demangler; no_install=true; }; host_modules= { module= diff; }; host_modules= { module= dosutils; no_check= true; }; host_modules= { module= etc; }; @@ -110,7 +108,6 @@ target_modules = { module= libtermcap; n target_modules = { module= winsup; }; target_modules = { module= libgloss; no_check=true; }; target_modules = { module= libiberty; }; -target_modules = { module= demangler; no_install=true; }; target_modules = { module= gperf; }; target_modules = { module= examples; no_check=true; no_install=true; }; target_modules = { module= libffi; }; diff -uprN binutils-2.14.90.0.7/Makefile.in binutils-2.14.90.0.8/Makefile.in --- binutils-2.14.90.0.7/Makefile.in 2003-10-29 09:38:23.000000000 -0800 +++ binutils-2.14.90.0.8/Makefile.in 2004-01-14 13:07:42.000000000 -0800 @@ -103,7 +103,7 @@ REALLY_SET_LIB_PATH = \ $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH):$(TARGET_LIB_PATH):$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); # This is the list of directories to be built for the build system. -BUILD_CONFIGDIRS = libiberty demangler +BUILD_CONFIGDIRS = libiberty # Build programs are put under this directory. BUILD_SUBDIR = @build_subdir@ # This is set by the configure script to the arguments to use when configuring @@ -446,6 +446,7 @@ BASE_FLAGS_TO_PASS = \ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ "RANLIB_FOR_TARGET=$(RANLIB_FOR_TARGET)" \ "WINDRES_FOR_TARGET=$(WINDRES_FOR_TARGET)" \ + "CONFIG_SHELL=$(SHELL)" \ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" # For any flags above that may contain shell code that varies from one @@ -522,7 +523,8 @@ EXTRA_GCC_FLAGS = \ "`echo 'LIBGCC2_DEBUG_CFLAGS=$(LIBGCC2_DEBUG_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \ "`echo 'LIBGCC2_INCLUDES=$(LIBGCC2_INCLUDES)' | sed -e s/.*=$$/XFOO=/`" \ "`echo 'STAGE1_CFLAGS=$(STAGE1_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \ - "`echo 'BOOT_CFLAGS=$(BOOT_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" + "`echo 'BOOT_CFLAGS=$(BOOT_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \ + "`echo 'BOOT_ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s/.*=$$/XFOO=/`" GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) @@ -539,7 +541,6 @@ configure-host: maybe-configure-gcc \ maybe-configure-byacc \ maybe-configure-bzip2 \ maybe-configure-dejagnu \ - maybe-configure-demangler \ maybe-configure-diff \ maybe-configure-dosutils \ maybe-configure-etc \ @@ -603,7 +604,6 @@ configure-target: \ maybe-configure-target-winsup \ maybe-configure-target-libgloss \ maybe-configure-target-libiberty \ - maybe-configure-target-demangler \ maybe-configure-target-gperf \ maybe-configure-target-examples \ maybe-configure-target-libffi \ @@ -630,7 +630,6 @@ all-host: maybe-all-gcc \ maybe-all-byacc \ maybe-all-bzip2 \ maybe-all-dejagnu \ - maybe-all-demangler \ maybe-all-diff \ maybe-all-dosutils \ maybe-all-etc \ @@ -694,7 +693,6 @@ all-target: \ maybe-all-target-winsup \ maybe-all-target-libgloss \ maybe-all-target-libiberty \ - maybe-all-target-demangler \ maybe-all-target-gperf \ maybe-all-target-examples \ maybe-all-target-libffi \ @@ -725,7 +723,6 @@ info-host: maybe-info-gcc \ maybe-info-byacc \ maybe-info-bzip2 \ maybe-info-dejagnu \ - maybe-info-demangler \ maybe-info-diff \ maybe-info-dosutils \ maybe-info-etc \ @@ -790,7 +787,6 @@ info-target: \ maybe-info-target-winsup \ maybe-info-target-libgloss \ maybe-info-target-libiberty \ - maybe-info-target-demangler \ maybe-info-target-gperf \ maybe-info-target-examples \ maybe-info-target-libffi \ @@ -1065,28 +1061,6 @@ info-dejagnu: \ || exit 1 -.PHONY: maybe-info-demangler info-demangler -maybe-info-demangler: - -info-demangler: \ - configure-demangler - @[ -f ./demangler/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - for flag in $(EXTRA_HOST_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in demangler" ; \ - (cd demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - info) \ - || exit 1 - - .PHONY: maybe-info-diff info-diff maybe-info-diff: @@ -2432,28 +2406,6 @@ info-target-libiberty: \ || exit 1 -.PHONY: maybe-info-target-demangler info-target-demangler -maybe-info-target-demangler: - -info-target-demangler: \ - configure-target-demangler - @[ -f $(TARGET_SUBDIR)/demangler/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - echo "Doing info in $(TARGET_SUBDIR)/demangler" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - info) \ - || exit 1 - - .PHONY: maybe-info-target-gperf info-target-gperf maybe-info-target-gperf: @@ -2647,7 +2599,6 @@ dvi-host: maybe-dvi-gcc \ maybe-dvi-byacc \ maybe-dvi-bzip2 \ maybe-dvi-dejagnu \ - maybe-dvi-demangler \ maybe-dvi-diff \ maybe-dvi-dosutils \ maybe-dvi-etc \ @@ -2712,7 +2663,6 @@ dvi-target: \ maybe-dvi-target-winsup \ maybe-dvi-target-libgloss \ maybe-dvi-target-libiberty \ - maybe-dvi-target-demangler \ maybe-dvi-target-gperf \ maybe-dvi-target-examples \ maybe-dvi-target-libffi \ @@ -2987,28 +2937,6 @@ dvi-dejagnu: \ || exit 1 -.PHONY: maybe-dvi-demangler dvi-demangler -maybe-dvi-demangler: - -dvi-demangler: \ - configure-demangler - @[ -f ./demangler/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - for flag in $(EXTRA_HOST_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in demangler" ; \ - (cd demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - dvi) \ - || exit 1 - - .PHONY: maybe-dvi-diff dvi-diff maybe-dvi-diff: @@ -4354,28 +4282,6 @@ dvi-target-libiberty: \ || exit 1 -.PHONY: maybe-dvi-target-demangler dvi-target-demangler -maybe-dvi-target-demangler: - -dvi-target-demangler: \ - configure-target-demangler - @[ -f $(TARGET_SUBDIR)/demangler/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - echo "Doing dvi in $(TARGET_SUBDIR)/demangler" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - dvi) \ - || exit 1 - - .PHONY: maybe-dvi-target-gperf dvi-target-gperf maybe-dvi-target-gperf: @@ -4569,7 +4475,6 @@ TAGS-host: maybe-TAGS-gcc \ maybe-TAGS-byacc \ maybe-TAGS-bzip2 \ maybe-TAGS-dejagnu \ - maybe-TAGS-demangler \ maybe-TAGS-diff \ maybe-TAGS-dosutils \ maybe-TAGS-etc \ @@ -4634,7 +4539,6 @@ TAGS-target: \ maybe-TAGS-target-winsup \ maybe-TAGS-target-libgloss \ maybe-TAGS-target-libiberty \ - maybe-TAGS-target-demangler \ maybe-TAGS-target-gperf \ maybe-TAGS-target-examples \ maybe-TAGS-target-libffi \ @@ -4909,28 +4813,6 @@ TAGS-dejagnu: \ || exit 1 -.PHONY: maybe-TAGS-demangler TAGS-demangler -maybe-TAGS-demangler: - -TAGS-demangler: \ - configure-demangler - @[ -f ./demangler/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - for flag in $(EXTRA_HOST_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in demangler" ; \ - (cd demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - TAGS) \ - || exit 1 - - .PHONY: maybe-TAGS-diff TAGS-diff maybe-TAGS-diff: @@ -6276,28 +6158,6 @@ TAGS-target-libiberty: \ || exit 1 -.PHONY: maybe-TAGS-target-demangler TAGS-target-demangler -maybe-TAGS-target-demangler: - -TAGS-target-demangler: \ - configure-target-demangler - @[ -f $(TARGET_SUBDIR)/demangler/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/demangler" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - TAGS) \ - || exit 1 - - .PHONY: maybe-TAGS-target-gperf TAGS-target-gperf maybe-TAGS-target-gperf: @@ -6491,7 +6351,6 @@ install-info-host: maybe-install-info-gc maybe-install-info-byacc \ maybe-install-info-bzip2 \ maybe-install-info-dejagnu \ - maybe-install-info-demangler \ maybe-install-info-diff \ maybe-install-info-dosutils \ maybe-install-info-etc \ @@ -6556,7 +6415,6 @@ install-info-target: \ maybe-install-info-target-winsup \ maybe-install-info-target-libgloss \ maybe-install-info-target-libiberty \ - maybe-install-info-target-demangler \ maybe-install-info-target-gperf \ maybe-install-info-target-examples \ maybe-install-info-target-libffi \ @@ -6843,29 +6701,6 @@ install-info-dejagnu: \ || exit 1 -.PHONY: maybe-install-info-demangler install-info-demangler -maybe-install-info-demangler: - -install-info-demangler: \ - configure-demangler \ - info-demangler - @[ -f ./demangler/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - for flag in $(EXTRA_HOST_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in demangler" ; \ - (cd demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - install-info) \ - || exit 1 - - .PHONY: maybe-install-info-diff install-info-diff maybe-install-info-diff: @@ -8272,29 +8107,6 @@ install-info-target-libiberty: \ || exit 1 -.PHONY: maybe-install-info-target-demangler install-info-target-demangler -maybe-install-info-target-demangler: - -install-info-target-demangler: \ - configure-target-demangler \ - info-target-demangler - @[ -f $(TARGET_SUBDIR)/demangler/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - echo "Doing install-info in $(TARGET_SUBDIR)/demangler" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - install-info) \ - || exit 1 - - .PHONY: maybe-install-info-target-gperf install-info-target-gperf maybe-install-info-target-gperf: @@ -8496,7 +8308,6 @@ installcheck-host: maybe-installcheck-gc maybe-installcheck-byacc \ maybe-installcheck-bzip2 \ maybe-installcheck-dejagnu \ - maybe-installcheck-demangler \ maybe-installcheck-diff \ maybe-installcheck-dosutils \ maybe-installcheck-etc \ @@ -8561,7 +8372,6 @@ installcheck-target: \ maybe-installcheck-target-winsup \ maybe-installcheck-target-libgloss \ maybe-installcheck-target-libiberty \ - maybe-installcheck-target-demangler \ maybe-installcheck-target-gperf \ maybe-installcheck-target-examples \ maybe-installcheck-target-libffi \ @@ -8836,28 +8646,6 @@ installcheck-dejagnu: \ || exit 1 -.PHONY: maybe-installcheck-demangler installcheck-demangler -maybe-installcheck-demangler: - -installcheck-demangler: \ - configure-demangler - @[ -f ./demangler/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - for flag in $(EXTRA_HOST_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in demangler" ; \ - (cd demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - installcheck) \ - || exit 1 - - .PHONY: maybe-installcheck-diff installcheck-diff maybe-installcheck-diff: @@ -10203,28 +9991,6 @@ installcheck-target-libiberty: \ || exit 1 -.PHONY: maybe-installcheck-target-demangler installcheck-target-demangler -maybe-installcheck-target-demangler: - -installcheck-target-demangler: \ - configure-target-demangler - @[ -f $(TARGET_SUBDIR)/demangler/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/demangler" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - installcheck) \ - || exit 1 - - .PHONY: maybe-installcheck-target-gperf installcheck-target-gperf maybe-installcheck-target-gperf: @@ -10418,7 +10184,6 @@ mostlyclean-host: maybe-mostlyclean-gcc maybe-mostlyclean-byacc \ maybe-mostlyclean-bzip2 \ maybe-mostlyclean-dejagnu \ - maybe-mostlyclean-demangler \ maybe-mostlyclean-diff \ maybe-mostlyclean-dosutils \ maybe-mostlyclean-etc \ @@ -10483,7 +10248,6 @@ mostlyclean-target: \ maybe-mostlyclean-target-winsup \ maybe-mostlyclean-target-libgloss \ maybe-mostlyclean-target-libiberty \ - maybe-mostlyclean-target-demangler \ maybe-mostlyclean-target-gperf \ maybe-mostlyclean-target-examples \ maybe-mostlyclean-target-libffi \ @@ -10746,27 +10510,6 @@ mostlyclean-dejagnu: || exit 1 -.PHONY: maybe-mostlyclean-demangler mostlyclean-demangler -maybe-mostlyclean-demangler: - -mostlyclean-demangler: - @[ -f ./demangler/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - for flag in $(EXTRA_HOST_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in demangler" ; \ - (cd demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - mostlyclean) \ - || exit 1 - - .PHONY: maybe-mostlyclean-diff mostlyclean-diff maybe-mostlyclean-diff: @@ -12009,27 +11752,6 @@ mostlyclean-target-libiberty: || exit 1 -.PHONY: maybe-mostlyclean-target-demangler mostlyclean-target-demangler -maybe-mostlyclean-target-demangler: - -mostlyclean-target-demangler: - @[ -f $(TARGET_SUBDIR)/demangler/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/demangler" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - mostlyclean) \ - || exit 1 - - .PHONY: maybe-mostlyclean-target-gperf mostlyclean-target-gperf maybe-mostlyclean-target-gperf: @@ -12215,7 +11937,6 @@ clean-host: maybe-clean-gcc \ maybe-clean-byacc \ maybe-clean-bzip2 \ maybe-clean-dejagnu \ - maybe-clean-demangler \ maybe-clean-diff \ maybe-clean-dosutils \ maybe-clean-etc \ @@ -12280,7 +12001,6 @@ clean-target: \ maybe-clean-target-winsup \ maybe-clean-target-libgloss \ maybe-clean-target-libiberty \ - maybe-clean-target-demangler \ maybe-clean-target-gperf \ maybe-clean-target-examples \ maybe-clean-target-libffi \ @@ -12543,27 +12263,6 @@ clean-dejagnu: || exit 1 -.PHONY: maybe-clean-demangler clean-demangler -maybe-clean-demangler: - -clean-demangler: - @[ -f ./demangler/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - for flag in $(EXTRA_HOST_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in demangler" ; \ - (cd demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - clean) \ - || exit 1 - - .PHONY: maybe-clean-diff clean-diff maybe-clean-diff: @@ -13820,27 +13519,6 @@ clean-target-libiberty: || exit 1 -.PHONY: maybe-clean-target-demangler clean-target-demangler -maybe-clean-target-demangler: - -clean-target-demangler: - @[ -f $(TARGET_SUBDIR)/demangler/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - echo "Doing clean in $(TARGET_SUBDIR)/demangler" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - clean) \ - || exit 1 - - .PHONY: maybe-clean-target-gperf clean-target-gperf maybe-clean-target-gperf: @@ -14026,7 +13704,6 @@ distclean-host: maybe-distclean-gcc \ maybe-distclean-byacc \ maybe-distclean-bzip2 \ maybe-distclean-dejagnu \ - maybe-distclean-demangler \ maybe-distclean-diff \ maybe-distclean-dosutils \ maybe-distclean-etc \ @@ -14091,7 +13768,6 @@ distclean-target: \ maybe-distclean-target-winsup \ maybe-distclean-target-libgloss \ maybe-distclean-target-libiberty \ - maybe-distclean-target-demangler \ maybe-distclean-target-gperf \ maybe-distclean-target-examples \ maybe-distclean-target-libffi \ @@ -14354,27 +14030,6 @@ distclean-dejagnu: || exit 1 -.PHONY: maybe-distclean-demangler distclean-demangler -maybe-distclean-demangler: - -distclean-demangler: - @[ -f ./demangler/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - for flag in $(EXTRA_HOST_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in demangler" ; \ - (cd demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - distclean) \ - || exit 1 - - .PHONY: maybe-distclean-diff distclean-diff maybe-distclean-diff: @@ -15631,27 +15286,6 @@ distclean-target-libiberty: || exit 1 -.PHONY: maybe-distclean-target-demangler distclean-target-demangler -maybe-distclean-target-demangler: - -distclean-target-demangler: - @[ -f $(TARGET_SUBDIR)/demangler/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - echo "Doing distclean in $(TARGET_SUBDIR)/demangler" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - distclean) \ - || exit 1 - - .PHONY: maybe-distclean-target-gperf distclean-target-gperf maybe-distclean-target-gperf: @@ -15837,7 +15471,6 @@ maintainer-clean-host: maybe-maintainer- maybe-maintainer-clean-byacc \ maybe-maintainer-clean-bzip2 \ maybe-maintainer-clean-dejagnu \ - maybe-maintainer-clean-demangler \ maybe-maintainer-clean-diff \ maybe-maintainer-clean-dosutils \ maybe-maintainer-clean-etc \ @@ -15902,7 +15535,6 @@ maintainer-clean-target: \ maybe-maintainer-clean-target-winsup \ maybe-maintainer-clean-target-libgloss \ maybe-maintainer-clean-target-libiberty \ - maybe-maintainer-clean-target-demangler \ maybe-maintainer-clean-target-gperf \ maybe-maintainer-clean-target-examples \ maybe-maintainer-clean-target-libffi \ @@ -16165,27 +15797,6 @@ maintainer-clean-dejagnu: || exit 1 -.PHONY: maybe-maintainer-clean-demangler maintainer-clean-demangler -maybe-maintainer-clean-demangler: - -maintainer-clean-demangler: - @[ -f ./demangler/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - for flag in $(EXTRA_HOST_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in demangler" ; \ - (cd demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - maintainer-clean) \ - || exit 1 - - .PHONY: maybe-maintainer-clean-diff maintainer-clean-diff maybe-maintainer-clean-diff: @@ -17442,27 +17053,6 @@ maintainer-clean-target-libiberty: || exit 1 -.PHONY: maybe-maintainer-clean-target-demangler maintainer-clean-target-demangler -maybe-maintainer-clean-target-demangler: - -maintainer-clean-target-demangler: - @[ -f $(TARGET_SUBDIR)/demangler/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/demangler" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/demangler && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - maintainer-clean) \ - || exit 1 - - .PHONY: maybe-maintainer-clean-target-gperf maintainer-clean-target-gperf maybe-maintainer-clean-target-gperf: @@ -17666,7 +17256,7 @@ local-distclean: -rm -f texinfo/doc/Makefile texinfo/po/POTFILES -rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null -rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null - -rmdir fastjar gcc libiberty demangler texinfo zlib 2>/dev/null + -rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null local-maintainer-clean: @echo "This command is intended for maintainers to use;" @@ -17705,7 +17295,6 @@ do-check: maybe-check-gcc \ maybe-check-byacc \ maybe-check-bzip2 \ maybe-check-dejagnu \ - maybe-check-demangler \ maybe-check-diff \ maybe-check-dosutils \ maybe-check-etc \ @@ -17767,7 +17356,6 @@ do-check: maybe-check-gcc \ maybe-check-target-winsup \ maybe-check-target-libgloss \ maybe-check-target-libiberty \ - maybe-check-target-demangler \ maybe-check-target-gperf \ maybe-check-target-examples \ maybe-check-target-libffi \ @@ -17816,7 +17404,6 @@ install-host-nogcc: \ maybe-install-byacc \ maybe-install-bzip2 \ maybe-install-dejagnu \ - maybe-install-demangler \ maybe-install-diff \ maybe-install-dosutils \ maybe-install-etc \ @@ -17884,7 +17471,6 @@ install-host: maybe-install-gcc \ maybe-install-byacc \ maybe-install-bzip2 \ maybe-install-dejagnu \ - maybe-install-demangler \ maybe-install-diff \ maybe-install-dosutils \ maybe-install-etc \ @@ -17949,7 +17535,6 @@ install-target: \ maybe-install-target-winsup \ maybe-install-target-libgloss \ maybe-install-target-libiberty \ - maybe-install-target-demangler \ maybe-install-target-gperf \ maybe-install-target-examples \ maybe-install-target-libffi \ @@ -18024,6 +17609,7 @@ configure-build-libiberty: AS="$(AS_FOR_BUILD)"; export AS; \ CC="$(CC_FOR_BUILD)"; export CC; \ CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX_FOR_BUILD)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \ GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \ @@ -18081,74 +17667,6 @@ all-build-libiberty: configure-build-lib s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ (cd $(BUILD_SUBDIR)/libiberty && $(MAKE) all) -.PHONY: configure-build-demangler maybe-configure-build-demangler -maybe-configure-build-demangler: -configure-build-demangler: - @test ! -f $(BUILD_SUBDIR)/demangler/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/demangler ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - AR="$(AR_FOR_BUILD)"; export AR; \ - AS="$(AS_FOR_BUILD)"; export AS; \ - CC="$(CC_FOR_BUILD)"; export CC; \ - CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \ - CXX="$(CXX_FOR_BUILD)"; export CXX; \ - CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \ - GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \ - DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ - LD="$(LD_FOR_BUILD)"; export LD; \ - LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ - NM="$(NM_FOR_BUILD)"; export NM; \ - RANLIB="$(RANLIB_FOR_BUILD)"; export RANLIB; \ - WINDRES="$(WINDRES_FOR_BUILD)"; export WINDRES; \ - echo Configuring in $(BUILD_SUBDIR)/demangler; \ - cd "$(BUILD_SUBDIR)/demangler" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) \ - topdir=$(srcdir) ;; \ - *) \ - case "$(BUILD_SUBDIR)" in \ - .) topdir="../$(srcdir)" ;; \ - *) topdir="../../$(srcdir)" ;; \ - esac ;; \ - esac; \ - if [ "$(srcdir)" = "." ] ; then \ - if [ "$(BUILD_SUBDIR)" != "." ] ; then \ - if $(SHELL) $$s/symlink-tree $${topdir}/demangler "no-such-file" ; then \ - if [ -f Makefile ]; then \ - if $(MAKE) distclean; then \ - true; \ - else \ - exit 1; \ - fi; \ - else \ - true; \ - fi; \ - else \ - exit 1; \ - fi; \ - else \ - true; \ - fi; \ - srcdiroption="--srcdir=."; \ - libsrcdir="."; \ - else \ - srcdiroption="--srcdir=$${topdir}/demangler"; \ - libsrcdir="$$s/demangler"; \ - fi; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(BUILD_CONFIGARGS) $${srcdiroption} \ - --with-build-subdir="$(BUILD_SUBDIR)" \ - || exit 1 - -.PHONY: all-build-demangler maybe-all-build-demangler -maybe-all-build-demangler: -all-build-demangler: configure-build-demangler - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - (cd $(BUILD_SUBDIR)/demangler && $(MAKE) all) - # -------------------------------------- # Modules which run on the host machine @@ -18163,6 +17681,7 @@ configure-ash: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -18229,6 +17748,7 @@ configure-autoconf: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -18295,6 +17815,7 @@ configure-automake: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -18361,6 +17882,7 @@ configure-bash: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -18427,6 +17949,7 @@ configure-bfd: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -18493,6 +18016,7 @@ configure-opcodes: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -18559,6 +18083,7 @@ configure-binutils: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -18625,6 +18150,7 @@ configure-bison: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -18694,6 +18220,7 @@ configure-byacc: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -18763,6 +18290,7 @@ configure-bzip2: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -18829,6 +18357,7 @@ configure-dejagnu: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -18886,68 +18415,6 @@ install-dejagnu: installdirs (cd dejagnu && $(MAKE) $(FLAGS_TO_PASS) install) -.PHONY: configure-demangler maybe-configure-demangler -maybe-configure-demangler: -configure-demangler: - @test ! -f demangler/Makefile || exit 0; \ - [ -d demangler ] || mkdir demangler; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - CC="$(CC)"; export CC; \ - CFLAGS="$(CFLAGS)"; export CFLAGS; \ - CXX="$(CXX)"; export CXX; \ - CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ - AR="$(AR)"; export AR; \ - AS="$(AS)"; export AS; \ - CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ - DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \ - LD="$(LD)"; export LD; \ - NM="$(NM)"; export NM; \ - RANLIB="$(RANLIB)"; export RANLIB; \ - WINDRES="$(WINDRES)"; export WINDRES; \ - OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \ - OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \ - echo Configuring in demangler; \ - cd demangler || exit 1; \ - case $(srcdir) in \ - \.) \ - srcdiroption="--srcdir=."; \ - libsrcdir=".";; \ - /* | [A-Za-z]:[\\/]*) \ - srcdiroption="--srcdir=$(srcdir)/demangler"; \ - libsrcdir="$$s/demangler";; \ - *) \ - srcdiroption="--srcdir=../$(srcdir)/demangler"; \ - libsrcdir="$$s/demangler";; \ - esac; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) $${srcdiroption} \ - || exit 1 - -.PHONY: all-demangler maybe-all-demangler -maybe-all-demangler: -all-demangler: configure-demangler - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - (cd demangler && $(MAKE) $(FLAGS_TO_PASS) all) - -.PHONY: check-demangler maybe-check-demangler -maybe-check-demangler: - -check-demangler: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - (cd demangler && $(MAKE) $(FLAGS_TO_PASS) check) - - -.PHONY: install-demangler maybe-install-demangler -maybe-install-demangler: - -install-demangler: - - .PHONY: configure-diff maybe-configure-diff maybe-configure-diff: configure-diff: @@ -18957,6 +18424,7 @@ configure-diff: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19023,6 +18491,7 @@ configure-dosutils: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19085,6 +18554,7 @@ configure-etc: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19151,6 +18621,7 @@ configure-fastjar: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19220,6 +18691,7 @@ configure-fileutils: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19286,6 +18758,7 @@ configure-findutils: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19352,6 +18825,7 @@ configure-find: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19418,6 +18892,7 @@ configure-flex: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19487,6 +18962,7 @@ configure-gas: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19553,6 +19029,7 @@ configure-gawk: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19619,6 +19096,7 @@ configure-gettext: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19685,6 +19163,7 @@ configure-gnuserv: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19751,6 +19230,7 @@ configure-gprof: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19817,6 +19297,7 @@ configure-gzip: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19883,6 +19364,7 @@ configure-hello: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -19949,6 +19431,7 @@ configure-indent: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20015,6 +19498,7 @@ configure-intl: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20081,6 +19565,7 @@ configure-tcl: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20147,6 +19632,7 @@ configure-itcl: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20213,6 +19699,7 @@ configure-ld: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20279,6 +19766,7 @@ configure-libgui: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20345,6 +19833,7 @@ configure-libiberty: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20411,6 +19900,7 @@ configure-libtool: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20477,6 +19967,7 @@ configure-m4: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20543,6 +20034,7 @@ configure-make: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20609,6 +20101,7 @@ configure-mmalloc: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20671,6 +20164,7 @@ configure-patch: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20737,6 +20231,7 @@ configure-perl: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20803,6 +20298,7 @@ configure-prms: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20869,6 +20365,7 @@ configure-rcs: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -20935,6 +20432,7 @@ configure-readline: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21001,6 +20499,7 @@ configure-release: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21059,6 +20558,7 @@ configure-recode: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21125,6 +20625,7 @@ configure-sed: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21191,6 +20692,7 @@ configure-send-pr: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21257,6 +20759,7 @@ configure-shellutils: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21323,6 +20826,7 @@ configure-sid: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21389,6 +20893,7 @@ configure-sim: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21455,6 +20960,7 @@ configure-tar: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21521,6 +21027,7 @@ configure-texinfo: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21583,6 +21090,7 @@ configure-textutils: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21649,6 +21157,7 @@ configure-time: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21715,6 +21224,7 @@ configure-uudecode: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21781,6 +21291,7 @@ configure-wdiff: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21847,6 +21358,7 @@ configure-zip: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21916,6 +21428,7 @@ configure-zlib: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -21974,6 +21487,7 @@ configure-gdb: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -22040,6 +21554,7 @@ configure-expect: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -22106,6 +21621,7 @@ configure-guile: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -22172,6 +21688,7 @@ configure-tk: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -22238,6 +21755,7 @@ configure-tix: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -22304,6 +21822,7 @@ configure-libtermcap: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -22366,6 +21885,7 @@ configure-utils: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -22443,6 +21963,7 @@ configure-target-libstdc++-v3: $(TARGET_ AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \ CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; \ @@ -22545,6 +22066,7 @@ configure-target-newlib: $(TARGET_SUBDIR AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -22646,6 +22168,7 @@ configure-target-libf2c: $(TARGET_SUBDIR AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -22747,6 +22270,7 @@ configure-target-libobjc: $(TARGET_SUBDI AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -22848,6 +22372,7 @@ configure-target-libtermcap: $(TARGET_SU AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -22945,6 +22470,7 @@ configure-target-winsup: $(TARGET_SUBDIR AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -23046,6 +22572,7 @@ configure-target-libgloss: $(TARGET_SUBD AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -23143,6 +22670,7 @@ configure-target-libiberty: $(TARGET_SUB AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -23225,103 +22753,6 @@ install-target-libiberty: installdirs $(MAKE) $(TARGET_FLAGS_TO_PASS) install) -.PHONY: configure-target-demangler maybe-configure-target-demangler -maybe-configure-target-demangler: - -# There's only one multilib.out. Cleverer subdirs shouldn't need it copied. -$(TARGET_SUBDIR)/demangler/multilib.out: multilib.out - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/demangler ; \ - rm -f $(TARGET_SUBDIR)/demangler/Makefile || : ; \ - cp multilib.out $(TARGET_SUBDIR)/demangler/multilib.out - -configure-target-demangler: $(TARGET_SUBDIR)/demangler/multilib.out - @test ! -f $(TARGET_SUBDIR)/demangler/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/demangler ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - AR="$(AR_FOR_TARGET)"; export AR; \ - AS="$(AS_FOR_TARGET)"; export AS; \ - CC="$(CC_FOR_TARGET)"; export CC; \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ - CXX="$(CXX_FOR_TARGET)"; export CXX; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \ - DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ - LD="$(LD_FOR_TARGET)"; export LD; \ - LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ - NM="$(NM_FOR_TARGET)"; export NM; \ - RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \ - WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \ - echo Configuring in $(TARGET_SUBDIR)/demangler; \ - cd "$(TARGET_SUBDIR)/demangler" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) \ - topdir=$(srcdir) ;; \ - *) \ - case "$(TARGET_SUBDIR)" in \ - .) topdir="../$(srcdir)" ;; \ - *) topdir="../../$(srcdir)" ;; \ - esac ;; \ - esac; \ - if [ "$(srcdir)" = "." ] ; then \ - if [ "$(TARGET_SUBDIR)" != "." ] ; then \ - if $(SHELL) $$s/symlink-tree $${topdir}/demangler "no-such-file" ; then \ - if [ -f Makefile ]; then \ - if $(MAKE) distclean; then \ - true; \ - else \ - exit 1; \ - fi; \ - else \ - true; \ - fi; \ - else \ - exit 1; \ - fi; \ - else \ - true; \ - fi; \ - srcdiroption="--srcdir=."; \ - libsrcdir="."; \ - else \ - srcdiroption="--srcdir=$${topdir}/demangler"; \ - libsrcdir="$$s/demangler"; \ - fi; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) $${srcdiroption} \ - --with-target-subdir="$(TARGET_SUBDIR)" \ - || exit 1 - -.PHONY: all-target-demangler maybe-all-target-demangler -maybe-all-target-demangler: -all-target-demangler: configure-target-demangler - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - (cd $(TARGET_SUBDIR)/demangler && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) all) - -.PHONY: check-target-demangler maybe-check-target-demangler -maybe-check-target-demangler: - -check-target-demangler: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(SET_LIB_PATH) \ - (cd $(TARGET_SUBDIR)/demangler && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - - -.PHONY: install-target-demangler maybe-install-target-demangler -maybe-install-target-demangler: - -# Dummy target for uninstallable. -install-target-demangler: - - .PHONY: configure-target-gperf maybe-configure-target-gperf maybe-configure-target-gperf: @@ -23341,6 +22772,7 @@ configure-target-gperf: $(TARGET_SUBDIR) AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -23442,6 +22874,7 @@ configure-target-examples: $(TARGET_SUBD AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -23535,6 +22968,7 @@ configure-target-libffi: $(TARGET_SUBDIR AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -23636,6 +23070,7 @@ configure-target-libjava: $(TARGET_SUBDI AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \ CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; \ @@ -23738,6 +23173,7 @@ configure-target-zlib: $(TARGET_SUBDIR)/ AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -23839,6 +23275,7 @@ configure-target-boehm-gc: $(TARGET_SUBD AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -23940,6 +23377,7 @@ configure-target-qthreads: $(TARGET_SUBD AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -24041,6 +23479,7 @@ configure-target-rda: $(TARGET_SUBDIR)/r AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ @@ -24133,6 +23572,9 @@ install-target-rda: installdirs # build modules. So GCC is a sort of hybrid. # gcc is the only module which uses GCC_FLAGS_TO_PASS. +# Don't use shared host config.cache, as it will confuse later +# directories; GCC wants slightly different values for some +# precious variables. *sigh* .PHONY: configure-gcc maybe-configure-gcc maybe-configure-gcc: configure-gcc: @@ -24142,6 +23584,7 @@ configure-gcc: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ TOPLEVEL_CONFIGURE_ARGUMENTS="$(TOPLEVEL_CONFIGURE_ARGUMENTS)"; export TOPLEVEL_CONFIGURE_ARGUMENTS; \ @@ -24334,59 +23777,39 @@ gcc-no-fixedincludes: # are specified by depending on a 'maybe-' target. If you're not sure, # it's safer to use a soft dependency. -# Demangler depends on libiberty. -configure-demangler: maybe-configure-libiberty -all-demangler: maybe-all-libiberty - -# The new demangler, which is included in libiberty, is written in C++. -# A working C++ compiler is required. For the target demangler, it may -# depend on libstdc++ if it is built. But libstdc++ also depends on -# libiberty. We work around it by adding a new directory, demangler. -# Demangler will update libiberty with the new demangler if a working -# C++ compiler is available. Otherwise, the old demangler will be -# included in libiberty. For host and build systems, the C++ compiler -# check will be done after libiberty is built. For target system, the -# check will be done after libstdc++, which is built after libiberty. -# For parallel make, we have to make sure noone will use libiberty -# when it is being updated by demangler. We make everyone but libstdc++, -# which uses libiberty, depends on both libiberty and demangler. -ALL_LIBIBERTY=maybe-all-libiberty maybe-all-demangler -ALL_BUILD_LIBIBERTY=maybe-all-build-libiberty maybe-all-build-demangler -ALL_TARGET_LIBIBERTY=maybe-all-target-libiberty maybe-all-target-demangler - # Host modules specific to gcc. # GCC needs to identify certain tools. # GCC also needs the information exported by the intl configure script. configure-gcc: maybe-configure-intl maybe-configure-binutils maybe-configure-gas maybe-configure-ld maybe-configure-bison maybe-configure-flex -all-gcc: $(ALL_LIBIBERTY) maybe-all-intl maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib +all-gcc: maybe-all-libiberty maybe-all-intl maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib # This is a slightly kludgy method of getting dependencies on # all-build-libiberty correct; it would be better to build it every time. -all-gcc: $(ALL_BUILD_LIBIBERTY) -all-bootstrap: $(ALL_LIBIBERTY) maybe-all-intl maybe-all-texinfo maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib +all-gcc: maybe-all-build-libiberty +all-bootstrap: maybe-all-libiberty maybe-all-intl maybe-all-texinfo maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib # Host modules specific to gdb. # GDB needs to know that the simulator is being built. configure-gdb: maybe-configure-itcl maybe-configure-tcl maybe-configure-tk maybe-configure-sim GDB_TK = @GDB_TK@ -all-gdb: $(ALL_LIBIBERTY) maybe-all-opcodes maybe-all-bfd maybe-all-mmalloc maybe-all-readline maybe-all-bison maybe-all-byacc maybe-all-sim $(gdbnlmrequirements) $(GDB_TK) +all-gdb: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-mmalloc maybe-all-readline maybe-all-bison maybe-all-byacc maybe-all-sim $(gdbnlmrequirements) $(GDB_TK) install-gdb: maybe-install-tcl maybe-install-tk maybe-install-itcl maybe-install-tix maybe-install-libgui configure-libgui: maybe-configure-tcl maybe-configure-tk all-libgui: maybe-all-tcl maybe-all-tk maybe-all-itcl # Host modules specific to binutils. configure-bfd: configure-libiberty -all-bfd: $(ALL_LIBIBERTY) maybe-all-intl -all-binutils: $(ALL_LIBIBERTY) maybe-all-opcodes maybe-all-bfd maybe-all-flex maybe-all-bison maybe-all-byacc maybe-all-intl +all-bfd: maybe-all-libiberty maybe-all-intl +all-binutils: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-flex maybe-all-bison maybe-all-byacc maybe-all-intl # We put install-opcodes before install-binutils because the installed # binutils might be on PATH, and they might need the shared opcodes # library. install-binutils: maybe-install-opcodes # libopcodes depends on libbfd install-opcodes: maybe-install-bfd -all-gas: $(ALL_LIBIBERTY) maybe-all-opcodes maybe-all-bfd maybe-all-intl -all-gprof: $(ALL_LIBIBERTY) maybe-all-bfd maybe-all-opcodes maybe-all-intl -all-ld: $(ALL_LIBIBERTY) maybe-all-bfd maybe-all-opcodes maybe-all-bison maybe-all-byacc maybe-all-flex maybe-all-intl -all-opcodes: maybe-all-bfd $(ALL_LIBIBERTY) +all-gas: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-intl +all-gprof: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-intl +all-ld: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-bison maybe-all-byacc maybe-all-flex maybe-all-intl +all-opcodes: maybe-all-bfd maybe-all-libiberty # Other host modules in the 'src' repository. all-dejagnu: maybe-all-tcl maybe-all-expect maybe-all-tk @@ -24397,34 +23820,34 @@ all-itcl: maybe-all-tcl maybe-all-tk # We put install-tcl before install-itcl because itcl wants to run a # program on installation which uses the Tcl libraries. install-itcl: maybe-install-tcl -all-sid: $(ALL_LIBIBERTY) maybe-all-bfd maybe-all-opcodes maybe-all-tcl maybe-all-tk +all-sid: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-tcl maybe-all-tk install-sid: maybe-install-tcl maybe-install-tk -all-sim: $(ALL_LIBIBERTY) maybe-all-bfd maybe-all-opcodes maybe-all-readline maybe-configure-gdb +all-sim: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-readline maybe-configure-gdb configure-tk: maybe-configure-tcl all-tk: maybe-all-tcl configure-tix: maybe-configure-tcl maybe-configure-tk all-tix: maybe-all-tcl maybe-all-tk -all-texinfo: $(ALL_LIBIBERTY) +all-texinfo: maybe-all-libiberty # Other host modules. Warning, these are not well tested. all-autoconf: maybe-all-m4 maybe-all-texinfo all-automake: maybe-all-m4 maybe-all-texinfo all-bison: maybe-all-texinfo -all-diff: $(ALL_LIBIBERTY) -all-fastjar: maybe-all-zlib $(ALL_LIBIBERTY) -all-fileutils: $(ALL_LIBIBERTY) -all-flex: $(ALL_LIBIBERTY) maybe-all-bison maybe-all-byacc -all-gzip: $(ALL_LIBIBERTY) -all-hello: $(ALL_LIBIBERTY) -all-m4: $(ALL_LIBIBERTY) maybe-all-texinfo -all-make: $(ALL_LIBIBERTY) maybe-all-intl -all-patch: $(ALL_LIBIBERTY) -all-prms: $(ALL_LIBIBERTY) -all-recode: $(ALL_LIBIBERTY) -all-sed: $(ALL_LIBIBERTY) +all-diff: maybe-all-libiberty +all-fastjar: maybe-all-zlib maybe-all-libiberty +all-fileutils: maybe-all-libiberty +all-flex: maybe-all-libiberty maybe-all-bison maybe-all-byacc +all-gzip: maybe-all-libiberty +all-hello: maybe-all-libiberty +all-m4: maybe-all-libiberty maybe-all-texinfo +all-make: maybe-all-libiberty maybe-all-intl +all-patch: maybe-all-libiberty +all-prms: maybe-all-libiberty +all-recode: maybe-all-libiberty +all-sed: maybe-all-libiberty all-send-pr: maybe-all-prms -all-tar: $(ALL_LIBIBERTY) -all-uudecode: $(ALL_LIBIBERTY) +all-tar: maybe-all-libiberty +all-uudecode: maybe-all-libiberty ALL_GCC = maybe-all-gcc ALL_GCC_C = $(ALL_GCC) maybe-all-target-newlib maybe-all-target-libgloss @@ -24433,19 +23856,17 @@ ALL_GCC_CXX = $(ALL_GCC_C) maybe-all-tar # Target modules specific to gcc. configure-target-boehm-gc: $(ALL_GCC_C) maybe-configure-target-qthreads configure-target-fastjar: maybe-configure-target-zlib -all-target-fastjar: maybe-all-target-zlib $(ALL_TARGET_LIBIBERTY) +all-target-fastjar: maybe-all-target-zlib maybe-all-target-libiberty configure-target-libf2c: $(ALL_GCC_C) -all-target-libf2c: $(ALL_TARGET_LIBIBERTY) +all-target-libf2c: maybe-all-target-libiberty configure-target-libffi: $(ALL_GCC_C) configure-target-libjava: $(ALL_GCC_C) maybe-configure-target-zlib maybe-configure-target-boehm-gc maybe-configure-target-qthreads maybe-configure-target-libffi all-target-libjava: maybe-all-fastjar maybe-all-target-zlib maybe-all-target-boehm-gc maybe-all-target-qthreads maybe-all-target-libffi configure-target-libobjc: $(ALL_GCC_C) -all-target-libobjc: $(ALL_TARGET_LIBIBERTY) +all-target-libobjc: maybe-all-target-libiberty configure-target-libstdc++-v3: $(ALL_GCC_C) all-target-libstdc++-v3: maybe-all-target-libiberty configure-target-zlib: $(ALL_GCC_C) -configure-target-demangler: maybe-all-target-libstdc++-v3 -all-target-demangler: configure-target-demangler # Target modules in the 'src' repository. configure-target-examples: $(ALL_GCC_C) @@ -24456,11 +23877,11 @@ configure-target-libtermcap: $(ALL_GCC_C configure-target-newlib: $(ALL_GCC) configure-target-rda: $(ALL_GCC_C) configure-target-winsup: $(ALL_GCC_C) -all-target-winsup: $(ALL_TARGET_LIBIBERTY) maybe-all-target-libtermcap +all-target-winsup: maybe-all-target-libiberty maybe-all-target-libtermcap # Other target modules. Warning, these are not well tested. configure-target-gperf: $(ALL_GCC_CXX) -all-target-gperf: $(ALL_TARGET_LIBIBERTY) maybe-all-target-libstdc++-v3 +all-target-gperf: maybe-all-target-libiberty maybe-all-target-libstdc++-v3 configure-target-qthreads: $(ALL_GCC_C) # Dependencies of maybe-foo on foo. These are used because, for example, @@ -24497,7 +23918,7 @@ Makefile: $(srcdir)/Makefile.in config.s CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status config.status: configure $(gcc_version_trigger) - $(SHELL) ./config.status --recheck + CONFIG_SHELL="$(SHELL)" $(SHELL) ./config.status --recheck # Rebuilding configure. AUTOCONF = autoconf diff -uprN binutils-2.14.90.0.7/Makefile.tpl binutils-2.14.90.0.8/Makefile.tpl --- binutils-2.14.90.0.7/Makefile.tpl 2003-10-29 09:38:20.000000000 -0800 +++ binutils-2.14.90.0.8/Makefile.tpl 2004-01-14 13:07:42.000000000 -0800 @@ -106,7 +106,7 @@ REALLY_SET_LIB_PATH = \ $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH):$(TARGET_LIB_PATH):$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); # This is the list of directories to be built for the build system. -BUILD_CONFIGDIRS = libiberty demangler +BUILD_CONFIGDIRS = libiberty # Build programs are put under this directory. BUILD_SUBDIR = @build_subdir@ # This is set by the configure script to the arguments to use when configuring @@ -389,6 +389,7 @@ all: all.normal # Flags to pass down to all sub-makes. BASE_FLAGS_TO_PASS = [+ FOR flags_to_pass +]\ "[+flag+]=$([+flag+])" [+ ENDFOR flags_to_pass +]\ + "CONFIG_SHELL=$(SHELL)" \ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" # For any flags above that may contain shell code that varies from one @@ -465,7 +466,8 @@ EXTRA_GCC_FLAGS = \ "`echo 'LIBGCC2_DEBUG_CFLAGS=$(LIBGCC2_DEBUG_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \ "`echo 'LIBGCC2_INCLUDES=$(LIBGCC2_INCLUDES)' | sed -e s/.*=$$/XFOO=/`" \ "`echo 'STAGE1_CFLAGS=$(STAGE1_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \ - "`echo 'BOOT_CFLAGS=$(BOOT_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" + "`echo 'BOOT_CFLAGS=$(BOOT_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \ + "`echo 'BOOT_ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s/.*=$$/XFOO=/`" GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) @@ -632,7 +634,7 @@ local-distclean: -rm -f texinfo/doc/Makefile texinfo/po/POTFILES -rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null -rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null - -rmdir fastjar gcc libiberty demangler texinfo zlib 2>/dev/null + -rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null local-maintainer-clean: @echo "This command is intended for maintainers to use;" @@ -776,6 +778,7 @@ configure-build-[+module+]: AS="$(AS_FOR_BUILD)"; export AS; \ CC="$(CC_FOR_BUILD)"; export CC; \ CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX_FOR_BUILD)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \ GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \ @@ -847,6 +850,7 @@ configure-[+module+]: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ AR="$(AR)"; export AR; \ @@ -953,6 +957,7 @@ configure-target-[+module+]: $(TARGET_SU AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \[+ IF raw_cxx +] CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \ @@ -1064,6 +1069,9 @@ install-target-[+module+]: installdirs # build modules. So GCC is a sort of hybrid. # gcc is the only module which uses GCC_FLAGS_TO_PASS. +# Don't use shared host config.cache, as it will confuse later +# directories; GCC wants slightly different values for some +# precious variables. *sigh* .PHONY: configure-gcc maybe-configure-gcc maybe-configure-gcc: configure-gcc: @@ -1073,6 +1081,7 @@ configure-gcc: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ CC="$(CC)"; export CC; \ CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ TOPLEVEL_CONFIGURE_ARGUMENTS="$(TOPLEVEL_CONFIGURE_ARGUMENTS)"; export TOPLEVEL_CONFIGURE_ARGUMENTS; \ @@ -1265,59 +1274,39 @@ gcc-no-fixedincludes: # are specified by depending on a 'maybe-' target. If you're not sure, # it's safer to use a soft dependency. -# Demangler depends on libiberty. -configure-demangler: maybe-configure-libiberty -all-demangler: maybe-all-libiberty - -# The new demangler, which is included in libiberty, is written in C++. -# A working C++ compiler is required. For the target demangler, it may -# depend on libstdc++ if it is built. But libstdc++ also depends on -# libiberty. We work around it by adding a new directory, demangler. -# Demangler will update libiberty with the new demangler if a working -# C++ compiler is available. Otherwise, the old demangler will be -# included in libiberty. For host and build systems, the C++ compiler -# check will be done after libiberty is built. For target system, the -# check will be done after libstdc++, which is built after libiberty. -# For parallel make, we have to make sure noone will use libiberty -# when it is being updated by demangler. We make everyone but libstdc++, -# which uses libiberty, depends on both libiberty and demangler. -ALL_LIBIBERTY=maybe-all-libiberty maybe-all-demangler -ALL_BUILD_LIBIBERTY=maybe-all-build-libiberty maybe-all-build-demangler -ALL_TARGET_LIBIBERTY=maybe-all-target-libiberty maybe-all-target-demangler - # Host modules specific to gcc. # GCC needs to identify certain tools. # GCC also needs the information exported by the intl configure script. configure-gcc: maybe-configure-intl maybe-configure-binutils maybe-configure-gas maybe-configure-ld maybe-configure-bison maybe-configure-flex -all-gcc: $(ALL_LIBIBERTY) maybe-all-intl maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib +all-gcc: maybe-all-libiberty maybe-all-intl maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib # This is a slightly kludgy method of getting dependencies on # all-build-libiberty correct; it would be better to build it every time. -all-gcc: $(ALL_BUILD_LIBIBERTY) -all-bootstrap: $(ALL_LIBIBERTY) maybe-all-intl maybe-all-texinfo maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib +all-gcc: maybe-all-build-libiberty +all-bootstrap: maybe-all-libiberty maybe-all-intl maybe-all-texinfo maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib # Host modules specific to gdb. # GDB needs to know that the simulator is being built. configure-gdb: maybe-configure-itcl maybe-configure-tcl maybe-configure-tk maybe-configure-sim GDB_TK = @GDB_TK@ -all-gdb: $(ALL_LIBIBERTY) maybe-all-opcodes maybe-all-bfd maybe-all-mmalloc maybe-all-readline maybe-all-bison maybe-all-byacc maybe-all-sim $(gdbnlmrequirements) $(GDB_TK) +all-gdb: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-mmalloc maybe-all-readline maybe-all-bison maybe-all-byacc maybe-all-sim $(gdbnlmrequirements) $(GDB_TK) install-gdb: maybe-install-tcl maybe-install-tk maybe-install-itcl maybe-install-tix maybe-install-libgui configure-libgui: maybe-configure-tcl maybe-configure-tk all-libgui: maybe-all-tcl maybe-all-tk maybe-all-itcl # Host modules specific to binutils. configure-bfd: configure-libiberty -all-bfd: $(ALL_LIBIBERTY) maybe-all-intl -all-binutils: $(ALL_LIBIBERTY) maybe-all-opcodes maybe-all-bfd maybe-all-flex maybe-all-bison maybe-all-byacc maybe-all-intl +all-bfd: maybe-all-libiberty maybe-all-intl +all-binutils: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-flex maybe-all-bison maybe-all-byacc maybe-all-intl # We put install-opcodes before install-binutils because the installed # binutils might be on PATH, and they might need the shared opcodes # library. install-binutils: maybe-install-opcodes # libopcodes depends on libbfd install-opcodes: maybe-install-bfd -all-gas: $(ALL_LIBIBERTY) maybe-all-opcodes maybe-all-bfd maybe-all-intl -all-gprof: $(ALL_LIBIBERTY) maybe-all-bfd maybe-all-opcodes maybe-all-intl -all-ld: $(ALL_LIBIBERTY) maybe-all-bfd maybe-all-opcodes maybe-all-bison maybe-all-byacc maybe-all-flex maybe-all-intl -all-opcodes: maybe-all-bfd $(ALL_LIBIBERTY) +all-gas: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-intl +all-gprof: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-intl +all-ld: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-bison maybe-all-byacc maybe-all-flex maybe-all-intl +all-opcodes: maybe-all-bfd maybe-all-libiberty # Other host modules in the 'src' repository. all-dejagnu: maybe-all-tcl maybe-all-expect maybe-all-tk @@ -1328,34 +1317,34 @@ all-itcl: maybe-all-tcl maybe-all-tk # We put install-tcl before install-itcl because itcl wants to run a # program on installation which uses the Tcl libraries. install-itcl: maybe-install-tcl -all-sid: $(ALL_LIBIBERTY) maybe-all-bfd maybe-all-opcodes maybe-all-tcl maybe-all-tk +all-sid: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-tcl maybe-all-tk install-sid: maybe-install-tcl maybe-install-tk -all-sim: $(ALL_LIBIBERTY) maybe-all-bfd maybe-all-opcodes maybe-all-readline maybe-configure-gdb +all-sim: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-readline maybe-configure-gdb configure-tk: maybe-configure-tcl all-tk: maybe-all-tcl configure-tix: maybe-configure-tcl maybe-configure-tk all-tix: maybe-all-tcl maybe-all-tk -all-texinfo: $(ALL_LIBIBERTY) +all-texinfo: maybe-all-libiberty # Other host modules. Warning, these are not well tested. all-autoconf: maybe-all-m4 maybe-all-texinfo all-automake: maybe-all-m4 maybe-all-texinfo all-bison: maybe-all-texinfo -all-diff: $(ALL_LIBIBERTY) -all-fastjar: maybe-all-zlib $(ALL_LIBIBERTY) -all-fileutils: $(ALL_LIBIBERTY) -all-flex: $(ALL_LIBIBERTY) maybe-all-bison maybe-all-byacc -all-gzip: $(ALL_LIBIBERTY) -all-hello: $(ALL_LIBIBERTY) -all-m4: $(ALL_LIBIBERTY) maybe-all-texinfo -all-make: $(ALL_LIBIBERTY) maybe-all-intl -all-patch: $(ALL_LIBIBERTY) -all-prms: $(ALL_LIBIBERTY) -all-recode: $(ALL_LIBIBERTY) -all-sed: $(ALL_LIBIBERTY) +all-diff: maybe-all-libiberty +all-fastjar: maybe-all-zlib maybe-all-libiberty +all-fileutils: maybe-all-libiberty +all-flex: maybe-all-libiberty maybe-all-bison maybe-all-byacc +all-gzip: maybe-all-libiberty +all-hello: maybe-all-libiberty +all-m4: maybe-all-libiberty maybe-all-texinfo +all-make: maybe-all-libiberty maybe-all-intl +all-patch: maybe-all-libiberty +all-prms: maybe-all-libiberty +all-recode: maybe-all-libiberty +all-sed: maybe-all-libiberty all-send-pr: maybe-all-prms -all-tar: $(ALL_LIBIBERTY) -all-uudecode: $(ALL_LIBIBERTY) +all-tar: maybe-all-libiberty +all-uudecode: maybe-all-libiberty ALL_GCC = maybe-all-gcc ALL_GCC_C = $(ALL_GCC) maybe-all-target-newlib maybe-all-target-libgloss @@ -1364,19 +1353,17 @@ ALL_GCC_CXX = $(ALL_GCC_C) maybe-all-tar # Target modules specific to gcc. configure-target-boehm-gc: $(ALL_GCC_C) maybe-configure-target-qthreads configure-target-fastjar: maybe-configure-target-zlib -all-target-fastjar: maybe-all-target-zlib $(ALL_TARGET_LIBIBERTY) +all-target-fastjar: maybe-all-target-zlib maybe-all-target-libiberty configure-target-libf2c: $(ALL_GCC_C) -all-target-libf2c: $(ALL_TARGET_LIBIBERTY) +all-target-libf2c: maybe-all-target-libiberty configure-target-libffi: $(ALL_GCC_C) configure-target-libjava: $(ALL_GCC_C) maybe-configure-target-zlib maybe-configure-target-boehm-gc maybe-configure-target-qthreads maybe-configure-target-libffi all-target-libjava: maybe-all-fastjar maybe-all-target-zlib maybe-all-target-boehm-gc maybe-all-target-qthreads maybe-all-target-libffi configure-target-libobjc: $(ALL_GCC_C) -all-target-libobjc: $(ALL_TARGET_LIBIBERTY) +all-target-libobjc: maybe-all-target-libiberty configure-target-libstdc++-v3: $(ALL_GCC_C) all-target-libstdc++-v3: maybe-all-target-libiberty configure-target-zlib: $(ALL_GCC_C) -configure-target-demangler: maybe-all-target-libstdc++-v3 -all-target-demangler: configure-target-demangler # Target modules in the 'src' repository. configure-target-examples: $(ALL_GCC_C) @@ -1387,11 +1374,11 @@ configure-target-libtermcap: $(ALL_GCC_C configure-target-newlib: $(ALL_GCC) configure-target-rda: $(ALL_GCC_C) configure-target-winsup: $(ALL_GCC_C) -all-target-winsup: $(ALL_TARGET_LIBIBERTY) maybe-all-target-libtermcap +all-target-winsup: maybe-all-target-libiberty maybe-all-target-libtermcap # Other target modules. Warning, these are not well tested. configure-target-gperf: $(ALL_GCC_CXX) -all-target-gperf: $(ALL_TARGET_LIBIBERTY) maybe-all-target-libstdc++-v3 +all-target-gperf: maybe-all-target-libiberty maybe-all-target-libstdc++-v3 configure-target-qthreads: $(ALL_GCC_C) # Dependencies of maybe-foo on foo. These are used because, for example, @@ -1428,7 +1415,7 @@ Makefile: $(srcdir)/Makefile.in config.s CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status config.status: configure $(gcc_version_trigger) - $(SHELL) ./config.status --recheck + CONFIG_SHELL="$(SHELL)" $(SHELL) ./config.status --recheck # Rebuilding configure. AUTOCONF = autoconf diff -uprN binutils-2.14.90.0.7/bfd/ChangeLog binutils-2.14.90.0.8/bfd/ChangeLog --- binutils-2.14.90.0.7/bfd/ChangeLog 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/ChangeLog 2004-01-14 13:07:42.000000000 -0800 @@ -1,10626 +1,342 @@ -2003-10-29 Alan Modra +2004-01-13 Ian Lance Taylor - * elf64-ppc.c (elf_backend_grok_prstatus): Define. - (elf_backend_grok_psinfo): Define. - (ppc64_elf_grok_prstatus, ppc64_elf_grok_psinfo): New functions. + * elf64-mips.c (mips_elf64_slurp_one_reloc_table): Call + mips_elf64_rtype_to_howto instead of using howto_table. - * elf.c (_bfd_elfcore_make_pseudosection): Allow multiple - sections with the same name. - (elfcore_grok_lwpstatus): Likewise. - (elfcore_grok_win32pstatus): Likewise. - (elfcore_grok_note): Likewise. - (elfcore_grok_nto_status): Likewise. - (elfcore_grok_nto_gregs): Likewise. +2004-01-13 Daniel Jacobowitz -2003-10-27 Daniel Jacobowitz + * elf32-arm.h (elf32_arm_final_link_relocate): Check that we created + the .plt section. + (elf32_arm_check_relocs): Don't increment the PLT refcount for + relocs which would not use the PLT. - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Never skip dynamic - objects. +2004-01-13 Alan Modra -2003-10-14 Richard Sandiford - - * elfxx-mips.c (mips_elf_create_got_section): Initialize global_gotno. - -2003-10-24 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Look up - hash table for real symbols. - -2003-10-23 Michael Snyder - - * section.c (asection): Fix typo in comment. - -2003-10-23 Alan Modra - - * elf64-ppc.c (get_tls_mask): Add toc_symndx param, save toc - reloc symbol index to it. Don't allow gd syms in shared libs - to be optimized. - (ppc64_elf_tls_optimize): Adjust get_tls_mask call. - (ppc64_elf_size_stubs): Likewise. - (ppc64_elf_relocate_section): Check that tls relocs are only used - with tls syms, and similarly for non-tls. Correct symbol used - when optimizing toc tls code. - -2003-10-22 Nick Clifton - - * peicode.h (coff_swap_scnhdr_in): Only remove padding when - processing an executable. - -2003-10-22 Jakub Jelinek - - * elflink.c (_bfd_elf_export_symbol): Adjust for globals and locals - field changes. - (_bfd_elf_link_assign_sym_version): Likewise. - * elflink.h (size_dynamic_sections): Likewise. - -2003-10-21 Alexandre Oliva , - Michael Snyder - - * archures.c (bfd_mach_sh4a, bfd_mach_sh4al_dsp, bfd_mach_sh4_nofpu, - bfd_mach_sh4a_nofpu): New machine types. - * bfd-in2.h: Rebuilt. - * cpu-sh.c (compatible): Remove unused function. - (SH4A_NEXT, SH4AL_DSP_NEXT, SH4_NOFPU_NEXT, SH4A_NOFPU_NEXT): New. - (arch_info_struct): Add sh4a, sh4al_dsp, sh4-nofpu and sh4a-nofpu. - * elf32-sh.c (sh_elf_set_mach_from_flags): Handle them. - -2003-10-21 Wouter van Heyst - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Correct text - describing mismatched formats involving the Maverick FP type. - -2003-10-21 Anil Paranjpe - - * binary.c (binary_object_p): Pass machine flag along with - architecture. - -2003-10-21 Thorsten Brehm - - * archures.c (bfd_default_scan): Add support for mcf528x. - * ieee.c (ieee_write_processor): Likewise. - -2003-10-21 Peter Barada - Bernardo Innocenti - - * archures.c: Add MCF528x (MCFv4) support. - * bfd/cpu-m68k.c (arch_info_struct): Likewise. - * bfd-in2.h: Regenerate. - -2003-10-20 Andrew Cagney - - * targets.c: Replace "struct sec" with "struct bfd_section" - * syms.c, sparclynx.c, section.c, opncls.c: Ditto. - * libcoff-in.h, libbfd-in.h, elfxx-target.h: Ditto. - * elf.c, coffgen.c, bfd.c, bfd-in.h, aoutf1.h: Ditto. - * aout-tic30.c, aout-target.h: - * bfd-in2.h, libcoff.h, libbfd.h: Regenerate. - -2003-10-18 Hans-Peter Nilsson - - Support linker relaxation of new R_MMIX_PUSHJ_STUBBABLE relocs. - * elf64-mmix.c (MAX_PUSHJ_STUB_SIZE): New macro. - (struct _mmix_elf_section_data): New member pjs. - (mmix_set_relaxable_size, mmix_elf_get_section_contents): New - functions. - (elf_mmix_howto_table): New entry for R_MMIX_PUSHJ_STUBBABLE. - (mmix_reloc_map): Ditto. - (mmix_elf_relocate_section): Handle R_MMIX_PUSHJ_STUBBABLE. - (mmix_final_link_relocate, mmix_elf_check_common_relocs): Ditto. - (mmix_elf_perform_relocation): Ditto. Don't mark parameter addr - unused. - (mmix_elf_check_relocs): Move early return to after - mmix_elf_check_common_relocs call. - (mmix_elf_symbol_processing): Fix cut-and-pasto in head comment. - (_bfd_mmix_before_linker_allocation): Rename from - _bfd_mmix_prepare_linker_allocated_gregs. All referers changed. - Arrange to set the initial relaxable size of sections. - (_bfd_mmix_after_linker_allocation): Rename from - _bfd_mmix_finalize_linker_allocated_gregs. - (mmix_elf_relax_section): Relax a R_MMIX_PUSHJ_STUBBABLE reloc. - (bfd_elf64_get_section_contents): Define. - * reloc.c: Add ENUMX for BFD_RELOC_MMIX_PUSHJ_STUBBABLE. - * libbfd.h, bfd-in2.h: Regenerate. - - * reloc.c (bfd_generic_relax_section): Default-set - section->_cooked_size here. - (bfd_generic_get_relocated_section_contents): Don't set it here. - Explain why. - -2003-10-17 John David Anglin - - * elf32-hppa.c (elf32_hppa_relocate_section): Skip relocation if - output section has been discarded. - -2003-10-17 Shrinivas Atre - - * coff-h8300.c (funcvec_hash_newfunc): Handle normal mode. - (h8300_reloc16_extra_cases): Likewise. - (h8300_bfd_link_add_symbols): Likewise. - -2003-10-17 Dhananjay Deshpande - - * cpu-h8300.c (h8300sxn_info_struct): Correct address size. - (h8300sn_info_struct): Likewise. - (h8300hn_info_struct): Likewise. - -2003-10-16 Pavel Roskin - - * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Don't calculate image size - for sections which lack size info. - -2003-10-17 Danny Smith - - * configure.host: Add __USE_MINGW_FSEEK to HDEFINES for - mingw32. - -2003-10-16 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Also warn - undefined patterns with '*'. - -2003-10-16 H.J. Lu - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't - use the last CIE from a different section. - (_bfd_elf_write_section_eh_frame): Don't pad beyond the raw - size of the output section. - -2003-10-07 Roland McGrath - - * elf.c (_bfd_elf_make_section_from_phdr): Set alignment_power of - new section from p_align header field. - -2003-10-16 H.J. Lu - - * elf32-xtensa.c (xtensa_read_table_entries): The external size - of entry is 8 bytes. - -2003-10-15 Andrew Cagney - - * targets.c (BFD_JUMP_TABLE_SYMBOLS): Replace NAME##_get_symtab - with NAME##_canonicalize_symtab. - * libcoff-in.h (coff_canonicalize_symtab): Update. - * xsym.h (bfd_sym_canonicalize_symtab): Update. - * elf-bfd.h (_bfd_elf_canonicalize_symtab): Update. - * coffgen.c (coff_canonicalize_symtab): Update. - * libbfd-in.h (_bfd_nosymbols_canonicalize_symtab): Update. - * libnlm.h (nlmNAME(canonicalize_symtab)): Update. - * ieee.c (ieee_vec): Update comment. - * libecoff.h (_bfd_ecoff_canonicalize_symtab): Update. - * mmo.c (mmo_canonicalize_symtab): Update. - * nlm-target.h (nlm_canonicalize_symtab): Update. - * nlmcode.h (nlm_canonicalize_symtab): Update. - * i386msdos.c (msdos_canonicalize_symtab): Update. - * hp300hpux.c (MY (canonicalize_symtab)): Update. - * oasys.c (oasys_canonicalize_symtab): Update. - * som.c (som_canonicalize_symtab): Update. - * pef.c (bfd_pef_canonicalize_symtab): Update. - * nlmcode.h (nlm_canonicalize_symtab): Update. - * xsym.c (bfd_sym_canonicalize_symtab): Update. - * vms.c (vms_canonicalize_symtab): Update. - * versados.c (versados_canonicalize_symtab): Update. - * mach-o.c (bfd_mach_o_canonicalize_symtab): Update. - * ieee.c (ieee_canonicalize_symtab): Update. - * pdp11.c (NAME(aout,canonicalize_symtab)): Update. - * reloc.c: Update comment. - * libaout.h (NAME(aout,canonicalize_symtab)): Update. - * coff64-rs6000.c (aix5coff64_vec): Update. - * coff64-rs6000.c (bfd_xcoff_aix5_backend_data): Update. - * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Update. - * aoutx.h (NAME(aout,canonicalize_symtab)): Update. - * elfxx-target.h (bfd_elfNN_canonicalize_symtab): Update. - * hp300hpux.c (MY_canonicalize_symtab): Update. - * ecoff.c (_bfd_ecoff_canonicalize_symtab): Update. - * aout-tic30.c (MY_canonicalize_symtab): Update. - * aout-target.h (MY_canonicalize_symtab): Update. - * ppcboot.c (ppcboot_canonicalize_symtab): Update. - * elf.c (_bfd_elf_canonicalize_symtab): Update. - * elfcode.h (elf_canonicalize_symtab): Update. - * ihex.c (ihex_canonicalize_symtab): Update. - * tekhex.c (tekhex_canonicalize_symtab): Update. - * binary.c (binary_canonicalize_symtab): Update. - * srec.c (srec_canonicalize_symtab): Update. - -2003-10-15 Kazu Hirata - - * elf32-h8300.c (elf_reloc_map): Fix a comment typo. - -2003-10-15 Kaz Kojima - - * elf32-sh.c (sh_elf_relocate_section): Handle R_SH_IMM_*_PCREL - relocations. - (sh_elf_check_relocs): Likewise. - - * elf32-sh64.c (elf_backend_merge_symbol_attribute): Define. - (sh64_elf_merge_symbol_attribute): New. - * elf64-sh64.c (elf_backend_merge_symbol_attribute): Define. - (sh64_elf64_merge_symbol_attribute): New. - -2003-10-14 Kaz Kojima - - * elf-bfd.h (struct elf_backend_data): New function pointer member - elf_backend_merge_symbol_attribute. - * elflink.h (elf_link_add_object_symbols): Adjust call to - elf_backend_merge_symbol_attribute if the backend defined it. - * elfxx-target.h (elf_backend_merge_symbol_attribute): New macro. - (elfNN_bed): Add that to the initializer. - -2003-10-14 Bob Wilson - - * elf32-xtensa.c (get_is_linkonce_section): Delete. - (xtensa_is_property_section, xtensa_is_littable_section): Use - XTENSA_INSN_SEC_NAME and XTENSA_LIT_SEC_NAME macros. Do not recognize - linkonce sections containing ".xt.insn" and ".xt.lit" substrings. - (xtensa_get_property_section_name): Check section name instead of - calling get_is_linkonce_section. Remove unused bfd parameter. Use - XTENSA_INSN_SEC_NAME and XTENSA_LIT_SEC_NAME macros. Never generate - linkonce section names by appending ".xt.insn" or ".xt.lit". - (xtensa_read_table_entries): Remove bfd argument in call to - xtensa_get_property_section_name. Free section name when done. - (elf_xtensa_combine_prop_entries): Free leaking table. - -2003-10-13 Richard Sandiford - - * elfxx-mips.c (_bfd_mips_elf_size_dynamic_sections): Don't add - DT_MIPS_LIBLIST or DT_MIPS_CONFLICT entries. - (_bfd_mips_elf_finish_dynamic_symbol): Don't handle them. Don't - handle DT_MIPS_MSYM. Set DT_RELSZ based on the number of relocations - that were needed. - (_bfd_mips_elf_modify_segment_map): Fix placement of PT_MIPS_OPTIONS. - (_bfd_mips_elf_merge_private_bfd_data): Ignore EF_MIPS_UCODE. - -2003-10-13 H.J. Lu - - * bfd-in.h (bfd_elf32_ia64_after_parse): New prototype. - (bfd_elf64_ia64_after_parse): Likewise. - * bfd-in2.h: Regenerated. - - * elfxx-ia64.c (oor_ip): New. - (oor_branch_size): Likewise. - (bfd_elfNN_ia64_after_parse): Likewise. - (elfNN_ia64_relax_section): Use oor_ip if oor_branch_size - equals sizeof (oor_ip). - -2003-10-12 Kaz Kojima - - * elf64-sh64.c (sh_elf64_relocate_section): Tidy up for the - renumbering of some relocation numbers. - -2003-10-11 Alan Modra - - * coff-sh.c: Move definition of MAP and guard more code with - COFF_IMAGE_WITH_PE. - - * section.c (bfd_get_section_size_before_reloc): Ignore reloc_done. - * bfd-in2.h: Regenerate. - -2003-10-10 H.J. Lu - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * doc/Makefile.in: Likewise. - -2003-10-09 H.J. Lu - - * cofflink.c: Include "safe-ctype.h". - (coff_link_add_symbols): Use ISDIGIT instead of isdigit. - -2003-10-08 Dave Brolley - On behalf of Michael Snyder - - * archures.c: Add FRV fr550 machine. - * cpu-frv.c: Ditto. - * elf32-frv.c: Ditto. - * bfd-in2.h: Regenerate. - -2003-10-08 Thiemo Seufer - - * elfxx-mips.c (STUB_MOVE,STUB_LI16): Fix stub code - for non-SGI N64 ABI. Improve code consitency. - -2003-10-07 Alexandre Oliva - - * elf32-frv.c (elf32_frv_howto_table): Set R_FRV_LABEL16's - rightshift to 2. - -2003-10-07 Nathan Sidwell - - * libbfd-in.h (_bfd_link_section_stabs): Add string offset - parameter. - * cofflink.c (coff_link_add_symbols): Deal with split stab - sections. - * elflink.h (elf_link_add_object_symbols): Deal with split stab - sections. - * stabs.c (_bfd_link_section_stabs): Add string offset parameter. - * libbfd.h: Regenerated. - - * coffcode.h (coff_set_alignment_hook): With PE_COFF reloc - overflow, set reloc start position to after the count - reloc. Subtract one from num relocs. Give error on 0xffff relocs - and no overflow. - * cofflink.c (_bfd_coff_final_link): Deal with PE_COFF reloc - overflow. - * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Do overflow if >= - 0xffff. - -2003-10-06 H.J. Lu - - * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Pad the - last CIE/FDE if needed. - -2003-10-06 Nick Clifton - - * targets.c (_bfd_target_vector): Include bfd_elf64_sparc_vec if - BFD64 is enabled. - -2003-10-06 Matt Thomas - - * config.bfd: Move the hppa*-*-netbsd* case to the hppa*-*-linux* case. - -2003-10-06 Robert Millan - - * configure.in: Match GNU/KNetBSD with new knetbsd*-gnu triplet. - * config.bfd: Likewise. - * configure: Regenerate. - -2003-10-04 Christian Groessler - - * coff-z8k.c (extra_case): Fix displacement length check for R_JR - and R_CALLR. - -2003-10-04 Stephane Carrez - - * elf32-m68hc1x.c: Update to ISO C90; replace PTR with void*. - * elf32-m68hc11.c: Likewise. - * elf32-m68hc12.c: Likewise. - * elf32-m68hc1x.h: Likewise. - -2003-10-04 Stephane Carrez - - * elf32-m68hc1x.c (_bfd_m68hc11_elf_merge_private_bfd_data): Fix merge - of flags between HC12 and HCS12. - -2003-10-04 Bryce McKinlay - - * merge.c (_bfd_merge_sections): Set SEC_EXCLUDE flag on sections - which become empty after merging. - -2003-09-30 Jakub Jelinek - - * elfxx-ia64.c (ia64_howto_table): Fix size of R_IA64_TPREL64[LM]SB, - R_IA64_DTPREL{32,64}[LM]SB and R_IA64_DTPMOD64[LM]SB. - -2003-09-30 Chris Demetriou - - * archures.c (bfd_mach_mipsisa64r2): New define. - * bfd-in2.h: Regenerate. - * aoutx.h (NAME(aout,machine_type)): Handle bfd_mach_mipsisa64r2. - * cpu-mips.c (I_mipsisa64r2): New enum value. - (arch_info_struct): Add entry for I_mipsisa64r2. - * elfxx-mips.c (_bfd_elf_mips_mach) - (_bfd_mips_elf_print_private_bfd_data): Handle E_MIPS_ARCH_64R2. - (mips_set_isa_flags): Add bfd_mach_mipsisa64r2 case. - (mips_mach_extensions): Add entry for bfd_mach_mipsisa64r2. - -2003-09-29 H.J. Lu - - * elfxx-ia64.c (elfNN_hpux_backend_symbol_processing): New. - Handle SHN_IA_64_ANSI_COMMON. - (elf_backend_section_from_bfd_section): Defined. - -2003-09-26 H.J. Lu - - * elflink.c (elf_link_read_relocs_from_section): Add an argument - of a pointer to section. Check bad symbol index. - (_bfd_elf_link_read_relocs): Modify calls to - elf_link_read_relocs_from_section. - -2003-09-23 DJ Delorie - - * elf32-sh.c (sh_elf_howto_table): R_SH_SWITCH8, - R_SH_GNU_VTINHERIT, R_SH_GNU_VTENTRY, - R_SH_LOOP_START,R_SH_LOOP_END moved to "reserved" spaces, - R_SH_DIR16, R_SH_DIR8, R_SH_DIR8UL, R_SH_DIR8UW, R_SH_DIR8U, - R_SH_DIR8SW, R_SH_DIR8S, R_SH_DIR4UL, R_SH_DIR4UW, R_SH_DIR4U, - R_SH_PSHA, R_SH_PSHL added. - (sh_reloc_map): Add R_SH_DIR16 and R_SH_DIR8. - (sh_elf_relocate_section): Support new relocs. - -2003-09-23 Bob Wilson - - * elf32-xtensa.c (elf_xtensa_relocate_section): Fix typo that clobbered - dynamic relocation offsets. - -2003-09-23 Alan Modra - - * simple.c (bfd_simple_get_relocated_section_contents): Free the - hash table using _bfd_generic_link_hash_table_free. - -2003-09-23 Alan Modra - - * elf-bfd.h (struct bfd_elf_special_section): Remove "suffix". Change - type of prefix_length and suffix_length to int. Rename "attributes" - to "attr". Comment. - (_bfd_elf_get_sec_type_attr): Update prototype. - * elf.c (get_special_section): Rewrite. - (_bfd_elf_get_sec_type_attr): Return struct rather than passing in - attr and type pointers. - (_bfd_elf_new_section_hook): Adjust for above. - (special_sections): Merge suffix with prefix. Set - prefix_length for all entries. Set suffix_length appropriately. - * elf32-m32r.c (m32r_elf_special_sections): Likewise. - * elf32-m68hc11.c (elf32_m68hc11_special_sections): Likewise. - * elf32-m68hc12.c (elf32_m68hc12_special_sections): Likewise. - * elf32-mcore.c (mcore_elf_special_sections): Likewise. - * elf32-sh64.c (sh64_elf_special_sections): Likewise. - * elf32-v850.c (v850_elf_special_sections): Likewise. - * elf32-xtensa.c (elf_xtensa_special_sections): Likewise. - * elf64-alpha.c (elf64_alpha_special_sections): Likewise. - * elf64-hppa.c (elf64_hppa_special_sections): Likewise. - * elf64-ppc.c (ppc64_elf_special_sections): Likewise. - * elf64-sh64.c (sh64_elf64_special_sections): Likewise. - * elfxx-ia64.c (elfNN_ia64_special_sections): Likewise. - * elfxx-mips.c (_bfd_mips_elf_special_sections): Likewise. - * elf32-ppc.c (ppc_elf_special_sections): Likewise. Fix .plt flags. - -2003-09-21 Daniel Jacobowitz - - * elf64-alpha.c (elf64_alpha_create_got_section): Initialize - ->got if the section already exists. - -2003-09-19 Nathan Sidwell - - * dwarf2.c (decode_line_info): Cope with an initially empty - filename table. - -2003-09-18 H.J. Lu - - * acinclude.m4: Include ../config/accross.m4. - * aclocal.m4: Regenerated. - - * configure.host (HOST_64BIT_TYPE): Remove if it is set to long - or long long. - (HOST_U_64BIT_TYPE): Remove if it is set to unsigned long long. - (host64): Remove if HOST_64BIT_TYPE is set to long. - - * configure.in (HOST_64BIT_TYPE): Set according to the size of - long and long long. - (HOST_U_64BIT_TYPE): Likewise. - (host64): Likewise. - * configure: Regenerated. - -2003-09-19 Alan Modra - - * elf.c (elfcore_write_note): Don't use sizeof(Elf_External_note) - since some ABIs round up the size of the struct. - -2003-09-18 H.J. Lu - - * elflink.c (_bfd_elf_merge_symbol): Allow type change if - the old symbol is undefined and the new symbol is defined. - -2003-09-18 Andreas Schwab - - * simple.c (bfd_simple_get_relocated_section_contents): Use - _bfd_generic_link_hash_table_create instead of - bfd_link_hash_table_create. - -2003-09-10 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_special_sections): Mark all sections - started with ".sbss" or "".sdata" as SHF_IA_64_SHORT. - -2003-09-10 John David Anglin - Randolph Chung - - * elf32-hppa.c (struct elf32_hppa_link_hash_entry, - hppa_link_hash_newfunc, hppa_build_one_stub, - elf32_hppa_adjust_dynamic_symbol, mark_PIC_calls, allocate_plt_static, - allocate_dynrelocs, elf32_hppa_size_dynamic_sections, - elf32_hppa_finish_dynamic_symbol): Remove pic_call field and all code - for generating import stubs for calls to statically linked PIC - functions. - (hppa_type_of_stub): Don't generate an import stub for calls to - statically linked pic functions. Generate import stubs for calls - in a shared object, to functions not in a regular file, and to - defined weak functions. Add new argument INFO. - (hppa_build_one_stub): Don't undef ADDIL_DP. - (elf32_hppa_check_relocs): Don't set SEC_HAS_GOT_REF flag. - (elf32_hppa_size_stubs): Pass info to hppa_type_of_stub. - (final_link_relocate): Change all DLTIND relocs to DPREL relocs in a - non-shared link. Convert instructions that use the the linkage table - pointer, or a facsimile thereof, to use the global data pointer when - the reloc has been changed. - -2003-09-08 Joel Brobecker - - * archures.c: Add new machine names for hppa. - * bfd-in2.h: Regenerate. - * cpu-hppa.c: Use the new machine names. - -2003-09-06 Stephane Carrez - - * elf32-m68hc1x.h (struct m68hc11_elf_link_hash_table): Remove - all_local_syms member. - * elf32-m68hc1x.c (elf32_m68hc11_size_stubs): Use bfd_elf_get_elf_syms - to get the local symbols. - -2003-09-06 Stephane Carrez - - * elf32-m68hc12.c (elf32_m68hc12_special_sections): New for hc11. - (elf_backend_special_sections): Define.a - - PR savannah/4950: - * elf32-m68hc11.c (elf32_m68hc11_special_sections): The .vectors - section is read-only. - -2003-09-04 Nick Clifton - - * archures.c (bfd_mach_v850e1): Define. - * bfd-in2.h: Regenerate. - * cpu-v850.h (scan): Accept bfd_mach_v850e1. - (arch_info_struct): Include an entry for bfd_mach_v850e1. - * elf32-v850.c (v850_elf_object_p): Accept E_V850E1_ARCH flag. - (v850_elf_final_write_processing): Accept bfd_mach_v850e1. - (v850_elf_print_private_bfd_data): Interpret E_V850E1_ARCH flag. - (v850_elf_merge_private_bfd_data): Allow v850e1 binaries to be - linked with v850e binaries. Mark the output as v850e. - -2003-09-03 Nick Clifton - - * cofflink.c (_bfd_coff_link_input_bfd): Do not skip section - symbols that are used in relocs. - -2003-08-30 Robert Millan - - * configure.in: Match GNU/KFreeBSD with new kfreebsd*-gnu triplet. - * config.bfd: Likewise. - * configure: Regenerate. - -2003-08-31 Christian Groessler - - * elf32-i860.c (i860_howto_pc26_reloc): Finish relocation here - instead of returning bfd_reloc_continue. - -2003-08-31 Andreas Jaeger - - * merge.c: Update to ISO C90. - -2003-08-27 Ian Lance Taylor - - * configure.in: Check for strtoull. - * bfd.c (bfd_scan_vma): Use strtoull when available. - * configure, config.in: Regenerate. - - * configure.in: Define and substitute BFD_HOST_LONG_LONG. - * bfd-in.h: Define BFD_HOST_LONG_LONG. Test it rather than - __GNUC__ when deciding whether to use long long for - BFD_HOST_64_BIT. - * configure, Makefile.in, doc/Makefile.in, bfd-in2.h: Regenerate. - -2003-08-27 Christian Groessler - - * elf32-i860.c (i860_howto_pc26_reloc, i860_howto_pc16_reloc, - i860_howto_splitn_reloc, i860_howto_highadj_reloc): New - functions. - (elf32_i860_howto_table): Insert the new functions as - 'special_function's in the proper reloc type entries. - -2003-08-27 Richard Sandiford - - * elf32-frv.c (elf32_frv_relocate_section): Use - _bfd_elf_rela_local_sym. - -2003-08-26 Michael Snyder - - * cpu-frv.c: Remove unused enum. - -2003-08-25 Maciej W. Rozycki - - * reloc.c: Fix documentation for MIPS ELF relocations. - libbfd.h: Regenerate. - bfd-in2.h: Regenerate. - -2003-08-24 Jason Eckhardt - - * coff-i860.c (CALC_ADDEND): Define to be a no-op. - -2003-08-24 Jason Eckhardt - - * elf32-i860.c (elf32_i860_relocate_pc16): Subtract 4 and - shift by 2 before storing the relocated value. - -2003-08-23 Jason Eckhardt - - * coff-i860.c (coff_i860_reloc_nyi): New function. - (howto_table): Add entries for relocations PAIR, HIGHADJ, HIGH, - LOWn, SPLITn, and BRADDR. - (RTYPE2HOWTO): Check that the r_type is within the howto_table - before trying to access the entry. - (coff_i860_rtype_to_howto): Likewise. - (coff_i860_reloc_type_lookup): New function. - (i860_reloc_processing): New function. - (coff_bfd_reloc_type_lookup): Define macro. - (RELOC_PROCESSING): Define macro. - Minor formatting adjustments. - -2003-08-23 Alan Modra - - * elflink.h (elf_link_add_object_symbols): Don't crash on NULL owner. - -2003-08-22 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_create_dynamic_sections): Align the - .got section at 8 bytes. - -2003-08-21 Nick Clifton - - * cofflink.c: Update to ISO C90 and tidy up formatting. - -2003-08-21 Randolph Chung - - * elf32-hppa.c (elf32_hppa_object_p): For elf32-hppa-linux, objects - can have OSABI=Linux or OSABI=SysV. Check for both. - * elf64-hppa.c (elf64_hppa_object_p): Likewise. - -2003-08-21 Nick Clifton - - * po/sv.po: Updated Swedish translation. - -2003-08-20 Richard Sandiford - - * elf64-mips.c (elf_backend_copy_indirect_symbol): Define. - -2003-08-20 Nick Clifton - - * elf-bfd.h (RELOC_FOR_GLOBAL_SYMBOL): New macro used to - replace some duplicated code in most elfxx-xxxx.c files. This - version uses the new fields in bfd_link_info. - - * elf-m10300.c (mn10300_elf_relocate_section): Use new macro. - * elf32-arm.h (elf32_arm_relocate_section): Likewise. - * elf32-cris.c (cris_elf_relocate_section): Likewise. - * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. - * elf32-i386.c (elf_i386_relocate_section): Likewise. - * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. - * elf32-iq2000.c (iq2000_elf_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf32-vax.c (elf_vax_relocate_section): Likewise. - * elf32-xtensa.c (elf_xtensa_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - - * elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols, - elf_hppa_remark_useless_dynamic_symbols, - elf_hppa_relocate_section): Use the new fields in - bfd_link_info structure. - * elf32-sh.c (sh_elf_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_check_relocs): Likewise. - * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. - * elf64-sh64.c (sh_elf64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_check_relocs): Likewise. - * elfxx-mips.c (mips_elf_calculate_relocation): Likewise. - - * elflink.h (elf_link_output_extsym): Fix test for reporting - undefined symbols in shared libraries. Remove redundant test - of shlib_undefined when reporting references to forced local - symbols. - -2003-08-18 Andreas Schwab - - * libpei.h (bfd_pe_executable_p): Also recognize efi-app - executables. - -2003-08-17 Hans-Peter Nilsson - - * simple.c (bfd_simple_get_relocated_section_contents): Move - reloc_done hack to before first bfd_section_size call. Change all - returns to use new wrapper macro RETURN, restoring sec->reloc_done. - -2003-08-16 Alan Modra - - * elf64-ppc.c: Don't include elf/ppc.h. - -2003-08-14 Richard Sandiford - - * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Fix PT_DYNAMIC - code to work with 64-bit bfds. - -2003-08-14 Alan Modra - - * dep-in.sed: Remove libintl.h. - * Makefile.am (SRC-POTFILES.in, BLD-POTFILES.in): Unset LC_COLLATE. - (POTFILES.in): Remove target. - * Makefile.in: Regenerate. - -2003-08-12 Alan Modra - - * elf64-ppc.c (ppc64_elf_next_input_section): Update comment. - (ppc64_elf_relocate_section): For zero sym R_PPC64_TOC relocs, - use the function sym from the previous reloc. - -2003-08-11 Jakub Jelinek - - * elf32-i386.c (elf_i386_relocate_section): Make undefined symbols - fatal if -pie. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - (ppc_elf_relocate_section) : Issue fatal error - on undefined symbols if -pie. - * elf32-sh.c (sh_elf_relocate_section): Likewise. - -2003-08-11 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Add special case for crt1.o - branch to __libc_start_main. - -2003-08-08 Dmitry Diky - - * archures.c: Add xW42 and xE42 parts. Sort MPU list according to - gcc order. - * cpu-msp430.c: Likewise. - * elf32-msp430.c: Likewise. - * bfd-in2.h: Regenerate. - -2003-08-07 Alan Modra - - * elfxx-target.h: Remove PTR cast. - * targets.c (bfd_target): Make backend_data const void *. - * elf-bfd.h: Constify all occurrences of struct elf_backend_data. - * elf-m10300.c: Likewise. - * elf.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-m68hc1x.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sh64.c: Likewise. - * elf32-sparc.c: Likewise. - * elf32-xtensa.c: Likewise. - * elf64-mips.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-sh64.c: Likewise. - * elf64-sparc.c: Likewise. - * elf64-x86-64.c: Likewise. - * elfcode.h: Likewise. - * elfcore.h: Likewise. - * elflink.c: Likewise. - * elflink.h: Likewise. - * elfxx-ia64.c: Likewise. - * elfxx-mips.c: Likewise. - * elfxx-mips.h: Likewise. - * elf.c (prep_headers): Remove useless check for null backend_data. - * bfd-in2.h: Regenerate. - - * elf-bfd.h: Remove PARAMS macro. Replace PTR with void *. - (NAME): Use ## rather than CONCAT4 macro. - * elfcode.h: Remove one remaining PARAMS macro. - * elf-eh-frame.c: Convert to C90, remove unneeded casts and prototypes. - * elf-strtab.c: Likewise. - * elf-hppa.h: Likewise. - * elf32-hppa.h: Likewise. - * elf32-hppa.c: Likewise. - (elf32_hppa_add_symbol_hook): Delete. - (elf_backend_add_symbol_hook): Don't define. - * libhppa.h: Convert to C90. Replace INLINE with inline. - -2003-08-06 Alan Modra - - * elf64-ppc.c (ppc_stub_name): Tweak names for better readability. - (ppc64_elf_adjust_dynamic_symbol): Allow copy relocs against - function descriptors, but warn. - (ppc_build_one_stub): Remove a couple of vars. Move code creating - stub syms so that we can avoid a stub sym if we already have a - plt sym. Do not redefine an existing symbol. - (ppc64_elf_build_stubs): When --emit-stub-syms, print a symbol for - glink. - -2003-08-06 Nick Clifton - - * po/fr.po: Updated French translation. - -2003-08-06 Alan Modra - - * elflink.c (_bfd_elf_create_dynamic_sections): Mark .dynbss with - SEC_LINKER_CREATED. - -2003-08-05 Daniel Jacobowitz - - * elf32-arm.h (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. - (elf32_arm_final_link_relocate, elf32_arm_relocate_section): Use it. - -2003-08-03 Jeff Muizelaar - - * coffcode.h (coff_slurp_line_table): Return with a warning - message if the line number table could not be read. - -2003-08-04 Nick Clifton - - * elflink.h (elf_link_add_object_symbols): Prepend "warning: " - to messages produced for .gnu.warning.SYMBOL sections. - -2003-08-04 Alan Modra - - * elfcode.h: Convert to C90, remove unneeded casts and prototypes. - * elfcore.h: Likewise. - * elflink.c: Likewise. - * elflink.h: Likewise. - * elf.c (sym_is_global): Remove INLINE. - (align_file_position): Replace INLINE with inline. - * elfcode.h (elf_swap_dyn_in, elf_swap_dyn_out): Remove INLINE. - (elf_file_p): Replace INLINE with inline. - -2003-08-02 Kaz Kojima - - * elf32-sh.c (sh_elf_check_relocs): Don't set DF_TEXTREL here. - -2003-08-01 H.J. Lu - - * elfxx-ia64.c (get_got): Align the .got section at 8 bytes. - -2003-08-01 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_finish_dynamic_symbol): Use - ElfNN_External_Rela instead of Elf64_External_Rela. - -2003-08-01 Nick Clifton - - * config.bfd: Add code to catch obsolete configurations and warn - about them unless --enable-obsolete is used. Use this to mark - vax-vms port as obsolete. - -2003-07-30 Alan Modra - - * elf32-ppc.c (ppc_elf_install_value): Tidy. - (ppc_elf_relax_section): Remove dead code. Remove unnecessary casts. - Formatting. - * elfxx-target.h: Remove PARAMS macro. Formatting. - -2003-07-30 Alan Modra - - * elf.c (bfd_section_from_r_symndx): Test for SHN_UNDEF. - * elf64-ppc.c (get_fdh): New function, split out from - ppc64_elf_edit_opd. - (ppc64_elf_check_relocs): Use get_fdh. - (func_desc_adjust): Likewise. Tidy. - (ppc64_elf_edit_opd): Tighten reloc checks. Free local_syms on error - exit. Use get_fdh. Account for superfluous dynamic relocs. - (ppc64_elf_relocate_section): Warning fix. - -2003-07-30 Jason Eckhardt - - * coff-i860.c: Convert to ISO C90. Remove superflous prototypes. - -2003-07-30 Jason Eckhardt - - * elf32-i860.c: Convert to ISO C90. Remove superflous prototypes. - -2003-07-30 Randolph Chung - - * elf-hppa.h (elf_hppa_relocate_section): Look up dyn_h for undefweak. - * elf64-hppa.c (elf64_hppa_finalize_dlt): Check h->root.type. - -2003-07-30 Alan Modra - - * elf.c: Convert to C90, remove unnecessary prototypes and casts. - Replace PTR with void *. Formatting. - (_bfd_elf_assign_file_position_for_section): Remove INLINE. - (make_mapping): Likewise. - -2003-07-29 Alan Modra - - * elf64-ppc.c (func_desc_adjust): Give linker created function - descriptor symbols a size and type. - (ppc64_elf_relocate_section): Correct lq insn test. - -2003-07-28 Eric Christopher - - * elf32-ppc.c (R_PPC_RELAX32): New relocation. - (ppc_elf_install_value): New function. - (ppc_elf_sort_rela): Remove. - (ppc_elf_relax_section): Rewrite. Remove old relaxation - and replace with out of range branch stubs. - (ppc_elf_relocate_section): Handle R_PPC_RELAX32. - -2003-07-29 Alexandre Oliva - - * elf-m10300.c (mn10300_elf_relax_section): Take symbol hash table - from input_bfd. - -2003-07-28 Alan Modra - - * elf.c (special_sections): Set attributes for .got and .plt. - -2003-07-27 Alan Modra - - * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Ensure no copy relocs - on function descriptors. - (ELIMINATE_COPY_RELOCS): Expand comment. - (ppc64_elf_special_sections): Move. Don't include non-ppc64 sections. - Do include ".toc1". - -2003-07-25 H.J. Lu - - * elf.c (_bfd_elf_new_section_hook): Set the default section - type to SHT_NULL. - (elf_fake_sections): Set the section type based on asect->flags - if it is SHT_NULL. Don't abort on processor specific section - types. - -2003-07-25 H.J. Lu - - * bfd-in2.h: Regenerated. - -2003-07-25 H.J. Lu - - * elf-bfd.h (bfd_elf_special_section): New. - (elf_backend_data): Add special_sections, a pointer to - bfd_elf_special_section. - (elf_section_type). New. - (elf_section_flags): New. - (_bfd_elf_get_sec_type_attr): New. - - * elf.c (_bfd_elf_make_section_from_shdr): Always use the - real section type/flags. - (special_sections): New. - (get_special_section): New. - (_bfd_elf_get_sec_type_attr): New. - (_bfd_elf_new_section_hook): Check special_section to set - elf_section_type and elf_section_flags. - (elf_fake_sections): Don't use section name to set ELF section - data. - - * elf32-m32r.c (m32r_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-m68hc11.c (elf32_m68hc11_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-mcore.c (mcore_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-ppc.c (ppc_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-sh64.c (sh64_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-v850.c (v850_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf32-xtensa.c (elf_xtensa_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf64-alpha.c (elf64_alpha_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf64-hppa.c (elf64_hppa_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf64-ppc.c (ppc64_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elf64-sh64.c (sh64_elf64_special_sections): New. - (elf_backend_special_sections): Defined. - - * elfxx-ia64.c (elfNN_ia64_special_sections): New. - (elf_backend_special_sections): Defined. - - * elfxx-mips.c (_bfd_mips_elf_special_sections): New. - - * elfxx-mips.h (_bfd_mips_elf_special_sections): New. - (elf_backend_special_sections): Defined. - - * elfxx-target.h (elf_backend_special_sections): New. Default - to NULL. - (elfNN_bed): Initialize special_sections. - - * section.c (bfd_abs_section): Remove const. - (bfd_und_section): Likewise. - (bfd_com_section): Likewise. - (bfd_ind_section): Likewise. - -2003-07-24 Nick Clifton - - * coff-arm.c (EXTRA_S_FLAGS): Include SEC_CODE so that code - sections are assigned the LOAD attribute. - -2003-07-25 Kaz Kojima - - * elf32-sh.c: Convert to C90. Replace PTR with void *. - * elf32-sh64-com.c: Likewise. - * elf32-sh64.c: Likewise. - * elf32-sh64.h: Likewise. - * elf64-sh64.c: Likewise. - -2003-07-24 Kaz Kojima - - * elf32-sh.c (sh_elf_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL. - (allocate_dynrelocs): Likewise. - (sh_elf_relocate_section): Likewise. Use SYMBOL_REFERENCES_LOCAL. - (sh_elf_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL. - -2003-07-24 Nick Clifton - - * po/fr.po: Updated French translation. - -2003-07-23 Bob Wilson - - * elf32-xtensa.c (xtensa_elf_dynamic_symbol_p): Make inline and move - near the beginning of the file. Swap order of arguments. Call - _bfd_elf_dynamic_symbol_p with "ignore_protected" set to 0. - (elf_xtensa_fix_refcounts): Adjust xtensa_elf_dynamic_symbol_p call. - (elf_xtensa_relocate_section): Likewise. - (shrink_dynamic_reloc_sections): Likewise. - -2003-07-23 Bob Wilson - - * elf32-xtensa.c (plt_reloc_count): Fix typo in comment. - (elf_xtensa_size_dynamic_sections): Use elf_discarded_section. - (elf_xtensa_combine_prop_entries): Avoid returning non-zero without - first printing an error message. - (elf_xtensa_finish_dynamic_sections): Likewise. - (elf_xtensa_discard_info_for_section): Adjust size of .got.loc when - discarding literal table entries. - (elf_xtensa_merge_private_bfd_data): Remove newline from error message. - (elf_xtensa_do_asm_simplify): Likewise. - -2003-07-23 Stephane Carrez - - * elf32-m68hc1x.c (elf32_m68hc11_size_stubs): Avoid crash when - we have a local symbol in common section. - -2003-07-22 H.J. Lu - - * elflink.c (_bfd_elf_dynamic_symbol_p): Don't return TRUE for - weak symbols. - -2003-07-22 Nick Clifton - - * coffcode.h (coff_slurp_symbol_table): Add C_TCSYM and C_ECOML to - expected RS6000 storage classes. - -2003-07-21 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_size_dynamic_sections): Mark - output_bfd unused to silence gcc. - -2003-07-21 Nick Clifton - - * po/sv.po: Updated Swedish translation. - -2003-07-21 Alan Modra - - * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Use.. - (_bfd_elf_symbol_refs_local_p): ..this. Declare. - * elflink.c (_bfd_elf_symbol_refs_local_p): New function. - * elf32-i386.c (elf_i386_relocate_section): Remove h NULL test - now done in _bfd_elf_symbol_refs_local_p. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - -2003-07-18 H.J. Lu - - * elflink.c (_bfd_elf_dynamic_symbol_p): Undo the last change. - -2003-07-18 H.J. Lu - - * elf-bfd.h (SYMBOL_REFERENCES_LOCAL): Fix a typo. - (SYMBOL_CALLS_LOCAL): Likewise. - - * elflink.c (_bfd_elf_dynamic_symbol_p): Return TRUE - immediately if symbol isn't defined locally. - -2003-07-18 Richard Henderson - - * elflink.c (_bfd_elf_dynamic_symbol_p): New. - * elf-bfd.h (_bfd_elf_dynamic_symbol_p): Declare it. - (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Use it. - * elf32-xtensa.c (xtensa_elf_dynamic_symbol_p): Likewise. - * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise. - * elf64-hppa.c (elf64_hppa_dynamic_symbol_p): Likewise. - * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Likewise. - Update all callers to provide the relocation being resolved. - -2003-07-17 Shaun Jackman - - * config.bfd (arm-wince-pe): Add -DARM_COFF_BUGFIX to - targ_cflags. - -2003-07-17 Nick Clifton - - * po/es.po: New Spanish translation. - * po/sv.po: New Swedish translation. - * po/opcodes.pot: Regenerate. - -2003-07-16 Richard Henderson - - * config.bfd, configure.host, configure.in: Remove ia64-aix support. - * elfxx-ia64.c, targets.c: Likewise. - -2003-07-16 Richard Henderson - - * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Properly return false - for symbols defined locally plus -Bsymbolic. Tidy logic. - -2003-07-15 Richard Sandiford - - * archures.c (bfd_mach_mips7000): New. - * bfd-in2.h: Regenerated. - * cpu-mips.c (arch_info_struct): Add an entry for mips:7000. - * elfxx-mips.c (mips_set_isa_flags): Handle bfd_mach_mips7000. - (mips_mach_extensions): Add an entry for it. - -2003-07-14 Nick Clifton - - * po/tr.po: Update with latest version. - * po/SRC-POTFILES.in: Regenerate. - * po/bfd.pot: Regenerate. - * Makfile.in: Regenerate. - * configure: Regenerate. - -2003-07-12 Jeff Baker - - * bfd/config.bfd (__QNXTARGET__): Define for Neutrino architectures. - * bfd/elf32-arm.h (ELF_MAXPAGESIZE): Set to 4k for Neutrino. - * bfd/elf32-sh.c (ELF_MAXPAGESIZE): Set to 4k for Neutrino. - * bfd/elf32-ppc.c (ELF_MAXPAGESIZE): Set to 4k for Neutrino. - -2003-07-12 Jeff Muizelaar - - * coffcode.h (coff_set_section_contents): Set the - IMAGE_FILE_32BIT_MACHINE flag for PE targets. - -2003-07-11 Richard Sandiford - - * bfd-in.h (bfd_h8300_pad_address): Declare. - * bfd-in2.h: Regenerate. - * cpu-h8300.c (bfd_h8300_pad_address): New function. - * coff-h8300.c (h8300_reloc16_estimate): Use it to canonicalize - addresses before checking whether they can be relaxed. - (h8300_reloc16_extra_cases): Likewise for the R_MOVL2 sanity check. - Don't complain about overflows in general 8-bit relocations. - * elf32-h8300.c (elf32_h8_relax_section): Use bfd_h8300_pad_address. - Fix handling of R_H8_DIR24A8. - -2003-07-11 Richard Sandiford - - * elf32-h8300.c: Convert function prototypes and definitions - to C90 syntax. - * coff-h8300.c: Likewise. - * cpu-h8300.c: Likewise. - -2003-07-11 Alan Modra - - * po/SRC-POTFILES.in: Regenerate. - * po/bfd.pot: Likewise. - -2003-07-10 Bob Wilson - - * elf32-xtensa.c (elf_xtensa_create_dynamic_sections): Create new - .got.loc section. Do not set SEC_ALLOC or SEC_LOAD flags for the - .xt.lit.plt section. - (elf_xtensa_size_dynamic_sections): Set size of the .got.loc section - and allocate memory for it. - (elf_xtensa_combine_prop_entries): Copy contents of .xt.lit output - section to the .got.loc section. - (elf_xtensa_finish_dynamic_sections): Fix up call to - elf_xtensa_combine_prop_entries and set DT_XTENSA_GOT_LOC_OFF to - the address of .got.loc. - (relax_property_section): Shrink .got.loc to match changes in any - literal table section. - (xtensa_is_property_section): Change to match - xtensa_get_property_section_name. - (xtensa_is_littable_section): New. - -2003-07-10 H.J. Lu - - * elfxx-ia64.c (IA64_HOWTO): Set dst_mask to -1 instead of - -1LL. - -2003-07-10 Alan Modra - - * Makefile.am (BFD32_BACKENDS): Add elf32-am33lin.lo. - (BFD32_BACKENDS_CFILES): elf32-am33lin.c not elf32-am33lin.lo. - Run "make dep-am". - * Makefile.in: Regenerate. - -2003-07-10 Alexandre Oliva - - 2001-09-12 Alexandre Oliva - * elf32-am33lin.c (ELF_MACHINE_CODE): Redefine to EM_MN10300. - (ELF_MACHINE_ALT1): Define to EM_CYGNUS_MN10300. - 2001-06-02 Nick Clifton - * elf32-am33lin.c: Rename global functions. - 2001-05-09 Alexandre Oliva - * config.bfd (am33_2.0, am33_2.0-*-linux*): Added. - * configure.in (bfd_elf32_am33lin_vec): Added. - * Makefile.am (BFD32_BACKENDS): Added elf32-am33lin.lo. - (elf32-am33lin.lo): List dependencies. - * aclocal.m4, configure, Makefile.in: Rebuilt. - * elf-m10300.c (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME, - ELF_ARCH, ELF_MACHINE_CODE, ELF_MAXPAGESIZE): Define only if - ELF_ARCH was not defined before. - (elf_symbol_leading_char): Define if not defined. - * elf32-am33lin.c: Override the definitions above. - * targets.c (bfd_elf32_am33lin_vec): New. - -2003-07-09 Alexandre Oliva - - 2002-12-12 Alexandre Oliva - * elf-m10300.c (elf32_mn10300_link_hash_newfunc): Initialize - pcrel_relocs_copied. - 2001-12-13 Alexandre Oliva - * elf-m10300.c (ELF_DYNAMIC_INTERPRETER): Renamed from - ld-linux.so.2 to ld.so.1. - 2001-10-10 Alexandre Oliva - * elf-m10300.c (elf_mn10300_sizeof_plt0): New macro. - (_bfd_mn10300_elf_adjust_dynamic_symbol): Use it. - (_bfd_mn10300_elf_finish_dynamic_symbol): Likewise. - * elf-m10300.c (_bfd_mn10300_elf_size_dynamic_sections): Allocate - .rela.* section contents with bfd_zalloc. - 2001-09-25 Alexandre Oliva - * elf-m10300.c: Added declarations for functions missing them. - Merge some shared-library changes from the i386 back-end. Use - R_MN10300_RELATIVE instead of R_MN10300_PCREL32 and - R_MN10300_GLOB_DAT instead of R_MN10300_32 where appropriate. - (struct elf32_mn10300_link_hash_entry): Remove duplicates of - members of elf_link_hash_entry. Adjusted references. - (mn10300_elf_final_link_relocate): dynobj was already loaded - into a local variable, use it. - 2001-09-21 Nick Clifton - * elf-m10300.c: Add missing function prototypes. - 2001-08-24 Alexandre Oliva - * elf-m10300.c (mn10300_elf_relocate_section): Don't compute - relocation for dynamic relocations. - 2001-05-16 Alexandre Oliva - * reloc.c (BFD_RELOC_MN10300_GOTOFF24): New. - * elf-m10300.c: Introduce GOTPC16, GOTOFF24, GOTOFF16 and - PLT16, and rename GOTPC to GOTPC32 and GOTOFF to GOTOFF32. - (_bfd_mn10300_elf_create_dynamic_sections): Move creation ot PLT... - (_bfd_mn10300_elf_create_got_section): ... here, so that its - adress is already known at the time we compute relaxations. - (mn10300_elf_relax_section): Relax GOTPC32, GOTOFF32, GOT32 - and PLT32 to narrower relocations. - * libbfd.h, bfd-in2.h: Rebuilt. - 2001-04-12 Alexandre Oliva - * reloc.c (BFD_RELOC_MN10300_GOT32, BFD_RELOC_MN10300_GOT24, - BFD_RELOC_MN10300_GOT16, BFD_RELOC_MN10300_COPY, - BFD_RELOC_MN10300_GLOB_DAT, BFD_RELOC_MN10300_JMP_SLOT, - BFD_RELOC_MN10300_RELATIVE): New relocs. - * libbfd.h, bfd-in2.h: Rebuilt. - * elf-m10300.c (struct elf_mn10300_pcrel_relocs_copied): New. - (struct elf32_mn10300_link_hash_entry): Added DSO-related - fields. - (elf_mn10300_howto): Defined new relocation types. - (mn10300_reloc_map): Map them. - (_bfd_mn10300_elf_create_got_section): New fn. - (mn10300_elf_check_relocs): Handle PIC relocs. - (mn10300_elf_final_link_relocate): Likewise. - (mn10300_elf_relocate_section): Handle DSOs. - (PLT0_ENTRY_SIZE, PLT_ENTRY_SIZE, PIC_PLT_ENTRY_SIZE): New macros. - (elf_mn10300_plt0_entry, elf_mn10300_plt_entry, - elf_mn10300_pic_plt_entry): New. - (elf_mn10300_sizeof_plt, elf_mn10300_plt_plt0_offset, - elf_mn10300_plt0_linker_offset, elf_mn10300_plt0_gotid_offset, - elf_mn10300_plt_temp_offset, elf_mn10300_plt_symbol_offset, - elf_mn10300_plt_reloc_offset: New macros. - (ELF_DYNAMIC_INTERPRETER): Likewise. - (_bfd_mn10300_elf_create_dynamic_sections): New function. - (_bfd_mn10300_elf_adjust_dynamic_symbol): Likewise. - (_bfd_mn10300_elf_discard_copies): Likewise. - (_bfd_mn10300_elf_size_dynamic_sections): Likewise. - (_bfd_mn10300_elf_finish_dynamic_symbol): Likewise. - (_bfd_mn10300_elf_finish_dynamic_sections): Likewise. - (elf_backend_can_gc_sections, - elf_backend_create_dynamic_sections, - elf_backend_adjust_dynamic_sections, - elf_backend_size_dynamic_sections, - elf_backend_finish_dynamic_symbol, - elf_backend_finish_dynamic_sections, elf_backend_want_got_plt, - elf_backend_plt_readonly, elf_backend_want_plt_sym, - elf_backend_got_header_size, elf_backend_plt_header_size): New - macros. - -2003-07-09 Alexandre Oliva - - 2001-05-06 Alexandre Oliva - * elf-m10300.c (compute_function_info): Account for AM33 - registers in `movm' when computing stack space for `call' when - linking for AM33/2.0 link. - 2000-04-01 Alexandre Oliva - * archures.c (bfd_mach_am33_2): Renamed from bfd_mach_am332. - * bfd-in2.h: Rebuilt. - * cpu-m10300.c (bfd_am33_2_arch): Renamed from bfd_am332_arch. - * elf-m10300.c: Updated. - 2000-03-31 Alexandre Oliva - * archures.c (bfd_mach_am332): Defined. - * bfd-in2.h: Rebuilt. - * cpu-m10300.c (bfd_am332_arch): Defined. - (bfd_am33_arch): Chained with am33-2. - * elf-m10300.c (elf_mn10300_mach): Handle am332. - (_bfd_mn10300_elf_final_write_processing): Likewise. - -2003-07-09 H.J. Lu - - * elfxx-ia64.c (IA64_HOWTO): Set dst_mask to -1LL. - -2003-07-10 Alan Modra - - * elf64-ppc.c (bfd_elf64_mkobject): Define. - (struct ppc64_elf_obj_tdata): New. - (ppc64_elf_tdata, ppc64_tlsld_got): Define. - (ppc64_elf_mkobject): New function. - (struct got_entry): Add "owner". Move "tls_type". - (struct ppc_link_hash_table): Delete "relgot", "tlsld_got". - (ppc64_elf_init_stub_bfd): New function. - (create_got_section): Create header .got in dynobj. Create .got - and .rela.got in each bfd. Stash pointers in ppc64_elf_obj_tdata. - (ppc64_elf_create_dynamic_sections): Don't call create_got_section. - Look for dynobj .got, and test it. - (ppc64_elf_copy_indirect_symbol): Adjust for changed got. - (update_local_sym_info): Likewise. - (ppc64_elf_check_relocs): Likewise. - (ppc64_elf_gc_sweep_hook): Likewise. - (ppc64_elf_tls_optimize): Likewise. - (allocate_dynrelocs): Likewise. - (ppc64_elf_size_dynamic_sections): Likewise. - (ppc64_elf_relocate_section): Likewise. - (ppc64_elf_next_toc_section): Update comment. - (toc_adjusting_stub_needed): Remove unneeded cast. - (ppc64_elf_build_stubs): Check for stub sections in stub bfd by - testing section flags. - (ppc64_elf_build_stubs): Likewise. - (ppc64_elf_size_stubs): Likewise. Remove stub_bfd param. - (ppc64_elf_finish_dynamic_sections): Write out got sections. - (func_desc_adjust): Copy over dynamic info for undef weaks. - * elf64-ppc.h (ppc64_elf_init_stub_bfd): Declare. - (ppc64_elf_size_stubs): Update prototype. - * elflink.h (elf_link_sort_relocs): Use link_orders to find reldyn - input sections rather than scanning dynobj. - -2003-07-09 Richard Sandiford - - * elfxx-mips.c (mips_elf_link_hash_entry): Remove min_dyn_reloc_index. - (bfd_mips_elf_swap_msym_in, bfd_mips_elf_swap_msym_out): Delete. - (mips_elf_create_msym_section): Delete. - (mips_elf_create_dynamic_relocation): Don't set min_dyn_reloc_index. - (_bfd_mips_elf_copy_indirect_symbol): Likewise. - (_bfd_mips_elf_create_dynamic_sections): Don't create .msym. - (_bfd_mips_elf_size_dynamic_sections): Don't calculate its size. - (_bfd_mips_elf_size_dynamic_sections): Don't add DT_MIPS_MSYM. - (_bfd_mips_elf_finish_dynamic_symbol): Don't add symbols to .msym. - (_bfd_mips_elf_finish_dynamic_sections): Likewise. - -2003-07-09 Richard Sandiford - - * elfxx-mips.c (mips_elf_irix6_finish_dynamic_symbol): Make the - symbols protected. - -2003-07-09 Richard Sandiford - - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Fix handling - of relocations whose offset is -2. - -2003-07-09 Richard Sandiford - - * bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): Treat - forced-local symbols like other locals. Don't create relocations - against STN_UNDEF in irix objects. - -2003-07-09 Richard Sandiford - - * bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): In SGI- - compatible objects, add the values of defined external symbols - to the addend. - -2003-07-09 Richard Sandiford - - * elfxx-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Always - initialize a GOT entry to the symbol's st_value. - -2003-07-08 Alan Modra - - * elf-bfd.h (struct elf_obj_tdata): Move linker_section_pointers.. - * elf32-ppc.c (struct ppc_elf_obj_tdata): ..to here. New. - (ppc_elf_tdata): Define. - (elf_local_ptr_offsets): Adjust. - (ppc_elf_mkobject): New function. - (bfd_elf32_mkobject): Define. - - * elfcode.h (elf_object_p): Allocate tdata via _bfd_set_format. - * elfcore.h (elf_core_file_p): Likewise. - * section.c (bfd_section_init): Remove prototype. - -2003-07-08 Alan Modra - - * elf-bfd.h (struct elf_link_hash_entry): Remove linker_section_pointer - field. - (enum elf_linker_section_enum): Delete. - (struct elf_linker_section): Delete. - (struct elf_linker_section_pointers): Delete. - (struct elf_obj_tdata): Remove #if 0 chunk. Remove linker_section. - Make linker_section_pointers a void**. - (elf_local_ptr_offsets, elf_linker_section): Don't define. - * elf32-ppc.c (enum elf_linker_section_enum): New, cut-down version - of old item in elf-bfd.h. - (struct elf_linker_section): Likewise. - (struct elf_linker_section_pointers): Likewise. - (elf_local_ptr_offsets): Define. - (struct ppc_elf_link_hash_entry): Add linker_section_pointer. - (ppc_elf_link_hash_newfunc): Init it. - (struct ppc_elf_link_hash_table): Add sbss. - (ppc_elf_link_hash_table_create): zmalloc rather than clearing - individual fields. - (elf_create_linker_section): Fold into.. - (ppc_elf_create_linker_section): ..here. Remove hole_size code. - Make rela section here if shared. - (elf_find_pointer_linker_section): Pass lsect rather than enum. - (elf_create_pointer_linker_section): Adjust. zalloc rather than - clearing in a loop. - (elf_finish_pointer_linker_section): Adjust. Don't make rela - section here. - (ppc_elf_check_relocs): Adjust. - (ppc_elf_add_symbol_hook): Tighten hash creator test. Remove code - creating .sbss by hand. - * elf.c (_bfd_elf_link_hash_newfunc): Adjust. - -2003-07-04 Jakub Jelinek - - * elf32-s390.c (elf_howto_table): Change R_390_GOT12 to - complain_overflow_bitfield. - * elf64-s390.c (elf_howto_table): Change R_390_GOT12 to - complain_overflow_bitfield. - -2003-07-04 Jakub Jelinek - - * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Return - true even if -pie. - -2003-07-04 Jakub Jelinek - - * elfxx-ia64.c (struct elfNN_ia64_link_hash_table): Add rel_fptr_sec. - (elfNN_ia64_dynamic_symbol_p): Change info->shared into - !info->executable. - (get_fptr): For -pie create .opd as writable section and create - .rela.opd as well. - (elfNN_ia64_check_relocs): Change info->shared into - !info->executable. - (allocate_fptr): Likewise. - (allocate_dynrel_entries): Account for a relative reloc for -pie - @fptr(). Don't account for a relative reloc if -pie want_ltoff_fptr - for undefweak symbol. Account for an IPLT reloc in .rela.opd - section if -pie. - (set_got_entry): Don't create a relative reloc if -pie - want_ltoff_fptr for undefweak symbol. - (set_fptr_entry): Emit an IPLT reloc in .rela.opd for -pie. - (elfNN_ia64_relocate_section): Emit a relative reloc for -pie - @fptr(). - - * elfxx-ia64.c (elfNN_ia64_relocate_section): Issue undefined_symbol - even if -pie. - * elf32-i386.c (elf_i386_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - -2003-07-04 Paul Clarke - - * elf32-h8300.c (R_H8_DIR32A16): Fix name field. - (elf32_h8_relax_section) : Adjust position of relocation. - : Fix type of relocation. - -2003-07-04 Kaz Kojima - - * elf32-sh.c (sh_elf_create_dynamic_sections): Return if dynamic - sections were created already. Remove unnecessary tests of - the previous change. - -2003-07-04 Kaz Kojima - - * elf32-sh.c (sh_elf_create_dynamic_sections): Don't call - bfd_make_section for existing sections. - -2003-07-04 Alan Modra - - * elf32-sparc.c (elf32_sparc_check_relocs): Don't call - create_got_section if we already have done so. - * elf32-sh.c (sh_elf_create_dynamic_sections): Likewise. - (sh_elf_check_relocs): Likewise. - (sh_elf_adjust_dynamic_symbol): Delete "dynobj" var. Use - htab->root.dynobj instead. - (sh_elf_check_relocs): Likewise. - (sh_elf_finish_dynamic_sections): Likewise. - - * section.c (bfd_make_section): Return NULL for existing section. - -2003-07-04 Alan Modra - - * elf32-ppc.c (ppc_elf_create_dynamic_sections): Don't call - ppc_elf_create_got if we've already done so. - - * elf-bfd.h (_bfd_elf_create_linker_section) Don't declare. - (_bfd_elf_find_pointer_linker_section): Likewise. - (bfd_elf32_create_pointer_linker_section): Likewise. - (bfd_elf32_finish_pointer_linker_section): Likewise. - (bfd_elf64_create_pointer_linker_section): Likewise. - (bfd_elf64_finish_pointer_linker_section): Likewise. - (_bfd_elf_make_linker_section_rela): Likewise. - * elfcode.h (elf_create_pointer_linker_section): Don't define. - (elf_finish_pointer_linker_section): Likewise. - * elflink.c (_bfd_elf_make_linker_section_rela): Delete. - (_bfd_elf_create_linker_section): Move this function.. - (_bfd_elf_find_pointer_linker_section): ..and this.. - * elflink.h (elf_create_pointer_linker_section): ..and this.. - (elf_finish_pointer_linker_section): ..and this.. - * elf32-ppc.c: ..to here, renaming to the following, and adjusting - calls. - (elf_create_linker_section): Convert to C90, tidy. - (elf_find_pointer_linker_section): Likewise. - (elf_create_pointer_linker_section): Likewise. - (elf_finish_pointer_linker_section): Likewise. - * elf32-i370.c: Delete #if 0 code. - -2003-07-02 Alan Modra - - * elf64-ppc.c (ppc64_elf_func_desc_adjust): Don't allow _savef* and - _restf* to be satisfied by shared libs, and always force them local. - (toc_adjusting_stub_needed): Avoid scanning linker created sections. - Correct test for "bl". - (ppc64_elf_relocate_section ): Correct test for - primary opcode 31. - -2003-07-01 Martin Schwidefsky - - * elf32-s390.c (s390_elf_ldisp_reloc): New prototype. - (s390_tls_reloc): New function. - (elf_howto_table): Add long displacement relocations R_390_20, - R_390_GOT20, R_390_GOTPLT20 and R_390_TLS_GOTIE20. - (elf_s390_reloc_type_lookup): Likewise. - (elf_s390_check_relocs): Likewise. - (elf_s390_gc_sweep_hook): Likewise. - (elf_s390_relocate_section): Likewise. - * elf64-s390.c: Same changes as for elf32-s390.c. - * reloc.c: Add long displacement relocations BFD_RELOC_390_20, - BFD_RELOC_390_GOT20, BFD_RELOC_390_GOTPLT20 and - BFD_RELOC_390_TLS_GOTIE20. - * bfd-in2.h: Regenerate. - * libbfd.h: Likewise. - -2003-06-30 Alan Modra - - * cpu-ia64-opc.c (ext_imms_scaled): Don't sign extend using shifts. - (ins_imms, ins_immsm1u4): Likewise. Warning fix. - -2003-06-29 Alan Modra - - * archive.c: Convert to C90, remove unnecessary prototypes and casts. - Replace PTR with void *. Formatting. - * archive64.c: Likewise. - * archures.c: Likewise. - * bfd-in.h: Likewise. - * bfd.c: Likewise. - * bfdio.c: Likewise. - * bfdwin.c: Likewise. - * cache.c: Likewise. - * corefile.c: Likewise. - * format.c: Likewise. - * init.c: Likewise. - * libbfd-in.h: Likewise. - * libbfd.c: Likewise. - * linker.c: Likewise. - * opncls.c: Likewise. - * reloc.c: Likewise. - * section.c: Likewise. - * simple.c: Likewise. - * syms.c: Likewise. - * targets.c: Likewise. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - - * ecoff.c (bfd_debug_section): Add missing kept_section initialization. - * libbfd-in.h (_bfd_sh_align_load_span): Don't declare if defined. - * libbfd.c (COERCE32, EIGHT_GAZILLION): Simplify. - (bfd_getb64): Rewrite without parens. - (bfd_getl64, bfd_getb_signed_64, bfd_getl_signed_64): Likewise. - * cache.c (insert, snip): Remove INLINE. - * linker.c (bfd_link_add_undef): Likewise. - -2003-06-29 Andreas Jaeger - - * elf64-x86-64.c: Convert to ISO C90 prototypes, remove - unnecessary prototypes. Replace PTR with void *. - (elf64_x86_64_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL to - trim plt entries. Move undefweak non-default visibility test ... - (allocate_dynrelocs): ... from here. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. - Change all callers. - (allocate_dynrelocs): Use SYMBOL_CALLS_LOCAL. Use - SYMBOL_REFERENCES_LOCAL for dynreloc check. - (elf64_x86_64_relocate_section): Use SYMBOL_CALLS_LOCAL for - dynreloc and .got relocs. - (elf64_x86_64_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL - for .got relocs. - -2003-06-29 Thiemo Seufer - - * elfxx-mips.c: Allow lazy binding for R_MIPS_JALR. - -2003-06-27 Nick Clifton - - * opncls.c (bfd_add_gnu_debuglink_section): Rename to - bfd_add_gnu_debuglink_section and only create the section, do not - fill in its contents. - (bfd_fill_in_gnu_debuglink_section): New function. Fill in the - contents of a .gnu-debuglink section. - * bfd-in2.h: Regenerate. - -2003-06-27 Thiemo Seufer - - * elfxx-mips.c: Revert .got alignment to 2**4. - -2003-06-27 Thiemo Seufer - - * elf32-mips.c: Fix addend for _gp_disp special symbol. - -2003-06-27 Thiemo Seufer - - * elfxx-mips.c (_bfd_mips_elf_fake_sections): Remove non-default - relocation header setup. - -2003-06-25 Alan Modra - - * elf32-ppc.c (ppc_elf_howto_table): Remove unnecessary cast. - (ppc_elf_reloc_type_lookup): Modify comment. - (ppc_elf_info_to_howto): Ditto. - (ppc_elf_relocate_section): Ditto. - (ppc_elf_check_relocs): Call ppc_elf_howto_init. - -2003-06-25 Alan Modra - - * aout-ns32k.c: Correct spelling of "relocatable". - * aoutx.h: Likewise. - * bfd-in.h: Likewise. - * bfd.c: Likewise. - * bout.c: Likewise. - * coff-a29k.c: Likewise. - * coff-alpha.c: Likewise. - * coff-arm.c: Likewise. - * coff-i386.c: Likewise. - * coff-i860.c: Likewise. - * coff-i960.c: Likewise. - * coff-m68k.c: Likewise. - * coff-m88k.c: Likewise. - * coff-mcore.c: Likewise. - * coff-mips.c: Likewise. - * coff-or32.c: Likewise. - * coff-ppc.c: Likewise. - * coff-rs6000.c: Likewise. - * coff-sh.c: Likewise. - * coff-tic80.c: Likewise. - * coff64-rs6000.c: Likewise. - * cofflink.c: Likewise. - * cpu-ns32k.c: Likewise. - * ecoff.c: Likewise. - * ecofflink.c: Likewise. - * elf-bfd.h: Likewise. - * elf-eh-frame.c: Likewise. - * elf-hppa.h: Likewise. - * elf-m10200.c: Likewise. - * elf-m10300.c: Likewise. - * elf.c: Likewise. - * elf32-arm.h: Likewise. - * elf32-avr.c: Likewise. - * elf32-cris.c: Likewise. - * elf32-d10v.c: Likewise. - * elf32-dlx.c: Likewise. - * elf32-fr30.c: Likewise. - * elf32-frv.c: Likewise. - * elf32-h8300.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-i370.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-i860.c: Likewise. - * elf32-i960.c: Likewise. - * elf32-ip2k.c: Likewise. - * elf32-iq2000.c: Likewise. - * elf32-m32r.c: Likewise. - * elf32-m68hc11.c: Likewise. - * elf32-m68hc1x.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mcore.c: Likewise. - * elf32-mips.c: Likewise. - * elf32-msp430.c: Likewise. - * elf32-openrisc.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sh64.c: Likewise. - * elf32-sparc.c: Likewise. - * elf32-v850.c: Likewise. - * elf32-vax.c: Likewise. - * elf32-xstormy16.c: Likewise. - * elf32-xtensa.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-hppa.c: Likewise. - * elf64-mips.c: Likewise. - * elf64-mmix.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-sh64.c: Likewise. - * elf64-sparc.c: Likewise. - * elf64-x86-64.c: Likewise. - * elfcode.h: Likewise. - * elflink.h: Likewise. - * elfn32-mips.c: Likewise. - * elfxx-ia64.c: Likewise. - * elfxx-mips.c: Likewise. - * i386linux.c: Likewise. - * ieee.c: Likewise. - * libcoff-in.h: Likewise. - * linker.c: Likewise. - * m68klinux.c: Likewise. - * pdp11.c: Likewise. - * pe-mips.c: Likewise. - * peXXigen.c: Likewise. - * reloc.c: Likewise. - * reloc16.c: Likewise. - * sparclinux.c: Likewise. - * sunos.c: Likewise. - * syms.c: Likewise. - * versados.c: Likewise. - * vms.c: Likewise. - * xcofflink.c: Likewise. - * bfd-in2.h: Regenerate. - * libcoff.h: Regenerate. - * libbfd.h: Regenerate. - -2003-06-24 Alan Modra - - * elf32-ppc.c (ppc_elf_check_relocs): Report plt reloc against - local sym errors. - - * elf32-i386.c: Convert to C90 function definitions, remove unnecessary - prototypes and casts. Replace PTR with void *. Formatting. - * elf32-ppc.c: Likewise. Break long strings too. - (ppc_elf_relax_section): Use enum elf_ppc_reloc_type for r_type. - (ppc_elf_unhandled_reloc): Internationalize error message. - * elf32-ppc.h: Remove PARAMS. - -2003-06-23 Mark Mitchell - - * elf32-ppc.c (ppc_elf_begin_write_processing): Use bytes to count - APUinfo slots. - (ppc_elf_final_write_processing): Likewise. - -2003-06-23 H.J. Lu - - * elflink.h (elf_link_input_bfd): Check raw size when using - kept_section to preserve debug information discarded by - linkonce. - -2003-06-20 Alan Modra - - * elf64-ppc.c (struct ppc_link_hash_table): Add top_id. - (ppc64_elf_setup_section_lists): Set it. - (ppc64_elf_relocate_section): Check sym section id against top_id. - (ppc_build_one_stub): Comment on top_id. - -2003-06-20 Ralf Corsepius - - * config.bfd: Add tic4x-*-rtems*. - -2003-06-20 Alan Modra - - * elf64-ppc.c: Convert to C90 function definitions, remove unnecessary - prototypes and casts. Replace PTR with void *. Format copyright. - Mention ABI links. - (struct ppc_link_hash_table): Rename sgot, srelgot, splt, srelplt, - sdynbss, srelbss, sglink, sbrlt and srelbrlt to got, relgot .. relbrlt. - (ppc_type_of_stub): Make r_type an enum. - (ppc64_elf_size_stubs): Likewise. - * elf64-ppc.h: Remove PARAMS macro. - -2003-06-19 Alan Modra - - * elf64-ppc.c (ppc64_elf_link_hash_table_create): Reinstate init of - elf hash tab fields. - - * elf64-ppc.c (ppc64_elf_reloc_type_lookup): Tidy prototype. - (ppc64_elf_info_to_howto): Likewise. - (ppc64_elf_build_stubs): Add "stats" param, and print statistics. - * elf64-ppc.h (ppc64_elf_build_stubs): Adjust prototype. - -2003-06-19 Alan Modra - - * elf64-sparc.c (sparc64_elf_relocate_section): Ignore R_SPARC_DISP32 - reloc overflow on discarded eh_frame entries. - -2003-06-19 Alan Modra - - * elf64-ppc.c (toc_adjusting_stub_needed): New function. - (ppc64_elf_next_input_section): Use it here to set has_gp_reloc. - Return error condition. - (ppc64_elf_size_stubs): Restrict toc adjusting stubs to sections - that have has_gp_reloc set. - (struct ppc_link_hash_table): Add stub_count. - (ppc_build_one_stub): Increment it. - (ppc64_elf_link_hash_table_create): zmalloc rather than clearing - individual fields. - * elf64-ppc.h (ppc64_elf_next_input_section): Update prototype. - -2003-06-18 Alan Modra - - * elflink.h (elf_gc_record_vtentry): Revert last change. Correct - size calculation from addend. Round size up. - -2003-06-18 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section) : When linking a program, don't complain about a - symbol from a normal object or an undefined weak symbol. - -2003-06-18 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Accept a symbol on - R_PPC64_TOC relocs. - -2003-06-17 H.J. Lu - - * section.c (struct sec): Put back kept_section. - (STD_SECTION): Put back kept_section initialization. - * bfd-in2.h: Regenerate. - - * elflink.h (elf_link_input_bfd): Also check discarded linkonce - sections for relocateable output. Use kept_section to preserve - debug information discarded by linkonce. - -2003-06-17 Roland McGrath - - * elfxx-ia64.c (elfNN_ia64_relocate_section): Support - segment-relative relocation between different segments. - -2003-06-17 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Do unaligned reloc - optimizations earlier. - - * elf64-ppc.c (struct ppc_link_hash_table): Reinstate top_index. - Restore previous input_list type. - (ppc64_elf_link_hash_table_create): Undo last change. - (ppc64_elf_setup_section_lists): Reinstate code setting up input lists - per output section, but don't bother with bfd_abs_section marker. - (ppc64_elf_next_input_section): Adjust for multiple input section - lists. - (group_sections): Likewise. - -2003-06-17 Jakub Jelinek - - * elf64-ppc.c (ppc64_elf_relocation_section): Ensure - *r_offset == r_addend for RELATIVE relocs against .got. - -2003-06-17 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Optimize unaligned relocs. - -2003-06-17 Nick Clifton - - * elflink.h (elf_gc_record_vtentry): Allocate an extra element - in the vtable_entries_used array to allow for the accessing - the largest element. - -2003-06-17 Alan Modra - - * elf64-ppc.c (struct ppc_link_hash_table): Remove top_index. Modify - input_list. - (ppc64_elf_link_hash_table_create): Init input_list here. - (ppc64_elf_setup_section_lists): Remove code setting up input lists - per output section. Set toc_off for abs and other standard sections. - (ppc64_elf_reinit_toc): Don't set elf_gp on input bfds lacking a toc. - (ppc64_elf_next_input_section): Adjust for single input section list. - Don't set toc_curr from input bfds that haven't set elf_gp. - (group_sections): Adjust for single input section list. - - * elf64-ppc.c (ppc64_elf_relocate_section): Correct pcrel section zero. - -2003-06-16 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): When optimizing toctprel - tls, check that a TOC16_DS or TOC16_LO_DS reloc isn't pointing to a - dtprel entry. Ensure TLS_LD DTPMOD reloc has a zero addend. Write - got section for RELATIVE relocs. Fix wrong comment. Change condition - under which dynamic relocs update the section contents. - -2003-06-13 Robert Millan - - * config.bfd: Add i386-netbsd-gnu target. - -2003-06-12 Nick Clifton - - * opncls.c (calc_crc32): Rename to - bfd_calc_gnu_debuglink_crc32 and export. - (GNU_DEBUGLINK): Define and use to replace occurrences of - hard-coded ".gnu_debuglink" in the code. - (get_debug_link_info): Prevent aborts by replacing call to - xmalloc with a call to malloc. - (find_separate_debug_file): Prevent aborts by replacing calls - to xmalloc and xstrdup with calls to malloc and strdup. - (bfd_add_gnu_debuglink): New function. Add a .gnu_debuglink - section to a bfd. - * bfd-in2.h: Regenerate. - -2003-06-12 Federico G. Schwindt - - * config.bfd (i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3]): - New target (was i[3-7]86-*-openbsd* before). - (i[3-7]86-*-openbsd*): Change to use bfd_elf32_i386_vec. - (vax-*-openbsd*): New target. - -2003-06-11 Thiemo Seufer - - * elfxx-mips.c (MIPS_ELF_OPTIONS_SECTION_NAME): Use .MIPS.options - for n32, too. - (MIPS_ELF_STUB_SECTION_NAME): Use .MIPS.stubs for n32, too. - (mips_elf_rel_dyn_section): Use appropriate section alignment. - (mips_elf_create_got_section): Likewise. - (_bfd_mips_elf_create_dynamic_sections): Likewise. - -2003-06-11 Thiemo Seufer - - * elf32-mips.c (mips_elf_generic_reloc): New Function. - (elf_mips_howto_table_rel): Use it. - (gprel32_with_gp): Move prototype. - (mips_elf_hi16_reloc): Check for ! BSF_LOCAL instead of zero addend. - Use mips_elf_generic_reloc. - (mips_elf_got16_reloc): Check for ! BSF_LOCAL instead of zero addend. - Code cleanup. - (_bfd_mips_elf32_gprel16_reloc): Check for ! BSF_LOCAL instead of - zero addend. - (mips_elf_gprel32_reloc): Likewise. Use the same GP assignment logic - as in the other *_gprel*_reloc functions. - (gprel32_with_gp): Handle partial_inplace properly. - (mips32_64bit_reloc): Use mips_elf_generic_reloc. - (mips16_gprel_reloc): Check for ! BSF_LOCAL instead of zero addend. - Do addend handling directly instead of calling - _bfd_mips_elf_gprel16_with_gp. Handle partial_inplace properly. - * elf64-mips.c (mips_elf64_hi16_reloc): Check for ! BSF_LOCAL instead - of zero addend. Handle partial_inplace properly. - (mips_elf64_got16_reloc): Check for ! BSF_LOCAL instead of zero - addend. - (mips_elf64_gprel16_reloc): Likewise. - (mips_elf64_literal_reloc): Likewise. - (mips_elf64_gprel32_reloc): Likewise. Use the same GP assignment - logic as in the other *_gprel*_reloc functions. Handle - partial_inplace properly. - (mips_elf64_shift6_reloc): Check for ! BSF_LOCAL instead of zero - addend. Handle partial_inplace properly. - (mips16_gprel_reloc): Likewise. Do addend handling directly instead - of calling _bfd_mips_elf_gprel16_with_gp. - * elfn32-mips.c (mips_elf_got16_reloc): Check for BSF_LOCAL. - (mips_elf_gprel32_reloc): Check for ! BSF_LOCAL instead - of zero addend. - (mips_elf_shift6_reloc): Handle partial_inplace properly. - (mips16_gprel_reloc): Likewise. Do addend handling directly instead - of calling _bfd_mips_elf_gprel16_with_gp. - * elfxx-mips.c (_bfd_mips_elf_gprel16_with_gp): Handle - partial_inplace properly. Fix wrong addend handling. Fix overflow - check. - (_bfd_mips_elf_sign_extend): Renamed from mips_elf_sign_extend and - exported. - (mips_elf_calculate_relocation): Use _bfd_mips_elf_sign_extend. - (_bfd_mips_elf_relocate_section): Likewise. - (mips_elf_create_dynamic_relocation): Update sec_info_type access. - * elfxx-mips.h (_bfd_mips_relax_section): Fix prototype declaration. - (_bfd_mips_elf_sign_extend): New prototype. - -2003-06-11 Federico G. Schwindt - - * config.bfd (sparc-*-openbsd[0-2].* | sparc-*-openbsd3.[0-1]): - New target (was sparc-*-openbsd* before). - (sparc-*-openbsd*): Change to use bfd_elf32_sparc_vec. - - * configure.in (vax-*-openbsd*): Set COREFILE to netbsd-core.lo. - * configure: Regenerate. - -2003-06-11 H.J. Lu - - * po/Make-in (DESTDIR): New. - (install-data-yes): Support $(DESTDIR). - (uninstall): Likewise. - -2003-06-11 Alan Modra - - * Makefile.am (config.status): Depend on version.h. - Run "make dep-am". - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2003-06-10 Alan Modra - Gary Hade - - * elf64-ppc.c (ppc64_elf_relocate_section <*_DS>): Special case lq. - -2003-06-10 Richard Sandiford - - * archures.c (bfd_mach_h8300sxn): New architecture. - * bfd-in2.h: Regenerate. - * cpu-h8300.c (h8300_scan): Check for 'sxn'. - (h8300sxn_info_struct): New. - (h8300sx_info_struct): Link to it. - * elf32-h8300.c (elf32_h8_mach): Add h8300sxn case. - (elf32_h8_final_write_processing): Likewise. - -2003-06-08 Alan Modra - - * elf64-ppc.c: Move TARGET_LITTLE_SYM and other macros used by - elfxx-target.h so that we can use elf_backend_got_header_size. - (ELF_MACHINE_ALT1, ELF_MACHINE_ALT2): Delete. - (GLINK_CALL_STUB_SIZE): Modify. Define new glink call stub and - associated macros. - (ppc64_elf_howto_raw ): Correct - dst_mask. - (enum ppc_stub_type): Add ppc_stub_long_branch_r2off and - ppc_stub_plt_branch_r2off. - (struct ppc_stub_hash_entry): Reorganize. - (struct ppc_link_hash_table): Add no_multi_toc, multi_toc_needed, - toc_curr, toc_off and emit_stub_syms. - (ppc64_elf_link_hash_table_create): Init them. - (ppc_stub_name): Correct string size. - (ppc64_elf_check_relocs): Set has_gp_reloc on GOT and TOC relocs. - (ppc64_elf_size_dynamic_sections): Set no_multi_toc if GOT entries - used. - (ppc_type_of_stub): Tweak root.type test. - (build_plt_stub): Remove glink code. Adjust for insn macro changes. - (ppc_size_one_stub): Handle ppc_stub_long_branch_r2off and - ppc_stub_plt_branch_r2off. - (ppc_build_one_stub): Likewise. Fix var shadowing. Correct addis,addi - range test. Use toc_off to calculte r2 values. Handle emit_stub_syms. - (ppc64_elf_setup_section_lists): Remove htab creator flavour test. - Initialize elf_gp and toc_curr. - (ppc64_elf_next_toc_section, ppc64_elf_reinit_toc): New functions. - (ppc64_elf_next_input_section): Set toc_off. - (group_sections): Ensure groups have the same TOC. - (ppc64_elf_size_stubs): Check whether we need a TOC adjusting stub. - (ppc64_elf_build_stubs): Add emit_stub_syms param, and stash in htab. - Build new glink stub. - (ppc64_elf_relocate_section): Handle multiple TOCs. Fix comments. - (ppc64_elf_finish_dynamic_sections): Adjust DT_PPC64_GLINK. - * elf64-ppc.h (ppc64_elf_build_stubs): Update prototype. - (ppc64_elf_next_toc_section, ppc64_elf_reinit_toc): Declare. - * section.c (struct sec): Rename flag12 to has_gp_reloc. - (STD_SECTION): Update. - * ecoff.c (bfd_debug_section): Update comment. - * bfd-in2.h: Regenerate. - -2003-06-05 Daniel Jacobowitz - - * elfcode.h (elf_slurp_reloc_table_from_section): Don't dereference - NULL function pointers. - -2003-06-05 Daniel Jacobowitz - - * simple.c (bfd_simple_get_relocated_section_contents): Call - _bfd_generic_link_add_symbols instead of bfd_link_add_symbols. - -2003-06-04 Svein E. Seldal - - * coff-tic54x.c: Removed the ticoff0_bad_format_hook() and - ticoff1_bad_format_hook() functions. Removed the coff0 and coff1 - swaptables. - * coff-tic4x.c: Ditto - * coffcode.h: Added extra arguments to CREATE_BIG_COFF_TARGET_VEC - and CREATE_LITTLE_COFF_TARGET_VEC. Created the macro - CREATE_BIGHDR_COFF_TARGET_VEC. Created the ticoff0_bad_format_hook(), - ticoff1_bad_format_hook() functions. Created the coff0 and coff1 - swap tables. - * coff-tic4x.c: Adopted new CREATE_xxx_COFF_TARGET_VEC macros. - * coff-a29k.c: Append COFF_SWAP_TABLE argument - * coff-apollo.c: Ditto - * coff-arm.c: Ditto - * coff-h8300.c: Ditto - * coff-h8500.c: Ditto - * coff-i960.c: Ditto - * coff-m68k.c: Ditto - * coff-m88k.c: Ditto - * coff-mcore.c: Ditto - * coff-sh.c: Ditto - * coff-sparc.c: Ditto - * coff-tic80.c: Ditto - * coff-we32k.c: Ditto - * coff-z8k.c: Ditto - * coff-w65.c: Ditto - -2003-06-04 Svein E. Seldal - - * coff-tic4x.c (ticoff0_swap_table, ticoff1_swap_table): Fixed - initialization bug - -2003-06-03 Jakub Jelinek - - * elf.c (_bfd_elf_print_private_bfd_data): Handle PT_GNU_STACK. - (bfd_section_from_phdr): Likewise. - (map_sections_to_segments): Create PT_GNU_STACK segment header. - (get_program_header_size): Count with PT_GNU_STACK. - * elf-bfd.h (struct elf_obj_tdata): Add stack_flags. - * elflink.h (bfd_elfNN_size_dynamic_sections): Set stack_flags. - -2003-06-03 H.J. Lu - - * elflink.h (elf_link_input_bfd): Call linker error_handler - for discarded definitions. - -2003-06-03 Elias Athanasopoulos - - * syms.c (decode_section_type): Return 'n' if section flags are - SEC_HAS_CONTENTS && SEC_READONLY. - -2003-06-03 Nick Clifton - - * elf32-v850.c (v850_elf_howto_t): Rename R_V850_32to - R_V850_ABS32. Add entry for R_V850_REL32. - (v850_elf_reloc_map): Likewise. - (v850_elf_check_relocs): Likewise. - (v850_elf_perform_relocation): Likewise. - (v850_elf_final_link_relocate): Likewise. Include computation - to make R_V850_REl32 pc-relative. - -2003-06-03 Kaz Kojima - - * elf32-sh.c (sh_elf_size_dynamic_sections): Create .interp section - and DT_DEBUG dynamic tag even for position independent executables. - * elf64-sh64.c (sh64_elf64_size_dynamic_sections): Likewize. - -2003-06-02 Daniel Jacobowitz - - * config.bfd: Move obsolete entries out of the range of the - targmatch sed script. - -2003-06-02 Daniel Jacobowitz - - * config.bfd (mips*-dec-bsd*, mips*-*-pe*): Mark as obsolete. - -2003-05-31 Jakub Jelinek - - * elf32-ppc.c (allocate_dynrelocs): Use single slot for first 8192 - plt entries, not just 8191. - -2003-05-30 Daniel Jacobowitz - - * elfxx-mips.c (_bfd_mips_elf_discard_info): Correct loop index. - Reported by Ken Faiczak . - -2003-05-30 Ulrich Drepper - Jakub Jelinek - - * elflink.h (elf_link_add_object_symbols): Use !info->executable - instead of info->shared where appropriate. - (bfd_elfNN_size_dynamic_sections, elf_link_output_extsym): Likewise. - * elflink.c (_bfd_elf_create_got_section): Likewise. - (_bfd_elf_link_create_dynamic_sections): Likewise. - (_bfd_elf_link_assign_sym_version): Likewise. - * elf32-i386.c (elf_i386_size_dynamic_sections): Create .interp section - and DT_DEBUG dynamic tag even for position independent executables. - * elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise. - * elf32-s390.c (elf_s390_size_dynamic_sections: Likewise. - * elf64-ppc.c (ppc64_elf_size_dynamic_sections: Likewise. - * elf64-s390.c (elf_s390_size_dynamic_sections: Likewise. - * elf64-x86-64.c (elf64_x86_64_size_dynamic_sections: Likewise. - * elfxx-ia64.c (elfNN_ia64_size_dynamic_sections: Likewise. - * elf32-sparc.c (elf32_sparc_size_dynamic_sections: Likewise. - * elf64-alpha.c (elf64_alpha_size_dynamic_sections: Likewise. - * elf64-sparc.c (sparc64_elf_size_dynamic_sections: Likewise. - -2003-05-30 Kris Warkentin - - * elf.c (elfcore_grok_nto_status): Only set lwpid for the active or - signalled thread. - (elfcore_grok_nto_gregs): Only make .reg section for the active thread. - -2003-05-29 Nick Clifton - - * pef.c: Include "safe-ctype.h" instead of . - Tidy up formatting. - * Makefile.am: Add dependency on safe-ctype.h. - * Makefile.in: Regenerate. - -2003-05-29 Thiemo Seufer - - * elfxx-mips.c: Don't force symbols local unconditionally. - -2003-05-28 Alan Modra - - * elf32-hppa.c (elf32_hppa_relocate_section): Delete bogus - undefined_symbol call. - -2003-05-27 Richard Sandiford - - * elfxx-mips.c (mips_elf_hash_sort_data): Fix formattting. - (mips_elf_link_hash_table): Likewise. - -2003-05-22 Thiemo Seufer - - * elf64-mips.c (elf_mips_gnu_rel16_s2): Add internally used - R_MIPS_GNU_REL16_S2 support. - (bfd_elf64_bfd_reloc_type_lookup): Use it. - (mips_elf64_rtype_to_howto): Use it. - * elfn32-mips.c (elf_mips_gnu_rel16_s2): Add internally used - R_MIPS_GNU_REL16_S2 support. - (bfd_elf32_bfd_reloc_type_lookup): Use it. - (mips_elf_n32_rtype_to_howto): Use it. - -2003-05-21 Stuart F. Downing - - * som.h: Define PA_2_0 before including a.out.h - -2003-05-07 Eric Christopher - Alexandre Oliva - - * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Adjust - pic tests, change to warning. - (_bfd_mips_elf_final_link): Remove EF_MIPS_CPIC flag setting. - -2003-05-21 Marcus Comstedt - - * config.bfd: Check for a target triplet of shl-...-netbsdelf as - well as shle-...-netbsdelf. Remove duplicate entry. - -2003-05-21 Nick Clifton - - * elf32-xstormy16.c (xstormy16_elf_howto_table): Fix dst_mask - for X_STORMY16_REL_12 reloc. - - * elf.c (bfd_elf_get_needed_list): Use is_elf_hash_table to check - the type of the hash table in the bfd_link_info structure. - (bfd_elf_get_runpath_list): Likewise. - -2003-05-19 Roland McGrath - - * elf.c (bfd_elf_bfd_from_remote_memory): New function. - * bfd-in.h: Declare it. - * bfd-in2.h: Regenerated. - * elfcode.h (NAME(_bfd_elf,bfd_from_remote_memory)): New function. - * elf-bfd.h (struct elf_backend_data): New function pointer member - elf_backend_bfd_from_remote_memory. - (_bfd_elf32_bfd_from_remote_memory, _bfd_elf64_bfd_from_remote_memory): - Declare them. - * elfxx-target.h (elf_backend_bfd_from_remote_memory): New macro. - (elfNN_bed): Add that to the initializer. - -2003-05-15 Roland McGrath - - * elf.c (elfcore_grok_note): Grok NT_AUXV note, make ".auxv" section. - -2003-05-20 Jakub Jelinek - - * elflink.h (elf_link_output_extsym): Only issue error about != - STV_DEFAULT symbols if they are bfd_link_hash_undefined. - -2003-05-20 H.J. Lu - - * elflink.c (_bfd_elf_merge_symbol): Check ELF_LINK_DYNAMIC_DEF - when removing the old definition for symbols with non-default - visibility. - -2003-05-18 Jason Eckhardt - - * elf32-i860.c (elf32_i860_relocate_highadj): Simplify calculation. - -2003-05-17 Andreas Schwab - - * elf32-m68k.c (elf_m68k_check_relocs): Cache reloc section in - elf_section_data during processing of pc-relative and absolute - relocations. - (elf_m68k_relocate_section): Use the cached reloc section instead - of computing it again. Fix handling of visibility. Don't modify - addend when copying over a relocation into the output. - -2003-05-17 Alan Modra - - * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL - to trim plt entries. Move undefweak non-default visibility test.. - (allocate_dynrelocs): ..from here. - * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't test - dynamic_sections_created here. Update comment. Move undefweak - non-default visibility test.. - (allocate_dynrelocs): ..from here. Fix comment. - * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL - to trim plt entries. Move undefweak non-default visibility test.. - (allocate_dynrelocs): ..from here. Fix comment. - * elflink.h (elf_link_output_extsym): Compare ELF_ST_VISIBILITY with - STV_DEFAULT rather than comparing with zero. - * elflink.c (_bfd_elf_merge_symbol): Likewise. - (_bfd_elf_fix_symbol_flags): Likewise. Format comment. - -2003-05-17 Thiemo Seufer - - * bfd.c (_bfd_get_gp_value): Prevent illegal access for abfd null - pointers. - (_bfd_set_gp_value): Likewise. - -2003-05-16 Michael Snyder - From Bernd Schmidt - * archures.c (bfd_mach_h8300sx): New. - * bfd-in2.h: Regenerate. - * cpu-h8300.c (h8300_scan)): Add support for h8300sx. - (h8300sx_info_struct): New. - (h8300s_info_struct): Link to it. - * elf32-h8300.c (elf32_h8_mach): Add support for h8300sx. - (elf32_h8_final_write_processing): Likewise. - (elf32_h8_relax_section): Likewise. - -2003-05-16 Kelley Cook - - * config.bfd: Accept i[3-7]86 variants. - * configure.host: Likewise. - * configure.in: Likewise. - * configure: Regenerate. - -2003-05-15 H.J. Lu - - * elflink.c (_bfd_elf_fix_symbol_flags): Also hide protected - symbol. - -2003-05-15 H.J. Lu - - * elflink.h (elf_link_check_versioned_symbol): Also allow - the base version. - -2003-05-15 Alan Modra - H.J. Lu - - * elf32-i386.c (allocate_dynrelocs): Use SYMBOL_CALLS_LOCAL. - (elf_i386_relocate_section): Likewise. - * elf32-ppc.c (allocate_dynrelocs): Likewise. - (ppc_elf_relocate_section): Likewise. - * elf64-ppc.c (allocate_dynrelocs): Likewise. - (ppc64_elf_relocate_section): Likewise. - -2003-05-15 Thiemo Seufer - - * elf32-mips.c (gprel32_with_gp): Remove useless N64 ABI case. - -2003-05-13 Stephane Carrez - - * elf32-m68hc1x.c (_bfd_m68hc11_elf_merge_private_bfd_data): Check for - processor capability, allow merge of HC12 and HCS12 in some cases. - (m68hc11_elf_hash_table_create): Use bfd_malloc instead of bfd_zalloc. - * cpu-m68hc12.c (bfd_m68hc12s_arch): New struct. - (bfd_m68hc12_arch): Link it. - (scan_mach): New function. - -2003-05-13 Andrew Haley - - * elf.c (bfd_elf_hash): Mask lower 32 bits of hash. - -2003-05-13 Alan Modra - H.J. Lu - - * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Move from - elf32-ppc.c. Add ELF_LINK_FORCED_LOCAL check. - * elf32-ppc.c: (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Delete. - (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL for dynreloc check. - (ppc_elf_relocate_section): Likewise. - * elf64-ppc.c (allocate_dynrelocs): Likewise. - (ppc64_elf_relocate_section): Likewise. Use for .got relocs too. - (ppc64_elf_adjust_dynamic_symbol): Don't assume symbols with .plt - relocs need no other types. - * elf32-i386.c (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL for - dynreloc check. - (elf_i386_relocate_section): Likewise. Use for .got relocs too. - (elf_i386_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL for - .got relocs. - -2003-05-13 Kaz Kojima - - * elf32-sh.c (sh_elf_adjust_dynamic_symbol): For weak symbols, - copy ELF_LINK_NON_GOT_REF from weakdef. - (allocate_dynrelocs): For undef weak syms with non-default - visibility, a) don't allocate plt entries, b) don't allocate - .got relocs, c) discard dyn rel space - (sh_elf_relocate_section): d) don't generate .got relocs, e) - don't generate dynamic relocs. - (sh_elf_copy_indirect_symbol): Don't copy ELF_LINK_NON_GOT_REF - for weakdefs when symbol already adjusted. - -2003-05-12 Nick Clifton - - * elf32-xstormy16.c (xstormy16_elf_howto_table): use 'bitfield' - overflow detection for R_XSTORMY16_16 reloc. - -2003-05-12 Paul Clarke - - * elf32-h8300.c: Fix typo in name of R_H8_DIR8 reloc. - -2003-05-11 Jason Eckhardt - - * elf32-i860.c (elf32_i860_relocate_highadj): Properly - adjust upper bits. - (elf32_i860_relocate_splitn): Obtain upper 5 bits from the - proper place. - (elf32_i860_relocate_pc16): Obtain upper 5 bits from the - proper place. - -2003-05-11 Andreas Schwab - - * elf32-m68k.c (elf_m68k_relocate_section): Replace ugly - complicated tests for unresolvable relocs with a simple direct - scheme using "unresolved_reloc" var. Report some detail on - bfd_reloc_outofrange and similar errors. - -2003-05-09 Martin Schwidefsky - - * elf32-s390.c (allocate_dynrelocs, elf_s390_relocate_section): - Fix WILL_CALL_FINISH_DYNAMIC_SYMBOL call. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. - * elf64-s390.c: Likewise. - -2003-05-09 Martin Schwidefsky - - * elf32-s390.c (ELIMINATE_COPY_RELOCS): Define as one. - (elf_s390_adjust_dynamic_symbol): For weak symbols, copy - ELF_LINK_NON_GOT_REF from weakdef. - (elf_s390_copy_indirect_symbol): Test whether the weakdef sym has - already been adjusted before treating it specially. - * el64-s390.c: Likwise. - -2003-05-09 Martin Schwidefsky - - * elf32-s390.c (allocate_dynrelocs): For undef weak syms with - non-default visibility, a) don't make them dynamic, b) discard - space for dynamic relocs. - (elf_s390_relocate_section): Initialize the GOT entries and skip - R_390_{8,16,32}/R_390_PC{16,16DBL,32DBL,32} for weak undefined - symbols with non-default visibility. - * elf64-s390.c: Likewise. - -2003-05-09 Alan Modra - - * cpu-arm.c (arm_check_note): Warning fix. - * elf32-iq2000.c (iq2000_elf_check_relocs): Warning fixes. Arrange - to keep relocs if edited. - (iq2000_elf_print_private_bfd_data): Return TRUE. - * elfxx-ia64.c (elfNN_ia64_relax_section): Use ELFNN_R_SYM, not - ELF64_R_SYM. - (elfNN_ia64_relax_ldxmov): Warning fix. - * xtensa-isa.c (xtensa_add_isa): Warning fix. - * xtensa-modules.c (get_num_opcodes): Warning fix. - -2003-05-09 Andrey Petrov - - * elf.c (elf_fake_sections): Use correct cast for sh_name. - -2003-05-09 Alan Modra - - * elflink.c (_bfd_elf_link_create_dynamic_sections): Move from - elflink.h. Replace LOG_FILE_ALIGN with bed->s->log_file_align. - (_bfd_elf_create_dynamic_sections): Use bed->s->log_file_align. - (bfd_elf_record_link_assignment): Move from elflink.h. - (_bfd_elf_merge_symbol): Likewise. - (_bfd_elf_add_default_symbol): Likewise. - (_bfd_elf_export_symbol): Likewise. - (_bfd_elf_link_find_version_dependencies): Likewise. - (_bfd_elf_link_assign_sym_version): Likewise. - (_bfd_elf_link_read_relocs): Likewise. - (_bfd_elf_link_size_reloc_section): Likewise. - (_bfd_elf_fix_symbol_flags): Likewise. - (_bfd_elf_adjust_dynamic_symbol): Likewise. - (_bfd_elf_link_sec_merge_syms): Likewise. - (elf_link_read_relocs_from_section): Likewise. Use bed->s->sizeof_rel - and bed->s->sizeof_rela. - (_bfd_elf_link_output_relocs): Likewise. - * elf-bfd.h (struct elf_size_info): Rename file_align to - log_file_align. - (struct elf_info_failed): Move from elflink.h. - (struct elf_assign_sym_version_info): Likewise. - (struct elf_find_verdep_info): Likewise. - (_bfd_elf_create_dynamic_sections): Delete duplicate declaration. - (_bfd_elf_merge_symbol, _bfd_elf_add_default_symbol, - _bfd_elf_export_symbol, _bfd_elf_link_find_version_dependencies, - _bfd_elf_link_assign_sym_version, - _bfd_elf_link_create_dynamic_sections, _bfd_elf_link_read_relocs, - _bfd_elf_link_size_reloc_section, _bfd_elf_link_output_relocs, - _bfd_elf_fix_symbol_flags, _bfd_elf_adjust_dynamic_symbol, - _bfd_elf_link_sec_merge_syms): Declare. - (bfd_elf32_link_create_dynamic_sections): Don't declare. - (_bfd_elf32_link_read_relocs): Likewise. - (bfd_elf64_link_create_dynamic_sections): Likewise. - (_bfd_elf64_link_read_relocs): Likewise. - * elflink.h: Move lots o' stuff elsewhere. - * bfd-in.h (bfd_elf32_record_link_assignment): Don't declare. - (bfd_elf64_record_link_assignment): Likewise. - (bfd_elf_record_link_assignment): Declare. - * bfd-in2.h: Regenerate. - * elfcode.h (elf_link_create_dynamic_sections): Don't declare. - (NAME(_bfd_elf,size_info)): Adjust for log_file_align. - * elf.c (_bfd_elf_init_reloc_shdr): Adjust for bed->s->log_file_align. - (assign_file_positions_for_segments): Likewise. - (assign_file_positions_except_relocs): Likewise. - (swap_out_syms, elfcore_write_note): Likewise. - * elf-m10200.c: Adjust for changed function names. - * elf-m10300.c: Likewise. - * elf32-arm.h: Likewise. - * elf32-h8300.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-ip2k.c: Likewise. - * elf32-m32r.c: Likewise. - * elf32-m68hc11.c: Likewise. - * elf32-m68hc1x.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mips.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-v850.c: Likewise. - * elf32-xtensa.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-hppa.c: Likewise. - * elf64-mmix.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-sh64.c: Likewise. - * elfxx-ia64.c: Likewise. - * elfxx-mips.c: Likewise. - (MIPS_ELF_LOG_FILE_ALIGN): Use log_file_align. - * elf64-alpha.c (alpha_elf_size_info): Adjust for log_file_align. - * elf64-hppa.c (hppa64_elf_size_info): Likewise. - * elf64-mips.c (mips_elf64_size_info): Likewise. - * elf64-s390.c (s390_elf64_size_info): Likewise. - * elf64-sparc.c (sparc64_elf_size_info): Likewise. - -2003-05-08 H.J. Lu - - * elflink.h (elf_add_default_symbol): After skipping the - unversioned symbol, go to non-default one. - -2003-05-07 H.J. Lu - - * elfxx-ia64.c (_bfd_elf_link_hash_hide_symbol): Also clear the - want_plt field. - (elfNN_ia64_relocate_section): Don't do dynamic symbol lookup - for symbols with non-default visibility. - -2003-05-07 H.J. Lu - - * elflink.h (elf_link_check_versioned_symbol): Also handle the - case that a DSO references a hidden symbol which may be - satisfied by a versioned symbol in another DSO. - (elf_link_output_extsym): Check versioned definition for hidden - symbol referenced by a DSO. - -2003-05-07 Nick Clifton - - * elf32-xstormy16.c (xstormy16_elf_howto_table): Reset - R_XSTORMY16_16 reloc to ignore overflows. - -2003-05-06 Alexandre Oliva - - * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Improve - error message for mixing different-endian files. Check for ABI - compatibility of input files with the selected emulation. - -2003-05-05 Alan Modra - - * elf32-i386.c (allocate_dynrelocs): For undef weak syms with - non-default visibility, a) don't make them dynamic, b) discard - space for dynamic relocs. - * elf64-x86-64.c (allocate_dynrelocs): Likewise. - - * elf32-ppc.c (allocate_dynrelocs): For undef weak syms with - non-default visibility, a) don't allocate plt entries, b) don't - allocate .got relocs, c) discard dyn rel space, - (ppc_elf_relocate_section): d) don't generate .got relocs, e) - don't generate dynamic relocs. - * elf64-ppc.c (allocate_dynrelocs): As above. - (ppc64_elf_relocate_section): As above. - -2003-05-05 Andreas Jaeger - - * elf64-x86-64.c (allocate_dynrelocs): Don't allocate dynamic - relocation entries for weak undefined symbols with non-default - visibility. - (elf64_x86_64_relocate_section): Initialize the GOT entries and - skip R_386_32/R_386_PC32 for weak undefined symbols with - non-default visibility. - -2003-05-04 H.J. Lu - - * elf32-i386.c (allocate_dynrelocs): Don't allocate dynamic - relocation entries for weak undefined symbols with non-default - visibility. - (elf_i386_relocate_section): Initialize the GOT entries and - skip R_386_32/R_386_PC32 for weak undefined symbols with - non-default visibility. - - * elfxx-ia64.c (allocate_fptr): Don't allocate function - descriptors for weak undefined symbols with non-default - visibility. - (allocate_dynrel_entries): Don't allocate relocation entries - for symbols resolved to 0. - (set_got_entry): Don't install dynamic relocation for weak - undefined symbols with non-default visibility. - (set_pltoff_entry): Likewise. - - * elflink.h (elf_fix_symbol_flags): Hide weak undefined symbols - with non-default visibility. - (elf_link_output_extsym): Don't make weak undefined symbols - with non-default visibility dynamic. - -2003-05-04 H.J. Lu - - * elflink.h (elf_merge_symbol): Correctly handle weak definiton. - -2003-05-04 H.J. Lu - - * elflink.h (elf_merge_symbol): Don't record a hidden/internal - symbol dynamic. Check indirection when removing the old - definition for symbols with non-default visibility. - (elf_add_default_symbol): Skip when told by elf_merge_symbol. - -2003-05-02 Nick Clifton - - * elf32-xstormy16.c (xstormy16_elf_howto_table): Make the - R_XSTORMY16_8 and R_XSTORMY16_16 relocs detect and complain about - unsigned overflow. - -2003-05-02 Andreas Jaeger - - * elf64-x86-64.c (elf_x86_64_copy_indirect_symbol): Don't copy - ELF_LINK_NON_GOT_REF for weakdefs when symbol already adjusted. - (ELIMINATE_COPY_RELOCS): Define as one. Use throughout. - (elf_x86_64_adjust_dynamic_symbol): For weak symbols, copy - ELF_LINK_NON_GOT_REF from weakdef. - -2003-05-02 Charles Lepple - Nick Clifton - - * acinclude.m4: Fix name of --enable-install-libbfd switch. - * aclocal.m4: Regenerate. - * configure: Regenerate. - * Makefile.in: Regenerate. - -2003-05-01 Alan Modra - - * elf32-ppc.c (ppc_elf_copy_indirect_symbol): Test whether the - weakdef sym has already been adjusted before treating it specially. - * elf32-i386.c (elf_i386_copy_indirect_symbol): Don't copy - ELF_LINK_NON_GOT_REF for weakdefs when symbol already adjusted. - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. - (ppc64_elf_check_relocs): Set ELF_LINK_NON_GOT_REF. - -2003-04-28 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_relax_section): Relax ldxmov during - the relax finalize pass. - - * section.c (struct sec): Add need_finalize_relax and remove - flag11. - (STD_SECTION): Update struct sec initializer. - * bfd-in2.h: Regenerated. - -2003-04-28 H.J. Lu - - * elflink.h (elf_merge_symbol): Call elf_backend_copy_indirect_symbol - to copy any information related to dynamic linking when we flip - the indirection. - -2003-04-27 H.J. Lu - - * elf-bfd.h (ELF_LINK_DYNAMIC_DEF): New. - (ELF_LINK_DYNAMIC_WEAK): New. - - * elflink.h (elf_merge_symbol): Add one argument to indicate if - a symbol should be skipped. Ignore definitions in dynamic - objects for symbols with non-default visibility. - (elf_add_default_symbol): Adjusted. - (elf_link_add_object_symbols): Check if a symbol should be - skipped. Don't merge the visibility field with the one from - a dynamic object. - (elf_link_check_versioned_symbol): Use undef_bfd. - (elf_link_output_extsym): Warn if a forced local symbol is - referenced from dynamic objects. Make non-weak undefined symbol - with non-default visibility a fatal error. - -2003-04-27 Daniel Jacobowitz - - * configure.in: Bump version on HEAD to 2.14.90. - * configure: Regenerated. - -2003-04-26 Stephane Carrez - - PR savannah/3331: - * elf32-m68hc11.c (m68hc11_elf_relax_section): Clear prev_insn_group - when we couldn't relax something. - -2003-04-25 Alan Modra - - * elflink.h (elf_merge_symbol): When we find a regular definition - for an indirect symbol, flip the indirection so that the old - direct symbol now points to the new definition. - -2003-04-24 Roland McGrath - - * elf.c (bfd_section_from_phdr): Map PT_GNU_EH_FRAME to "eh_frame_hdr". - -2003-04-24 Alan Modra - - * elf32-ppc.c: Formatting and comment fixes. - (ELIMINATE_COPY_RELOCS): Move before ppc_elf_copy_indirect_symbol. - (ppc_elf_copy_indirect_symbol): Copy flags here for weakdefs. - -2003-04-24 Dhananjay Deshpande - - * archures.c (bfd_mach_h8300hn, bfd_mach_h8300sn): Added. - * bfd-in2.h: Rebuilt. - * coff-h8300.c (BADMAG): Add check for H8300HNBADMAG & H8300SNBADMAG. - * coffcode.h (coff_set_arch_mach_hook): Add case for H8300HNMAGIC - & H8300SNMAGIC. - (coff_set_flags): Add case for bfd_mach_h8300hn & bfd_mach_h8300sn. - * cpu-h8300.c (h8300_scan): Handle h8300hn, h8300sn. - (h8300sn_info_struct, h8300hn_info_struct): New. - * elf32-h8300.c (elf32_h8_mach): Handle case for h8300hn & h8300sn - (elf32_h8_final_write_processing): Likewise. - -2003-04-23 Kaz Kojima - - * elf32-sh.c (tpoff): New. - (struct elf_sh_dyn_relocs): Remove tls_tpoff32. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. - (allocate_dynrelocs): Don't make unnecessary dynamic TLS - relocations. Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses. - (sh_elf_relocate_section): Likewise. Remove unnecessary tests. - (dtpoff_base): Fix wrong indentation. - (sh_elf_check_relocs): Don't set DF_STATIC_TLS flag with non-TLS - relocations. Don't set tls_tpoff32 flag. Don't make unnecessary - R_SH_TLS_TPOFF32 relocations. - -2003-04-23 J"orn Rennecke - - * archures.c (enum bfd_architecture): Amend comment to refer to SuperH. - * cpu-sh.c: Likewise. - * elf32-sh.c: Likewise. - * reloc.c (bfd_reloc_code_real): Likewise. - * elf32-sh64-com.c: Change comment to refer to SuperH. - * elf32-sh64.c: Likewise. - * elf64-sh64.c: Likewise. - * bfd-in2.h (enum bfd_architecture): Regenerate. - -2003-04-23 Alan Modra - - From Julien LEMOINE - * elf32-i386.c (elf_i386_info_to_howto): Delete. - (elf_info_to_howto): Define as elf_i386_info_to_howto_rel. - -2003-04-22 Kazuhiro Inaoka - - * archures.c: Replace references to Mitsubishi M32R with references - to Renesas M32R. - * relocs.c: Likewise. - * bfd-in2.h: Regenerate. - -2003-04-21 Richard Henderson - - * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Return false for an - executable when a symbol is defined both regular and dynamic. - -2003-04-21 Stephane Carrez - - * Makefile.am (BFD32_BACKENDS): Add elf32-m68hc1x.lo. - (elf32-m68hc1x.lo): Update dependencies - * configure.in: Add elf32-m68hc1x.lo. - * configure: Rebuild. - * Makefile.in: Rebuild. - -2003-04-21 Stephane Carrez - - * elf32-m68hc1x.c: New file (from elf32-m68hc11.c and elf32-m68hc12.c) - (m68hc11_elf_hash_table_create): New function. - (elf32_m68hc11_link_hash_table_free): New function. - (stub_hash_newfunc): New function. - (m68hc11_add_stub): New function. - (elf32_m68hc11_add_symbol_hook): New function. - (elf32_m68hc11_setup_section_lists): New function. - (elf32_m68hc11_next_input_section): New function. - (elf32_m68hc11_size_stubs): New function. - (elf32_m68hc11_build_stubs): New function. - (m68hc11_get_relocation_value): New function. - (elf32_m68hc11_relocate_section): Call the above to redirect - some relocations to the trampoline code. - (m68hc11_elf_export_one_stub): New function. - (m68hc11_elf_set_symbol): New function. - (elf32_m68hc11_build_stubs): Call it via bfd_hash_traverse. - (m68hc11_elf_get_bank_parameters): Get parameters only when the info - is not yet initialized. - - * elf32-m68hc1x.h: New file (from elf32-m68hc11.c and elf32-m68hc12.c) - (elf32_m68hc11_stub_hash_entry): New struct. - (m68hc11_page_info): Add trampoline handler address. - (m68hc11_elf_link_hash_table): Add stubs generation members. - (elf32_m68hc11_add_symbol_hook): Declare. - (elf32_m68hc11_setup_section_lists): Declare. - (elf32_m68hc11_size_stubs): Declare. - (elf32_m68hc11_build_stubs): Declare. - - * elf32-m68hc11.c (m68hc11_elf_ignore_reloc): Move to elf32-m68hc1x.c. - (elf32_m68hc11_gc_mark_hook, elf32_m68hc11_gc_sweep_hook): Likewise. - (elf32_m68hc11_check_relocs, elf32_m68hc11_relocate_section): Ditto. - (_bfd_m68hc11_elf_set_private_flags): Ditto. - (_bfd_m68hc11_elf_merge_private_bfd_data): Ditto. - (_bfd_m68hc11_elf_print_private_bfd_data): Ditto. - (bfd_elf32_bfd_link_hash_table_create): Define. - (elf_backend_add_symbol_hook): Define. - (m68hc11_elf_bfd_link_hash_table_create): New function. - (m68hc11_elf_build_one_stub): New function. - (m68hc11_elf_size_one_stub): New function. - (m68hc11_elf_bfd_link_hash_table_create): Install the above. - (bfd_elf32_bfd_link_hash_table_create): Define. - - * elf32-m68hc12.c (m68hc11_elf_ignore_reloc): Remove. - (m68hc12_addr_is_banked): Remove, use m68hc11_addr_is_banked. - (m68hc12_phys_addr): Ditto. - (m68hc12_phys_page): Ditto. - (m68hc12_elf_special_reloc): Move to elf32-m68hc1x.c. - (elf32_m68hc11_gc_mark_hook): Likewise. - (elf32_m68hc11_gc_sweep_hook): Likewise. - (elf32_m68hc11_check_relocs): Likewise. - (elf32_m68hc11_relocate_section): Likewise. - (_bfd_m68hc12_elf_set_private_flags): Likewise. - (_bfd_m68hc12_elf_merge_private_bfd_data): Likewise. - (_bfd_m68hc12_elf_print_private_bfd_data): Likewise. - (m68hc12_elf_build_one_stub): New function. - (m68hc12_elf_size_one_stub): New function. - (m68hc12_elf_bfd_link_hash_table_create): New function, use the above. - (elf_backend_add_symbol_hook): Define. - (elf_m68hc11_howto_table): Use TRUE for pcrel relocs; fix masks. - -2003-04-18 Nick Clifton - - * format.c (bfd_check_format_matches): Only check associated - vector if the matching_vector has been created. - -2003-04-15 Alexandre Oliva - - * dwarf2.c (_bfd_dwarf2_find_nearest_line): Fix typo in - 2003-04-09's change. - -2003-04-15 Brian Ford - - * peicode.h (coff_swap_scnhdr_in): If a section holds - uninitialized data and is from an object file or from an - executable image that has not initialized the s_size field, or if - the physical size is padded, use the virtual size (stored in - s_paddr) instead. - -2003-04-15 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Properly report - filename for alignment reduction. - -2003-04-15 Rohit Kumar Srivastava - - * archures.c: Replace occurrances of 'Hitachi' with 'Renesas'. - * reloc.c: Likewise. - * coff-h8300.c: Likewise. - * coff-h8500.c: Likewise. - * coff-sh.c: Likewise. - * cpu-h8300.c: Likewise. - * cpu-sh.c: Likewise. - * elf32-h8300.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sh64-com.c: Likewise. - * elf32-sh64.c: Likewise. - * elf64-sh64.c: Likewise. - * bfd-in2.h: Regenerate. - -2003-04-14 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Maintain maximum - alignment for common symbols. Warn reducing alignment for - common symbols. Report old filename when symbol size changes. - -2003-04-12 Alexandre Oliva - - * elfxx-mips.c (mips_elf_calculate_relocation): Adjust two other - occurrences of the same test changed in the previous patch. - Optimize. - -2003-04-11 Alexandre Oliva - - * elfxx-mips.c (mips_elf_get_global_gotsym_index): New. - (mips_elf_calculate_relocation): Decay GOT_PAGE/GOT_OFST to - GOT_DISP/addend only if the symbol got a global GOT entry. - -2003-04-10 Alexandre Oliva - - * elfxx-mips.c (mips_elf_calculate_relocation): Decay - GOT_PAGE/GOT_OFST referencing overridable symbol to - GOT_DISP/addend. - (_bfd_mips_elf_check_relocs): Handle GOT_PAGE referencing - global symbol as GOT_DISP. - -2003-04-10 Bob Wilson - - * elf32-xtensa.c (elf_xtensa_relocate_section): Don't continue to the - next relocation on an undefined symbol. - -2003-04-09 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section) : - Ignore relocations against r_symndx == 0. - -2003-04-09 H.J. Lu - - * elf64-alpha.c (elf64_alpha_relocate_section): Don't return - FALSE for undefined symbols. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - -2003-04-09 Alexandre Oliva - - * dwarf2.c (_bfd_dwarf2_find_nearest_line): Try DWARF3-standard - and IRIX-specific shift-to-64-bit 4-byte lengths before following - addr_size. - -2003-04-08 Alexandre Oliva - - * elf32-mips.c (bfd_elf32_bfd_reloc_type_lookup): Detect (ctor) - pointer size from ABI, not arch_bits_per_address. - -2003-04-07 Kevin Buettner - - * elfn32-mips.c (elf32_mips_grok_prstatus): Adjust core file related - constants for n32 ABI. - -2003-04-06 Andrew Cagney - - * simple.c (bfd_simple_get_relocated_section_contents): Disable - free that leads to GDB vs BFD memory corruption. - -2003-04-04 Stephane Carrez - - * elf32-m68hc11.c (m68hc11_elf_relax_delete_bytes): Also adjust - symbols that mark the end of the section. - (m68hc11_elf_relax_section): Use R_M68HC11_PCREL_8 relocs when - converting to a relative branch so that the offset is computed after - the relaxation; also relocate a jsr into a bsr if possible but don't - relax them if they are to a far symbol as we need to call the - trampoline code. - (elf_m68hc11_howto_table): Set pcrel_offset to true. - -2003-04-04 Svein E. Seldal - - * archures.c: Namespace cleanup. Rename bfd_mach_c3x to - bfd_mach_tic3x and bfd_mach_c4x to bfd_mach_tic4x - * bfd-in2.h: Regenerate - * coff-tic4x.c: Namespace cleanup. Replace s/c4x/tic4x/ - * cpu-tic4x.c: Ditto - -2003-04-03 Nick Clifton - - * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Compute ps and ss - differently for object files and executables. - * peicode.h (coff_swap_scnhdr_in): Only set the s_size field - for object files or for executables who have not already - initialised the field. - * libpei.h (bfd_pe_executable_p): New macro. Return true if - the PE format bfd is an executable. - -2003-04-03 Alan Modra - - * elf32-ppc.c (ppc_elf_check_relocs): Don't use SYMBOL_REFERENCES_LOCAL - here as it's too early to reliably determine locality. - (ppc_elf_gc_sweep_hook): Likewise. - (SYMBOL_REFERENCES_LOCAL): Expand comment. - -2003-04-02 Bob Wilson - - * xtensa-modules.c: Remove comment indicating that this is a - generated file. - -2003-04-02 Alan Modra - - * elfxx-mips.c (_bfd_mips_elf_hide_symbol): Test for NULL dynobj. - -2003-04-01 Bob Wilson - - * Makefile.am (ALL_MACHINES): Add cpu-xtensa.lo. - (ALL_MACHINES_CFILES): Add cpu-xtensa.c. - (BFD32_BACKENDS): Add elf32-xtensa.lo, xtensa-isa.lo, and - xtensa-modules.lo. - (BFD32_BACKENDS_CFILES): Add elf32-xtensa.c, xtensa-isa.c, and - xtensa-modules.c. - (cpu-xtensa.lo): New target. - (elf32-xtensa.lo): Likewise. - (xtensa-isa.lo): Likewise. - (xtensa-modules.lo): Likewise. - * Makefile.in: Regenerate. - * archures.c (bfd_architecture): Add bfd_{arch,mach}_xtensa. - (bfd_archures_list): Add bfd_xtensa_arch. - * config.bfd: Handle xtensa-*-*. - * configure.in: Handle bfd_elf32_xtensa_{le,be}_vec. - * configure: Regenerate. - * reloc.c: Add BFD_RELOC_XTENSA_{RTLD,GLOB_DAT,JMP_SLOT,RELATIVE, - PLT,OP0,OP1,OP2,ASM_EXPAND,ASM_SIMPLIFY}. - * targets.c (bfd_elf32_xtensa_be_vec): Declare. - (bfd_elf32_xtensa_le_vec): Likewise. - (bfd_target_vector): Add bfd_elf32_xtensa_{be,le}_vec. - * cpu-xtensa.c: New file. - * elf32-xtensa.c: Likewise. - * xtensa-isa.c: Likewise. - * xtensa-modules.c: Likewise. - * libbfd.h: Regenerate. - * bfd-in2.h: Likewise. - -2003-04-01 Nick Clifton - - * archures.c (bfd_mach_arm_unknown): Define. - * bfd-in.h (bfd_arm_merge_machines, bfd_arm+update_notes, - bfd_arm_get_mach_from_notes): Prototype. - * bfd-in2.h: Regenerate. - * coff-arm.c (coff_arm_merge_private_bfd_data): Call - bfd_arm_merge_machines. - (coff_arm_final_link_postscript): Call bfd_arm_update_notes. - * coffcode.h (coff_set_arch_mach_hook): Call - bfd_arm_get_mach_from_notes. - * coffgen.c (coff_real_object_p): Revert previous delta. - * cpu_arm.c (arm_check_note): New function. Examine a note in a - .note section. - (bfd_arm_merge_machines): New function: Handle the merging of ARM - binaries compiled for different architectures.. - (bfd_arm_update_notes): New function: Update an ARM note section. - (bfd_arm_get_mach_from_notes): New function: Extract a bfd machine - number from an ARM note section. - * elf32-arm.h (elf32_arm_object_p): Use - bfd_arm_get_mach_from_notes. - (elf32_arm_merge_private_bfd_data): Use bfd_arm_merge_machines. - (elf32_arm_final_write_processing): Use bfd_arm_update_notes. - -2003-04-01 Ben Elliston - - * dwarf2.c (read_attribute_value): Correct typo in comment. - -2003-04-01 Nick Clifton - - * dwarf2.c (concat_filename): Use bfd_malloc() and strdup() - instead of concat(). - (decode_line_info): Only free filename if it is not NULL. - (add_line_info): Make a copy of the filename when storing it into - the info structure. - -2003-03-31 Andreas Schwab - Daniel Jacobowitz - - * simple.c (bfd_simple_get_relocated_section_contents): Add - parameter symbol_table. Optionally use it instead of the symbol - table from the bfd. Save and restore output offsets and output - sections around bfd_get_relocated_section_contents. Fix a memory - leak. - (simple_save_output_info, simple_restore_output_info): New - functions. - * bfd-in2.h: Regenerate. - * dwarf2.c (read_abbrevs): Use - bfd_simple_get_relocated_section_contents instead of - bfd_get_section_contents. - (decode_line_info): Likewise. - (_bfd_dwarf2_find_nearest_line): Likewise. Don't call - find_rela_addend. - (find_rela_addend): Remove. - * elfxx-ia64.c (elfNN_ia64_reloc): Weaken sanity check for - debugging sections. - (elfNN_ia64_hash_table_create): Create the hash table with malloc, - not bfd_zalloc. - -2003-03-31 David Heine - - * aoutx.h (aout_link_hash_table_create): Use bfd_malloc instead of - bfd_alloc. - * dwarf2.c (concat_filename): Always allocate space for the - returned filename. - (decode_line_info): Free the allocated filename returned by - concat_filename. - * elf-eh-frame.c (bfd_elf_write_section_eh_frame): Fix memory leaks. - * elf.c (copy_private_bfd_data): Likewise. - (_bfd_elf_slurp_version_tables): Fix bug freeing contents pointer. - * elflink.h (elf_link_sort_relocs): Fix memory leak. - * format.c (bfd_check_format_matches): Likewise. - * linker.c (bfd_generic_final_link): Likewise. - * opncls.c (find_separate_debug_info): Likewise. - * simple.c (bfd_simple_get_relocated_section_contents): Likewise. - -2003-03-28 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Correctly combine - visibilities. - -2003-03-27 Jakub Jelinek - - * elfxx-ia64.c (elfNN_ia64_relax_section): Reset self_dtpmod_offset - to -1 before recomputing got offsets. - -2003-03-26 Andreas Schwab - - * elf32-m68k.c (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. - (elf_m68k_relocate_section): Use it to correctly handle symbols - forced to be local. - (elf_m68k_finish_dynamic_symbol): Emit RELATIVE reloc for got - entries for symbols that are forced to be local. - -2003-03-25 Alexandre Oliva - - * elfxx-mips.c (_bfd_mips_relax_section): New function. - * elfxx-mips.h (_bfd_mips_relax_section): Declare. - * elfn32-mips.c, elf64-mips.c: Use it. - -2003-03-25 Stan Cox - Nick Clifton - - Contribute support for Intel's iWMMXt chip - an ARM variant: - - * archures.c: Add bfd_mach_arm_iWMMXt. - * reloc.c: Add BFD_RELOC_ARM_CP_OFF_IMM_S2. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * coff-arm.c (coff_arm_merge_private_bfd_data): Allow iWMMXt - object files to be linked with XScale ones. - (coff_arm_final_link_postscript): Update note section. - * coffcode.h (coff_set_arch_mach_hook): Handle note section. - * coffgen.c (coff_real_object_p): Call bfd_coff_set_arch_mach_hook - after identifying a coff binary. - * cpu-arm.c (processors): Add iWMMXt. - (arch_inf): Likewise. - * elf32-arm.h (arm_object_p): Handle note section. - (elf32_arm_merge_private_bfd_data): Allow iWMMXt object files to - be linked with XScale ones. - (elf32_arm_section_flags): New function: Set flags on note section. - (elf32_arm_final_write_processing): Handle note section. - -2003-03-21 DJ Delorie - - * elf32-xstormy16.c (elf32_xstormy16_relocate_section): Call - _bfd_elf_rela_local_sym. - -2003-03-20 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_relax_section): Don't try relax for - non-ELF outputs. - -2003-03-20 Nick Clifton - - * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Initialise $idata2 and - $idata5 in case bfd_coff_final_link is not called. - -2003-03-19 Jakub Jelinek - - * elf64-sparc.c (struct sparc64_elf_section_data): Add reloc_count - field. - (canon_reloc_count): Define. - (sparc64_elf_slurp_one_reloc_table, sparc64_elf_slurp_reloc_table, - sparc64_elf_canonicalize_dynamic_reloc): Use it instead of - reloc_count. - (sparc64_elf_canonicalize_reloc): New routine. - (bfd_elf64_canonicalize_reloc): Define. - -2003-03-18 Jakub Jelinek - - * elfxx-ia64.c (elfNN_ia64_relax_section): Handle relaxation - againt mergeable sections. Take r_addend into account when caching - trampolines. - -2003-03-18 Richard Henderson - - * elfxx-ia64.c (get_dyn_sym_info): Return NULL gracefully for - local symbols that have no dyninfo. - -2003-03-14 Gene Smith - - * ieee.c (ieee_write_expression): Handle the case where symbol is - NULL. - General formatting improvements. - -2003-03-13 Nick Clifton - - * configure.in (LINGUAS): Add zh_CN. - * configure: Regenerate. - * po/zh_CN.po: New file. - -2003-03-13 Elias Athanasopoulos - - * aout-cris.c (BYTES_IN_WORD): Don't define. - aout-encap.c: Likewise. - aout-ns32k.c: Likewise. - aout-tic30.c: Likewise. - hp300bsd.c: Likewise. - i386aout.c: Likewise. - i386dynix.c: Likewise. - i386linux.c: Likewise. - i386lynx.c: Likewise. - i386mach3.c: Likewise. - m68k4knetbsd.c: Likewise. - m68klinux.c: Likewise. - m68klynx.c: Likewise. - m68knetbsd.c: Likewise. - m88kmach3.c: Likewise. - mipsbsd.c: Likewise. - newsos3.c: Likewise. - sparclinux.c: Likewise. - sparclynx.c: Likewise. - sparcnetbsd.c: Likewise. - vaxbsd.c: Likewise. Fix comment formatting. - -2003-03-12 Alexandre Oliva - - * Reverted 2003-03-02's patch. - - * elfxx-target.h (bfd_elfNN_canonicalize_reloc): Make it - overridable. - * elf64-mips.c (mips_elf64_canonicalize_reloc, - mips_elf64_get_dynamic_reloc_upper_bound, - mips_elf64_canonicalize_dynamic_reloc): New, adapted from elf.c. - (bfd_elf64_get_canonicalize_reloc, - bfd_elf64_get_dynamic_reloc_upper_bound, - bfd_elf64_canonicalize_dynamic_reloc): Define. - (mips_elf64_slurp_reloc_table): Support dynamic. - (mips_elf64_slurp_one_reloc_table): Adjust. - -2003-03-12 Nick Clifton - - * xsym.c (bfd_sym_fetch_type_information_table_entry): Change - 'index' to 'offset' in test for zero value. - -2003-03-11 Alexandre Oliva - - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Do not create - dynamic relocations pointing to local or section symbols, use the - NULL symbol instead. Document the choice to not emit an - additional R_MIPS_64 relocation. - -2003-03-11 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Subtract tls seg vma from - zero index dynamic tls relocs generated for the GOT. Tidy code. - Set "relocation" to 1 on DTPMOD32 relocs. Optimize HA adjustment. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - -2003-03-07 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Don't look for a nop after - a tls_get_addr call. - - * elf32-ppc.c (ELIMINATE_COPY_RELOCS): Define as one. - (ppc_elf_adjust_dynamic_symbol): For weak symbols, copy - ELF_LINK_NON_GOT_REF from weakdef. - * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define as one. - (ppc64_elf_adjust_dynamic_symbol): For weak symbols, copy - ELF_LINK_NON_GOT_REF from weakdef. - * elf32-i386.c (ELIMINATE_COPY_RELOCS): Define as one. Use throughout. - (elf_i386_adjust_dynamic_symbol): For weak symbols, copy - ELF_LINK_NON_GOT_REF from weakdef. - -2003-03-06 Jakub Jelinek - Andrew Haley - - * elflink.h (elf_bfd_discard_info): Don't process eh frames if - output is relocateable. - -2003-03-06 Steven Konopa - - * som.c (som_fixup_formats): Correct formats for R_AUX_UNWIND and - R_COMMENT. - -2003-03-06 Alan Modra - - * elf32-ppc.c (ppc_elf_create_linker_section): Don't capitalize - error messages. - (ELIMINATE_COPY_RELOCS): Define to zero. - (ppc_elf_relocate_section): Don't deref htab->tls_sec when calculating - TLSLD relocs. Report reloc types on a number of errors. Optimize - LOCAL24PC check for non-local syms. Don't capitalize error messages. - * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define to zero. - (ppc64_elf_relocate_section): Don't deref htab->tls_sec when - calculating TLSLD relocs. Report reloc types on a number of errors. - Don't capitalize error messages. - -2003-03-03 H.J. Lu - - * elfxx-ia64.c (USE_BRL): Removed. - (oor_ip): Removed. - -2003-03-03 J"orn Rennecke - - * elf32-sh.c (sh_elf_howto_tab): Make R_SH_IND12W into an ordinary - relocation (no special function), and make it non-partial_inplace. - (sh_elf_relax_section): When creating a bsr, use a consistent value - no matter if the symbol is extern or not; set addend to -4. - Don't swap load / non-load instructions for SH4. - (sh_elf_relax_delete_bytes): In R_SH_IND12W case, check the offset - rather than if the symbol is external to determine if adjusting the - offset makes sense. Adjust the addend too if appropriate. - (sh_elf_relocate_section): In R_SH_IND12W, don't fiddle with the - relocation. - -2003-03-03 Nick Clifton - - * po/da.po: Installed latest translation. - -2003-03-02 Thiemo Seufer - - * elf32-mips.c (elf_mips_howto_table_rel): Change definition of - R_MIPS_PC16 to rightshift 2. - (elf_reloc_map mips_reloc_map): Map to rightshifted BFD reloc. - (bfd_elf32_bfd_reloc_type_lookup): Support - BFD_RELOC_MIPSEMB_16_PCREL_S2. - * elf64-mips.c (mips_elf64_howto_table_rel): Change definition of - R_MIPS_PC16 to rightshift 2. - (mips_elf64_howto_table_rela): Likewise. - (mips_reloc_map): Map to rightshifted BFD reloc. - * elfn32-mips.c: The same as in elf64-mips.c. - * elfxx-mips.c (mips_elf_got_for_ibfd): Typo in comment. - (mips_elf_calculate_relocation): Handle rightshifted addends for - R_MIPS_PC16. - * reloc.c (BFD_RELOC_MIPSEMB_16_PCREL_S2): New BFD relocation for - MIPS Embedded PIC. Remove superfluous empty COMMENT. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - -2003-02-28 Richard Henderson - - * elfxx-ia64.c (elfNN_ia64_relax_section): Correct bounds - for ltoff22x relaxation. - -2003-03-01 Alan Modra - - * bfd-in.h (_bfd): Don't define. - * bfd.c: Rename occurrences of "struct _bfd" to "struct bfd". - * syms.c: Likewise. - * bfd-in2.h: Regenerate. - -2003-02-27 Richard Henderson - - * elfxx-ia64.c (struct elfNN_ia64_dyn_sym_info): Add want_gotx; - (elfNN_ia64_check_relocs): Set it. - (allocate_global_data_got): Check it. - (allocate_local_got): Likewise. - (allocate_dynrel_entries): Likewise. - (elfNN_ia64_relax_ldxmov): New. - (elfNN_ia64_relax_section): Handle LTOFF22X, LDXMOV. - (elfNN_ia64_choose_gp): Split out from ... - (elfNN_ia64_final_link): ... here. - -2003-02-27 Andrew Cagney - - * bfd.c (struct bfd): Rename "struct _bfd". - * bfd-in.h: Update copyright. - (struct bfd): Rename "struct _bfd". - (_bfd): Define for backward compatibility. - * bfd-in2.h: Regenerate. - -2003-02-25 Alan Modra - - * elflink.h (elf_bfd_final_link): Apportion reloc counts to rel_hdr - and rel_hdr2 when initially counting input relocs rather than after - creating output reloc sections. - (elf_link_read_relocs_from_section): Don't abort with wrong reloc - sizes. - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2003-02-24 Kris Warkentin - - * elf.c (elfcore_read_notes): Add check for QNX style core file. - (elfcore_grog_nto_note): New function. - (elfcore_grog_nto_gregs): New function. - (elfcore_grog_nto_status): New function. - -2003-02-24 Alan Modra - - * elflink.c (_bfd_elf_create_got_section): Check existing .got - section flags before concluding that we've already been called. - Don't use register keyword. - (_bfd_elf_create_dynamic_sections): Don't use register keyword. - (_bfd_elf_create_linker_section): Formatting. - -2003-02-20 jmc - - * coff-h8300.c: Fix typo: intial -> initial. - * coff-ppc.c: Likewise. - -2003-02-20 Alan Modra - - * elf32-ppc.c: Formatting. - (allocate_dynrelocs): LD and GD relocs against the same sym need - separate GOT entries. - (ppc_elf_relocate_section): Correct GOT handling for multiple GOT - entries per symbol. - -2003-02-19 Alan Modra - - * elf32-hppa.c (elf32_hppa_gc_sweep_hook): Simplify dynamic reloc - removal. Localize vars. Remove unnecessary dynobj test. - * elf32-i386 (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead - of INFO. - (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses, - and optimize. - (elf_i386_relocate_section): Likewise. - (elf_i386_gc_sweep_hook): Simplify dyn reloc removal. Localize vars. - * elf32-s390.c (elf_s390_gc_sweep_hook): Likewise. - * elf32-sh.c (sh_elf_gc_sweep_hook): Likewise. - * elf64-s390.c (elf_s390_gc_sweep_hook): Likewise. - * elf64-x86-64.c (elf64_x86_64_gc_sweep_hook): Likewise. - * elf32-sparc.c (elf32_sparc_gc_sweep_hook): Likewise. Remove - local_dynrel for section too. Don't touch HIPLT22, LOPLT10, PCPLT32 - or PCPLT10 relocs. Don't subtract twice on PLT32 relocs. - Formatting. - - * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define. - (ppc64_elf_check_relocs): Use it. Correct comment. Move SEC_ALLOC - test. - (ppc64_elf_adjust_dynamic_symbol): Use ELIMINATE_COPY_RELOCS. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. - (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses, - and optimize. Use ELIMINATE_COPY_RELOCS. - (ppc64_elf_relocate_section): Likewise. - - * elf32-ppc.c (struct ppc_elf_dyn_relocs): Add pc_count field. - (ppc_elf_copy_indirect_symbol): Copy pc_count field. - (ELIMINATE_COPY_RELOCS): Define. - (ppc_elf_adjust_dynamic_symbol): Convert copy relocs to dynamic. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. - (MUST_BE_DYN_RELOC): Define. - (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses, - and optimize. Trim dyn_relocs. - (ppc_elf_check_relocs): Don't generate dyn_relocs when we know they'll - not be used. Do generate dyn_relocs for copy reloc avoidance. Keep - track of pc_rel dyn relocs. - (ppc_elf_relocate_section): Remove "will_become_local". Adjust - WILL_CALL_FINISH_DYNAMIC_SYMBOL use. Trim dyn relocs as per - allocate_dynrelocs. Don't recalculate "sec". - -2003-02-18 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Remove unnecessary test. - * elf64-ppc.c (ppc64_elf_tls_optimize): Decrement tlsld_got.refcount - on invalid LD relocs. - (allocate_dynrelocs): Invalid LD relocs don't use tlsld_got entry. - (ppc64_elf_relocate_section): Unify new handling of LD relocs and - tlsld_got entry. Use IS_PPC64_TLS_RELOC. - - * elf32-ppc.h: New file. - * elf32-ppc.c: Include elf32-ppc.h. - (NOP, CROR_151515, CROR_313131, TP_OFFSET, DTP_OFFSET): Define. - (struct ppc_elf_link_hash_entry): Rename "root" to "elf". Adjust uses. - Add "tls_mask" field. - (TLS_GD, TLS_LD, TLS_TPREL, TLS_DTPREL, TLS_TLS, TLS_TPRELGD): Define. - (struct ppc_elf_link_hash_table): Rename "root" to "elf". Adjust uses. - Add got, relgot, plt, relplt, dynbss, relbss, dynsbss, relsbss, - sdata, sdata2, tls_sec, tls_get_addr, tlsld_got fields. - Make use of htab shortcuts throughout file. - (ppc_elf_link_hash_newfunc): Init tls_mask field. - (ppc_elf_link_hash_table_create): Init new fields. - (ppc_elf_copy_indirect_symbol): Copy tls_mask. - (ppc_elf_howto_raw): Add tls relocs. - (ppc_elf_reloc_type_lookup): Handle them. - (ppc_elf_unhandled_reloc): New function. - (ppc_elf_create_got): Stash got section pointer in hash table, - return status. Make .rela.got too. - (ppc_elf_create_dynamic_sections): Stash section pointers in htab. - (ppc_elf_adjust_dynamic_symbol): Only set up copy relocs when - NON_GOT_REF set. Don't allocate space in .plt here.. - (allocate_dynrelocs): ..do so here instead, properly ref-counting and - not allocating plt entries unnecessarily. Allocate got entries here. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. - (ppc_elf_size_dynamic_sections): Allocate local got entries. Pass - "info" during allocate_dynrelocs hash traversal. Use htab section - shortcuts rather than searching for named sections. Get rid of - "plt" and "strip" booleans. - (update_local_sym_info, bad_shared_reloc): New functions. - (ppc_elf_check_relocs): Handle TLS relocs. Move .rela.got creation to - ppc_elf_create_got. Don't mark got or plt reloc syms dynamic, do so - in allocate_dynreloc. Use update_local_sym_info and bad_shared_reloc. - Disallow R_PPC_EMB_RELSDA, R_PPC_EMB_NADDR32, R_PPC_EMB_NADDR16, - R_PPC_EMB_NADDR16_LO, R_PPC_EMB_NADDR16_HI and R_PPC_EMB_NADDR16_HA - in shared libs. R_PPC_PLTREL32 is a plt reloc too. Refcount all - relocs that might use a plt entry. Set NON_GOT_REF too. - Enumerate all do-nothing relocs. - (ppc_elf_gc_sweep_hook): Simplify removal of dynrelocs. Handle - tls relocs and all plt relocs. - (ppc_elf_tls_setup, ppc_elf_tls_optimize): New functions. - (ppc_elf_finish_dynamic_symbol): Don't build got entries here. - (ppc_elf_finish_dynamic_sections): Rewrite tag code using htab - shortcuts. - (ppc_elf_relocate_section): Tidy. Handle TLS relocs. Use - bfd_elf_local_sym_name. Simplify unresolved reloc code. Build got - entries and got relocs here. Warn on non-zero got reloc addend. - Split out branch taken/not taken reloc code into a separate switch - and correct offset calculation. Allow BRTAKEN/BRNTAKEN dynamic relocs. - Split out HA reloc adjustments to separate switch statement. Don't - warn on reloc overflow if we've already warned about undefined. - Don't rebuild sym name when reporting errors. Report all possible - errors from _bfd_final_link_relocate. - (bfd_elf32_bfd_final_link): Don't define. - -2003-02-18 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Don't init "r". Don't - rebuild sym name when reporting errors. - -2003-02-17 Nick Clifton - - * elflink.h (elf_link_output_extsym): Only check - allow_shlib_undefined for shared libraries. - * elf32-i386.c (elf_i386_relocate_section): Remove bogus check - of allow_shlib_undefined. - * elf32-cris.c (cris_elf_relocate_section): Likewise. - * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-sh.c (sh_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf32-vax.c (elf_vax_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf64-hppa.c (elf64_hppa_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - * elfxx-mips.c (_bfd_mips_elf_relocate_section): Likewise. - -2003-02-17 Nick Clifton - - * elf.c (SEGMENT_AFTER_SEGMENT): Add third parameter - the - address field to use in the comparison. - (SEGMENT_OVERLAPS): Check that LMAs overlap as well. - -2003-02-14 Bob Wilson - - * elfcore.h (elf_core_file_p): Compare alternate machine codes for ELF - backends when checking if the generic ELF target should be used. - - * syms.c (_bfd_stab_section_find_nearest_line): For line number stabs - outside of functions, treat values as absolute addresses. - - * bfd.c: Change embedded documentation to use consistent indentation - and to split up long lines. Change informal style of description - for functions lacking real documentation. - * coffcode.h: Break up long lines in embedded documentation. - * format.c: Likewise. - * targets.c: Likewise. - * libcoff.h: Regenerate. - * bfd-in2.h: Regenerate. - -2003-02-14 Alan Modra - - * elf64-ppc.c (ppc64_elf_link_hash_table_create): Init tls_get_addr. - (ppc64_elf_copy_indirect_symbol): Merge tls_mask too. - (ppc64_elf_gc_sweep_hook): Simplify removal of dyn_relocs. - (allocate_dynrelocs): Don't treat undefined and undefweak specially. - (ppc_size_one_stub): Fix warning, and tighten plt entry check. - (group_sections): Don't share a stub section if stubs are for a large - section. Adjust comment. - (ppc64_elf_size_stubs): Roughly double the size left for stubs if - !stubs_always_before_branch. - (ppc64_elf_relocate_section): Initialize tlsld GOT entry once. Don't - treat undefined and undefweak specially when processing dyn relocs. - -2003-02-13 Jakub Jelinek - - * elflink.h (elf_link_add_object_symbols): Handle .symver x, x@FOO. - -2003-02-13 Nick Clifton - - * elf32-arm.h (elf32_thumb_to_arm_stub): Include section VMAs - in computation of offset to insert into BL instruction. - -2003-02-11 Uwe Stieber - - * config.bfd: Add support for kaOS as cross build target system. - -2003-02-11 Alan Modra - - * elf64-ppc.c (ppc64_elf_check_relocs): Match versioned - .__tls_get_addr too. - (ppc64_elf_tls_setup): Ensure cached tls_get_addr is not indirect. - -2003-02-10 Kaz kojima - - * elf32-sh.c (elf_sh_dyn_relocs): Add tls_tpoff32 field. - (elf_sh_link_hash_entry): Remove tls_tpoff32 field. - (sh_elf_link_hash_newfunc): Remove the initialization of - tls_tpoff32 field. - (allocate_dynrelocs): Keep dyn_relocs if it includes the entry - for which tls_tpoff32 flag is set. - (sh_elf_relocate_section): Covert to LE only if the dyn_relocs - of the symbol includes the entry matched with the input_section - and having tls_tpoff32 flag on. When linking statically, set - symbol index of R_SH_TLS_TPOFF32 relocation to zero if the symbol - is defined in this executable. - (sh_elf_check_relocs): Set tls_tpoff32 flag appropriately. - -2003-02-10 Jakub Jelinek - - * elf32-s390.c (elf_s390_size_dynamic_sections): Set relocs to TRUE - even if there is just non-empty .rela.plt. - -2003-02-10 Nick Clifton - - * archures.c (bfd_mach_arm_ep9312): Define. - * bfd-in2.h: Regenerate. - * cpu-arm.c (processors[]): Add ep9312. - (bfd_arm_arch): Add ep9312. - * elf32-arm.h (elf32_arm_merge_private_data): Update error - messages and add test for Maverick floating point support. - (elf32_arm_print_private_bfd_data): Handle - EF_ARM_MAVERICK_FLOAT flag. - (elf32_arm_object_p): New function. - (elf_backend_object_p): Define. - -2003-02-10 Alan Modra - - * elf64-ppc.c: Rename assorted occurrences of tls_type and similar - variables, structure fields or function params to tls_mask or - similar to better reflect usage. - (struct got_entry): Comment. - (struct ppc_link_hash_entry): Expand comment, and renumber TLS_*. - (get_tls_mask): Rename from get_tls_type. - -2003-02-09 Alan Modra - - * elf64-ppc.c (TLS_GD_LD): Don't define.. - (TLS_GD): ..define this instead and update all uses. - (TLS_TPRELGD): Define. - (ppc64_elf_link_hash_table_create): Tweak initialization of - init_refcount and init_offset. - (ppc64_elf_check_relocs): Add one extra element to t_symndx array. - Mark second slot of GD or LD toc entries. - (get_tls_type): Return an int. Distinguish toc GD and LD entries - from other tls types. - (ppc64_elf_tls_setup): New function, split out from.. - (ppc64_elf_tls_optimize): ..here. Don't optimize when symbols are - defined in a dynamic object. Fix LD optimization. Don't set TLS_TPREL - on GD->IE optimization, use TLS_TPRELGD instead. Use get_tls_type - return value to properly decide whether toc GD and LD entries can - optimize away __tls_get_addr call. Check next reloc after DTPMOD64 - to determine GD or LD rather than looking at TLS_LD flag. Don't - attempt to adjust got entry tls_type here.. - (allocate_dynrelocs): ..instead, adjust got entry tls_type here, and - look for possible merges. - (ppc64_elf_size_dynamic_sections): Adjust local got entries for - optimization. - (ppc64_elf_size_stubs): Tweak __tls_get_addr fudge. - (ppc64_elf_relocate_section): Rename some vars to better reflect usage. - Make use of return value from get_tls_type to properly detect GD and - LD optimizations. Split tlsld/gd hi/ha from lo/ds case. Don't - handle tls_get_addr removal when looking at REL24 relocs, do it when - looking at the previous reloc. Check reloc after DTPMOD64 to determine - GD or LD. - * elf64-ppc.h (ppc64_elf_tls_setup): Declare. - -2003-02-08 Alan Modra - - * elf32-hppa.c (group_sections): Don't share a stub section if - stubs are for a large section. - - * elf32-hppa.c (elf32_hppa_size_stubs): Double the size left for - stubs if !stubs_always_before_branch. - -2003-02-07 Nick Clifton - - * elf.c (swap_out_syms): Generate an error message if an - equivalent output section cannot be found for a symbol. - -2003-02-07 Jakub Jelinek - - * elf64-alpha.c (elf64_alpha_relax_section): Don't crash if - local_got_entries is NULL. - -2003-02-06 Andreas Schwab - - * elf-eh-frame.c (get_DW_EH_PE_signed): Define. - (read_value): Add parameter is_signed, use signed extraction if - the value is signed. - (_bfd_elf_write_section_eh_frame): Pass signed flag of the - encoding to read_value. - -2003-02-06 Alan Modra - - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy got and - plt info when called to transfer weak sym info. - -2003-02-05 Alan Modra - - * reloc.c: Add PPC and PPC64 TLS relocs. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * elf64-ppc.c (TP_OFFSET, DTP_OFFSET): Declare. - (ppc64_elf_howto_raw): Add TLS howto's. Adjust R_PPC64_NONE to be - against a 32 bit field. - (ppc64_elf_reloc_type_lookup): Handle TLS relocs. - (_ppc64_elf_section_data): Add t_symndx and comments. - (ppc64_elf_section_data): Use elf_section_data macro. - (ppc64_elf_new_section_hook): American spelling. - (struct got_entry, struct plt_entry): New. - (MUST_BE_DYN_RELOC): Rename from IS_ABSOLUTE_RELOC. - (struct ppc_stub_hash_entry): Add "addend" field. - (struct ppc_link_hash_entry): Add "tls_type". - (TLS_TLS, TLS_GD_LD, TLS_LD, TLS_TPREL, TLS_DTPREL, - TLS_EXPLICIT): Define. - (struct ppc_link_hash_table): Add tls_sec, tls_get_addr, tlsld_got. - (link_hash_newfunc): Init new fields. - (ppc64_elf_link_hash_table_create): Likewise. Set init_refcount and - init_offset to NULL. - (ppc64_elf_copy_indirect_symbol): Copy got and plt info. Don't call - _bfd_elf_link_hash_copy_indirect, rather insert relevant code from - there. - (update_local_sym_info, update_plt_info): New functions. - (ppc64_elf_check_relocs): Use them. Handle TLS relocs. Adjust GOT - handling to use got.glist rather than got.refcount. Likewise for PLT. - (ppc64_elf_gc_sweep_hook): Handle TLS relocs, new GOT and PLT lists. - (func_desc_adjust): Adjust for new PLT list. - (ppc64_elf_adjust_dynamic_symbol): Likewise. - (get_sym_h, get_tls_type): New functions. - (ppc64_elf_edit_opd): Remove unused variable. Use get_sym_h. - (ppc64_elf_tls_optimize): New function. - (allocate_dynrelocs): Adjust for new PLT and GOT lists. Allocate - TLS relocs. - (ppc64_elf_size_dynamic_sections): Likewise. - (ppc_type_of_stub): Adjust for new PLT list. - (ppc_build_one_stub): Likewise. - (ppc64_elf_size_stubs): Likewise. Use get_sym_h. Treat __tls_get_addr - calls specially. - (ppc64_elf_relocate_section): Adjust for new GOT and PLT lists. Handle - TLS relocs. Report local syms using bfd_elf_local_sym_name. Don't - init GOT entries that have a reloc. Generate GOT relocs here.. - (ppc64_elf_finish_dynamic_symbol): ..not here. Adjust for PLT list. - * elf64-ppc.h (ppc64_elf_tls_optimize): Declare. - -2003-02-04 Andreas Schwab - - * elf32-m68k.c (elf_m68k_hash_entry): Define. - (elf_m68k_link_hash_traverse): Remove. - (elf_m68k_link_hash_newfunc): Use struct bfd_hash_entry and - elf_m68k_hash_entry instead of struct elf_m68k_link_hash_entry to - reduce casting. - (elf_m68k_check_relocs): Use elf_m68k_hash_entry instead of - casting. - (elf_m68k_size_dynamic_sections): Use elf_link_hash_traverse - instead of elf_m68k_link_hash_traverse. - (elf_m68k_discard_copies): Change first parameter to pointer to - struct elf_link_hash_entry and use elf_m68k_hash_entry when struct - elf_m68k_link_hash_entry is needed. - -2003-02-04 Alan Modra - - * elf-bfd.h (struct got_entry, struct plt_entry): Forward declare. - (struct elf_link_hash_entry): Add "glist" and "plist" fields to - "got" union, and declare as gotplt_union. Use gotplt_uinion for - "plt" field. - (struct elf_link_hash_table): Make "init_refcount" a gotplt_union. - Add "init_offset" field. - (struct elf_obj_tdata ): Add "struct got_entry **" to union. - (elf_local_got_ents): Declare. - * elf.c (_bfd_elf_link_hash_newfunc): Adjust initialization of "got" - and "plt". - (_bfd_elf_link_hash_hide_symbol): Use "init_offset". - (_bfd_elf_link_hash_table_init): Set "init_offset". - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set init_refcount - from init_offset. - (elf_adjust_dynamic_symbol): Set plt and got offsets using init_offset. - - * elf.c (bfd_elf_local_sym_name): Split out from.. - (group_signature): ..here. - * elf-bfd.h (bfd_elf_local_sym_name): Declare. - -2003-02-04 Alan Modra - - * elf-bfd.h (enum elf_link_info_type): Remove. - (struct bfd_elf_section_data): Move sec_info_type, use_rela_p fields - to struct sec. Remove linkonce_p field. - (elf_linkonce_p): Delete. - (elf_discarded_section): Update for sec_info_type change. - * section.c (struct sec): Add sec_info_type, use_rela_p, has_tls_reloc, - flag11, flag12, flag13, flag14, flag15, flag16, flag20, flag24. - (ELF_INFO_TYPE_NONE): Define. - (ELF_INFO_TYPE_STABS): Define. - (ELF_INFO_TYPE_MERGE): Define. - (ELF_INFO_TYPE_EH_FRAME): Define. - (ELF_INFO_TYPE_JUST_SYMS): Define. - (STD_SECTION): Update struct sec initializer. - * ecoff.c (bfd_debug_section): Likewise. - * elf.c: Likewise. Update occurrences of sec_info_type and use_rela_p. - * elflink.h: Likewise. - * elf-eh-frame.c: Likewise. - * elf64-alpha.c: Likewise. - * elfxx-ia64.c: Likewise. - * elfxx-mips.c: Likewise. - * bfd-in2.h: Regenerate. - - * elf32-sparc.c (sec_do_relax): Use elf_section_data macro rather than - referring to used_by_bfd. - * elf64-sparc.c (sec_do_relax): Likewise. - * elf64-mmix.c (mmix_elf_section_data): Likewise. - * elfxx-mips.c (mips_elf_section_data): Likewise. - * ieee.c (ieee_slurp_section_data): Use ieee_per_section macro. - (ieee_get_section_contents): Likewise. - (ieee_new_section_hook): Formatting. - (ieee_canonicalize_reloc): Remove commented out code. - * mmo.c (mmo_section_data): Define. Use throughout file. - * oasys.c (oasys_get_section_contents): Use oasys_per_section macro. - -2003-01-31 Graydon Hoare - - * Makefile.am (opncls.lo): Add dependency upon libiberty.h. - * Makefile.in: Regenerate. - * opncls.c (calc_crc32, get_debug_link_info, - seperate_debug_file_exists, find_seperate_debug_file): New - internal functions. - (bfd_follow_gnu_debuglink): New function. Follow the pointer - contained inside a .gnu_debuglink section. - * bfd-in2.h: Regenerate. - -2003-01-29 Alexandre Oliva - - * elfxx-mips.c (mips_elf_got_entry_hash): Don't dereference - entry->abfd when it's NULL. - -2003-01-27 Alexandre Oliva - - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Handle - _bfd_elf_section_offset returning -2 the same way as -1. - - * elfxx-mips.c (mips_elf_multi_got): New function. - (struct mips_got_entry): Make symndx and gotidx signed. Moved - addend into union along with address and link hash entry. - (struct mips_got_info): Added bfd2got and next. - (struct mips_elf_hash_sort_data): Added max_unref_got_dynindx. - (mips_elf_got_section, mips_elf_create_got_section): Use - SEC_EXCLUDE bit to tell whether we really need the got - section. Take boolean arguments to disregard an excluded - section, or to create it as excluded. Adjust all callers. - Use mips_elf_got_section all over. - (mips_elf_local_got_index, mips_elf_got_page, - mips_elf_got16_entry): Take input bfd as argument, and pass it - on to mips_elf_create_local_got_entry. - (mips_elf_global_got_index, mips_elf_create_local_got_entry): - Take input bfd as argument, and manage entries in the - appropriate GOT. - (mips_elf_got_offset_from_index): Take input bfd as argument, - and use it to adjust the GP offset of the bfd. - (mips_elf_sort_hash_table, mips_elf_sort_hash_table_f): Move - unreferenced GOT entries of global symbols to the end. - (mips_elf_record_global_got_symbol): Take input bfd as - argument. Add entries to the master GOT hash table. - (struct mips_elf_bfd2got_hash): New. - (struct mips_elf_got_per_bfd_arg): New. - (struct mips_elf_set_global_got_offset_arg): New. - (mips_elf_hash_bfd_vma, mips_elf_multi_got_entry_hash, - mips_elf_multi_got_entry_eq, mips_elf_bfd2got_entry_hash, - mips_elf_bfd2got_entry_eq, mips_elf_make_got_per_bfd, - mips_elf_merge_gots, mips_elf_set_global_got_offset, - mips_elf_resolve_final_got_entry, - mips_elf_resolve_final_got_entries, mips_elf_adjust_gp, - mips_elf_got_for_ibfd): New functions. - (ELF_MIPS_GP_OFFSET): Don't depend on SGI_COMPAT. - (MIPS_ELF_GOT_MAX_SIZE): New macro. - (STUB_LW): Generate 64-bit stub regardless of SGI_COMPAT. - (mips_elf_got_entry_hash): Take new fields into account. Use - mips_elf_hash_bfd_vma. - (mips_elf_got_entry_eq): Take new fields into account. - (mips_elf_create_got_section): Initialize new fields. - (mips_elf_calculate_relocation): Pass input_bfd to functions - that now take it. Adjust gp for the input_bfd. - (mips_elf_allocate_dynamic_relocation, - mips_elf_create_dynamic_relocation, - _bfd_mips_elf_create_dynamic_sections): Use... - (mips_elf_rel_dyn_section): New function. Borrow code from... - (_bfd_mips_elf_check_relocs): Pass input_bfd to functions that - now take it. Create the got section if needed, even if - excluded, before recording a global got symbol. Move some - code to... - (mips_elf_record_local_got_symbol): New fn. - (_bfd_mips_elf_size_dynamic_sections): Disable combreloc. - Compute multi-got global entries offsets. Move GOT code to... - (_bfd_mips_elf_always_size_sections): Call mips_elf_multi_got - if the GOT is too big. - (_bfd_mips_elf_finish_dynamic_symbol): Set got entry of - undefweak symbol to zero. Generate dynamic relocations for - non-primary GOT entries for global symbols. - (_bfd_mips_elf_finish_dynamic_sections): Handle multi-got - case. Generate dynamic relocations for local got entries. - Sort dynamic relocations on N64 too, using... - (sort_dynamic_relocs_64): New fns. - (_bfd_mips_elf_hide_symbol): Adjust multi-got counters. - (_bfd_mips_elf_merge_private_bfd_data): Ignore EF_MIPS_XGOT. - -2003-01-27 Alexandre Oliva - - * bfd.c (struct _bfd): Added id field. - * opncls.c (_bfd_id_counter): New static variable. - (_bfd_new_bfd): Use it. - * bfd-in2.h: Rebuilt. - -2003-01-25 Alan Modra - - * elf32-sparc.c (bfd_elf32_new_section_hook): Define. - -2003-01-25 Jakub Jelinek - - * elf32-sparc.c (_bfd_sparc_elf_howto_table): Add TLS relocs. - (elf32_sparc_rev32_howto): New variable. - (sparc_reloc_map): Add TLS relocs. - (elf32_sparc_reloc_type_lookup, elf32_sparc_info_to_howto): - Handle REV32. - (sparc_elf_hix22_reloc, sparc_elf_lox10_reloc, elf32_sparc_mkobject): - New functions. - (struct elf32_sparc_dyn_relocs, struct elf32_sparc_link_hash_entry, - struct elf32_sparc_link_hash_table): - New structures. - (elf32_sparc_tdata, elf32_sparc_local_got_tls_type, - elf32_sparc_hash_table): Define. - (link_hash_newfunc, elf32_sparc_link_hash_table_create, - create_got_section, elf32_sparc_create_dynamic_sections, - elf32_sparc_copy_indirect_symbol, elf32_sparc_tls_transition): New - functions. - (elf32_sparc_check_relocs): Handle TLS relocs. Add dynamic reloc - reference counting. - (elf32_sparc_gc_sweep_hook): Likewise. - (elf32_sparc_adjust_dynamic_symbol): Likewise. - (elf32_sparc_size_dynamic_sections): Likewise. - (elf32_sparc_relocate_section): Likewise. - (allocate_dynrelocs, readonly_dynrelocs, dtpoff_base, tpoff): - New functions. - (elf32_sparc_object_p): Allocate backend private object data. - (bfd_elf32_bfd_link_hash_table_create, - elf_backend_copy_indirect_symbol, bfd_elf32_mkobject, - elf_backend_can_refcount): Define. - (elf_backend_create_dynamic_sections): Define to - elf32_sparc_create_dynamic_sections. - * reloc.c: Add SPARC TLS relocs. - * bfd-in2.h, libbfd.h: Rebuilt. - * elf64-sparc.c (sparc64_elf_howto_table): Add TLS relocs. - (sparc_reloc_map): Likewise. - -2003-01-24 Martin Schwidefsky - - * bfd-in2.h: Regenerate. - * elf32-s390.c (elf_s390_mkobject, elf_s390_tls_transition, - s390_tls_reloc, dtpoff_base, tpoff, invalid_tls_insn): New functions. - (elf_howto_table): Add TLS relocs. - (elf_s390_reloc_type_lookup): Likewise. - (elf_s390_link_hash_entry): Add tls_type. - (elf_s390_hash_entry, elf_s390_obj_tdata, elf_s390_local_got_tls_type): - New macros. - (elf_s390_link_hash_table): Add tls_ldm_got. - (link_hash_newfunc): Initialize tls_type. - (elf_s390_link_hash_table_create): Initialize refcount of tls_ldm_got. - (elf_s390_copy_indirect_symbol): Copy tls_type information. - (elf_s390_check_relocs): Support TLS relocs. - (elf_s390_gc_sweep_hook): Likewise. - (allocate_dynrelocs): Likewise. - (elf_s390_size_dynamic_sections): Likewise. - (elf_s390_relocate_section): Likewise. - (elf_s390_finish_dynamic_symbol): Likewise. - (bfd_elf32_mkobject): Define for TLS. - * elf64-s390.c: Same changes as for elf32-s390.c. - * libbfd.h: Regenerate. - * reloc.c: Add s390 TLS relocations. - -2003-01-24 Charles Lepple - - * aclocal.m4: Fix name of --enable-install-libbfd switch. - -2003-01-23 Nick Clifton - - * Add sh2e support: - 2002-04-02 Elena Zannoni - * archures.c (bfd_mach_sh2e): Added. - * bfd-in2.h: Rebuilt. - * cpu-sh.c (arch_info_struct): Added SH2e. - * elf32-sh.c (sh_elf_set_mach_from_flags): Handle EF_SH2E. - -2003-01-23 Alan Modra - - * elf-bfd.h (struct bfd_elf_section_data): Remove tdata. Change - dynindx to an int. Rearrange for better packing. - * elf.c (_bfd_elf_new_section_hook): Don't alloc if already done. - * elf32-mips.c (bfd_elf32_new_section_hook): Define. - * elf32-sh64.h: New. Split out from include/elf/sh.h. - (struct _sh64_elf_section_data): New struct. - (sh64_elf_section_data): Don't dereference sh64_info (was tdata). - * elf32-sh64-com.c: Include elf32-sh64.h. - * elf32-sh64.c: Likewise. - (sh64_elf_new_section_hook): New function. - (bfd_elf32_new_section_hook): Define. - (sh64_elf_fake_sections): Adjust for sh64_elf_section_data change. - (sh64_bfd_elf_copy_private_section_data): Likewise. - (sh64_elf_final_write_processing): Likewise. - * elf32-sparc.c (struct elf32_sparc_section_data): New. - (elf32_sparc_new_section_hook): New function. - (SET_SEC_DO_RELAX, SEC_DO_RELAX): Delete. - (sec_do_relax): Define. - (elf32_sparc_relax_section): Adjust to use sec_do_relax. - (elf32_sparc_relocate_section): Likewise. - * elf64-mips.c (bfd_elf64_new_section_hook): Define. - * elf64-mmix.c (struct _mmix_elf_section_data): New. - (mmix_elf_section_data): Define. Use throughout file. - (mmix_elf_new_section_hook): New function. - (bfd_elf64_new_section_hook): Define. - * elf64-ppc.c (struct _ppc64_elf_section_data): New. - (ppc64_elf_section_data): Define. Use throughout. - (ppc64_elf_new_section_hook): New function. - (bfd_elf64_new_section_hook): Define. - * elf64-sparc.c (struct sparc64_elf_section_data): New. - (sparc64_elf_new_section_hook): New function. - (SET_SEC_DO_RELAX, SEC_DO_RELAX): Delete. - (sec_do_relax): Define. - (sparc64_elf_relax_section): Adjust to use sec_do_relax. - (sparc64_elf_relocate_section): Likewise. - (bfd_elf64_new_section_hook): Define. - * elfn32-mips.c (bfd_elf32_new_section_hook): Define. - * elfxx-mips.c (struct _mips_elf_section_data): New. - (mips_elf_section_data): Define. Use throughout. - (_bfd_mips_elf_new_section_hook): New function. - (mips_elf_create_got_section): Don't alloc used_by_bfd. - * elfxx-mips.h (_bfd_mips_elf_new_section_hook): Declare. - * elfxx-target.h (bfd_elfNN_new_section_hook): Add #ifndef. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2003-01-21 Richard Henderson - - * elf64-alpha.c (ALPHA_ELF_LINK_HASH_PLT_LOC): New. - (struct alpha_elf_link_hash_entry): Add plt_old_section, plt_old_value. - (elf64_alpha_adjust_dynamic_symbol): Set them. - (elf64_alpha_size_plt_section_1): Reset them when plt entry removed. - (elf64_alpha_relax_tls_get_addr): Handle LDM relocs. Frob the - symbol index when relaxing LDM to TPREL. - (elf64_alpha_relax_section): Likewise. Allow relaxation of GD - relocs, even if the target isn't locally defined. - (elf64_alpha_check_relocs): Frob LDM reloc symndx to zero. - (elf64_alpha_relocate_section): Likewise. Force TP-relative - relocs vs symndx 0 to the tp base. - -2003-01-21 Fabio Alemagna - - * config.bfd: Handle i[3456]86-*-aros*. - -2003-01-21 Andreas Schwab - - * elf32-ppc.c (struct ppc_elf_dyn_relocs): Define. - (struct ppc_elf_link_hash_entry): Define. - (ppc_elf_hash_entry): New function. - (struct ppc_elf_link_hash_table): Define. - (ppc_elf_hash_table): New function. - (ppc_elf_link_hash_newfunc): New function. - (ppc_elf_link_hash_table_create): New function. - (ppc_elf_copy_indirect_symbol): New function. - (allocate_dynrelocs): New function. - (readonly_dynrelocs): New function. - (ppc_elf_size_dynamic_sections): Allocate space for dynamic - relocs and determine DT_TEXTREL. - (ppc_elf_check_relocs): Don't do that here, just count the - dynamic relocs. - (ppc_elf_gc_sweep_hook): Discard any dynamic relocs against the - removed section. - (bfd_elf32_bfd_link_hash_table_create): Define. - (elf_backend_copy_indirect_symbol): Define. - -2003-01-21 Richard Henderson - - * elf64-alpha.c (alpha_dynamic_entries_for_reloc): GOTTPREL and - TPREL also get a reloc if shared. Remove SREL support. - (elf64_alpha_emit_dynrel): New. - (elf64_alpha_relocate_section): Use it. Resolve dynamic TPREL - and GOTTPREL relocs to local symbols against the tp base. - (elf64_alpha_finish_dynamic_symbol): Use elf64_alpha_emit_dynrel. - - * elf64-alpha.c (elf64_alpha_relax_got_load): Decrement got - use count before clobbering r_type. - (elf64_alpha_relax_tls_get_addr): Don't use pos[1] if insn - ordering would mean dataflow inspection is necessary. - -2003-01-20 Svein E. Seldal - - * coffcode.h (coff_set_flags): Added get/set arch hooks. - -2003-01-20 Fabio Alemagna - - * elf32-sh.c: Treat elfNN_bed like other macros defined in - elfxx-target.h and #undef it before #define'ing it. - * elf32-i386.c: Likewise. - * elf32-sh64.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-sh64.c: Likewise. - -2003-01-20 Martin Schwidefsky - - * bfd-in2.h: Regenerate. - * elf32-s390.c (elf_s390_adjust_gotplt): New prototype. - (elf_howto_table): Rename R_390_GOTOFF to R_390_GOTOFF32. Add - R_390_GOTOFF16, R_390_GOTOFF64, R_390_GOTPLT12, R_390_GOTPLT16, - R_390_GOTPLT32, R_390_GOTPLT64, R_390_GOTPLTENT, R_390_PLTOFF16, - R_390_PLTOFF32 and R_390_PLTOFF64. - (elf_s390_reloc_type_lookup): Likewise. - (struct elf_s390_link_hash_entry): Add gotplt_refcount to keep track - of GOTPLT references to a function. - (link_hash_newfunc): Initialize gotplt_refcount. - (elf_s390_check_relocs): Move allocation of local_got_refcounts array - and creation of the got section out of the main switch. Add support - for the gotoff, gotplt and pltoff relocations. - (elf_s390_gc_sweep_hook): Add reference counting for gotoff, gotplt - and pltoff. - (elf_s390_adjust_gotplt): New function. - (elf_s390_adjust_dynamic_symbol): Adjust gotplt refcount for removed - plt entries. - (allocate_dynrelocs): Add comment. - (elf_s390_relocate_section): Change r_type to unsigned. Add support - for gotoff, gotplt and pltoff relocations. - * elf64-s390.c: Same changes as for elf32-s390.c. - * libbfd.h: Regenerate. - * reloc.c: Add BFD_RELOC_390_GOTOFF64, BFD_RELOC_390_GOTPLT12, - BFD_RELOC_390_GOTPLT16, BFD_RELOC_390_GOTPLT32, BFD_RELOC_390_GOTPLT64, - BFD_RELOC_390_GOTPLTENT, BFD_RELOC_390_PLTOFF16, BFD_RELOC_390_PLTOFF32 - and BFD_RELOC_390_PLTOFF64. - -2003-01-18 Jakub Jelinek - - * elfxx-ia64.c (elfNN_ia64_relocate_section): Handle - R_IA64_TPREL64[LM]SB against non-global symbol properly. - -2003-01-16 Jakub Jelinek - - * elfxx-ia64.c (struct elfNN_ia64_link_hash_table): Add - self_dtpmod_done and self_dtpmod_offset. - (allocate_global_data_got): Only use one got entry for all - dtpmod relocs against local symbols. - (allocate_dynrel_entries): Only need .rela.got entry for - dtpmod against global symbol. - (elfNN_ia64_size_dynamic_sections): Initialize self_dtpmod_offset. - Reserve space in .rela.got for the local dtpmod entry. - (set_got_entry): Initialize the common local dtpmod .got entry. - (elfNN_ia64_relocate_section): Handle R_IA_64_DTPREL64LSB - and R_IA_64_DTPREL64MSB. - -2003-01-16 Alan Modra - - * elf64-ppc.c: Include elf/ppc64.h rather than elf/ppc.h. - (R_PPC_*): Rename all occurrences to R_PPC64_*. - (R_PPC64_ADDR30): Rename all occurrences to R_PPC64_REL30. - (enum elf_ppc_reloc_type): Ditto to enum elf_ppc64_reloc_type. - (ppc64_elf_gc_sweep_hook): Handle R_PPC64_REL30 along with other - relative relocs, not with absolute ones. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2003-01-15 Andreas Schwab - - * elf32-ppc.c (ppc_elf_check_relocs): Don't set DF_TEXTREL for a - relocation against a non-allocated readonly section. - -2003-01-10 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Adjust addend for GOT16_HA. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. PLTGOT16_HA too. - -2002-01-08 Klee Dienes - - * Makefile.am (ALL_MACHINES): Use cpu-msp430.lo, not cpu-msp430.c. - (BFD32_BACKENDS): Use elf32-msp430.lo, not elf32-msp430.c. - * Makefile.in: Regenerate. - -2003-01-08 Alexandre Oliva - - * elfn32-mips.c (prev_reloc_section): New. - (GET_RELOC_ADDEND): Use it. Parenthesize macro arguments. - (SET_RELOC_ADDEND): Parenthesize macro argument. - -2003-01-07 John David Anglin - - * elf32-hppa.c (final_link_relocate): For all DP relative relocations, - adjust addil instructions if the symbol has no section. - -2003-01-07 DJ Delorie - - * elf32-xstormy16.c (xstormy16_elf_howto_table): Make REL_12 not - partial_inplace. - -2003-01-07 Andreas Schwab - - * elf32-m68k.c (elf_m68k_check_relocs): Don't set DF_TEXTREL for - PC relative relocations. - (elf_m68k_discard_copies): Set it here instead. - -2002-01-02 Ben Elliston - Jeff Johnston - - * Makefile.am (ALL_MACHINES): Add cpu-iq2000.lo. - (ALL_MACHINES_CFILES): Add cpu-iq2000.c. - (BFD32_BACKENDS): Add elf32-iq2000.lo. - (BFD32_BACKENDS_CFILES): Add elf32-iq2000.c. - (cpu-iq2000.lo): New target. - * Makefile.in: Regenerate. - * config.bfd: Handle iq2000-*-elf. - * archures.c (bfd_architecture): Add bfd_{arch,mach}_iq2000. - (bfd_archures_list): Add bfd_iq2000_arch. - * configure.in: Handle bfd_elf32_iq2000_vec. - * configure: Regenerate. - * reloc.c: Add BFD_RELOC_IQ2000_OFFSET_16, BFD_RELOC_IQ2000_OFFSET_21, - and BFD_RELOC_IQ2000_UHI16. - * targets.c (bfd_elf32_iq2000_vec): Declare. - (bfd_target_vector): Add bfd_elf32_iq2000_vec. - * elf.c (prep_headers): Set e_machine to EM_IQ2000. - * cpu-iq2000.c: New file. - * elf32-iq2000.c: Likewise. - * libbfd.h: Regenerate. - * bfd-in2.h: Likewise. - -2003-01-02 Richard Sandiford - - * elfxx-mips.c: Include libiberty.h. - (elf_mips_isa, _bfd_mips_elf_mach_extends_p): Remove. - (mips_set_isa_flags): New function, split out from... - (_bfd_mips_elf_final_write_processing): ...here. Only call - mips_set_isa_flags if the EF_MIPS_MACH bits are clear. - (mips_mach_extensions): New array. - (mips_32bit_flags_p): New function. - (_bfd_mips_elf_merge_private_bfd_data): Rework architecture checks. - Use mips_32bit_flags_p to check if one binary is 32-bit and the - other is 64-bit. When adopting IBFD's architecture, adopt the - bfd_mach as well as the flags. - -2003-01-02 Nick Kelsey - - * elf32-ip2k.c: Re-work of linker relaxation code for the ip2k to - fix internal errors, fix bad code generation, fix incorrect stabs - information, and improve ability to eliminate redundant page - instructions. Added code to ip2k_final_link_relocate to self-verify - the linker relaxation. Fix formatting problems. - -2002-12-30 Chris Demetriou - - * aoutx.h (NAME(aout,machine_type)): Add bfd_mach_mipsisa32r2 case. - * archures.c (bfd_mach_mipsisa32r2): New define. - * bfd-in2.h: Regenerate. - * cpu-mips.c (I_mipsisa32r2): New enum value. - (arch_info_struct): Add entry for I_mipsisa32r2. - * elfxx-mips.c (elf_mips_isa, _bfd_elf_mips_mach) - (_bfd_mips_elf_print_private_bfd_data): Handle E_MIPS_ARCH_32R2. - (_bfd_mips_elf_final_write_processing): Add - bfd_mach_mipsisa32r2 case. - (_bfd_mips_elf_merge_private_bfd_data): Handle merging of - binaries marked as using MIPS32 Release 2. - -2002-12-30 Dmitry Diky - - * Makefile.am: Add msp430 target. - * configure.in: Likewise. - * Makefile.in: Regenerate. - * configure: Regenerate. - * archures.c: Add msp430 architecture vector. - * config.bfd: Likewise. - * reloc.c: Add msp430 relocs. - * targets.c: Add msp320 target. - * cpu-msp430.c: New file: msp430 cpu detection. - * elf32-msp430.c: New file: msp430 reloc processing. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - -2002-12-28 Jakub Jelinek - - * elf.c (elf_sort_sections): Don't reorder .tbss. - (assign_file_positions_for_segments): Only adjust off/voff - for increased alignment in PT_LOAD or PT_NOTE segment, - but adjust p_filesz for .tbss too. in PT_LOAD consider - .tbss to have zero memory size. - (copy_private_bfd_data) [SECTION_SIZE]: Define. - [IS_CONTAINED_BY_VMA, IS_CONTAINED_BY_LMA]: Use it. - [INCLUDE_SECTION_IN_SEGMENT]: Only put SHF_TLS sections - into PT_TLS segment. Never put SHF_TLS sections in - segments other than PT_TLS or PT_LOAD. - - * elf64-alpha.c (elf64_alpha_finish_dynamic_sections): Clear .plt - sh_entsize. - -2002-12-23 DJ Delorie - - * coff64-rs6000.c (xcoff64_ppc_relocate_section): Fix logic reversal. - -2002-12-23 Alan Modra - - * elflink.h (elf_link_output_extsym): Heed strip_discarded. - -2002-12-23 Nick Clifton - - * archures.c (bfd_arch_get_compatible): Add third parameter - 'accept_unknowns'. Only accept unknown format BFDs if - accept_unknowns is true, or if the format is "binary". - * bfd-in2.h: Regenerate. - -2002-12-21 Nick Clifton - - * coff-arm.c (coff_arm_relocate_section): Disable WINCE workaround - that subtracted 8 from pc relative relocations. - -2002-12-20 Kazu Hirata - - * coff-h8300.c: Fix comment typos. - * coffcode.h: Likewise. - * cpu-cris.c: Likewise. - * elf32-vax.c: Likewise. - * genlink.h: Likewise. - * linker.c: Likewise. - * som.c: Likewise. - * tekhex.c: Likewise. - * vms-misc.c: Likewise. - -2002-12-20 DJ Delorie - - * reloc.c: Add BFD_RELOC_XSTORMY16_12. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * elf32-xstormy16.c (xstormy16_elf_howto): Add R_XSTORMY16_12. - (xstormy16_reloc_map): Add R_XSTORMY16_12. - -2002-12-19 Kazu Hirata - - * doc/bfdint.texi: Fix typos. - -2002-12-20 Paul Eggert - - Port to POSIX 1003.1-2001. - * acinclude.m4 (AM_INSTALL_LIBBFD): Do not rely on "test -o". - * configure.in (build-warnings): Likewise. - (Horrible hacks to build DLLs on Windows): Do not rely on "tail -1". - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - -2002-12-19 Alan Modra - - * coff-h8300.c: Include libiberty.h. - (h8300_reloc16_extra_cases): Check the hash table creator before - referencing h8300 specific fields. Stash the hash table pointer - in a local var. Comment typo fixes. - (h8300_bfd_link_add_symbols): Likewise. - - * reloc.c (struct reloc_howto_struct): Revise src_mask and - dst_mask comments. - * bfd-in2.h: Regenerate. - -2002-12-18 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Reorganize dynamic reloc - code a little. Comment on dynamic relocs against section symbols. - -2002-12-17 Roger Sayle - - * configure.host (ia64-*-hpux*): Support 64 bit targets using - the HP compiler's "long long". - -2002-12-16 Andrew MacLeod - - * elf32-xstormy16.c (xstormy16_elf_howto): Add R_XSTORMY16_LO16 - and R_XSTORMY16_HI16) howto entries. - (xstormy16_reloc_map): Map R_XSTORMY16_{LO,HI}16 to BFD_RELOC_{LO,HI}16. - (xstormy16_info_to_howto_rela): Use R_XSTORMY16_GNU_VTINHERIT to - determine the start of the second reloc table. - -2002-12-16 Nathan Tallent - - * ecofflink.c: Fix the reading of the debugging information - of Tru64/Alpha binaries that are produced by recent Compaq - compilers. - (mk_fdrtab): Fix error in creating the FDR (file descriptor) - table. - (lookup_line): Because of the strange information sometimes - generated by Compaq's recent compilers, change how the FDR - table is searched so that PDRs (procedure descriptors) are - correctly found. Note that this change is really more of a hack; - however, I have included extensive documentation as to why - this is the best solution short of an extensive rewrite or - another hack. - (fdrtab_lookup): Add comments to explain the algorithm. - -2002-12-12 Alexandre Oliva - - * elf-m10300.c (elf32_mn10300_link_hash_newfunc): Reorder - initializers to match struct declaration. - -2002-12-12 Alan Modra - - * dwarf2.c (comp_unit_contains_address): Comment typo fix. - * elf.c (get_program_header_size): Likewise. - * elf32-m32r.c (m32r_elf_lo16_reloc): Likewise. - (m32r_elf_generic_reloc): Likewise. - * elf32-ppc.c (ppc_elf_howto_init): Likewise. - * elflink.h (elf_bfd_discard_info): Likewise. - -2002-12-12 Alan Modra - - * elf32-i386.c (elf_i386_finish_dynamic_sections): Add output_offset - to DT_JMPREL. Use srelplt input section size for DT_PLTRELSZ and - DT_RELSZ adjustment, not output section. Avoid writing tags when - unchanged. Don't assume linker script is sane, adjust DT_REL too. - * elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Just use raw - size of srelplt for DT_PLTRELSZ. Use srelplt input section size for - DT_RELASZ adjustment, not output section. Avoid writing tags when - unchanged. Adjust DT_RELA. - * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Tweaks for better - formatting. Avoid writing tags when unchanged. Adjust DT_RELA. - -2002-12-12 Alexandre Oliva - - * elfxx-mips.c (mips_elf_calculate_relocation): Don't divide - addend by 4. - -2002-12-12 Alexandre Oliva - - * elfxx-mips.c (struct mips_got_entry): New. - (struct mips_got_info): Added got_entries field. - (mips_elf_got_entry_hash, mips_elf_got_entry_eq): New functions. - (mips_elf_local_got_index, mips_elf_got_page, - mips_elf_got16_entry): Re-implement in terms of new... - (mips_elf_create_local_got_entry): Rewrite to use got_entries. - Change return type. - (mips_elf_highest): Warning clean-up. - (mips_elf_create_got_section): Initialize got_entries. - (_bfd_mips_elf_check_relocs): Use got_entries to estimate - local got size. - (_bfd_mips_elf_size_dynamic_sections): Do not account for - GOT_PAGE entries, since we now reuse GOT16 entries. - -2002-12-10 Jason Thorpe - - * aoutx.h (set_section_contents): Allow an otherwise unrepresentable - read-only section that lies after .text and before .data to be - written into the output file and included in a_text. - (translate_to_native_sym_flags): If an otherwise unrepresentable - section was merged with .text, convert its symbols to N_TEXT - symbols. - * libaout.h (aout_section_merge_with_text_p): New macro. - -2002-12-08 Alan Modra - - * bfd-in.h: Comment typo fix. Formatting. - * bfd-in2.h: Regenerate. - * coff64-rs6000.c (xcoff64_openr_next_archived_file): Warning fix. - * elf32-m68hc12.c (m68hc12_elf_set_mach_from_flags): Prototype. - * elf64-mmix.c (mmix_dump_bpo_gregs): Warning fix. - -2002-12-05 Richard Henderson - - * elfxx-ia64.c (elfNN_ia64_relax_section): Handle PCREL21BI. - Only send PCREL21B though the plt. Fix installed reloc type. - (elfNN_ia64_relocate_section): Give error for dynamic reloc - against PCREL22 or PCREL64I; clean up error messages for - branch relocs. - -2002-12-04 Kevin Buettner - - * elf64-mips.c (elf64_mips_grok_prstatus, elf64_mips_grok_psinfo): - New functions. - (elf_backend_grok_prstatus, elf_backend_grok_psinfo): Define. - -2002-12-04 David Mosberger - - * cpu-ia64-opc.c: Add operand constant "ar.csd". - -2002-12-04 H.J. Lu - - * elfxx-ia64.c (get_local_sym_hash): Use section ID instead of - BFD address when constructing local name. - -2002-12-04 Andreas Schwab - - * elf32-m68k.c (struct elf_m68k_link_hash_table): Add sym_sec - member. - (elf_m68k_link_hash_table_create): Initialize it. - (elf_m68k_check_relocs): Handle symbols that are forced to be - local due to visibility changes. - (elf_m68k_adjust_dynamic_symbol): Likewise. - (elf_m68k_size_dynamic_sections): Likewise. - (elf_m68k_discard_copies): Likewise. - (elf_m68k_relocate_section): Likewise. - -2002-12-04 Alan Modra - - * elf64-ppc.c (ppc64_elf_edit_opd): Correct typo. - -2002-12-04 Alan Modra - - * srec.c (srec_write_symbols): Restore '$' prefix to address - accidentally removed in 2002-04-04 change. - (srec_get_symtab): Use 0 instead of `(long) FALSE'. - -2002-12-03 Nick Clifton - - * elf32-ppc.c (apuinfo_list_init): New function. - (apuinfo_list_add): New function: Add a value to the list. - (apuinfo_list_length): New function: Return the number of - values on the list. - (apuinfo_list_element): New function: Return a value on the - list. - (apuinfo_list_finish): New function: Free the resources used - by the list. - (ppc_elf_begin_write_processing): New function. Scan the - input bfds for apuinfo sections. - (ppc_elf_write_section): New function: Delay the creation of - the contents of an apuinfo section in an output bfd. - (ppc_elf_final_write_processing): New function. Create the - contents of an apuinfo section in an output bfd. - (elf_backend_begin_write_processing): Define. - (elf_backend_final_write_processing): Define. - (elf_backend_write_section): Define. - -2002-12-03 Richard Henderson - - * cpu-ia64-opc.c (elf64_ia64_operands): Add ldxmov entry. - -2002-12-01 Stephane Carrez - - Fix PR savannah/1417: - * elf32-m68hc11.c (m68hc11_elf_relax_delete_bytes): Don't adjust - branch if it goes to the start of the deleted region. - -2002-12-01 Stephane Carrez - - * bfd-in2.h (bfd_mach_m6812): Rebuild. - * archures.c (bfd_mach_m6812_default, bfd_mach_m6812, - bfd_mach_m6812s): Declare. - - * elf32-m68hc12.c (m68hc12_elf_set_mach_from_flags): New function. - (_bfd_m68hc12_elf_set_private_flags): Call it. - (_bfd_m68hc12_elf_print_private_bfd_data): Report processor version. - (_bfd_m68hc12_elf_merge_private_bfd_data): Merge the flags and - report microcontroller incompatibilities (HC12 vs HCS12). - (elf_backend_object_p): Update. - -2002-11-30 Alan Modra - - * bfd-in.h (TRUE_FALSE_ALREADY_DEFINED, BFD_TRUE_FALSE): Delete. - (enum bfd_boolean, boolean): Delete. - (bfd_boolean): Typedef to an int. - (FALSE, TRUE): Define. - * aix386-core.c, aix5ppc-core.c, aout-adobe.c, aout-arm.c, aout-cris.c, - aout-encap.c, aout-ns32k.c, aout-target.h, aout-tic30.c, aoutf1.h, - aoutx.h, archive.c, archive64.c, archures.c, bfd-in.h, bfd.c, bfdwin.c, - binary.c, bout.c, cache.c, cisco-core.c, coff-a29k.c, coff-alpha.c, - coff-apollo.c, coff-arm.c, coff-aux.c, coff-h8300.c, coff-h8500.c, - coff-i386.c, coff-i860.c, coff-i960.c, coff-ia64.c, coff-m68k.c, - coff-m88k.c, coff-mcore.c, coff-mips.c, coff-or32.c, coff-ppc.c, - coff-rs6000.c, coff-sh.c, coff-sparc.c, coff-stgo32.c, coff-tic30.c, - coff-tic4x.c, coff-tic54x.c, coff-tic80.c, coff-w65.c, coff-we32k.c, - coff-z8k.c, coff64-rs6000.c, coffcode.h, coffgen.c, cofflink.c, - corefile.c, cpu-a29k.c, cpu-alpha.c, cpu-arc.c, cpu-arm.c, cpu-avr.c, - cpu-cris.c, cpu-d10v.c, cpu-d30v.c, cpu-dlx.c, cpu-fr30.c, cpu-frv.c, - cpu-h8300.c, cpu-h8500.c, cpu-hppa.c, cpu-i370.c, cpu-i386.c, - cpu-i860.c, cpu-i960.c, cpu-ia64.c, cpu-ip2k.c, cpu-m10200.c, - cpu-m10300.c, cpu-m32r.c, cpu-m68hc11.c, cpu-m68hc12.c, cpu-m68k.c, - cpu-m88k.c, cpu-mcore.c, cpu-mips.c, cpu-mmix.c, cpu-ns32k.c, - cpu-openrisc.c, cpu-or32.c, cpu-pdp11.c, cpu-pj.c, cpu-powerpc.c, - cpu-rs6000.c, cpu-s390.c, cpu-sh.c, cpu-sparc.c, cpu-tic30.c, - cpu-tic4x.c, cpu-tic54x.c, cpu-tic80.c, cpu-v850.c, cpu-vax.c, - cpu-w65.c, cpu-we32k.c, cpu-xstormy16.c, cpu-z8k.c, dwarf1.c, - dwarf2.c, ecoff.c, ecofflink.c, efi-app-ia32.c, efi-app-ia64.c, - elf-bfd.h, elf-eh-frame.c, elf-hppa.h, elf-m10200.c, elf-m10300.c, - elf-strtab.c, elf.c, elf32-arc.c, elf32-arm.h, elf32-avr.c, - elf32-cris.c, elf32-d10v.c, elf32-d30v.c, elf32-dlx.c, elf32-fr30.c, - elf32-frv.c, elf32-gen.c, elf32-h8300.c, elf32-hppa.c, elf32-hppa.h, - elf32-i370.c, elf32-i386.c, elf32-i860.c, elf32-i960.c, elf32-ip2k.c, - elf32-m32r.c, elf32-m68hc11.c, elf32-m68hc12.c, elf32-m68k.c, - elf32-mcore.c, elf32-mips.c, elf32-openrisc.c, elf32-or32.c, - elf32-pj.c, elf32-ppc.c, elf32-s390.c, elf32-sh.c, elf32-sh64-com.c, - elf32-sh64.c, elf32-sparc.c, elf32-v850.c, elf32-vax.c, - elf32-xstormy16.c, elf64-alpha.c, elf64-gen.c, elf64-hppa.c, - elf64-mips.c, elf64-mmix.c, elf64-ppc.c, elf64-ppc.h, elf64-s390.c, - elf64-sh64.c, elf64-sparc.c, elf64-x86-64.c, elfarm-nabi.c, - elfarm-oabi.c, elfcode.h, elfcore.h, elflink.c, elflink.h, - elfn32-mips.c, elfxx-ia64.c, elfxx-mips.c, elfxx-mips.h, - elfxx-target.h, format.c, freebsd.h, genlink.h, hash.c, hp300hpux.c, - hppabsd-core.c, hpux-core.c, i386aout.c, i386linux.c, i386lynx.c, - i386mach3.c, i386msdos.c, i386os9k.c, ieee.c, ihex.c, irix-core.c, - libaout.h, libbfd-in.h, libbfd.c, libcoff-in.h, libecoff.h, libieee.h, - libnlm.h, liboasys.h, libpei.h, libxcoff.h, linker.c, lynx-core.c, - m68klinux.c, m68klynx.c, mach-o.c, mach-o.h, merge.c, mipsbsd.c, - mmo.c, netbsd-core.c, netbsd.h, nlm.c, nlm32-alpha.c, nlm32-i386.c, - nlm32-ppc.c, nlm32-sparc.c, nlmcode.h, oasys.c, opncls.c, osf-core.c, - pc532-mach.c, pdp11.c, pe-arm.c, pe-i386.c, pe-mcore.c, pe-mips.c, - pe-sh.c, peXXigen.c, pef.c, pei-arm.c, pei-i386.c, pei-mcore.c, - pei-mips.c, pei-sh.c, peicode.h, ppcboot.c, ptrace-core.c, reloc.c, - reloc16.c, riscix.c, rs6000-core.c, sco5-core.c, section.c, simple.c, - som.c, som.h, sparclinux.c, sparclynx.c, srec.c, stabs.c, sunos.c, - syms.c, targets.c, tekhex.c, ticoff.h, trad-core.c, versados.c, - vms-gsd.c, vms-hdr.c, vms-misc.c, vms-tir.c, vms.c, vms.h, - xcoff-target.h, xcofflink.c, xsym.c, xsym.h: Replace boolean with - bfd_boolean, true with TRUE, false with FALSE. Simplify comparisons - of bfd_boolean vars with TRUE/FALSE. Formatting. - * bfd-in2.h, libbfd.h, libcoff.h: Regenerate - -2002-11-28 Alan Modra - - * elf-bfd.h: Replace occurrences of Elf32_Internal_* and - Elf64_Internal_* with Elf_Internal_*. Replace Elf_Internal_Rel - with Elf_Internal_Rela. - * elf-hppa.h, elf-m10200.c, elf-m10300.c, elf32-arc.c, elf32-arm.h, - elf32-avr.c, elf32-cris.c, elf32-d10v.c, elf32-d30v.c, elf32-dlx.c, - elf32-fr30.c, elf32-frv.c, elf32-gen.c, elf32-h8300.c, elf32-hppa.c, - elf32-i370.c, elf32-i386.c, elf32-i860.c, elf32-i960.c, elf32-ip2k.c, - elf32-m32r.c, elf32-m68hc11.c, elf32-m68hc12.c, elf32-m68k.c, - elf32-mcore.c, elf32-mips.c, elf32-openrisc.c, elf32-or32.c, - elf32-ppc.c, elf32-s390.c, elf32-sh.c, elf32-v850.c, elf32-vax.c, - elf32-xstormy16.c, elf64-alpha.c, elf64-gen.c, elf64-hppa.c, - elf64-mips.c, elf64-mmix.c, elf64-ppc.c, elf64-s390.c, elf64-sh64.c, - elf64-sparc.c, elf64-x86-64.c, elfarm-nabi.c, elfarm-oabi.c, - elfcode.h, elflink.h, elfn32-mips.c, elfxx-ia64.c, elfxx-mips.c: Ditto. - * elf-hppa.h (elf_hppa_internal_shdr): Delete. Use Elf_Internal_Shdr - throughout instead. - * elf.c (_bfd_elf_no_info_to_howto_rel): Delete. - * elfcode.h (elf_swap_reloca_in): Pass source operand as a bfd_byte *. - Remove INLINE keyword. - (elf_swap_reloc_in): Likewise. Also clear r_addend. - (elf_swap_reloc_out, elf_swap_reloca_out): Pass destination operand - as a bfd_byte *. - (elf_write_relocs): Consolidate REL and RELA code. - (elf_slurp_reloc_table_from_section): Simplify REL code. - (NAME(_bfd_elf,size_info)): Populate reloc swap entries. - * elf-bfd.h (MAX_INT_RELS_PER_EXT_REL): Define. - * elflink.h (elf_link_read_relocs_from_section): Consolidate REL and - RELA code. - (elf_link_adjust_relocs): Likewise. Don't malloc space for temp - reloc array, use a fixed size of MAX_INT_RELS_PER_EXT_REL. - (elf_link_output_relocs): Likewise. - (elf_reloc_link_order): Likewise. - (elf_finish_pointer_linker_section): Likewise. - (struct elf_link_sort_rela): Remove union. - (elf_link_sort_cmp1): Update to suit. - (elf_link_sort_cmp2): Here too. - (elf_link_sort_relocs): Consolidate REL and RELA code. Fix memory - over-allocation for int_rels_per_ext_rel != 1 case. - * elf32-arm.h: Update all bfd_elf32_swap_reloc_out calls. - * elf32-i386.c: Likewise. - * elf32-cris.c: Likewise for bfd_elf32_swap_reloca_out. - * elf32-hppa.c, elf32-i370.c, elf32-m68k.c, elf32-ppc.c, elf32-s390.c, - elf32-sh.c, elf32-vax.c, elfxx-mips.c: Likewise. - * elf64-alpha.c: Likewise for bfd_elf64_swap_reloca_out. - * elf64-hppa.c, elf64-mips.c, elf64-ppc.c, elf64-s390.c, elf64-sh64.c, - elf64-sparc.c, elf64-x86-64.c: Likewise. - * elfxx-ia64.c: Likewise for bfd_elfNN_swap_reloca_out. - * elfxx-mips.c (sort_dynamic_relocs): Likewise for - bfd_elf32_swap_reloc_in. - - * elf32-arm.h: Update elf32_arm_info_to_howto calls. - * elf32-mips.c: Likewise for mips_info_to_howto_rel. - (mips_elf64_swap_reloc_in): Zero r_addend. - (mips_elf64_be_swap_reloc_in): Likewise. - (mips_elf64_slurp_one_reloc_table): Simplify. - - * elf64-alpha.c (alpha_elf_size_info): Populate reloc swap entries. - * elf64-hppa.c (hppa64_elf_size_info): Likewise. - * elf64-sparc.c (sparc64_elf_size_info): Likewise. - -2002-11-28 Kaz Kojima - - * elf32-sh.c (sh_elf_relocate_section): Don't complain about - unresolved debugging relocs in dynamic applications. - * elf64-sh64.c (sh_elf64_relocate_section): Likewise. - -2002-11-26 Alan Modra - - * elf-eh-frame.c (ENSURE_NO_RELOCS): Disregard R_*_NONE relocs. - (_bfd_elf_discard_section_eh_frame): Don't discard duplicate CIEs - on a relocatable link. Comment typos. - * elf.c (_bfd_elf_link_hash_newfunc): Assign elements of structure - in the order they are declared. Clear elf_hash_value too. - (_bfd_elf_link_hash_table_init): Likewise assign in order. Clear - eh_info and tls_segment. - * elflink.h (elf_link_input_bfd ): Keep reloc offsets - sorted when discarding relocs by turning them into R_*_NONE. - - * libbfd.c (warn_deprecated): Comment spelling. - * po/SRC-POTFILES.in: Regenerate. - -2002-11-21 Richard Henderson - - * elflink.h (elf_link_add_object_symbols): Don't overwrite the - arch's st_other bits when merging visibilities. - (elf_link_output_extsym): Tidy clearing of visibility field. - -2002-11-21 Alan Modra - - * coff-mcore.c (SWAP_IN_RELOC_OFFSET): Define. - (SWAP_OUT_RELOC_OFFSET): Define. - -2002-11-20 Alexandre Oliva - - * elf.c (_bfd_elf_link_hash_table_init): Make sure - can_refcount is properly extended to the type of - init_refcount. - -2002-11-19 Alexandre Oliva - - * elfxx-mips.c (MIPS_RELOC_RELA_P): New macro. - (_bfd_mips_elf_relocate_section): Use it. - - * elfxx-mips.c (MNAME): New macro. - (_bfd_mips_elf_check_relocs): Use it. - (_bfd_mips_elf_discard_info): Likewise. - (_bfd_mips_elf_final_link): Likewise. - -2002-11-19 Alan Modra - - * elf64-ppc.c (ppc64_elf_edit_opd): When deleting relocs, adjust - rel_hdr.sh_size too. - -2002-11-18 Klee Dienes - - * Makefile.am (BFD32_LIBS): Add bfdwin.lo, bfdio.lo. - (BFD32_LIBS_CFILES): Add bfdwin.c, bfdio.c. - (BFD_H_FILES): Add bfdwin.c, bfdio.c. - (LIBBFD_H_FILES): Add bfdwin.c, bfdio.c. - Add dependencies for bfdwin.c, bfdio.c. - * bfd.c: Remove bfd_get_mtime, bfd_get_size. - * libbfd.c: Remove real_read, bfd_bread, _bfd_window_internal, - bfd_init_window, bfd_free_window, bfd_get_file_window, bfd_bwrite, - bfd_tell, bfd_flush, bfd_stat, bfd_seek. - * bfdio.c: New file. Contains real_read, bfd_bread, bfd_write, - bfd_tell, bfd_flush, bfd_stat, bfd_seek, bfd_ge_mtime, - bfd_get_size (moved from libbfd.c and bfd.c). - * bfdwin.c New file. Contains _bfd_window_internal, - bfd_init_window, bfd_free_window, bfd_get_file_window (moved from - libbfd.c and bfd.c). - * po/SRC-POTFILES.in: Regenerate. - * po/bfd.pot: Regenerate. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * aclocal.m4: Regenerate. - * Makefile.in: Regenerate. - * configure: Regenerate. - -2002-11-18 Klee Dienes - - * bfd.c (bfd_preserve_save): Don't zero BFD_IN_MEMORY. - -2002-11-15 Kazu Hirata - - * coff-h8300.c (h8300_reloc16_estimate): Do not optimize away - jsr after a short jump. - * elf32-h8300.c (elf32_h8_relax_section): Likewise. - -2002-11-15 Klee Dienes - - * pef.c (bfd_pef_convert_architecture): Move declaration of - ARCH_POWERPC and ARCH_M68K to the start of the function. - -2002-11-14 Svein E. Seldal - - * coff-tic4x.c (tic4x_howto_table): Formatting fixup - -2002-11-14 Hans-Peter Nilsson - - * elf64-mmix.c (_bfd_mmix_finalize_linker_allocated_gregs): - For bpo_gregs_section->contents, allocate _raw_size, not - _cooked_size. - -2002-11-13 Klee Dienes - - * config.bfd: Add entries for powerpc-*-darwin and cousins. - -2002-11-13 H.J. Lu - - * elfcode.h (elf_object_p): Don't restore abfd->arch_info. - -2002-11-13 Klee Dienes - Alan Modra - - * bfd.c (struct bfd_preserve): New. - (bfd_preserve_save): New function. - (bfd_preserve_restore): Ditto. - (bfd_preserve_finish): Ditto. - * bfd-in2.h: Regenerate. - * mach-o.c: Formatting. - (bfd_mach_o_scan_read_symtab_symbol): Make "value" unsigned. - (bfd_mach_o_object_p): Use bfd_preserve_save/restore/finish. - (bfd_mach_o_core_p): Ditto. - (bfd_mach_o_scan): Pass in mdata. - * mach-o.h (bfd_mach_o_scan): Update prototype. - * pef.c: Formatting. - (bfd_pef_object_p): Use bfd_preserve_save/restore/finish. - (bfd_pef_xlib_object_p): Ditto. - (bfd_pef_scan): Pass in mdata. Move version check to bfd_pef_object_p. - * pef.h (bfd_pef_scan): Update prototype. - * xsym.c: Formatting, K&R fixes. - (bfd_sym_object_p): Use bfd_preserve_save/restore/finish. - (bfd_sym_scan): New function split out from bfd_sym_object_p. - * xsym.h (bfd_sym_scan): Declare. - * elfcode.h (elf_object_p): Use bfd_preserve_save/restore/finish. - * elfcore.h (elf_core_file_p): Likewise. - * targets.c (_bfd_target_vector): Revert 2002-11-08 change. - -2002-11-12 Nick Clifton - - * po/da.po: Updated Danish translation. - -2002-11-12 Alan Modra - - * elflink.h (elf_link_add_object_symbols): Optimize stabs for - relocatable link too. - (elf_link_input_bfd): When emitting relocs, adjust offsets for - eh_frame and stab sections. Zap deleted relocs. - (elf_reloc_symbol_deleted_p): Return true for zero r_symndx. - (elf_bfd_discard_info): Run for relocatable link too. - * elf64-ppc.c (ppc64_elf_edit_opd): Rename from edit_opd. Make global. - Handle ld -r case. - (ppc64_elf_size_dynamic_sections): Don't call edit_opd from here. - * elf64-ppc.h (ppc64_elf_edit_opd): Declare. - - * elf-bfd.h (struct cie_header): Move from elf_eh-frame.c. - (struct cie, struct eh_cie_fde, struct eh_frame_sec_info): Likewise. - (struct eh_frame_array_ent, struct eh_frame_hdr_info): Likewise. - (enum elf_link_info_type): Remove ELF_INFO_TYPE_EH_FRAME_HDR. - (struct eh_frame_hdr_info): Add "hdr_sec", remove "split". - (struct elf_link_hash_table): Add eh_info. - (struct elf_obj_tdata): Change eh_frame_hdr to an asection *. - (_bfd_elf_discard_section_eh_frame): Update prototype. - (_bfd_elf_discard_section_eh_frame_hdr): Likewise. - (_bfd_elf_write_section_eh_frame): Likewise. - (_bfd_elf_write_section_eh_frame_hdr): Likewise. - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Remove "ehdrsec" - param. Get "hdr_info" from link hash table. - (_bfd_elf_discard_section_eh_frame_hdr): Remove "sec" param. Get - header section from link hash table. Save header section to elf_tdata. - (_bfd_elf_maybe_strip_eh_frame_hdr): Remove local "sec". Use - header section from link hash table. Don't alloc hdr_info. Clear - hdr_sec instead of setting "strip". - (_bfd_elf_eh_frame_section_offset): Formatting. - (_bfd_elf_write_section_eh_frame): Remove "ehdrsec", add "info" param. - Get header section from link hash table. - (_bfd_elf_write_section_eh_frame_hdr): Remove "sec", add "info" param. - Get header section from link hash table. - * elf.c (map_sections_to_segments): Use cached eh_frame_hdr. - (get_program_header_size): Likewise. - (_bfd_elf_section_offset): Formatting. - * elflink.h (elf_link_create_dynamic_sections): Stash eh frame header - section pointer in link hash table. - (elf_bfd_final_link): Adjust _bfd_elf_write_section_eh_frame_hdr - and _bfd_elf_write_section_eh_frame calls. Update comment about - eh_frame entries. - (elf_bfd_discard_info): Adjust _bfd_elf_discard_section_eh_frame and - _bfd_elf_discard_section_eh_frame_hdr calls. Remove "ehdr". - - * po/SRC-POTFILES.in: Regenerate. - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't zero - relocs for discarded FDEs. Remove dead code. - (_bfd_elf_write_section_eh_frame_hdr): Remove dead code. - * elflink.h (elf_bfd_discard_info): Don't save edited relocs. - Tidy conditions under which stabs are edited. Formatting. - * elf64-sparc.c (sparc64_elf_relocate_section): Ignore overflows - from discarded relocs. - * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Add reloc output - section adjustments after testing magic values. - -2002-11-12 Thomas Moestl - - * elf64-sparc.c (sparc64_elf_adjust_dynamic_symbol): Correct - references to large plt symbols. - -2002-11-12 Klee Dienes - - * mach-o.c (bfd_mach_o_scan_read_thread): Don't re-use 'i' when - looking for an unused section name. - -2002-11-11 Kazu Hirata - - * coff-h8300.c: Fix formatting. - * elf32-h8300.c: Likewise. - * reloc16.c: Likewise. - -2002-11-09 Jeroen Dobbelaere - - * elf32-arm.h (elf32_arm_size_dynamic_sections): Don't strip output - section when dynamic section unused; _bfd_strip_section_from_output - instead. - -2002-11-08 Alan Modra - - * targets.c (_bfd_target_vector): Disable pef_vec, pef_xlib_vec - and sym_vec. - - * dwarf2.c: Revert last change. - -2002-11-07 Michal Ludvig - - * dwarf2.c (read_indirect_string, read_abbrevs, decode_line_info, - _bfd_dwarf2_find_nearest_line): Use - bfd_simple_get_relocated_section_contents() instead of - bfd_get_section_contents(). - * reloc.c (bfd_perform_relocation): Add sanity check. - * simple.c (simple_get_relocated_section_contents): If the section - does not have any relocs associated with it, just return the - unadjusted contents. - -2002-11-07 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section) : Correct test for filling in constant .got - contents, enabling for a non-DSO, for symbols defined in the - program with --export-dynamic. - -2002-11-07 Alan Modra - - * elf64-ppc.c: Comment typo fixes. - (ppc64_elf_merge_private_bfd_data): Allow BFD_ENDIAN_UNKNOWN input. - -2002-11-07 Nick Clifton - - * po/da.po: Updated Danish translation. - -2002-11-06 Alexandre Oliva - - * elf64-mips.c (mips_elf64_slurp_one_reloc_table): Generate - exactly three internal relocs per external reloc. Set reloc_count - to the external reloc count. - -2002-11-06 Klee Dienes - - * coff-stgo32.c (stub_bytes): Mark as const. - Fix comment formatting. - -2002-11-06 Klee Dienes - - * Makefile.am (BFD32_BACKENDS): Add mach-o.lo, pef.lo, and - xsym.lo. - (BFD32_BACKENDS_CFILES): Add mach-o.c, pef.c, and xsym.c. - (SOURCE_HFILES): Add mach-o.h, pef.h, pef-traceback.h, xsym.h - * archures.c (enum bfd_architecture): Add bfd_arch_m98k. - * bfd.c (struct bfd): Add private data for mach-o, pef, and sym. - * targets.c (enum bfd_flavour): Add flavours for mach-o, pef, and - sym. - (_bfd_target_vector): Add target vectors for mach-o, pef, and sym. - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - * bfd-in2.h: Regenerate. - * xsym.c: New file. Contains support for the Apple/Metrowerks - xSYM debugging format. - * xsym.h: New file. - * pef.c: New file. Contains support for the Apple Code Fragment - Manager Preferred Executable Format - * pef.h: New file. - * pef-traceback.h: New file. Contains support for parsing PowerPC - traceback tables as used by PEF executables (and perhaps other - systems as well). - * mach-o.c: New file. Contains support for the Mach-O object file - format. - * mach-o.h: New file. - * mach-o-target.c: New file. Declares the mach-o targets - themselves. Included three times by mach-o.c; each time with a - different set of macros set. - -2002-11-06 Graeme Peterson - - * Makefile.am: Remove entries for elf32-qnx.[ch]. - * Makefile.in: Regenerate. - * config.bfd: Change arm-nto to use bfd_elf32_{big|little}arm_vec, - ppc-nto to use bfd_elf32_powerpc{le}_vec, sh-nto to use - bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec. - * configure.in: Remove support for bfd_elf32_sh{l}qnx_vec, - bfd_elf32_powerpc{le}qnx_vec, bfd_elf32_{big|little}armqnx_vec, - and bfd_elf32_i386qnx_vec, and removed elf32-qnx.lo from other targets. - bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec. - * configure: Regenerate. - * elf32-qnx.c: Remove. - * elf32-qnx.h: Remove. - * elf.c: Remove calls to QNX specific set_nonloadable_filepos, - is_contained_by_filepos, and copy_private_bfd_data_p. - * elf-bfd.h (struct elf_backend_data): Remove set_nonloadable_filepos, - is_contained_by_filepos, and copy_private_bfd_data_p. - * elf32-i386.c: Remove QNX extended bfd support. - * elf32-ppc.c: Remove QNX extended bfd support. - * elf32-sh.c: Remove QNX extended bfd support. - * elfarm-nabi.c: Remove QNX extended bfd support. - * targets.c: Remove qnx vectors. - * elfxx-target.h (elf_backend_set_nonloadable_filepos): Remove - (elf_backend_is_contained_by_filepos): Remove. - (elf_backend_copy_private_bfd_data_p): Remove. - * po/SRC-POTFILES.in: Regenerate. - -2002-11-06 David O'Brien - Alan Modra - - * elf64-sparc.c (sparc64_elf_relocate_section): Adjust addend of - dynamic relocs against section symbols for the output section vma. - -2002-11-05 Alan Modra - - * elf32-arm.h (t2a1_push_insn, t2a2_ldr_insn, t2a3_mov_insn, - t2a4_bx_insn, t2a5_pop_insn, t2a6_bx_insn): Remove. - -2002-11-05 Kaz Kojima - Alan Modra - - * config.bfd (sh-*-linux*): Use bfd_elf*_sh64*lin_vec as sh64 - vectors in target_selvecs. - (shle-*-netbsdelf*): Use bfd_elf*_sh64*nbsd_vec as sh64 vectors - in target_selvecs. - (sh-*-netbsdelf*): Likewise. - * configure.in (assocvecs): New variable. Handle assocvecs like - selvecs. - * configure: Regenerate. - * format.c (bfd_check_format_matches): Store bfd_target pointers - in matching_vector instead of target names. Select first target - from bfd_associated_vector that matches a list of ambiguous targets. - * targets.c (_bfd_associated_vector): New array. - (bfd_associated_vector): New variable. - (_bfd_target_vector): Add bfd_elf*_sh64*lin_vec. - * libbfd-in.h (bfd_associated_vector): Declare. - * libbfd.h: Regenerate. - -2002-11-05 Elias Athanasopoulos - - * vms-gsd.c (_bfd_vms_write_gsd): Check that symbol->udata.p is - non-NULL before dereferencing. - -2002-11-04 Kaz Kojima - - * vms.c (vms_object_p): Restore the start address when returning - NULL. - -2002-11-04 Alan Modra - Hans-Peter Nilsson - - * elflink.h (struct elf_final_link_info): Add shndxbuf_size. - (elf_bfd_final_link): Don't bother zeroing symtab_hdr fields. - Set up a larger symshndxbuf, and write it out. Free it on - exit rather than freeing symbuf twice. Correct section index - on output section symbol loop. - (elf_link_output_sym): Accumulate symbol extension section - indices, reallocating symshndxbuf rather than writing it out. - (elf_link_flush_output_syms): Don't flush symshndxbuf. - * elf.c (assign_section_numbers): Init i_shdrp to all zero. - Use bfd_zalloc to clear i_shdrp[0] too. - -2002-11-03 Stephen Clarke - - * elf32-sh64-com.c (sh64_address_in_cranges): Use - _raw_size of cranges section if _cooked_size not yet set. - -2002-11-03 Hans-Peter Nilsson - - * elf32-v850.c (v850_elf_relax_delete_bytes): Correct parameters - for bfd_elf32_swap_symbol_out. - -2002-10-31 David O'Brien - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't mix - signed and unsigned in comparison. - -2002-10-30 Daniel Jacobowitz - - * coffcode.h: Remove extraneous '\'. - -2002-10-28 H.J. Lu - - * Makefile.am (targets.lo): Depend on Makefile instead of - config.status. - (archures.lo): Likewise. - * Makefile.in: Regenerated. - -2002-10-25 Jason Thorpe - - * config.bfd (mips*el-*-netbsd*, mips*-*-netbsd*): Add - bfd_elf64_bigmips_vec and bfd_elf64_littlemips_vec to - targ_selvecs. - -2002-10-25 Jim Wilson - - * elf64-sh64.c (sh_elf64_relocate_section): Call - _bfd_elf_rela_local_sym. Handle relocs against STT_SECTION symbol - of SHF_MERGE section. - -2002-10-25 Hans-Peter Nilsson - - * simple.c: Correct placement of ATTRIBUTE_UNUSED. - -2002-10-24 John David Anglin - - * aoutx.h (NAME(aout,swap_ext_reloc_in)): Cast bytes->r_index to - unsigned int. Cast RELOC_BASE10, RELOC_BASE13 and RELOC_BASE22 to - unsigned int. - (NAME(aout,final_link)): Cast enum used in assignment. - (aout_link_write_symbols): Cast enums in comparisons, int values to - boolean, enums in assignments to int. - (aout_link_input_section_std): Cast rel->r_index to unsigned int. - (aout_link_input_section_ext): Likewise. Cast enums used in - comparisons with unsigned ints. - (aout_link_reloc_link_order): Cast enum to int in assignment. - * archive.c (_bfd_generic_read_ar_hdr_mag): Cast result of memchr - calls to char *. - * bfd-in.h (bfd_set_section_vma): Cast enum true to unsigned int in - assignment. - * bfd-in2.h (bfd_set_section_vma): Likewise. - * bfd.c (bfd_record_phdr): Cast enums in assignments. - * binary.c (bfd_alloc): Cast enum to long. - * coffgen.c (_bfd_coff_is_local_label_name): Cast return to boolean. - * dwarf2.c (read_abbrevs): Add casts to enum types. - (read_attribute_value): Likewise. - (arange_add): Cast result of bfd_zalloc call. - (comp_unit_contains_address): Return true and false. - (comp_unit_find_nearest_line): Cast return to boolean. - * format.c (bfd_check_format_matches, bfd_set_format): Likewise. - * gen-aout.c: define macro '_' if not defined. - * libbfd.c (bfd_realloc): Cast malloc and realloc to PTR. - (bfd_bwrite): Cast bfd_realloc to bfd_byte *. - (bfd_write_bigendian_4byte_int): Cast return to boolean. - (bfd_seek): Cast bfd_realloc to bfd_byte *. - (bfd_generic_is_local_label_name): Cast return to boolean. - * libcoff.h (_bfd_coff_adjust_symndx): Remove extraneous '\'. - * linker.c (_bfd_link_hash_newfunc): Cast bfd_hash_allocate result to - struct bfd_hash_entry *. - (_bfd_generic_link_hash_newfunc): likewise. - (_bfd_generic_final_link): Cast enum to unsigned int. - * merge.c (sec_merge_emit): Cast return to boolean. - (merge_strings): Add casts to const unsigned char *. - * reloc.c (bfd_get_reloc_code_name): Cast enums in comparison to int. - (bfd_generic_get_relocated_section_content): Cast enum to unsigned int. - * section.c (bfd_section_hash_newfunc): Cast bfd_hash_allocate result - to struct bfd_hash_entry *. - (bfd_set_section_content): Add cast to PTR in comparison. - * simple.c (simple_dummy_warning, simple_dummy_undefined_symbol, - simple_dummy_reloc_overflow, simple_dummy_reloc_dangerous, - simple_dummy_unattached_reloc, - bfd_simple_get_relocated_section_contents): Add K&R declarations and - function definitions. - * srec.c (S3Forced): Initialize to false. - (srec_get_symtab): Cast return value from bfd_alloc to asymbol *. - * stabs.c (_bfd_link_section_stabs): Cast enum to int in comparisons. - (_bfd_discard_section_stabs): Likewise. Also cast return to boolean. - * syms.c (bfd_is_undefined_symclass): Cast return to boolean. - (_bfd_stab_section_find_nearest_line): Cast enum to bfd_byte in - comparisons. - -2002-10-23 Jakub Jelinek - - * elf64-alpha.c (elf64_alpha_check_relocs): Only put maybe_dynamic - relocs into shared lib non-allocated reloc sections. - -2002-10-23 Nathan Tallent - - * dwarf2.c (add_line_info): Ensure that the line_info_table is - sorted even when given an out-of-order line sequence. - (lookup_address_in_line_info_table): When an exact VMA match is - not found, return line information with the closest VMA. - -2002-10-23 Ross Alexander - - * elf64-hppa.c: Force DT_FLAGS to always be set. Required by - HPUX 11.00 patch PHSS_26559. - -2002-10-22 Alexandre Oliva - - * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Don't move - the options section into a separate section unless IRIX 6 - compatibility is enabled. - -2002-10-22 Alexandre Oliva - - * elflink.h (struct elf_link_sort_rela): Turn rel and rela - into arrays. - (elf_link_sort_cmp1, elf_link_sort_cmp2): Adjust. - (elf_link_sort_relocs): Likewise. Take int_rels_per_ext_rel - into account. - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Compose - R_MIPS_REL32 with R_MIPS64 if ABI_64_P. - -2002-10-21 Graeme Peterson - - * targets.c (_bfd_target_vector): Add missing qnx vectors. - -2002-10-21 Alan Modra - - * targets.c (bfd_target_list): Don't return the default target twice. - -2002-10-21 Elias Athanasopoulos - - * archive.c (_bfd_archive_bsd_update_armap_timestamp): Replace - perror with bfd_perror. - -2002-10-19 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Correctly handle - DT_RPATH and DT_RUNPATH. - -2002-10-19 Mark Kettenis - - * elf.c (elfcore_grok_note): Fix recognition on NT_PRXFPREG notes. - -2002-10-17 Denis Chertykov - - * elf32-ip2k.c (ELF_MACHINE_ALT1): Define alternate machine code - for ip2k port. - -2002-10-17 Alan Modra - - * elfxx-target.h (USE_REL): Don't define as 1. - * elf32-arm.h (USE_REL): Provide a default define of 0. - Use #if rather than #ifdef when testing USE_REL. - * elf32-m32r.c: Likewise. - - * elf32-arc.c (USE_REL): Define as 1. - * elf32-d10v.c (USE_REL): Likewise. - * elf32-m32r.c (USE_REL): Likewise. - * elf32-m68hc11.c (USE_REL): Likewise. - * elf32-m68hc12.c (USE_REL): Likewise. - * elf32-or32.c (USE_REL): Likewise. - * elfarm-nabi.c (USE_REL): Likewise. - -2002-10-16 Jakub Jelinek - - * config.bfd (s390-*-linux*): Add targ64_selvecs. - (s390x-*-linux*): Add targ_selvecs. - -2002-10-16 Alan Modra - - * Makefile.am (BFD32_BACKENDS): Remove elfarmqnx-nabi.lo, - elf32-i386-fbsd.lo, elf32-i386qnx.lo, elf32-ppcqnx.lo, - elf32-sh-lin.lo, elf32-sh64-lin.lo, elf32-sh-nbsd.lo, - elf32-sh64-nbsd.lo, elf32-shqnx.lo. Add elf32-qnx.lo. - (BFD32_BACKENDS_CFILES): Likewise for corresponding C files. - (BFD64_BACKENDS): Remove elf64-sh64-lin.lo, elf64-sh64-nbsd.lo. - (BFD64_BACKENDS_CFILES): Likewise for corresponding C files. - (SOURCE_HFILES): Add elf32-qnx.h. - (BUILD_HFILES): Add bfdver.h. - Run "make dep-am". - * Makefile.in: Regenerate. - * configure.in Update bfd vector dependencies. - * configure: Regenerate. - * elf32-i386-fbsd.c: Delete. Move code to elf32-i386.c. - * elf32-i386qnx.c: Likewise. - * elf32-ppcqnx.c: Delete. Move code to elf32-ppc.c. - * elf32-sh-nbsd.c: Delete. Move code to elf32-sh.c. - * elf32-sh-lin.c: Likewise. - * elf32-shqnx.c: Likewise. - * elf32-sh64-lin.c: Delete. Move code to elf32-sh64.c. - * elf32-sh64-nbsd.c: Likewise. - * elf64-sh64-lin.c: Delete. Move code to elf64-sh64.c. - * elf64-sh64-nbsd.c: Likewise. - * elfarmqnx-nabi.c: Delete. Move code to elfarm-nabi.c. - * elf32-arm.h (ELF_MAXPAGESIZE): Always define. - * elf32-i386.c: Remove ELF_ARCH and ELF32_I386_C_INCLUDED tests. - * elf32-ppc.c: Remove ELF32_PPC_C_INCLUDED tests. - * elf32-qnx.h (elf_backend_set_nonloadable_filepos): Always define. - (elf_backend_is_contained_by_filepos): Likewise. - (elf_backend_copy_private_bfd_data_p): Likewise. - Globalize and move functions to.. - * elf32-qnx.c: ..here. New file. - * elf32-sh.c: Remove ELF_ARCH and ELF32_SH_C_INCLUDED tests. Don't - emit target vectors when INCLUDE_SHMEDIA. - * elf32-sh64.c: Remove ELF_ARCH test. Move TARGET_* etc. defines to - end of file. - * elf64-sh64.c: Remove ELF_ARCH test. - * elfarm-nabi.c: Remove ELFARM_NABI_C_INCLUDED test. - * po/BLD-POTFILES.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2002-10-16 Alan Modra - - * elflink.h (elf_link_add_object_symbols): Error out on dynamic objects - loaded with --just-symbols. - - * elf32-i386qnx.c (TARGET_LITTLE_NAME): Define. - * elf32-ppcqnx.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define. - * elf32-shqnx.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define. - * elfarmqnx-nabi.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define. - -2002-10-15 Richard Henderson - - * Makefile.am (BFD64_BACKENDS): Remove elf64-alpha-fbsd. - (BFD64_BACKENDS_CFILES): Likewise. - * configure.in (bfd_elf64_alpha_freebsd_vec): Use elf64-alpha. - * elf64-alpha-fbsd.c: Remove file, move code ... - * elf64-alpha.c: ... here. - * Makefile.in, configure: Rebuild. - -2002-10-14 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section) [BRSGP]: Increment - VALUE, not ADDEND. - -2002-10-14 Stephen Clarke - - * elf32-sh.c (elf_sh_link_hash_entry): Replace - datalabel_got_offset with union of datalabel_got - offset and refcount. - (sh_elf_link_hash_newfunc): Initialize datalabel_got.refcount. - (allocate_dynrelocs): Delete unnecessary code for - STT_DATALABEL type. Create entry in got for - datalabel version of symbol if datalabel_got.refcount > 0. - (sh_elf_relocate_section): Use datalabel_got union. - (sh_elf_gc_sweep_hook): Pull common code to initialize - h and eh out of switch statement. Declare seen_stt_datalabel. - Initialize it. Decrement datalabel_got.refcount for - got relocs when seen_stt_datalabel is true. - Decrement local_got_refcounts entry for datalabel got relocs - of local symbols. - (sh_elf_copy_indirect_symbol): Copy datalabel_got field over. - (sh_elf_check_relocs): Declare seen_stt_datalabel. - Initialize it. When seen_stt_datalabel is true, increment - datalabel_got refcount rather than got.refcount. - (sh_elf_finish_dynamic_symbol): Create relocs to - initialize got entry for datalabel version of symbol. - -2002-10-14 Alan Modra - - * Makefile.am: Run "make dep-am". - (BFD_H_FILES): Remove version.h. - * bfd-in.h (BFD_VERSION, BFD_VERSION_DATE, BFD_VERSION_STRING): Move.. - * version.h: ..to here. - * configure.in (bfd_version_date): Remove. - (AC_OUTPUT): Make bfdver.h from version.h. - * bfd.c: #include "bfdver.h". - * vms-hdr.c: Likewise. - * Makefile.in: Regenerate. - * bfd-in2.h: Regenerate. - * configure: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2002-10-14 Alan Modra - - * archures.c (bfd_mach_i386_i386, bfd_mach_i386_i8086, - bfd_mach_i386_i386_intel_syntax, bfd_mach_x86_64, - bfd_mach_x86_64_intel_syntax bfd_mach_ppc, bfd_mach_ppc64, - bfd_mach_rs6k, bfd_mach_d10v, bfd_mach_sh, bfd_mach_v850, - bfd_mach_arc_5, bfd_mach_arc_6, bfd_mach_arc_7, bfd_mach_arc_8, - bfd_mach_m32r, bfd_mach_frv, bfd_mach_frvsimple, - bfd_mach_ia64_elf64, bfd_mach_ia64_elf32, - bfd_mach_ip2022, bfd_mach_ip2022ext, - bfd_mach_s390_31, bfd_mach_s390_64, bfd_mach_xstormy16): Renumber. - * bfd-in2.h: Regenerate. - -2002-10-14 Kaz Kojima - - * config.bfd (sh*eb-*-linux*, sh*-*-linux*): Add the alternative - endian vector to targ_selvecs. - -2002-10-13 Alexandre Oliva - - * elfxx-mips.c (mips_elf_calculate_relocation): Take - save_addend argument. Don't apply the 32-bit mask to a - GPREL32 value if it's to be used in another relocation. Don't - use forced-check computation of local_p to decide whether to - add gp0 to GPREL16 value. Don't use only the lowest 16 bits - of the addend of a non-in-place GPREL16 relocation. - (_bfd_mips_elf_relocate_section): Pass use_saved_addend_p to - mips_elf_calculate_relocation(). - -2002-10-12 Stephane Carrez - - * elf32-m68hc11.c (m68hc11_elf_relax_section): Don't treat relocs - with symbols in other sections if we relaxed something; the sections - output offsets must be re-computed before. - -2002-10-12 Stephane Carrez - - * elf32-m68hc11.c (m68hc11_elf_relax_section): Update symbols - handling to use Elf_Internal_Sym. - (m68hc11_elf_relax_delete_bytes): Likewise. - -2002-10-11 Kaz Kojima - - * elf32-sh.c (sh_elf_optimized_tls_reloc, sh_elf_mkobject, - sh_elf_object_p, dtpoff_base): New functions. - (sh_elf_howto_table): Add TLS relocs. - (sh_reloc_map): Likewise. - (sh_elf_info_to_howto): Support TLS relocs. - (elf_sh_link_hash_entry): Add tls_type and tls_tpoff32. - (sh_elf_hash_entry, sh_elf_tdata, sh_elf_local_got_tls_type): - New macros. - (sh_elf_obj_tdata): New. - (elf_sh_link_hash_table): Add tls_ldm_got. - (sh_elf_link_hash_table_create): Clear refcount of tls_ldm_got. - (allocate_dynrelocs): Support TLS relocs. - (sh_elf_size_dynamic_sections): Likewise. - (sh_elf_relocate_section): Support TLS relocs. Don't try to find - .rela.got section when found already. Return false after printing - error about unresolvable relocation. - (sh_elf_gc_sweep_hook): Support TLS relocs. - (sh_elf_check_relocs): Likewise. - (sh_elf_finish_dynamic_symbol): Likewise. - (bfd_elf32_mkobject, elf_backend_object_p): Define for TLS case. - * reloc.c: Add SH TLS relocs. - * bfd-in2.h, libbfd.h: Regenerate. - -2002-10-11 Daniel Jacobowitz - - * Makefile.in: Regenerated. - -2002-10-11 Daniel Jacobowitz - - * Makefile.am: Run dep-am. - (BFD_H_DEP): Add simple.c and linker.c. - (BFD32_LIBS): Add simple.lo. - (BFD32_LIBS_CFILES): Add simple.c. - * Makefile.in: Regenerated. - * bfd-in2.h: Regenerated. - * simple.c: New file. - -2002-10-11 Alan Modra - - * coff-arm.c (record_arm_to_thumb_glue): Avoid type-punned pointers. - (record_thumb_to_arm_glue): Likewise. - * ecoff.c (ecoff_link_add_externals): Likewise. - * elf32-arm.h (record_arm_to_thumb_glue): Likewise. - (record_thumb_to_arm_glue): Likewise. - * elf32-m32r.c (m32r_elf_add_symbol_hook): Likewise. - * elf32-sh.c (sh_elf_create_dynamic_sections): Likewise. - * elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise. - * elf64-alpha.c (elf64_alpha_create_dynamic_sections): Likewise. - * elf64-ppc.c (func_desc_adjust): Likewise. - * elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise. - (sh64_elf64_create_dynamic_sections): Likewise. - * elflink.c (_bfd_elf_create_got_section): Likewise. - (_bfd_elf_create_dynamic_sections): Likewise. - (_bfd_elf_create_linker_section): Likewise. - * elflink.h (elf_add_default_symbol): Likewise. - (elf_link_create_dynamic_sections): Likewise. - (NAME(bfd_elf,size_dynamic_sections)): Likewise. - * elfxx-ia64.c (elfNN_ia64_aix_add_symbol_hook): Likewise. - * elfxx-mips.c (mips_elf_create_got_section): Likewise. - (_bfd_mips_elf_add_symbol_hook): Likewise. - (_bfd_mips_elf_create_dynamic_sections): Likewise. - * linker.c (generic_link_add_symbol_list): Likewise. - * xcofflink.c (xcoff_link_add_symbols): Likewise. - - * elfxx-ia64.c (oor_brl, oor_ip): Conditionally define. - - * elf64-ppc.c (edit_opd): Only zero opd syms when function is - completely removed. Correct local sym adjustment. - -2002-10-10 Stephen Clarke - - * elf32-sh.c (elf_sh_pic_plt_entry_be, elf_sh_pic_plt_entry_le): - Correct mistake in calculation of address of .got. - * elf64-sh64.c (elf_sh64_pic_plt_entry_be, - elf_sh64_pic_plt_entry_le): Likewise. - -2002-10-09 Richard Shann - Stephen Clarke - - * Makefile.am: Add entries for elf32-sh64-lin.c and - elf64-sh64-lin.c. Regenerate. - * Makefile.in: Regenerate. - * config.bfd: Change sh64eb-*-linux* and sh64-*-linux* - to use sh64 vectors rather than sh vectors. - * configure.in: Add bfd_elf32_sh64lin_vec, bfd_elf32_sh64blin_vec, - bfd_elf64_sh64lin_vec, bfd_elf64_sh64blin_vec. - * configure: Regenerate. - * elf32-sh64-lin.c: New file. - * elf64-sh64-lin.c: New file. - * targets.c: Add bfd_elf32_sh64lin_vec, bfd_elf32_sh64blin_vec, - bfd_elf64_sh64lin_vec, bfd_elf64_sh64blin_vec. - -2002-10-08 H.J. Lu - - * elf32-i386.c (elf_i386_relocate_section): Re-arrange the - IE->LE transition for R_386_TLS_IE. - -2002-10-08 Alan Modra - - * elf64-ppc.c (edit_opd): Correct test for discarded sections. - -2002-10-07 Mark Elbrecht - - * cofflink.c (mark_relocs): Don't mark relocations in excluded - sections. - -2002-10-07 Alan Modra - - * elflink.h (elf_link_input_bfd): Remove BFD_VERSION_DATE dependent - code. - - * elf64-ppc.c (ppc64_elf_build_stubs): Increment .glink indx. - -2002-10-06 Alan Modra - - * opncls.c: Formatting. - (_bfd_new_bfd): Use a smaller section hash table. - -2002-10-05 Alexandre Oliva - - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Set the type - of the other two relocations packed with a REL32 to NONE. - -2002-10-02 Stephen Clarke - - * elf32-sh.c (elf_sh_link_hash_entry): Add gotplt_refcount. - (sh_elf_link_hash_newfunc): Initialize it. - (allocate_dynrelocs): Transfer gotplt refs from plt.refcount - to got.refcount for symbols that are forced local or when - we have direct got refs. - (sh_elf_gc_sweep_hook): Adjust gotplt_refcount. Use it - to correctly adjust got.refcount and plt.refcount. - (sh_elf_copy_indirect_symbol): Copy gotplt_refcount across. - (sh_elf_check_relocs): Increment gotplt_refcount. - -2002-10-01 Jakub Jelinek - - * elf32-i386.c (elf_i386_relocate_section): Fix - movl foo@indntpoff, %eax IE->LE transition. - -2002-10-01 Jakub Jelinek - - * elf64-x86-64.c (elf64_x86_64_relocate_section): Change TLSGD - sequence and its transitions. - -2002-10-01 Jakub Jelinek - - * elf32-i386.c (elf_i386_relocate_section): Resolve R_386_TLS_LDO_32 - to st_value + addend in non-code sections. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Resolve - R_X86_64_DTPOFF32 to st_value + addend in non-code sections. - -2002-09-30 Gavin Romig-Koch - Ken Raeburn - Aldy Hernandez - Eric Christopher - Richard Sandiford - - * archures.c (bfd_mach_mips4120, bfd_mach_mips5400): New. - (bfd_mach_mips5500): New. - * cpu-mips.c (I_mips4120, I_mips5400, I_mips5500): New. - (arch_info_struct): Add corresponding entries here. - * elfxx-mips.c (_bfd_elf_mips_mach): Handle E_MIPS_MACH_4120, - E_MIPS_MACH_5400 and E_MIPS_MACH_5500. - (_bfd_mips_elf_final_write_processing): Handle bfd_mach_mips4120, - bfd_mach_mips5400 and bfd_mach_mips5500. - (_bfd_mips_elf_mach_extends_p): New function. - (_bfd_mips_elf_merge_private_bfd_data): Use it to help merge - the EF_MIPS_MACH flags. - * bfd-in2.h: Regenerate. - -2002-09-28 Jason Thorpe - - * elf32-vax.c (elf_vax_size_dynamic_section): Don't strip - .got sections. - -2002-09-28 Alan Modra - - * elf.c (map_sections_to_segments): Correct test for start of - writable section in the same page as end of read-only section. - -2002-09-27 Matt Thomas - - * elf32-vax.c (elf_vax_check_relocs): Remove unused - local_got_refcounts usage. Remove allocation of got slot. - (elf_vax_gc_sweep_hook): Remove unused local_got_refcounts usage. - Remove de-allocation of got slot. - (elf_vax_size_dynamic_section): Fix some indentation. Add hash - traversal for elf_vax_instantiate_got_entries. Allow empty .got - sections to be GC'ed. - (elf_vax_instantiate_got_entries): New function. - (elf_vax_relocate_section): Simplify R_VAX_GOT32 handling. Remove - tests that are now handled by elf_vax_instantiate_got_entries. - Assert GOT entry falls within .got section size. Remove redundant - comparisions. Fix comments. - -2002-09-27 Jakub Jelinek - - * reloc.c: Add x86-64 TLS relocs. - * bfd-in2.h, libbfd.h: Rebuilt. - * elf64-x86-64.c (x86_64_elf_howto): Fix size fields for 32-bit - relocs. Add TLS relocs. - (x86_64_reloc_map): Add TLS relocs. - (elf64_x86_64_info_to_howto): Adjust for added TLS relocs. - (struct elf64_x86_64_link_hash_entry): Add tls_type field. - (GOT_UNKNOWN, GOT_NORMAL, GOT_TLS_GD, GOT_TLS_IE): Define. - (elf64_x86_64_hash_entry): Define. - (struct elf64_x86_64_obj_tdata): New. - (elf64_x86_64_tdata, elf64_x86_64_local_got_tls_type): Define. - (struct elf64_x86_64_link_hash_table): Add tls_ld_got. - (link_hash_newfunc): Initialize tls_type. - (elf64_x86_64_link_hash_table_create): Initialize tls_ld_got. - (elf64_x86_64_copy_indirect_symbol): Swap tls_type if necessary. - (elf64_x86_64_mkobject): New. - (elf64_x86_64_elf_object_p): Allocate struct elf64_x86_64_obj_tdata. - (elf64_x86_64_tls_transition): New. - (elf64_x86_64_check_relocs): Add r_type variable and use it. - Handle TLS relocs. - (elf64_x86_64_gc_sweep_hook): Handle TLS relocs. - (allocate_dynrelocs): Allocate GOT space for TLS relocs. - (elf64_x86_64_size_dynamic_sections): Likewise. - (dtpoff_base, tpoff): New. - (elf64_x86_64_relocate_section): Handle TLS relocs. - (elf64_x86_64_finish_dynamic_symbol): Only handle non-TLS GOT - entries. - (bfd_elf64_mkobject): Define. - - * elf32-i386.c (elf_i386_check_relocs) [R_386_TLS_LE]: Set - DF_STATIC_TLS if shared. - -2002-09-26 Thiemo Seufer - - * elfxx-mips.c (_bfd_mips_elf_fake_sections): Don't emit unneeded - empty relocation sections. - -2002-09-26 Alan Modra - - * elf64-ppc.c (ppc_build_one_stub): Don't build glink stubs here. - (ppc64_elf_build_stubs): Build them here instead. - -2002-09-24 Jakub Jelinek - - * elf32-sparc.c (elf32_sparc_relocate_section): Put R_SPARC_RELATIVE - addend into r_addend, not *r_offset. - (elf32_sparc_finish_dynamic_symbol): Likewise. - * elf64-sparc.c (sparc64_elf_finish_dynamic_symbol): Clear xword at - R_SPARC_RELATIVE's r_offset. - -2002-09-23 Nathan Tallent - - * dwarf2.c (decode_line_info): Update to correctly decode - the (non-standard DWARF2) out-of-order address sequences - generated by the Intel C++ 6.0 compiler for ia64-Linux. - -2002-09-23 Mark Elbrecht - - * config.bfd: For DJGPP targets, match with any cpu and any machine. - -2002-09-23 Alan Modra - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Zero relocs - for discarded FDEs. Remove redundant assignment. - * elflink.h (elf_bfd_discard_info): Save edited relocs. - -2002-09-22 H.J. Lu - - * elf64-alpha.c (elf64_alpha_merge_ind_symbols): Don't merge - the relocation count between different .reloc sections. - -2002-09-21 Alan Modra - - * elf32-ppc.c (ppc_elf_relocate_section): Allow ".sbss.*" and - ".sdata.*" for R_PPC_SDAREL16, ".sbss2*" and ".sdata2*" for - R_PPC_EMB_SDA2REL. Similarly for R_PPC_EMB_SDA21 and - R_PPC_EMB_RELSDA. - - * elfcode.h (elf_slurp_reloc_table_from_section): Make "symcount" - unsigned. Move "symcount" assignment out of loop. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * configure: Regenerate. - * po/SRC-POTFILES.in: Regnerate. - -2002-09-19 Nathan Tallent - - * dwarf2.c (_bfd_dwarf2_find_nearest_line): If address length is - zero, set it to 8 for (non-standard) 64-bit DWARF2 formats - (e.g. IRIX64). - -2002-09-19 Jakub Jelinek - - * elf32-ppc.c (ppc_elf_finish_dynamic_symbol): Clear .got word - even if generating R_PPC_RELATIVE reloc. - (ppc_elf_relocate_section): Make sure relocation is performed - if skip == -2. Clear memory at r_offset when creating dynamic - relocation. - -2002-09-19 Jakub Jelinek - - * reloc.c (BFD_RELOC_386_TLS_TPOFF, BFD_RELOC_386_TLS_IE, - BFD_RELOC_386_TLS_GOTIE): Add. - * bfd-in2.h, libbfd.h: Rebuilt. - * elf32-i386.c (elf_howto_table): Add R_386_TLS_TPOFF, R_386_TLS_IE - and R_386_TLS_GOTIE. - (elf_i386_reloc_type_lookup): Handle it. - (struct elf_i386_link_hash_entry): Change tls_type type to unsigned - char instead of enum, change GOT_* into defines. - (GOT_TLS_IE_POS, GOT_TLS_IE_NEG, GOT_TLS_IE_BOTH): Define. - (elf_i386_tls_transition): Handle R_386_TLS_IE and R_386_TLS_GOTIE. - (elf_i386_check_relocs): Likewise. Avoid crash if local symbol is - accessed both as normal and TLS symbol. Move R_386_TLS_LDM and - R_386_PLT32 cases so that R_386_TLS_IE can fall through. - Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs. - (elf_i386_gc_sweep_hook): Handle R_386_TLS_IE and R_386_TLS_GOTIE. - Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs. - (allocate_dynrelocs): Allocate 2 .got and 2 .rel.got entries if - tls_type is GOT_TLS_IE_BOTH. - (elf_i386_size_dynamic_sections): Likewise. - (elf_i386_relocate_section): Handle R_386_TLS_IE and R_386_TLS_GOTIE. - Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs. - (elf_i386_finish_dynamic_symbol): Use tls_type & GOT_TLS_IE to catch - all 4 GOT_TLS_* TLS types. - -2002-09-19 Nick Clifton - - * elflink.h (elf_fix_symbol_flags): When examining weak symbols, - follow indirect links. - -2002-09-19 Nathan Tallent - - * ecoffswap.h (ecoff_swap_pdr_in) : Update to - correctly sign-extend 32-bit ECOFF null values (0xffffffff, -1) - on 64 bit machines. - (ecoff_swap_sym_in) : Likewise. - * ecoff.c (_bfd_ecoff_slurp_symbolic_info): Fix error reading - ECOFF information: 'ioptMax' refers to the actual *size* - of the optimization symtab, not the number of entries. - -2002-09-19 Daniel Jacobowitz - - * elf32-arm.h (elf32_arm_adjust_dynamic_symbol): Update - ELF_LINK_HASH_NEEDS_PLT logic. - -2002-09-18 Daniel Jacobowitz - - * elfcode.h (elf_slurp_reloc_table_from_section): Check - correct relocation count. - -2002-09-17 Daniel Jacobowitz - - * bfd-in.h (bfd_get_dynamic_symcount): Define. - * bfd.c (struct _bfd): Add dynsymcount. - * bfd-in2.h: Regenerated. - * elf.c (_bfd_elf_canonicalize_dynamic_symtab): Set - abfd->dynsymcount. - * elfcode.h (elf_slurp_reloc_table_from_section): Check - for overflow. - -2002-09-17 Stan Cox - - * elf64-mips.c (mips_elf64_be_swap_reloca_out): Handle type2 and type3. - (mips_elf64_final_gp): Don't make up gp value. - * elfn32-mips.c (mips_elf_final_gp): Likewise. - * elfxx-mips.c (_bfd_mips_elf_final_link): Always create - .MIPS.options/.options section. - -2002-09-17 David O'Brien - - * elf32-i386-fbsd.c: Always label using the EI_OSABI method. - It is benign for FreeBSD < 4.1. Minor reformatting. - * elf64-alpha-fbsd.c: Likewise. - -2002-09-17 Jakub Jelinek - - * elf32-i386.c (elf_i386_relocate_section) [R_386_TLS_TPOFF32]: Negate - addend. - -2002-09-17 Alan Modra - - * elf64-alpha.c (alpha_elf_size_info): Make static. - -2002-09-17 Svein E. Seldal - - * coff-tic4x.c: Add function declarations and ATTRIBUTE_UNUSED. - * cpu-tic4x.c: Ditto. - -2002-09-17 Thiemo Seufer - - * elf64-mips.c (define elf_backend_ignore_discarded_relocs): Remove - duplicate define. - -2002-09-16 Bruno Haible - - * elf32-i386.c: Don't defined ELF_ARCH etc. if this file is included - by a target variant implementation. - * elf64-alpha.c: Likewise. - * elf32-i386-fbsd.c: New file. - * elf64-alpha-fbsd.c: New file. - * targets.c: Support bfd_elf32_i386_freebsd_vec and - bfd_elf64_alpha_freebsd_vec. - * configure.in: Accept the vectors bfd_elf32_i386_freebsd_vec, - bfd_elf64_alpha_freebsd_vec. - * Makefile.am (BFD32_BACKENDS): Add elf32-i386-fbsd.lo. - (BFD32_BACKENDS_CFILES): Add elf32-i386-fbsd.c. - (BFD64_BACKENDS): Add elf64-alpha-fbsd.lo. - (BFD64_BACKENDS_CFILES): Add elf64-alpha-fbsd.c. - (elf32-i386-fbsd.lo, elf64-alpha-fbsd.lo): Add dependencies. - * config.bfd: For FreeBSD targets, set targ_defvec to a FreeBSD - specific targets. Define OLD_FREEBSD_ABI_LABEL if appropriate. - -2002-09-12 Jakub Jelinek - - * elf32-i386.c (dtpoff_base, tpoff): Don't crash if tls_segment is - NULL. - (elf_i386_relocate_section): Return false after printing error about - unresolvable relocation. - -2002-09-12 Nick Clifton - - * elf32-arm.h (elf32_arm_final_link_relocate): Fix handling of - R_ARM_THM_PC11. - -2002-09-11 Jeffrey Law - - * elf32-h8300.c (elf32_h8_relax_section): Fix typo. - -2002-09-11 Andrew Haley - - * elf.c (_bfd_elf_find_nearest_line): Check functionname_ptr and - line_ptr before deciding we've found a symbol. - -2002-09-11 Nick Clifton - - * po/da.po: New Danish translation file. - * configure.in (LINGUAS): Add 'da'. - * configure: Regenerate. - -2002-09-10 Michael Snyder - - * irix-core.c (do_sections, do_sections64): New functions. - (irix_core_core_file_p): Call new functions do_sections, - do_sections64, depending on corefile (32-bit or 64-bit). - -2002-09-09 Richard Henderson - - * elfxx-ia64.c (elfNN_ia64_relax_section): Handle PCREL21M - and PCREL21F like PCREL21B. - -2002-09-04 Kevin Buettner - - * config.bfd (mips*-*-irix6*): Add new ABI vectors. Make n32 default - vector. - -2002-09-02 Nick Clifton - - * elf32-v850.c (v850_elf_final_link_relocate): Use helpful - names instead of cryptically overloaded bfd_reloc error - codes. - (v850_elf_relocate_section): Likewise. - (v850_elf_relax_section): Replace caching of external symbols - with caching of internal symbols obtained from calling - bfd_elf_get_elf_syms(). - Fixup problems with freeing cached allocated memory blocks. - -2002-09-02 Alan Modra - - * cpu-pj.c (scan_mach, compatible, arch_info_struct): Remove. - (bfd_pj_arch): Use bfd_default_scan. - * cpu-v850.c (scan): Remove. - (N): Use bfd_default_scan. - * cpu-z8k.c (scan_mach): Remove. - (arch_info_struct, bfd_z8k_arch): Reorganize so that the default is - first. Use bfd_default_scan. - - * ecoff.c (_bfd_ecoff_set_arch_mach_hook): Don't use hard-coded - bfd_mach constants. - (ecoff_get_magic): Likewise. - * elf32-v850.c (v850_elf_object_p): Likewise. - (v850_elf_final_write_processing): Likewise. - * mipsbsd.c (MY(set_arch_mach)): Likewise. - (MY(write_object_contents)): Likewise. - * coff64-rs6000.c (xcoff64_write_object_contents): Likewise. - * coffcode.h (coff_write_object_contents): Likewise. - (coff_set_arch_mach_hook): Add comment describing machine == 0. - Remove unnecessary "machine" assignments. - (coff_write_relocs): Test for the absolute section sym by testing - section and flags. - - * aoutx.h (NAME(aout,machine_type)): Recognize bfd_mach_i386_i386 - and bfd_mach_i386_i386_intel_syntax. - * pdp11.c (NAME(aout,machine_type)): Likewise. - -2002-08-30 John David Anglin - - * bfd-in.h (align_power): Cast constants to bfd_vma type. - * bfd-in2.h (align_power): Likewise. - -2002-08-30 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - - * cpu-avr.c (compatible): Don't use hard-coded mach constants. - * cpu-powerpc.c (powerpc_compatible): Likewise. - * cpu-rs6000.c (rs6000_compatible): Likewise. - -2002-08-28 Catherine Moore - - * elf32-v850.c (v850_elf_reloc_map): Add new relocs. - (v850-elf-reloc): Don't resolve pc relative relocs. - (v850_elf_ignore_reloc): New routine. - (v850_elf_final_link_relocate): Handle new relocs. - (v850_elf_relax_delete_bytes ): New routine. - (v850_elf_relax_section): New routine. - (bfd_elf32_bfd_relax_section): Define. - (HOWTO): New entries for new relocs. - * reloc.c (BFD_RELOC_V850_LONGCALL): New reloc. - (BFD_RELOC_V850_LONGJUMP): New reloc. - (BFD_RELOC_V850_ALIGN): New reloc. - * archures.c: Remove redundant v850ea architecture. - * cpu-v850.c: Remove redundant v850ea support. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerated. - -2002-08-28 Svein E. Seldal - - * config.bfd: Add tic4x-*-*coff* and c4x-*-*coff* target. - * configure.in: Add tic4x_coff vector files. - * configure: Regenerate. - * Makefile.am: Add tic4x target. - * Makefile.in: Regenerate. - -2002-08-27 Michael Hayes - - * archures.c: Add the BFD arch type tic4x. - * bfd-in.h: Add BFD_IN_MEMORY flag. - * coff-tic4x.c: New file. - * coffswap.h (coff_swap_sym_out): Add preadjuster. - * cpu-tic4x.c: New file. - * targets.c: Added tic4x- in list of xvecs. - * ticoff.h: New file. - * bfd-in2.h: Regenerate. - -2002-08-27 Adam Nemet - - * elf32-arm.h (elf32_arm_finish_dynamic_sections): Set the last - bit of DT_INIT and DT_FINI for Thumb functions. - -2002-08-26 Alan Modra - - * coffcode.h (coff_set_arch_mach_hook): Handle W65MAGIC. - -2002-08-26 Alan Modra - - * aoutx.h (NAME(aout,reloc_type_lookup)): Handle BFD_RELOC_8. - -2002-08-24 Kaz Kojima - - * elf32-sh.c (sh_elf_copy_indirect_symbol): New. - (create_got_section, allocate_dynrelocs, readonly_dynrelocs): - Likewise. - (struct elf_sh_pcrel_relocs_copied): Removed. - (struct elf_sh_dyn_relocs): New. - (struct elf_sh_link_hash_entry): Replace pcrel_relocs_copied - field with dyn_relocs. - (struct elf_sh_link_hash_table): Add short-cuts to get dynamic - sections and sym_sec. - (sh_elf_link_hash_newfunc): Clear dyn_relocs. - (sh_elf_link_hash_table_create): Clear shorts-cuts and sym_sec. - (sh_elf_create_dynamic_sections): Use create_got_section instead - of _bfd_elf_create_got_section. - (sh_elf_check_relocs): Likewise. - (sh_elf_create_dynamic_sections): Use short-cuts to the dynamic - sections. - (sh_elf_adjust_dynamic_symbol, sh_elf_size_dynamic_sections, - sh_elf_relocate_section, sh_elf_check_relocs, - sh_elf_finish_dynamic_symbol, sh_elf_finish_dynamic_sections): - Likewise. - (sh_elf_adjust_dynamic_symbol): Handle nocopyreloc. Keep the - dynamic relocations and avoiding the copy relocation when we - didn't find any dynamic relocations in the section which has - contents or is read-only. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New. - (sh_elf_size_dynamic_sections): Don't reset the size of - .rela.got section even if dynamic_sections_created flag is off. - Don't use sh_elf_discard_copies. Scan all input bfd and use - allocate_dynrelocs. Call readonly_dynrelocs to determine - whether we need DT_TEXTREL. - (sh_elf_adjust_dynamic_symbol): Use plt.refcount to determine - whether the symbol was never referred to. - (sh_elf_relocate_section): Use WILL_CALL_FINISH_DYNAMIC_SYMBOL. - (sh_elf_gc_sweep_hook): Fill with the real sweep function. - (sh_elf_check_relocs): Call create_got_section if the short-cut - to .got is null. Increment reference counters only instead of - allocating space on dynamic sections here. Don't conditionalize - uninitialized got.offset value when marking the symbol as a - global offset table entry. Keep relocations for symbols satisfied - by a dynamic library to avoid copy relocations for the symbol. - Set dynobj field of an elf hash table if needed. - (sh_elf_finish_dynamic_sections): Handle null section pointer - correctly. - (elf_backend_copy_indirect_symbol): Defined. - (elf_backend_can_refcount): Defined. - -2002-08-23 Nick Clifton - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Undo - previous change. Add comment explaining why. - -2002-08-23 Stephen Clarke - - * elf32-sh.c (elf_sh_plt0_entry_be, elf_sh_plt0_entry_le): Copy - contents of .got.plt[2] to tr0, not address of .got.plt. - (sh_elf_finish_dynamic_symbol): Do not apply GOT_BIAS when - patching absolute plt entry. For shmedia plt entry, set bottom bit - of branch to plt0 as this is a branch to an shmedia instruction. - * elf64-sh64.c (elf_sh64_plt0_entry_be, elf_sh64_plt0_entry_le): - Copy contents of .got.plt[2] to tr0, not address of .got.plt. - (elf_sh64_plt_entry_be, elf_sh64_plt_entry_le): Use ptrel to - branch to plt0. - (sh64_elf64_finish_dynamic_symbol): Do not apply GOT_BIAS when - patching absolute plt entry. For shmedia plt entry, branch to - plt0 is now ptrel, so use relative offset. Set bottom bit of - branch target as it is a branch to an shmedia instruction. - -2002-08-23 Stephen Clarke , - Richard Shann - - * elf32-sh.c (sh_elf_finish_dynamic_sections): Set LSB of DT_INIT - value if .init is an SHmedia function. Similarly for DT_FINI. - * elf64-sh64.c (sh64_elf64_finish_dynamic_sections): Likewise. - -2002-08-23 Stephen Clarke - - * elf32-sh.c (sh_elf_size_dynamic_sections): Zero initialize - dynamic section. - * elf64-sh64.c (sh64_elf64_size_dynamic_sections): Likewise. - -2002-08-22 Kaz Kojima - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Use a simple - byte read when reading the return address register column. - -2002-08-22 Nick Clifton - - * config.bfd: Add powepc64-*-*bsd* target. - -2002-08-22 Graeme Peterson - - * Makefile.am: Add entries for elf32-shqnx.c - * Makefile.in: Regenerate. - * config.bfd: Add support sh-*-nto* target. - * configure.in: Add support for bfd_elf32_sh{l}qnx_vec. - * configure: Regenerate. - * elf32-qnx.h: Changed typo "elf_i386qnx_*" to "elf_qnx_*" . - * elf32-sh.c: Do not include elf32-target.h if - ELF32_SH_C_INCLUDED is defined. - * elf32-shqnx.c: New file: Support for QNX. - * targets.c: Add bfd_elf32_sh{l}qnx_vec. - -2002-08-22 Nick Clifton - - * po/tr.po: Updated Turkish translation. - - * syms.c (_bfd_generic_read_minisymbols): Set bfd_error if the - symbols are not read. - -2002-08-22 Alan Modra - - * elf32-m68hc11.c: Formatting fixes. - (elf32_m68hc11_gc_mark_hook): Correct params. Remove unnecessary test. - * elf32-m68hc12.c: Formatting fixes. - (elf32_m68hc11_gc_mark_hook): Correct params. Remove unnecessary test. - -2002-08-22 Alan Modra - - * coff-rs6000.c (rs6000coff_vec ): Add SEC_CODE and - SEC_DATA. - (pmac_xcoff_vec): Likewise. - * coff64-rs6000.c (rs6000coff64_vec): Likewise. - (aix5coff64_vec): Likewise. - -2002-08-22 Alan Modra - - * elf-bfd.h (struct elf_backend_data): Add struct elf_backend_data - param to elf_backend_copy_indirect_symbol. - (_bfd_elf_link_hash_copy_indirect): Likewise. - * elflink.h (elf_add_default_symbol, elf_fix_symbol_flags): Adjust - calls to copy_indirect_symbol. - * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise. - * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. - * elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise. - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. - * elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise. - * elf64-x86-64.c (elf64_x86_64_copy_indirect_symbol): Likewise. - * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. - * elfxx-mips.c (_bfd_mips_elf_copy_indirect_symbol): Likewise. - * elfxx-mips.h (_bfd_mips_elf_copy_indirect_symbol): Likewise. - * elf.c (_bfd_elf_link_hash_copy_indirect): Likewise. Properly - test refcounts for "used" values. - -2002-08-21 John David Anglin - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Add PARAMS to - argument declaration. - -2002-08-19 Elena Zannoni - - * archures.c (bfd_mach_ppc_e500): Added. - * bfd-in2.h: Rebuilt. - * cpu-powerpc.c (bfd_powerpc_archs): Added e500. - -2002-08-19 Alan Modra - - * elf32-m68hc12.c (elf_backend_can_gc_sections): False. - -2002-08-17 Andrew Cagney - - * elf.c (bfd_elf_get_elf_syms): Change type of `esym' to - `bfd_byte'. - -2002-08-17 Stan Cox - - * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Use the - IRIX 6 segment layout for NEWABI. - -2002-08-16 Stephen Clarke - - * elf32-sh.c (sh_elf_gc_mark_hook): For sh64, skip indirect - symbols when looking for section referred to by a relocation. - * elf64-sh.c (sh_elf64_gc_mark_hook): Likewise. - -2002-08-15 Alan Modra - - * elf32-i370.c: Move reloc enum to include/elf/i370.h. - -2002-08-15 Hans-Peter Nilsson - - * elf32-cris.c (elf_cris_discard_excess_program_dynamics): Add - missing check for whether the symbol is referenced by DSO before - unexporting it as an unneeded dynamic symbol. - -2002-08-14 H.J. Lu - - * libbfd.h: Regenerate. - -2002-08-14 H.J. Lu - - * config.bfd: Always add 64bit vectors to 32bit Linux/mips. - -2002-08-14 Stephane Carrez - - * elf32-m68hc11.c (m68hc11_relax_group): New to relax group of - instructions. - (m68hc11_direct_relax): New to define table of relaxable instructions. - (find_relaxable_insn): New, find a relaxable insn. - (compare_reloc): New to compare two relocs. - (m68hc11_elf_relax_section): New, relax text sections. - (m68hc11_elf_relax_delete_bytes): New, delete bytes and adjust branchs. - (elf32_m68hc11_check_relocs): New function for GC support. - (elf32_m68hc11_relocate_section): New function for GC support. - (bfd_elf32_bfd_relax_section): Define to support linker relaxation. - (elf_backend_check_relocs): Likewise. - (elf_backend_relocate_section): Likewise. - -2002-08-13 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections): Don't count - definitions in shared objects when checking symbol with - undefined version. - -2002-08-13 Stephane Carrez - - * elf32-m68hc11.c (elf32_m68hc11_gc_mark_hook): New for section GC. - (elf32_m68hc11_gc_sweep_hook): Likewise. - (elf_backend_gc_mark_hook): Define for GC section support. - (elf_backend_gc_sweep_hook): Likewise. - (elf_backend_can_gc_sections): Likewise. - - * elf32-m68hc12.c: Likewise. - -2002-08-13 Stephane Carrez - - * elf32-m68hc11.c (_bfd_m68hc11_elf_print_private_bfd_data): New. - (_bfd_m68hc11_elf_merge_private_bfd_data): New function. - (_bfd_m68hc11_elf_set_private_flags): New function. - Use them to set/check/print ELF flags specific to 68HC11. - - * elf32-m68hc12.c (_bfd_m68hc12_elf_print_private_bfd_data): New. - (_bfd_m68hc12_elf_merge_private_bfd_data): New function. - (_bfd_m68hc12_elf_set_private_flags): New function. - Use them to set/check/print ELF flags specific to 68HC12. - -2002-08-13 Stephane Carrez - - * elf32-m68hc11.c (elf_m68hc11_howto_table): Add the new relocs; - fix masks for PC-rel relocs. - (m68hc11_elf_ignore_reloc): New function. - - * elf32-m68hc12.c (m68hc12_elf_special_reloc): New to handle specific - 68HC12 banked addressing relocs. - (m68hc12_phys_addr): New to compute physical address of banked memory. - (m68hc12_phys_page): Likewise for page. - (m68hc12_addr_is_banked): New to see if address is in banked area. - (elf_m68hc12_howto_table): Add new relocs and rename to xx12. - -2002-08-13 Stephane Carrez - - * reloc.c (BFD_RELOC_M68HC11_RL_JUMP, BFD_RELOC_M68HC11_RL_GROUP, - BFD_RELOC_M68HC11_LO16, BFD_RELOC_M68HC11_PAGE, - BFD_RELOC_M68HC11_24): New relocs for 68HC11/68HC12. - * bfd-in2.h: Regenerate. - -2002-08-12 H.J. Lu - - * elflink.h (elf_add_default_symbol): Preserve section across - elf_merge_symbol. - -2002-08-09 Graeme Peterson - - * Makefile.am: Add entries for elf32-ppcqnx.c, and add - elf32-qnx.h dependency to elfarmqnx-nabi.c and elf32-i386qnx.c. - * Makefile.in: Regenerate. - * config.bfd: Add support for powerpc{le}-*-nto targets. - * configure.in: Add support for bfd_elf32_powerpc{le}qnx_vec. - * configure: Regenerate. - * elf32-i386qnx.c: Moved backend functions into a QNX specific - common file "elf32-qnx.h", and now include that file. - * elf32-qnx.h: New file: QNX specific common elf backend. - * elf32-ppc.c: Do not include elf32-target.h if - ELF32_PPC_C_INCLUDED is defined. - * elf32-ppcqnx.c: New file: Support for QNX. - * elfarmqnx-nabi.c: Include elf32-qnx.h for qnx elf backend. - * targets.c: Add bfd_elf32_powerpc{le}qnx_vec. - -2002-08-09 Nick Clifton - - * po/sv.po: Updated Swedish translation. - -2002-08-09 Thiemo Seufer - - * elfxx-mips.c (mips_elf_global_got_index): Avoid segfault if - g->global_gotsym is NULL. - -2002-08-08 H.J. Lu - - * elflink.h (elf_add_default_symbol): Don't warn if a definition - overrides an indirect versioned symbol. - -2002-08-08 Jakub Jelinek - - * elf32-i386.c (elf_i386_relocate_section): Fill in proper addend - for R_386_TLS_TPOFF32 relocs against symndx 0. - -2002-08-07 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Check symbol - with undefined version if needed. - (elf_link_assign_sym_version): Match a default symbol with a - version without definition. No need to hide the default - definition separately. - -2002-08-08 Alan Modra - - * elflink.h (elf_link_output_extsym): Don't output symbols from - SEC_EXCLUDE sections. - - * aoutx.h (aout_link_write_symbols): Correct handling of warning syms. - -2002-08-07 Alan Modra - - * elf64-ppc.c (edit_opd): Arrange to drop symbols for discarded .opd - entries. - -2002-08-07 Thiemo Seufer - - * elfxx-mips.c (mips_elf_create_dynamic_relocation): Cast signedness - mismatch. - -2002-08-07 Thiemo Seufer - - * elfxx-mips.c (ABI_64_P): Remove superfluous check. - -2002-08-07 Thiemo Seufer - - * elf32-mips.c (mips_reloc_map): Fix typo. - -2002-08-06 Alan Modra - - * xcofflink.c (xcoff_write_global_symbol): Set n_scnum for abs_section. - -2002-08-06 Alan Modra - - * elf64-ppc.c (ppc64_elf_howto_raw): Zero all src_mask entries. - -2002-08-06 Alan Modra - - * libxcoff.h: Use PARAMS on function declarations. - * coff-rs6000.c (xcoff_generate_rtinit): Simplify size calc. - * coff64-rs6000.c (xcoff64_generate_rtinit): Likewise. - - * coff-rs6000.c: (xcoff_rtype2howto): Don't place reloc address in - addend. - * coff64-rs6000.c: (xcoff64_rtype2howto): Likewise. - -2002-08-06 Alan Modra - - * coff-rs6000.c: Formatting fixes. - (xcoff_calculate_relocation): Use PARAMS in declaration. - (xcoff_complain_overflow): Likewise. - (xcoff_ppc_relocate_section): Use old-style function pointer call. - (bfd_xcoff_backend_data): Remove useless comments. - (rs6000coff_vec): Likewise. - (bfd_pmac_xcoff_backend_data): Likewise. - (pmac_xcoff_vec): Likewise. - - * coff64-rs6000.c: Formatting fixes. - (xcoff64_calculate_relocation): Use PARAMS in declaration. - (xcoff64_ppc_relocate_section): Use old-style function pointer call. - (bfd_xcoff_backend_data): Remove useless comments. - (rs6000coff64_vec): Likewise. - (bfd_xcoff_aix5_backend_data): Likewise. - (aix5coff64_vec): Likewise. - -2002-08-06 Alan Modra - - * coff-rs6000.c (xcoff_howto_table): Revert some of last change to - mask entries. Use complain_overflow_dont for R_REF. - (xcoff_reloc_type_ba): Revert last change. - (xcoff_reloc_type_br): Likewise. - (xcoff_reloc_type_crel): Likewise. - (xcoff_ppc_relocate_section): Likewise. - * coff64-rs6000.c (xcoff64_reloc_type_br): Likewise. - (xcoff64_ppc_relocate_section): Likewise. - (xcoff64_howto_table): Revert some of last change to mask entries. - Use complain_overflow_dont for R_REF. - - * coff-rs6000.c (xcoff_howto_table): Fix src_mask entries. Make all - relocs with bitsize == 16 have size = 1. - (xcoff_reloc_type_ba): Correct src_mask and dst_mask adjustment. - (xcoff_reloc_type_br): Likewise. - (xcoff_reloc_type_crel): Likewise. - (xcoff_ppc_relocate_section): Set up src_mask and dst_mask correctly. - * coff64-rs6000.c (xcoff64_reloc_type_br): Correct src_mask and - dst_mask adjustment. - (xcoff64_ppc_relocate_section): Set up src_mask and dst_mask correctly. - (xcoff64_howto_table): Fix src_mask entries. Make all relocs with - bitsize == 16 have size = 1. - -2002-08-01 Denis Chertykov - - * elf32-ip2k.c: Processor manufacturer changed to Ubicom. - (struct misc): New field isymbuf. All free_* fields removed. - (symbol_value): Pass in internal syms. No need to swap syms in. - (ip2k_elf_relax_section): Use bfd_elf_get_elf_syms. Properly free - possibly cached info. - (tidyup_after_error): Removed. - (ip2k_elf_relax_section_pass1): Don't use removed fields of struct - misc. Use new field. - (adjust_all_relocations): Use internal syms. No need to swap syms - in and out. - (add_page_insn): Don't use removed fields of struct misc. - -2002-08-01 Nick Clifton - - * elf32-arm.h: Revert previous delta. - -2002-08-01 Nick Clifton - - * configure.in (AM_INIT_AUTOMAKE): Bump version number. - * configure: Regenerate. - -2002-07-31 H.J. Lu - - * config.bfd: Add x86-64 vector to Linux/i386 if 64bit BFD is - selected. - -2002-07-31 H.J. Lu - - * config.bfd: Add n32 vectors to 32bit Linux/mips if 64bit BFD - is selected. - -2002-07-31 Jakub Jelinek - - * elf32-i386.c (elf_i386_copy_indirect_symbol): Swap tls_type - if _bfd_elf_link_hash_copy_indirect will swap got.refcount. - -2002-07-31 Ian Dall - - * cpu-ns32k.c (_bfd_ns32k_put_immdeiate, _bfd_ns32k_get_immediate): - There is no 8 byte relocation type for this architecture. - (do_ns32k_reloc): Use bfd_vma instead of native types. - (bfd_ns32k_put_immediate, _bfd_ns32k_relocate_contents) put_data - returns void. - (_bfd_ns32k_put_displacement): Don't check for overflow. We can - rely on generic code to do that. - * aout-ns32k.c (howto_table): Add appropriate overflow detection - to all table entries. - (_bfd_ns32k_relocate_contents): put_data returns void. - * ns32k.h: (_bfd_ns32k_put_displacement, _bfd_ns32k_put_immediate) - (_bfd_do_ns32k_reloc_contents): Fix prototypes. put data functions - return void. - -2002-07-31 Ian Dall - - * aoutx.h (aout_link_check_ar_symbols): Whether to include an - archive object is target dependant. - -2002-07-31 Adam Nemet - - * elf32-arm.h (ARM_PLT_ENTRY_SIZE): Rename PLT_ENTRY_SIZE. - (THUMB_PLT_ENTRY_SIZE): New macro. - (PLT_ENTRY_SIZE): Return the appropriate *_PLT_ENTRY_SIZE. - (elf32_arm_plt0_entry): Rename PLT_ENTRY_SIZE to - ARM_PLT_ENTRY_SIZE. - (elf32_arm_plt_entry): Likewise. - (elf_backend_plt_header_size): Likewise. - (elf32_thumb_plt0_entry): New global. - (elf32_arm_finish_dynamic_sections): Use it. Put Thumb entries - into .plt.thumb. - (elf32_thumb_plt_entry): New global. - (elf32_arm_finish_dynamic_symbol): Use it. Use .thumb.plt for - Thumb entries. Set the bottom bit of the corresponding GOT entry - for a Thumb PLT entry. - (struct elf32_arm_plt_entry_info): New structure. - (struct elf32_arm_link_hash_entry, plt_info): New member of this - type. - (elf32_arm_link_hash_newfunc): Initialize new member. - (elf32_arm_final_link_relocate, R_ARM_THM_PC22 case): Handle - relocations against the PLT. - (elf32_arm_check_relocs, case R_ARM_PLT32 case): Set - first_rel_type if this is the first time we encounter the symbol. - (elf32_arm_check_relocs, case R_ARM_THM_PC22 case): New case. - Determine if relocation needs a PLT entry. Set first_rel_type if - this is the first time we encounter the symbol - (elf32_arm_adjust_dynamic_symbol): Create PLT entries for Thumb - functions as well. - (elf32_arm_size_dynamic_sections): Handle .plt.thumb like .plt. - (elf32_arm_create_dynamic_sections): New function. Create the - .plt.thumb section. - (elf_backend_create_dynamic_sections): Call it. - -2002-07-31 Nick Clifton - - * bfd.c (bfd_alt_mach_code): Rename parameter 'index' to - 'alternative' in order to avoid shadowing global symbol of the - same name. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * libcoff.h: Regenerate. - -2002-07-31 Thiemo Seufer - - * Makefile.am: Add n32 ABI support. - * Makefile.in: Regenerate. - * config.bfd: Add n32 vectors to mips64*-*-linux* targets. Treat 64 - bit vectors for mips*-*-linux targets as optional. - * configure.in: Add n32 ABI vectors. - * configure: Regenerate. - * elf32-mips.c (mips_elf32_object_p): Reject n32 ABI files. - * elfn32-mips.c: New file, n32 ABI support. - * targets.c: Add n32 ABI vectors. - -2002-07-30 Graeme Peterson - - * elfarmqnx-nabi.c: New file: Support for QNX. - * config.bfd: Add support for arm-*-nto target. - * configure.in: Add support for bfd_elf32_{big|little}armqnx_vec. - * configure: Regenerate. - * Makefile.am: Add entries for elfarmqnx-nabi.c. - * Makefile.in: Regenerate. - * elf32-arm.h (ELF_MAXPAGESIZE): Do not define if already defined. - Do not define global function if ELFARM_NABI_C_INCLUDED is defined. - * elfarm-nabi.c: Do not include elf32-arm.h if - ELFARM_NABI_C_INCLUDED is defined. - * targets.c: Add bfd_elf32_{big|little}armqnx_vec. - -2002-07-30 Nick Clifton - - * po/sv.po: Updated Swedish translation. - -2002-07-30 Jakub Jelinek - - * elf.c (elf_fake_sections): Fix up .tbss sh_size and sh_type. - -2002-07-30 Alan Modra - - * aoutx.h (some_aout_object_p): Clean up tdata properly on error. - * archive.c (bfd_generic_archive_p): Likewise. - * coff-rs6000.c (_bfd_xcoff_archive_p): Likewise. - (_bfd_xcoff_archive_p): Use bfd_scan_vma in place of strtol. - * coff64-rs6000.c (xcoff64_slurp_armap): Likewise. - (xcoff64_archive_p): Likewise. - (xcoff64_openr_next_archived_file): Likewise. - (xcoff64_archive_p): Clean up tdata properly on error. - * coffgen.c (coff_real_object_p): Likewise. - (coff_object_p): Release filehdr and opthdr. - * ecoff.c (_bfd_ecoff_archive_p): Clean up tdata properly on error. - * ieee.c (ieee_archive_p): Likewise. - * ihex.c (ihex_object_p): Likewise. - (ihex_mkobject): Always allocate tdata. - * peicode.h (pe_ILF_object_p): Release bfd_alloc'd buffer on error. - * srec.c (srec_mkobject): Always allocate tdata. - (srec_object_p): Clean up tdata properly on error. - (symbolsrec_object_p): Likewise. - * versados.c (versados_object_p): Likewise. - * vms-misc.c (_bfd_vms_get_record): Use bfd_malloc instead of malloc, - and bfd_realloc instead of realloc. - (add_new_contents): Use bfd_alloc instead of bfd_malloc for sections. - * vms.c (vms_initialize): Always allocate tdata. Use bfd_alloc in - place of bfd_malloc, simplifying error freeing. Free hash table too. - (vms_object_p): Clean up tdata on error. - (vms_mkobject): Don't complain on stderr if vms_initialize fails. - (vms_close_and_cleanup): Adjust for bfd_alloc use. - -2002-07-30 Alan Modra - - * elfxx-ia64.c (elfNN_ia64_final_write_processing): Set e_flags. - -2002-07-26 Chris Demetriou - - * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Merge ASE - flags into resulting BFD. - -2002-07-26 Alan Modra - - From John Reiser - * elf32-i386.c (elf_i386_link_hash_table_create): Clear - tls_ldm_got.refcount. - -2002-07-25 Thiemo Seufer - - * elf64-mips.c: Update TODO comment. - (mips_elf64_higher_reloc,mips_elf64_highest_reloc, - mips_elf64_gprel16_reloca): Remove prototypes. - (mips16_jump_reloc,mips16_gprel_reloc): Add functions. - (UNUSED_RELOC): Replace by EMPTY_RELOC. - (mips_elf64_howto_table_rel): Use special R_MIPS_HI16 handling. Remove - wrong comments. Remove disfunctional support of R_MIPS_HIGHER and - R_MIPS_HIGHEST. - (mips_elf64_howto_table_rela): Fix handling of R_MIPS_GPREL16 and - R_MIPS_GOT16. Remove wrong comments. - (elf_mips16_jump_howto,elf_mips16_gprel_howto, - elf_mips_gnu_vtinherit_howto,elf_mips_gnu_vtentry_howto): New, code - from elf32-mips.c. - (mips_elf64_hi16_reloc): Fix formatting. - (mips_elf64_higher_reloc,mips_elf64_highest_reloc): Remove. - (mips_elf64_got16_reloc): Fix formatting. Remove superfluous code. - Better comment. Fall back to R_MIPS_GOT_DISP instead of abort(). - (mips_elf64_gprel16_reloc): Make static. Add check for - partial_inplace. - (mips_elf64_gprel16_reloca): Remove. - (mips_elf64_literal_reloc): New function. - (mips_elf64_gprel32_reloc): Fix formatting. - (mips_elf64_shift6_reloc): Fix comment. Make static. - (mips16_jump_reloc,mips16_gprel_reloc): New functions, code from - elf32-mips.c. - (elf_reloc_map,mips_reloc_map): New mapping table, similiar as in - elf32-mips.c - (bfd_elf64_bfd_reloc_type_lookup): Use the mapping table. Enable GNU - specific relocations. - (mips_elf64_rtype_to_howto): Enable GNU specific relocations. - (mips_elf64_object_p): Invert logic to check for SGI-ish ABI. - (ELF_MAXPAGESIZE): Add comment. - -2002-07-25 Nick Clifton - - * po/sv.po: Updated Swedish translation. - * po/es.po: Updated Spanish translation. - * po/fr.po: Updated French translation. - -2002-07-25 Alan Modra - - * elf-bfd.h (_bfd_elf32_link_record_local_dynamic_symbol): Define - as elf_link_record_local_dynamic_symbol. - (_bfd_elf64_link_record_local_dynamic_symbol): Likewise. - (elf_link_record_local_dynamic_symbol): Declare. Now returns int. - * elflink.h (elf_link_record_local_dynamic_symbol): Move to.. - * elflink.c: .. here. Use bfd_elf_get_elf_syms. Check whether an - attempt is made to record a symbol in a discarded section, and - return `2' in that case. - -2002-07-24 Nick Clifton - - * po/sv.po: Updated Swedish translation. - * po/es.po: Updated Spanish translation. - -2002-07-23 Alan Modra - - * po/SRC-POTFILES.in: Regenerate. - - * elf-hppa.h (elf_hppa_relocate_section): If relocatable, return - immediately. Remove code handling relocatable linking. - * elf32-avr.c (elf32_avr_relocate_section): Likewise. - * elf32-cris.c (cris_elf_relocate_section): Likewise. - * elf32-fr30.c (elf32_frv_relocate_section): Likewise. - * elf32-frv.c (elf32_frv_relocate_section): Likewise. - * elf32-h8300.c (elf32_h8_relocate_section): Likewise. - * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. - * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf32-v850.c (v850_elf_relocate_section): Likewise. - * elf32-vax.c (elf_vax_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf32-avr.c (elf_backend_rela_normal): Define. - * elf32-cris.c: Likewise. - * elf32-fr30.c: Likewise. - * elf32-frv.c: Likewise. - * elf32-h8300.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-ip2k.c: Likewise. - * elf32-sparc.c: Likewise. - * elf32-v850.c: Likewise. - * elf32-vax.c: Likewise. - * elf64-hppa.c: Likewise. - * elf64-sparc.c: Likewise. - * elf32-fr30.c (elf32_frv_relocate_section): Edit comment. - * elf32-frv.c (elf32_frv_relocate_section): Likewise. - * elf32-i860.c (elf32_i860_relocate_section): Likewise. - * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. - * elf32-m32r.c (m32r_elf_relocate_section): Likewise. - * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. - * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. - * elf-m10200.c (USE_RELA): Don't define. - * elf-m10300.c: Likewise. - * elfarm-oabi.c: Likewise. - * elf32-i370.c: Likewise. - * elf32-ip2k.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mcore.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-vax.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-x86-64.c: Likewise. - * elfxx-ia64.c: Likewise. - * elf32-avr.c (USE_REL): Don't undef. - * elf32-ip2k.c: Likewise. - -2002-07-23 Nick Clifton - - * elf-bfd.h (struct elf_backend_data): Add new bitfield - 'want_p_paddr_set_to_zero'. - * elfxx-target.h: Set default value for want_p_paddr_set_to_zero - to false; - * elfxx-ia64.c: Set want_p_paddr_set_zero for HPUX target. - * elf.c (copy_private_bfd_data): Test want_p_paddr_set_zero. - -2002-07-23 Gabor Keresztfalvi - - * nlmcode.h (nlm_swap_auxiliary_headers_out): Swapped the order of - the MeSsAgEs and CoPyRiGhT tags to make >=NW4.x NLM loaders to - show the Copyright string. - Minor formatting tidy ups. - -2002-07-23 Nick Clifton - - * po/fr.po: Updated French translation. - * po/sv.po: Updated Swedish translation. - -2002-07-23 Alan Modra - - * elflink.h (elf_link_input_bfd): Don't change internal symbols - when outputting relocs. - -2002-07-20 Jason Thorpe - - * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Only insert - DT_PLTGOT into the dynamic section if there is a PLT. - -2002-07-19 Thiemo Seufer - - * elfxx-mips.c (_bfd_mips_elf_discard_info): New function, code from - elf32-mips.c. - (_bfd_mips_elf_write_section): Likewise. - * elfxx-mips.h (_bfd_mips_elf_discard_info): New prototype. - (_bfd_mips_elf_write_section): Likewise. - * elf32-mips.c (elf32_mips_discard_info): Move to elfxx-mips.c. - (elf32_mips_write_section): Likewise. - * elf64-mips.c (_bfd_mips_elf_ignore_discarded_relocs): Use it. - (_bfd_mips_elf_write_section): Likewise. - -2002-07-19 Alan Modra - - * elfxx-ia64.c: (elfNN_ia64_modify_segment_map): Properly scan - PT_IA_64_UNWIND segments for a given section. - -2002-07-17 H.J. Lu - - * Makefile.am: Fix a typo. - * Makefile.in: Regenerate. - -2002-07-15 Denis Chertykov - Frank Ch. Eigler - Ben Elliston - Alan Lehotsky - John Healy - Graham Stott - Jeff Johnston - - * Makefile.am: Add support for ip2k. - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - * archures.c: Add support for ip2k. - * config.bfd: Add support for ip2k. - * configure.in: Add support for ip2k. - * configure: Regenerate. - * reloc.c: Add support for ip2k. - * targets.c: Add support for ip2k. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * cpu-ip2k.c: New file. - * elf32-ip2k.c: New file. - -2002-07-17 Ian Rickards - - * dwarf2.c (concat_filename): If we can't establish the directory - just return the filename. - -2002-07-16 Moritz Jodeit - - * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Correct order of memset args. - -2002-07-16 Alan Modra - - * elflink.h: Formatting fixes, tidy prototypes. - (elf_link_assign_sym_version): Move common code out of loop. - -2002-07-16 Alan Modra - - * elflink.h (elf_link_input_bfd): Don't call reloc_emitter when - reloc section size is zero. Correct reloc output location. - -2002-07-16 John David Anglin - - * elf-hppa.h (elf_hppa_reloc_final_type): Use R_PARISC_PCREL16F as - the final type for the e_fsel selector when generating PA2.0W code. - (elf_hppa_relocate_insn): Provide support for PA2.0W 16-bit format 1 - relocations. - -2002-07-14 H.J. Lu - - * elflink.h (elf_link_assign_sym_version): Hide the default - definition if there is a hidden versioned definition. - -2002-07-12 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section): Drop nonsensical - dynamic reference test in assertion when initializing GOT with - static contents. Just assert that there are either no dynamic - sections, the symbol is defined in the regular objects or that the - symbol is undef weak. Tweak comment. - (elf_cris_finish_dynamic_symbol): Emit .got reloc for a program - only if the symbol isn't defined in the program and isn't undef - weak. - (elf_cris_adjust_dynamic_symbol): Simplify condition for getting - rid of PLT entry: only do it if the symbol isn't defined in a DSO. - When doing so, clear ELF_LINK_HASH_NEEDS_PLT. Tweak comments. - (elf_cris_discard_excess_program_dynamics): Don't consider - ELF_LINK_HASH_REF_DYNAMIC when omitting .got runtime relocs. - -2002-07-11 Alan Modra - - * elf32-i386.c (elf_i386_relocate_section): Don't complain about - unresolved debugging relocs in dynamic applications. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - -2002-07-10 Alan Modra - - * elf64-ppc.c (ONES): Define. - (ppc64_elf_howto_table): Use ONES here to avoid warnings. Fill in - missing src_mask fields. Tweak R_PPC64_NONE, R_PPC64_COPY. Fill - in missing dst_mask fields on R_PPC64_PLT32, R_PPC64_PLTREL32. - - * elf64-ppc.c (ppc64_elf_get_symbol_info): Delete. - (ppc64_elf_set_private_flags): Delete. - (ppc64_elf_section_from_shdr): Delete. - (ppc64_elf_merge_private_bfd_data): Remove flag checking/merging code. - (ppc64_elf_fake_sections): Delete. - (bfd_elf64_bfd_set_private_flags): Don't define. - (bfd_elf64_get_symbol_info): Likewise. - (elf_backend_section_from_shdr): Likewise. - (elf_backend_fake_sections): Likewise. - -2002-07-10 Marco Walther - - * elf.c: (assign_section_numbers) Set sh_entsize for .stab only - when not already set. - * elf64-sparc.c: (sparc64_elf_fake_sections): New function. - (elf_backend_fake_sections): Define. - -2002-07-10 Alan Modra - - * merge.c (_bfd_merge_section): Remove redundant output_section check. - Formatting. - (_bfd_merge_sections): Don't set SEC_EXCLUDE on unused sections. - -2002-07-09 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section): Move sanity-check for - NULL sym_hashes to just before use. - : In test for local symbol, accept also - symbol with non-default visibility. - : Ditto. - : - Ditto. - (cris_elf_gc_sweep_hook): Only decrease h->plt.refcount for - symbol with non-default visibility. - (cris_elf_check_relocs): At tests for local symbol before - increasing h->plt.refcount, also check for non-default - visibility. Ditto when checking for local symbol to eliminate - pc-relative runtime relocs. - -2002-07-08 Alan Modra - - * elf.c: Formatting. - (IS_SOLARIS_PT_INTERP): Add p_paddr and p_memsz checks. - (INCLUDE_SECTION_IN_SEGMENT): Remove IS_SOLARIS_PT_INTERP. - (copy_private_bfd_data): Set p_vaddr on broken Solaris PT_INTERP - segments. - -2002-07-07 Mark Mitchell - Alan Modra - - * cofflink.c (_bfd_coff_final_link): On PE COFF systems, take into - account the impact of relocation count overflow when computing - section offsets. - * coffcode.h (coff_write_relocs): Use obj_pe when deciding whether - or not to apply the PE COFF reloc overflow handling. Fix a - fencepost error in deciding whether or not to use that technique. - -2002-07-07 Alan Modra - - * elf-bfd.h (struct elf_reloc_cookie): Remove locsym_shndx, - change type of locsyms. - (bfd_elf_get_elf_syms): Declare. - * elf.c (bfd_elf_get_elf_syms): New function. - (group_signature): Use bfd_elf_get_elf_syms. - (bfd_section_from_r_symndx): Likewise. - * elfcode.h (elf_slurp_symbol_table): Likewise. - * elflink.h (elf_link_is_defined_archive_symbol): Likewise. - (elf_link_add_object_symbols): Likewise. Reorganise to increase - locality of various data structures. Properly free internal relocs. - (elf_bfd_final_link): Properly free internal relocs. - (elf_link_check_versioned_symbol): Use bfd_elf_get_elf_syms. - (elf_link_input_bfd): Likewise. - (elf_gc_mark): Likewise. Properly free internal relocs. - (elf_gc_sweep): Properly free internal relocs. - (elf_reloc_symbol_deleted_p): No need to swap syms in. - (elf_bfd_discard_info): Use bfd_elf_get_elf_syms. Properly free - internal relocs. - * elf-m10200.c (mn10200_elf_relax_section): Use bfd_elf_get_elf_syms. - Properly free possibly cached info. - (mn10200_elf_relax_delete_bytes): Remove symbol swapping code. - (mn10200_elf_symbol_address_p): Pass in internal syms. Remove - symbol swapping code. - (mn10200_elf_get_relocated_section_contents): Use bfd_elf_get_elf_syms. - Properly free possibly cached info. - * elf-m10300.c (mn10300_elf_relax_section): As above for elf-m10200.c. - (mn10300_elf_relax_delete_bytes): Likewise. - (mn10300_elf_symbol_address_p): Likewise. - (mn10300_elf_get_relocated_section_contents): Likewise. - * elf32-h8300.c (elf32_h8_relax_section): As above for elf-m10200.c. - (elf32_h8_relax_delete_bytes): Likewise. - (elf32_h8_symbol_address_p): Likewise. - (elf32_h8_get_relocated_section_contents): Likewise. - * elf32-m32r.c (m32r_elf_relax_section): As above for elf-m10200.c. - (m32r_elf_relax_delete_bytes): Likewise. - (m32r_elf_get_relocated_section_contents): Likewise. - * elf32-sh.c (sh_elf_reloc_loop): Free section contents using - elf_section_data to determine whether cached. - (sh_elf_relax_section): As above for elf-m10200.c. - (sh_elf_relax_delete_bytes): Likewise. - (sh_elf_get_relocated_section_contents): Likewise. - * elf32-xstormy16.c (xstormy16_elf_relax_section): As above. - * elf64-alpha.c (elf64_alpha_relax_section): As above. Also delay - reading of local syms. - * elf64-mmix.c (mmix_elf_relax_section): Likewise. - * elf64-sh64.c (sh_elf64_get_relocated_section_contents): As above. - * elfxx-ia64.c (elfNN_ia64_relax_section): As above. - * elfxx-mips.c (_bfd_mips_elf_check_relocs): Properly free internal - relocs. - * elf32-arm.h (bfd_elf32_arm_process_before_allocation): Properly - free internal relocs and section contents. Don't read symbols. - * elf32-hppa.c (get_local_syms): Use bfd_elf_get_elf_syms. - (elf32_hppa_size_stubs): Don't free local syms. - * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Delay - reading of local syms. Use bfd_elf_get_elf_syms. Properly free - possibly cached info. - * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise. - * elf64-hppa.c (elf64_hppa_check_relocs): Use bfd_elf_get_elf_syms. - * elf64-ppc.c (struct ppc_link_hash_table): Delete bfd_count and - all_local_syms. - (get_local_syms): Delete function. - (edit_opd): Use bfd_elf_get_elf_syms. Free on error exit. Cache - on exit. - (ppc64_elf_size_stubs): Use bfd_elf_get_elf_syms. Free/cache on exit. - -2002-07-05 Jim Wilson - - * syms.c (decode_section_type): New. - (bfd_decode_symclass): Call decode_section_type. - -2002-07-04 Jakub Jelinek - - * merge.c (_bfd_merged_section_offset): Avoid accessing byte before - section content start. - Reported by Michael Schumacher . - -2002-07-04 Alan Modra - - * section.c (_bfd_strip_section_from_output): Remove unnecessary - link order code. Don't actually remove the output section here; - Just set a flag for the linker to do so. - * elflink.c (_bfd_elf_link_renumber_dynsyms): Test for removed - sections when setting up output section dynsyms. - -2002-07-04 Alan Modra - - * elflink.h (elf_link_add_object_symbols): Revert 1999-09-02 hpux - fudge. - * elf.c (bfd_section_from_shdr): Work around broken hpux shared - libs here instead. - -2002-07-02 Martin Schwidefsky - - * elf64-s390.c (create_got_section): Set .got section alignment to - 8 bytes. - (elf_s390_check_relocs): Set .rela.dyn section alignment to 8 bytes. - -2002-07-02 Alan Modra - - * elf.c (_bfd_elf_reloc_type_class): Fix comment grammar. - -2002-07-01 Matt Thomas - - * elf32-vax.c (elf32_vax_print_private_bfd_data): Change EF_* - to EF_VAX_*. - -2002-07-01 Thiemo Seufer - - * elfxx-mips.c (ABI_64_P): Fix comment. - (MIPS_ELF_OPTIONS_SECTION_NAME,MIPS_ELF_STUB_SECTION_NAME): Use the - new section names for N64 ABI. - (mips_elf_output_extsym): No special _gp_disp handling for NewABI. - (mips_elf_calculate_relocation): Code formatting. - (mips_elf_create_dynamic_relocation): Likewise. - (_bfd_mips_elf_fake_sections): IRIX6 needs this hack, too. - (_bfd_mips_elf_size_dynamic_sections): Handle GOT_PAGE for any NewABI. - (_bfd_mips_elf_relocate_section): No special handling for R_MIPS_64 - in any NewABI. - (_bfd_mips_elf_finish_dynamic_symbol): No special _gp_disp handling - for NewABI. - (_bfd_mips_elf_modify_segment_map): Handle any N64 ABI. - (_bfd_mips_elf_gc_sweep_hook): NewABI GOT relocs should be handled - here, too. - -2002-07-01 Andreas Schwab - - * elf64-x86-64.c (elf64_x86_64_relocate_section): Only convert - R_X86_64_64 to R_X86_64_RELATIVE. - -2002-07-01 John David Anglin - - * vaxbsd.c: New BFD backend for VAX BSD and Ultrix. - * Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Add new backend. - Run "make dep-am". - * config.bfd (vax-*-bsd* | vax-*-ultrix*): Use vaxbsd_vec instead of - host_aout_vec. - * configure.in (vaxbsd_vec): Add. - * targets.c (vaxbsd_vec): Add. - * Makefile.in: Rebuild. - * configure: Rebuild. - * po/SRC-POTFILES.in: Rebuild. - -2002-07-01 Alan Modra - - * elflink.h (elf_gc_mark): Pass in the section whose relocs we are - examining to gc_mark_hook, rather than the bfd. - (elf_gc_sections): Adjust. - * elf-bfd.h (struct elf_backend_data ): Likewise. - * elf-m10300.c (mn10300_elf_gc_mark_hook): Likewise. - * elf32-arm.h (elf32_arm_gc_mark_hook): Likewise. - * elf32-avr.c (elf32_avr_gc_mark_hook): Likewise. - * elf32-cris.c (cris_elf_gc_mark_hook): Likewise. - * elf32-d10v.c (elf32_d10v_gc_mark_hook): Likewise. - * elf32-fr30.c (fr30_elf_gc_mark_hook): Likewise. - * elf32-hppa.c (elf32_hppa_gc_mark_hook): Likewise. - * elf32-i386.c (elf_i386_gc_mark_hook): Likewise. - * elf32-m32r.c (m32r_elf_gc_mark_hook): Likewise. - * elf32-m68k.c (elf_m68k_gc_mark_hook): Likewise. - * elf32-mcore.c (mcore_elf_gc_mark_hook): Likewise. - * elf32-openrisc.c (openrisc_elf_gc_mark_hook): Likewise. - * elf32-ppc.c (ppc_elf_gc_mark_hook): Likewise. - * elf32-s390.c (elf_s390_gc_mark_hook): Likewise. - * elf32-sh.c (sh_elf_gc_mark_hook): Likewise. - * elf32-sparc.c (elf32_sparc_gc_mark_hook): Likewise. - * elf32-v850.c (v850_elf_gc_mark_hook): Likewise. - * elf32-vax.c (elf_vax_gc_mark_hook): Likewise. - * elf32-xstormy16.c (xstormy16_elf_gc_mark_hook): Likewise. - * elf64-mmix.c (mmix_elf_gc_mark_hook): Likewise. - * elf64-ppc.c (ppc64_elf_gc_mark_hook): Likewise. - * elf64-s390.c (elf_s390_gc_mark_hook): Likewise. - * elf64-sh64.c (sh_elf64_gc_mark_hook): Likewise. - * elfxx-mips.c (_bfd_mips_elf_gc_mark_hook): Likewise. - * elfxx-mips.h (_bfd_mips_elf_gc_mark_hook): Likewise. - * elf64-x86-64.c (elf64_x86_64_gc_mark_hook): Likewise. - * elf32-frv.c (elf32_frv_gc_mark_hook): Likewise. Also remove - redundant local sym tests. - * elf64-ppc.c (struct ppc_link_hash_entry): Add is_entry. - (link_hash_newfunc): Init is_entry. - (ppc64_elf_copy_indirect_symbol): Copy is_entry. - (ppc64_elf_link_hash_table_create): Init all_local_syms. - (create_linkage_sections): Use bfd_make_section_anyway rather than - bfd_make_section. - (ppc64_elf_mark_entry_syms): New function. - (ppc64_elf_check_relocs): Don't bother testing elf_bad_symtab. Set - up opd entry to function section map. - (ppc64_elf_gc_mark_hook): Special case opd section relocs, and - relocs that reference the opd section. - (edit_opd): New function. - (ppc64_elf_size_dynamic_sections): Call get_local_syms and edit_opd. - (ppc64_elf_setup_section_lists): Don't calculate htab->bfd_count here. - (get_local_syms): Do so here. Exit if we already have local syms. - Remove bogus comment imported from elf32-hppa.c. Don't attempt to - read local syms on non-ELF input. - (ppc64_elf_size_stubs): Call _bfd_elf64_link_read_relocs rather - than duplicating it's function here. Adjust free of internal - relocs to suit. - (ppc64_elf_relocate_section): Adjust local syms in opd section. - * elf64-ppc.h (ppc64_elf_mark_entry_syms): Declare. - * elf32-hppa.c (elf32_hppa_size_stubs): Call - _bfd_elf32_link_read_relocs rather than duplicating it's function - here. Adjust free of internal relocs to suit. - -2002-07-01 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_check_relocs): Certain relocations - are not allowed in shared libs code, enforce -fPIC. - -2002-06-29 Hans-Peter Nilsson - - * mmo.c (mmo_write_loc_chunk): Don't eliminate leading and - trailing zero-sequences when there's previous left-over data. - -2002-06-27 John David Anglin - - * elf64-hppa.c (elf64_hppa_reloc_type_class): New function. - (elf64_hppa_finish_dynamic_sections): Check other_rel_sec, dlt_rel_sec - and opd_rel_sec in order for starting rela section. Check _raw_size. - (elf_backend_reloc_type_class): Define. - -2002-06-27 Kevin Buettner - - * dwarf2.c (decode_line_info): Handle older, non-standard, 64-bit - DWARF2 formats. - -2002-06-27 Alan Modra - - * cpu-powerpc.c: Comment on ordering of arch_info. - * elf32-ppc.c (ppc_elf_object_p): New function. - (elf_backend_object_p): Define. - * elf64-ppc.c (ppc64_elf_object_p): New function. - (elf_backend_object_p): Define. - -2002-06-26 Jason Thorpe - - * configure.in (vax-*-netbsd*): Set COREFILE to netbsd-core.lo. - * configure: Regenerate. - -2002-06-25 Jason Eckhardt - - * dwarf2.c (decode_line_info): Check unit->addr_size - to read in the proper number of prologue bytes. - -2002-06-25 Nick Clifton - - * config.bfd (powerpc-*-aix5*): Only create a selvecs for - aix5coff64_vec if 64-bit bfd support has been enabled. - (powerpc64-*-aix5*): Only define if 64-bit bfd support has - been enabled. - - * targets.c (_bfd_target_vector[]): Only include - aix5coff64_vec if 64-bit bfd support has been enabled. - -2002-06-25 Alan Modra - - * elf64-ppc.c (ppc_add_stub): Replace strcpy/strncpy with memcpy. - * elf32-hppa.c (hppa_add_stub): Likewise. - * elflink.c (_bfd_elf_link_record_dynamic_symbol): Likewise. - * elflink.h (elf_add_default_symbol): Fix comment typo. - (elf_add_default_symbol): Replace strcpy and strncpy with memcpy. - (elf_link_add_object_symbols): Likewise. - (elf_link_assign_sym_version): Likewise. - * hash.c (bfd_hash_lookup): Likewise. - * linker.c (_bfd_generic_link_add_one_symbol): Likewise. - * section.c (bfd_get_unique_section_name): Likewise. - * syms.c (_bfd_stab_section_find_nearest_line): Likewise. - * elf.c (_bfd_elf_make_section_from_phdr): Likewise. - (assign_section_numbers): Likewise. - (_bfd_elfcore_make_pseudosection): Likewise. - (elfcore_grok_lwpstatus): Likewise. - (elfcore_grok_win32pstatus): Likewise. - (elfcore_write_note): Constify input params. Use PTR instead of - void *. Include terminating NUL in namesz. Correct padding. - Support NULL "name" param. Use memcpy instead of strcpy. - (elfcore_write_prpsinfo): Constify input params. - (elfcore_write_prstatus): Likewise. Use PTR instead of void *. - (elfcore_write_lwpstatus): Likewise. - (elfcore_write_pstatus): Likewise. - (elfcore_write_prfpreg): Likewise. - (elfcore_write_prxfpreg): Likewise. - * elf-bfd.h (elfcore_write_note): Update declaration. - (elfcore_write_prpsinfo): Likewise. - (elfcore_write_prstatus): Likewise. - (elfcore_write_pstatus): Likewise. - (elfcore_write_prfpreg): Likewise. - (elfcore_write_prxfpreg): Likewise. - (elfcore_write_lwpstatus): Likewise. - -2002-06-25 Jason Eckhardt - - * ecoff.c (ecoff_set_symbol_info): Set BSF_FUNCTION for - symbols of type stProc and stStaticProc. - -2002-06-25 Nick Clifton - - * ecoff.c: VArious formatting fixes. - -2002-06-25 Alan Modra - - * coff-rs6000.c (xcoff_generate_rtinit): Fix typo. - -2002-06-25 Alan Modra - - * aout-adobe.c: Don't compare against "true" or "false. - * aout-target.h: Likewise. - * aoutx.h: Likewise. - * archive.c: Likewise. - * bout.c: Likewise. - * cache.c: Likewise. - * coff-a29k.c: Likewise. - * coff-alpha.c: Likewise. - * coff-i386.c: Likewise. - * coff-mips.c: Likewise. - * coff-or32.c: Likewise. - * coff64-rs6000.c: Likewise. - * coffcode.h: Likewise. - * coffgen.c: Likewise. - * cpu-ns32k.c: Likewise. - * ecoff.c: Likewise. - * ecofflink.c: Likewise. - * elf.c: Likewise. - * elf32-arm.h: Likewise. - * elf32-cris.c: Likewise. - * elf32-d30v.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-mcore.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sh64.c: Likewise. - * elf32-v850.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-sh64.c: Likewise. - * elfcode.h: Likewise. - * elfcore.h: Likewise. - * elflink.h: Likewise. - * elfxx-mips.c: Likewise. - * i386os9k.c: Likewise. - * ieee.c: Likewise. - * libbfd.c: Likewise. - * linker.c: Likewise. - * mmo.c: Likewise. - * nlm32-alpha.c: Likewise. - * nlm32-i386.c: Likewise. - * nlm32-ppc.c: Likewise. - * nlm32-sparc.c: Likewise. - * nlmcode.h: Likewise. - * oasys.c: Likewise. - * pdp11.c: Likewise. - * peicode.h: Likewise. - * reloc.c: Likewise. - * som.c: Likewise. - * srec.c: Likewise. - * tekhex.c: Likewise. - * vms.c: Likewise. - * xcofflink.c: Likewise. - * elf64-sparc.c: Edit comment to not use "== false". - - * aoutf1.h: Don't use "? true : false". - * ecoff.c: Likewise. - * format.c: Likewise. - * ieee.c: Likewise. - * linker.c: Likewise. - * mmo.c: Likewise. - * oasys.c: Likewise. - -2002-06-23 H.J. Lu - - * elflink.h (elf_link_add_archive_symbols): For the default - version, check references with only one `@' first. - -2002-06-23 John David Anglin - - * elf64-hppa.c (elf64_hppa_mark_milli_and_exported_functions): New - function. - (allocate_global_data_dlt): Don't add millicode symbols to dynamic - symbol table. - (allocate_global_data_opd, allocate_dynrel_entries): Likewise. - (elf64_hppa_size_dynamic_sections): Revise to use - elf64_hppa_mark_milli_and_exported_functions. - (elf64_hppa_finish_dynamic_symbol): Remove code to keep millicode - symbols out of dynamic symbol table. - -2002-06-23 Alan Modra - - * Makefile.in: Regenerate. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * configure: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - - * elflink.h: Comment typo fixes. - -2002-06-23 H.J. Lu - - * elf-bfd.h (elf_link_loaded_list): New structure. - (elf_link_hash_table): Add "loaded". - * elf.c (_bfd_elf_link_hash_table_init): Initialize "loaded". - * elflink.h (elf_link_check_versioned_symbol): New function. - (elf_link_output_extsym): Call elf_link_check_versioned_symbol. - -2002-06-19 Nick Clifton - - * elflink.h (size_dynamic_sections): If the target does not - support an ELF style hash table, return true, indicating that - nothing needed to be done, rather than false, indicating that the - section's size could not be computed. - -2002-06-18 Dave Brolley - - From Catherine Moore, Michael Meissner, Dave Brolley: - * po/SRC-POTFILES.in: Add cpu-frv.c and elf32-frv.c - * targets.c: Support bfd_elf32_frv_vec. - * reloc.c: Add FRV relocs. - * configure.in: Add support for bfd-elf32-frv-vec. - * config.bfd (targ_cpu): Add support for frv-*-elf. - * archures.c: Add frv arch and machines. - * Makefile.am (ALL_MACHINES): Add cpu-frv.lo. - (ALL_MACHINES_CFILES): Add cpu-frv.c. - (BFD32_BACKENDS): Add elf32-frv.lo. - (BFD32_BACKENDS_CFILES): Add elf32-frv.c - (cpu-frv.lo): New target. - (elf32-frv.lo): New target. - * cpu-frv.c: New file. - * elf32-frv.c: New file. - -2002-06-18 Jakub Jelinek - - * elfcode.h (elf_object_p): Sanity check eh_shoff == 0 implies - e_shnum == 0. - Only read the first section header if e_shoff is non-zero. - Don't consider e_shstrndx if there are no sections. - -2002-06-17 Tom Rix - - * elf32-d10v.c (elf_d10v_howto_table): Change R_D10V_10_PCREL_R, - R_D10V_10_PCREL_L and R_D10V_18_PCREL to use - complain_overflow_bitfield. - -2002-06-17 Alan Modra - - * opncls.c (bfd_openr): Remove redundant bfd_set_error. - (bfd_fdopenr): Likewise. - (bfd_openstreamr): Likewise. - (bfd_openw): Likewise. - - * targets.c: Sort target vecs. - (_bfd_target_vector): Add aix5coff64_vec, bfd_elf32_sh64_vec, - bfd_elf32_sh64l_vec, bfd_elf32_sh64lnbsd_vec, - bfd_elf32_sh64nbsd_vec, bfd_elf64_sh64_vec, bfd_elf64_sh64l_vec, - bfd_elf64_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec. - * configure.in: Sort target vecs. Add m88kmach3_vec. - * configure: Regenerate. - -2002-06-16 Hans-Peter Nilsson - - * elf64-mmix.c (bpo_reloc_request_sort_fn): Use member - bpo_reloc_no to break sort order ties, not address of items. - -2002-06-16 John David Anglin - - * elf-hppa.h (elf_hppa_final_link): Fix formatting in comment. - Skip excluded sections in determing __gp value. - (elf_hppa_final_link_relocate): Use the symbol's address in - R_PARISC_FPTR64 relocations that don't need an opd entry. - * elf64-hppa.c (allocate_dynrel_entries): Simplify code. - (elf64_hppa_finalize_dynreloc): Likewise. - (elf64_hppa_size_dynamic_sections): Move comments and fix typo. - (elf64_hppa_finish_dynamic_symbol): Break up assert. - -2002-06-14 Sergey Grigoriev - - * pei-i386.c (COFF_SECTION_ALIGNMENT_ENTRIES): Enable 16 byte - alignment for .bss, .data and .text sections so that sse and sse2 - code will work. - * pe-i386.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise. - -2002-06013 J"orn Rennecke - - config.bfd: Add support for sh[1234]l*-*-elf* | sh3el*-*-elf*, - sh[1234]*-elf*. - -2002-06-12 John David Anglin - - * elflink.h (elf_bfd_final_link): Improve error handling for missing - dynamic sections. - - * elf64-hppa.c (allocate_global_data_opd): We don't need an opd entry - for a symbol that has no output section. - (allocate_dynrel_entries): Correct comment. - (elf64_hppa_finalize_dynreloc): Likewise. Don't create an opd entry - unless we want one. - (elf64_hppa_finalize_opd): Prevent segfault if dyn_h is NULL. - (elf64_hppa_finalize_dlt): Likewise. Prevent segfault for symbols - with no section. Remove unnecessary parentheses. - -2002-06-11 Tom Rix - - * coffcode.h (coff_compute_section_file_positions): Add data - section to AIX loader alignment check. - - * coff-rs6000.c (_bfd_xcoff_mkobject): Set default text section - alignment to 4 bytes. - (_bfd_xcoff_copy_private_bfd_data): Use text and data alignment - power accessor macro. - (do_shared_object_padding): Remove invalid assertion. - -2002-06-10 Richard Sandiford - - * section.c (_bfd_strip_section_from_output): Set SEC_EXCLUDE - for removed output sections. - -2002-06-10 Geoffrey Keating - - * merge.c (merge_strings): Use htab_create_alloc with calloc, not - htab_alloc. - * elf-strtab.c (_bfd_elf_strtab_finalize): Likewise. - -2002-06-08 H.J. Lu - - * elf.c (copy_private_bfd_data): Don't cast to bfd_size_type to - work around a long long bug in gcc 2.96 on mips. - -2002-06-08 Jason Thorpe - - * Makefile.am (BFD32_BACKENDS): Add vax1knetbsd.lo. - (BFD32_BACKENDS_CFILES): Add vax1knetbsd.c. - Regenerate dependency lists. - * Makefile.in: Regenerate. - * config.bfd (vax-*-netbsdelf*, vax-*-netbsdaout*): Add - vax1knetbsd_vec to targ_selvecs. - * configure.in: Add vax1knetbsd_vec. - * configure: Regenerate. - * targets.c (_bfd_target_vector): Add vax1knetbsd_vec. - * vax1knetbsd.c: New file. - * vaxnetbsd.c: Update copyright years. - (TARGET_PAGE_SIZE): Set to 0x1000. - (DEFAULT_MID): Set to M_VAX4K_NETBSD. - -2002-06-08 Matt Thomas - - * libaout.h (enum machine_type): Add M_VAX4K_NETBSD. - -2002-06-08 Alan Modra - - * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): Make static. - -2002-06-08 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - - * armnetbsd.c: Replace CONST with const. - * corefile.c: Likewise. - * elf32-dlx.c: Likewise. - * elf64-mips.c: Likewise. - * mmo.c: Likewise. - * ns32knetbsd.c: Likewise. - - * elf64-sparc.c (sparc64_elf_add_symbol_hook): Check the hash - table is elf64-sparc. - -2002-06-08 Thiemo Seufer - - * elfxx-mips.c (_bfd_mips_elf_relocate_section): Simplify code. - Fix RELA addends to get not shifted in the result. Don't do special - handling of R_MIPS_64 for NewABI. - -2002-06-07 Alan Modra - - * aoutx.h (NAME(aout,slurp_symbol_table)): Use bfd_zmalloc. - (NAME(aout,slurp_reloc_table)): Likewise. - * coff-mips.c (mips_relax_section): Use bfd_zalloc. - * coff-rs6000.c (xcoff_write_armap_big): Use bfd_zmalloc. - (xcoff_write_archive_contents_big): Likewise. - (xcoff_generate_rtinit): Likewise. - (xcoff_generate_rtinit): Likewise, and check error return. - * coff64-rs6000.c (xcoff64_generate_rtinit): Likewise. - * coffgen.c (coff_section_symbol): Use bfd_zalloc. - (coff_get_normalized_symtab): Likewise. - (coff_make_empty_symbol): Likewise. - (bfd_coff_set_symbol_class): Likewise. - * cofflink.c (coff_link_add_symbols): Likewise. - * ecoff.c (_bfd_ecoff_make_empty_symbol): Likewise. - * ecofflink.c (ecoff_write_shuffle): Use bfd_zmalloc. - (bfd_ecoff_write_accumulated_debug): Likewise. - * elf64-alpha.c (get_got_entry): Use bfd_zalloc. - * i386linux.c (bfd_i386linux_size_dynamic_sections): Likewise. - * i386lynx.c (NAME(lynx,slurp_reloc_table)): Use bfd_zmalloc. - * ieee.c (do_with_relocs): Use bfd_zalloc. - * m68klinux.c (bfd_m68klinux_size_dynamic_sections): Likewise. - * pdp11.c (NAME(aout,slurp_symbol_table)): Use bfd_zmalloc. - (NAME(aout,slurp_reloc_table)): Likewise. - (NAME(aout,squirt_out_relocs)): Don't memset when zalloc'd. - * reloc16.c (bfd_coff_reloc16_relax_section): Use bfd_zmalloc. - * som.c (som_build_and_write_symbol_table): Likewise. - (som_slurp_string_table): Likewise. - (som_slurp_symbol_table): Likewise. - (som_bfd_ar_write_symbol_stuff): Likewise. - * sparclinux.c (bfd_sparclinux_size_dynamic_sections): Use bfd_zalloc. - * sunos.c (bfd_sunos_size_dynamic_sections): Likewise. - * tekhex.c (find_chunk): Likewise. Get rid of unused "sname". - * vms-gsd.c (_bfd_vms_slurp_gsd): Use bfd_zmalloc. - * xcofflink.c (xcoff_link_add_symbols): Use bfd_zalloc/bfd_zmalloc. - -2002-06-07 Alan Modra - - * elf-bfd.h (struct bfd_elf_section_data ): Replace with - "group" union. - (elf_group_name): Update. - (elf_group_id): Define. - (bfd_elf_set_group_contents): Declare. - * elf.c (elf_fake_sections): Qualify use of elf_group_name. - (set_group_contents): Rename to bfd_elf_set_group_contents. Remove - ATTRIBUTE_UNUSED from failedptrarg. If elf_group_id is set, use - that sym for the signature. - (_bfd_elf_compute_section_file_positions): Don't call - set_group_contents for "ld -r" case. - (swap_out_syms): Use bfd_zalloc. - * elflink.h (elf_link_add_archive_symbols): Likewise. - (NAME(bfd_elf,size_dynamic_sections)): Likewise. - (elf_bfd_final_link): Call bfd_elf_set_group_contents. - -2002-06-07 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Allow unresolved - relocs in opd for non-shared too. - -2002-06-06 Jeffrey Law - - * elf32-h8300.c (elf32_h8_relax_section): Ignore uninteresting - relocations. - -2002-06-06 Nick Clifton - - * merge.c: Include libiberty.h. - * elf-strtab.c: Include libiberty.h. - -2002-06-06 Elias Athanasopoulos - - * peXXigen.c (pe_print_idata): Remove unused variable. - -2002-06-06 David Heine - - * elf.c (assign_file_positions_for_segments): Remove unallocated - sections from the section to segment mapping for PT_LOAD segments. - Update comment about empty loadable segments. - -2002-06-06 Richard Sandiford - - * stabs.c (_bfd_link_section_stabs): Check that the symbol offset - is within the .stabstr section. - -2002-06-06 Alan Modra - - * elf-bfd.h (struct elf_size_info ): Function args - are "const PTR", not "const PTR *". - (bfd_elf32_swap_symbol_in): Likewise. - (bfd_elf64_swap_symbol_in): Likewise. - * elfcode.h (elf_swap_symbol_in): Change input args to const PTR. - (elf_slurp_symbol_table): Adjust call to elf_swap_symbol_in. - * elflink.h (elf_link_is_defined_archive_symbol): Likewise. - (elf_link_add_object_symbols): Likewise. - (elf_link_record_local_dynamic_symbol): Likewise. - (elf_link_input_bfd): Likewise. - (elf_gc_mark): Likewise. - (elf_reloc_symbol_deleted_p): Likewise. - * elf-m10200.c (mn10200_elf_relax_section): Likewise. - (mn10200_elf_relax_delete_bytes): Likewise. - (mn10200_elf_symbol_address_p): Likewise. - (mn10200_elf_get_relocated_section_contents): Likewise. - * elf-m10300.c (mn10300_elf_relax_section): Likewise. - (mn10300_elf_relax_section): Likewise. - (mn10300_elf_relax_delete_bytes): Likewise. - (mn10300_elf_symbol_address_p): Likewise. - (mn10300_elf_get_relocated_section_contents): Likewise. - * elf32-h8300.c (elf32_h8_relax_section): Likewise. - (elf32_h8_relax_delete_bytes): Likewise. - (elf32_h8_symbol_address_p): Likewise. - (elf32_h8_get_relocated_section_contents): Likewise. - * elf32-hppa.c (get_local_syms): Likewise. - * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Likewise. - * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise. - * elf32-sh.c (sh_elf_relax_section): Likewise. - (sh_elf_relax_delete_bytes): Likewise. - (sh_elf_get_relocated_section_contents): Likewise. - * elf32-xstormy16.c (xstormy16_elf_relax_section): Likewise. - * elf64-alpha.c (elf64_alpha_relax_section): Likewise. - * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. - * elf64-mmix.c (mmix_elf_relax_section): Likewise. - * elf64-ppc.c (get_local_syms): Likewise. - * elf64-sh64.c (sh_elf64_get_relocated_section_contents): Likewise. - * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. - -2002-06-05 J"orn Rennecke - - * config.bfd (sh64l*-*-elf*, shl*-*-elf*): New configurations. - -2002-06-05 Alan Modra - - * elf.c (group_signature): Swap in the whole symbol, and handle - extracting section symbol names. - (setup_group): Add comment. - (set_group_contents): When called from objcopy or ld, arrange for - section contents to be written. Write group member output section - indices to allow objcopy to reorganize sections. - (_bfd_elf_copy_private_section_data): Copy group info. - - * elf-bfd.h (struct elf_size_info): Add swap_symbol_in field. - (bfd_elf32_swap_symbol_in): Update prototype. - (bfd_elf64_swap_symbol_in): Likewise. - * elfcode.h (elf_swap_symbol_in): Change input args to const PTR *. - (elf_slurp_symbol_table): Adjust call to elf_swap_symbol_in. - * elflink.h (elf_link_is_defined_archive_symbol): Likewise. - (elf_link_add_object_symbols): Likewise. - (elf_link_record_local_dynamic_symbol): Likewise. - (elf_link_input_bfd): Likewise. - (elf_gc_mark): Likewise. - (elf_reloc_symbol_deleted_p): Likewise. - * elf-m10200.c (mn10200_elf_relax_section): Likewise. - (mn10200_elf_relax_delete_bytes): Likewise. - (mn10200_elf_symbol_address_p): Likewise. - (mn10200_elf_get_relocated_section_contents): Likewise. - * elf-m10300.c (mn10300_elf_relax_section): Likewise. - (mn10300_elf_relax_section): Likewise. - (mn10300_elf_relax_delete_bytes): Likewise. - (mn10300_elf_symbol_address_p): Likewise. - (mn10300_elf_get_relocated_section_contents): Likewise. - * elf32-h8300.c (elf32_h8_relax_section): Likewise. - (elf32_h8_relax_delete_bytes): Likewise. - (elf32_h8_symbol_address_p): Likewise. - (elf32_h8_get_relocated_section_contents): Likewise. - * elf32-hppa.c (get_local_syms): Likewise. - * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Likewise. - * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise. - * elf32-sh.c (sh_elf_relax_section): Likewise. - (sh_elf_relax_delete_bytes): Likewise. - (sh_elf_get_relocated_section_contents): Likewise. - * elf32-xstormy16.c (xstormy16_elf_relax_section): Likewise. - * elf64-alpha.c (elf64_alpha_relax_section): Likewise. - * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. - * elf64-mmix.c (mmix_elf_relax_section): Likewise. - * elf64-ppc.c (get_local_syms): Likewise. - * elf64-sh64.c (sh_elf64_get_relocated_section_contents): Likewise. - * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. - * elfcode.h (NAME(_bfd_elf,size_info)): Update initialiser. - * elf64-alpha.c (alpha_elf_size_info): Likewise. - * elf64-hppa.c (hppa64_elf_size_info): Likewise. - * elf64-mips.c (mips_elf64_size_info): Likewise. - * elf64-s390.c (s390_elf64_size_info): Likewise. - * elf64-sparc.c (sparc64_elf_size_info): Likewise. - -2002-06-05 Maciej W. Rozycki - - * elf32-mips.c (elf32_mips_ignore_discarded_relocs): Move to... - elfxx-mips.c (_bfd_mips_elf_ignore_discarded_relocs): ... here. - elf64-mips.c (elf_backend_ignore_discarded_relocs): Use - _bfd_mips_elf_ignore_discarded_relocs. - elfxx-mips.h (_bfd_mips_elf_ignore_discarded_relocs): Declare. - -2002-06-05 H.J. Lu - - * elfxx-mips.c (mips_elf_calculate_relocation): Call - _bfd_elf_rel_local_sym for STT_SECTION relocations against - the SEC_MERGE section. - -2002-06-05 Alan Modra - - * coff-alpha.c: Update copyright date. - * coff-mips.c: Likewise. - * xcoff-target.h: Likewise. - - * bfd-in.h: Remove "taken from the source" comment. - * libbfd-in.h: Likewise. - * libcoff-in.h: Likewise. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * libcoff.h: Regenerate. - - * elf.c (bfd_elf_discard_group): Return true. - * elf-bfd.h (bfd_elf_discard_group): Declare. - * bfd-in.h (bfd_elf_discard_group): Don't declare here. - * section.c (bfd_discard_group): Rename to bfd_generic_discard_group. - * bfd.c (bfd_discard_group): Define. - * targets.c (struct bfd_target): Add _bfd_discard_group. - (BFD_JUMP_TABLE_LINK): Here too. - * libbfd-in.h (_bfd_nolink_bfd_discard_group): Define. - * aout-adobe.c (aout_32_bfd_discard_group): Define. - * aout-target.h (MY_bfd_discard_group): Define. - * aout-tic30.c (MY_bfd_discard_group): Define. - * binary.c (binary_bfd_discard_group): Define. - * bout.c (b_out_bfd_discard_group): Define. - * coff-alpha.c (_bfd_ecoff_bfd_discard_group): Define. - * coffcode.h (coff_bfd_discard_group): Define. - * coff-mips.c (_bfd_ecoff_bfd_discard_group): Define. - * elfxx-target.h (bfd_elfNN_bfd_discard_group): Define. - * i386msdos.c (msdos_bfd_discard_group): Define. - * i386os9k.c (os9k_bfd_discard_group): Define. - * ieee.c (ieee_bfd_discard_group): Define. - * ihex.c (ihex_bfd_discard_group): Define. - * mmo.c (mmo_bfd_discard_group): Define. - * nlm-target.h (nlm_bfd_discard_group): Define. - * oasys.c (oasys_bfd_discard_group): Define. - * ppcboot.c (ppcboot_bfd_discard_group): Define. - * som.c (som_bfd_discard_group): Define. - * srec.c (srec_bfd_discard_group): Define. - * tekhex.c (tekhex_bfd_discard_group): Define. - * versados.c (versados_bfd_discard_group): Define. - * vms.c (vms_bfd_discard_group): Define. - * xcoff-target.h (_bfd_xcoff_bfd_discard_group): Define. - * coff64-rs6000.c (rs6000coff64_vec): Update initialiser. - (aix5coff64_vec): Likewise. - * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Likewise. - -2002-06-04 Jason Thorpe - - * Makefile.am (BFD32_BACKENDS): Add elf32-sh64-com.lo. - (BFD32_BACKENDS_CFILES): Add elf32-sh64-com.c. - (elf32-sh64-com.lo): New dependency list. - * Makefile.in: Regenerate. - * configure.in (bfd_elf32_sh64_vec, bfd_elf32_sh64l_vec) - (bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec): Add - elf32-sh64-com.lo. - * configure: Regenerate. - * elf32-sh64.c (sh64_address_in_cranges) - (sh64_get_contents_type, sh64_address_is_shmedia): Move to... - (crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb): - (crange_bsearch_cmpl): Prepend _bfd_sh64_ to name and move to... - * elf32-sh64-com.c: ...here. New file. - -2002-06-04 Alan Modra - - * elf32-openrisc.c (openrisc_elf_gc_mark_hook): Remove - ATTRIBUTE_UNUSED on used params. - * elf32-vax.c (elf_vax_gc_mark_hook): Remove unnecessary checks - before calling bfd_section_from_elf_index on local syms. - * elf64-sh64.c (sh_elf64_gc_mark_hook): Likewise. - -2002-06-04 Jason Thorpe - - * Makefile.am (BFD32_BACKENDS): Add elf32-sh64-nbsd.lo. - (BFD32_BACKENDS_CFILES): Add elf32-sh64-nbsd.c. - (BFD64_BACKENDS): Add elf64-sh64-nbsd.lo. - (BFD64_BACKENDS_CFILES): Add elf64-sh64-nbsd.c. - (elf32-sh64-nbsd.lo, elf64-sh64-nbsd.lo): New rules. - * Makefile.in: Regenerate. - * config.bfd (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*) - (sh64-*-netbsd*): New targets. - * configure.in: Add bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec, - bfd_elf64_sh64nbsd_vec, and bfd_elf64_sh64lnbsd_vec. - * configure: Regenerate. - * elf32-sh64-nbsd.c: New file. - * elf64-sh64-nbsd.c: New file. - * targets.c: Add extern decls for bfd_elf32_sh64nbsd_vec, - bfd_elf32_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec, and - bfd_elf64_sh64lnbsd_vec. - -2002-06-04 Alan Modra - - * elf.c (setup_group): Set SEC_LINK_ONCE on GRP_COMDAT groups. - (bfd_section_from_shdr): Likewise. Set section name of group - sections from signature. - (group_signature): Split out from setup_group. Ensure symbol table - is available. - (bfd_elf_discard_group): New function. - (_bfd_elf_make_section_from_shdr): Don't set SEC_LINK_ONCE on - .gnu.linkonce* sections if they are members of a group. - (set_group_contents): Set GRP_COMDAT flag. - * section.c (bfd_discard_group): New function. - * bfd-in.h (bfd_elf_discard_group): Declare. - * bfd-in2.h: Regenerate. - * elf-bfd.h (struct bfd_elf_section_data): Add linkonce_p field. - (elf_linkonce_p): Define. - -2002-06-04 Alan Modra - - * elf.c (bfd_section_from_shdr): Make "name" const. - * elf-bfd.h (elf_backend_section_from_shdr): Likewise. - * elf32-i370.c (i370_elf_section_from_shdr): Likewise. - * elf32-ppc.c (ppc_elf_section_from_shdr): Likewise. - * elf32-sh64.c (sh64_backend_section_from_shdr): Likewise. - * elf32-v850.c (v850_elf_section_from_shdr): Likewise. - * elf64-alpha.c (elf64_alpha_section_from_shdr): Likewise. - * elf64-hppa.c (elf64_hppa_section_from_shdr): Likewise. - * elf64-ppc.c (ppc64_elf_section_from_shdr): Likewise. - * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Likewise. - * elfxx-mips.c (_bfd_mips_elf_section_from_shdr): Likewise. - * elfxx-mips.h (_bfd_mips_elf_section_from_shdr): Likewise. - -2002-06-03 Maciej W. Rozycki - - * elfxx-mips.c (ABI_64_P): Use backend's data to determine the - ABI. - -2002-06-02 Kazu Hirata - - * elf32-arc.c: Fix formatting. - * elf32-arm.h: Likewise. - * elf32-cris.c: Likewise. - * elf32-dlx.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-i386qnx.c: Likewise. - * elf32-or32.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-sh64.c: Likewise. - * elf32-vax.c: Likewise. - * elf32-xstormy16.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-mmix.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-sh64.c: Likewise. - * elf64-x86-64.c: Likewise. - -2002-06-02 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section): Don't dereference - null when there are no got entries for a symbol. - (elf64_alpha_relax_find_tls_segment): Rearrange to avoid - uninitialized variable warning. - -2002-06-01 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relax_with_lituse): Don't test for - undefined symbols here. - (elf64_alpha_relax_section): Do it here. Also test for not - defined in the current module. - (elf64_alpha_relocate_section_r): Split out of ... - (elf64_alpha_relocate_section): ... here. Don't dereference - NULL when looking up local got entries. - -2002-06-01 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relax_with_lituse): Reject undefined - symbols from JSR relaxation. - (elf64_alpha_size_plt_section_1): New. - (elf64_alpha_calc_dynrel_sizes): Split out .rela.got bits ... - (elf64_alpha_size_rela_got_1): ... here. - (elf64_alpha_size_dynamic_sections): Split out .rela.got bits ... - (elf64_alpha_size_rela_got_section): ... here. - (elf64_alpha_size_plt_section): New. - (elf64_alpha_relax_section): Call them. - (elf64_alpha_size_got_sections): Remove output_bfd arg. - (elf64_alpha_finish_dynamic_symbol): Check gotent use_count. - -2002-06-01 Richard Henderson - - * elf64-alpha.c (alpha_get_dtprel_base, alpha_get_tprel_base): New. - (elf64_alpha_relocate_section): Use them. Reject LE TLS relocs - in shared libraries. Fix DTPRELHI and TPRELHI value. - (INSN_ADDQ, INSN_RDUNIQ): New. - (struct alpha_relax_info): Add symtab_hdr, tls_segment, first_gotent. - (elf64_alpha_relax_with_lituse): Return boolean. Remove irelend - argument. Reject dynamic symbols. Use LITUSE symbolic constants. - (elf64_alpha_relax_got_load): Rename from relax_without_lituse. - Handle GOTDTPREL and GOTTPREL relocations. - (elf64_alpha_relax_gprelhilo): New. - (elf64_alpha_relax_tls_get_addr): New. - (elf64_alpha_relax_find_tls_segment): New. - (elf64_alpha_relax_section): Handle TLS relocations. - (ALPHA_ELF_LINK_HASH_TLS_IE): New. - (elf64_alpha_check_relocs): Set it. - -2002-06-01 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relax_section): Don't store computed gp. - - * elf64-alpha.c (elf64_alpha_check_relocs): Fix typo on maybe_dynamic - check; don't suppress dynamic relocs for non-allocated sections. - - * elf64-alpha.c: Remove dead code. - -2002-05-31 Alan Modra - - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - - * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Don't allocate - space for bss .plt. - -2002-05-31 Graeme Peterson - - * Makefile.am (BFD32_BACKENDS): Add elf32-i386qnx.lo. - (BFD32_BACKENDS_CFILES): Add elf32-i386qnx.c. - Run "make dep-am". - * Makefile.in: Regenerate. - * config.bfd: Add i[3456]86-*-nto-qnx* support. - * configure.in: Add bfd_elf32_i386qnx_vec support. - * configure: Regenerate. - * elf-bfd.h (struct elf_backend_data): Add set_nonloadable_filepos, - is_contained_by_filepos, and copy_private_bfd_data_p. - * elf.c (assign_file_positions_for_segments): Call backend - set_nonloadable_filepos. Fix non-K&R call to _bfd_error_handler. - (IS_CONTAINED_BY_FILEPOS): Define. - (INCLUDE_SECTION_IN_SEGMENT): Also test IS_CONTAINED_BY_FILEPOS. - (copy_private_bfd_data): Use IS_CONTAINED_BY_FILEPOS. Typo fix. - Fix non-K&R call to _bfd_error_handler. - (_bfd_elf_copy_private_section_data): Use backend - copy_private_bfd_data_p. - * elf32-i386.c: Don't include elfxx-target.h when - ELF32_I386_C_INCLUDED is defined. - * elf32-i386qnx.c: New QNX elf backend file. - * elfxx-target.h: Add elf_backend_set_nonloadable_filepos, - elf_backend_is_contained_by_filepos, and - elf_backend_do_copy_private_bfd_data. - * targets.c: Add bfd_target bfd_elf32_i386qnx_vec. - -2002-05-31 Alan Modra - - * elfarm-oabi.c (bfd_elf32_arm_add_glue_sections_to_bfd): Define. - Move other similar defines to start of file. - -2002-05-30 Tom Rix - - * coff-rs6000.c (xcoff_rtype2howto): Handle 16 bit R_RBA. - * coff64-rs6000.c (xcoff64_rtype2howto): Same. - -2002-05-30 Richard Henderson - - * elf64-alpha.c (ALPHA_ELF_LINK_HASH_LU_TLSGD, - ALPHA_ELF_LINK_HASH_LU_TLSLDM, ALPHA_ELF_LINK_HASH_LU_FUNC): New. - (ALPHA_ELF_GOT_ENTRY_RELOCS_DONE): Remove. - (ALPHA_ELF_GOT_ENTRY_RELOCS_XLATED): Remove. - (struct alpha_elf_got_entry): Add reloc_type, reloc_done, reloc_xlated. - (struct alpha_elf_obj_tdata): Rename total_got_entries and - n_local_got_entries to total_got_size and local_got_size. - (elf64_alpha_howto, elf64_alpha_reloc_map): Update for TLS relocs. - (alpha_got_entry_size): New. - (elf64_alpha_relax_with_lituse): Use it. - (elf64_alpha_relax_without_lituse): Likewise. - (MAX_GOT_SIZE): Rename from MAX_GOT_ENTRIES. - (get_got_entry): New. - (elf64_alpha_check_relocs): Handle TLS relocs. Reorganize. - (elf64_alpha_adjust_dynamic_symbol): Test LU_FUNC as a mask. - (elf64_alpha_merge_ind_symbols): Check gotent->reloc_type. - (elf64_alpha_can_merge_gots, elf64_alpha_merge_gots): Likewise. - (elf64_alpha_calc_got_offsets_for_symbol): Use alpha_got_entry_size. - (elf64_alpha_calc_got_offsets): Likewise. - (alpha_dynamic_entries_for_reloc): New. - (elf64_alpha_calc_dynrel_sizes): Use it. - (elf64_alpha_size_dynamic_sections): Likewise. - (elf64_alpha_relocate_section): Handle TLS relocations. - * reloc.c: Add Alpha TLS relocations. - * bfd-in2.h, libbfd.h: Rebuild. - -2002-05-29 Ralf Habacker - - * peXXigen.c (pe_print_idata): Remove double printed - import table lines; add Bound-To comment. - -2002-05-29 Matt Thomas - - * Makefile.am (BFD32_BACKENDS): Add elf32-vax.lo. - (BFD32_BACKENDS_CFILES): Add elf32-vax.c. - (elf32-vax.lo): New rule. - * Makefile.in: Regenerate. - * configure.in (bfd_elf32_vax_vec) - (vaxnetbsd_vec): New vectors. - * configure: Regenerate. - * config.bfd (vax-*-netbsdelf*) - (vax-*-netbsdaout*) - (vax-*-netbsd*): New targets. - * elf32-vax.c: New file. - * reloc.c: Add VAX relocations. - * bfd-in2.h: Regenerate. - * targets.c (_bfd_target_vector): Add bfd_elf32_vax_vec. - -2002-05-29 Jason Thorpe - - * config.bfd (arm-*-netbsd*): Add bfd_elf32_littlearm_vec - and bfd_elf32_bigarm_vec to targ_selvecs. - -2002-05-29 Ralf Habacker - - * peXXigen.c (pe_print_idata): Fix seg faults on printing import tables - with auto-imported symbols. - -2002-05-29 Adam Nemet - - * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Don't add glue - sections only record bfd. - (bfd_elf32_arm_add_glue_sections_to_bfd): New function. - * bfd-in.h (bfd_elf32_arm_add_glue_sections_to_bfd): Declare it. - * bfd-in2.h: Regenerate. - -2002-05-28 Nick Clifton - - * syms.c (_bfd_stab_section_find_nearest_line): Move - declaration and initialisation of saw_line and saw_func out of - for loop. - -2002-05-29 Alan Modra - - * elf64-ppc.c (ppc64_elf_get_symbol_info): New function. - (bfd_elf64_get_symbol_info): Define. - * elfxx-target.h (bfd_elfNN_get_symbol_info): Only define if undef. - -2002-05-29 Andrey Volkov - - * cpu-h8300.c: Make default h8300 machine first in machine list. - -2002-05-28 Kuang Hwa Lin - - * config.bfd: Added DLX configuraton. - * Makefile.am: Added DLX configuraton. - * configure.in: Added DLX configuraton. - * archures.c: Add DLX architecure. - * reloc.c: Add DLX relocs. - * targets.c: Added DLX target vector. - * configure: Regenerate. - * Makefile.in: Regenreate. - * bfd-in2.h: Regenreate. - * elf32-dlx.c: New file: Support DLX target. - * cpu-dlx.c: New file: Support DLX target. - -2002-05-25 Alan Modra - - * elf32-m68k.c (elf32_m68k_print_private_bfd_data): Formatting. - - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Revert last change. - (ppc64_elf_check_relocs): Don't set up function descriptor symbol - strings to point inside function code sym string. - (func_desc_adjust): Likewise. - (ppc64_elf_hide_symbol): Rewrite code to look up function code sym. - -2002-05-24 Michal Ludvig - - * elf64-x86-64.c (elf64_x86_64_grok_prstatus): Added. - (elf64_x86_64_grok_psinfo): Added. - -2002-05-24 TAMURA Kent - - * config.bfd: Add a target for i386-netbsdpe. - -2002-05-24 Alan Modra - - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy is_func - and is_func_descriptor. - (func_desc_adjust): Hide function code sym in shared libs unless - there is a matching exported function descriptor sym. - -2002-05-23 Jakub Jelinek - - * elf.c (_bfd_elf_make_section_from_shdr): Set SEC_THREAD_LOCAL - for symbols from SHF_TLS section. - (_bfd_elf_print_private_bfd_data): Add PT_TLS. - (elf_fake_sections): Set SHF_TLS for SEC_THREAD_LOCAL sections. - (map_sections_to_segments): Build PT_TLS segment if necessary. - (assign_file_positions_for_segments): Likewise. - (get_program_header_size): Account for PT_TLS segment. - (swap_out_syms): Set type of BSF_THREAD_LOCAL symbols and symbols from - SEC_THREAD_LOCAL sections to STT_TLS. - * reloc.c: Add 386 and IA-64 TLS relocs. - * section.c (SEC_THREAD_LOCAL): Define. - (SEC_CONSTRUCTOR_TEXT, SEC_CONSTRUCTOR_DATA, SEC_CONSTRUCTOR_BSS): - Remove. - * elflink.h (elf_link_add_object_symbols): Support .tcommon. - (size_dynamic_sections): If DF_STATIC_TLS, set DF_FLAGS - unconditionally. - (struct elf_final_link_info): Add first_tls_sec. - (elf_bfd_final_link): Set first_tls_sec. - Compute elf_hash_table (info)->tls_segment. - (elf_link_output_extsym): Handle STT_TLS symbols. - (elf_link_input_bfd): Likewise. - * syms.c (BSF_THREAD_LOCAL): Define. - * bfd-in2.h: Rebuilt. - * libbfd.h: Rebuilt. - * elf32-i386.c (elf_i386_tls_transition, dtpoff_base, tpoff, - elf_i386_mkobject, elf_i386_object_p): New functions. - (elf_howto_table): Add TLS relocs. - (elf_i386_reloc_type_lookup): Support TLS relocs. - (elf_i386_info_to_howto_rel): Likewise. - (struct elf_i386_link_hash_entry): Add tls_type. - (struct elf_i386_obj_tdata): New. - (elf_i386_hash_entry, elf_i386_tdata, elf_i386_local_got_tls_type): - New macros. - (struct elf_i386_link_hash_table): Add tls_ldm_got. - (link_hash_newfunc): Clear tls_type. - (elf_i386_check_relocs): Support TLS relocs. - (elf_i386_gc_sweep_hook): Likewise. - (allocate_dynrelocs): Likewise. - (elf_i386_size_dynamic_sections): Likewise. - (elf_i386_relocate_section): Likewise. - (elf_i386_finish_dynamic_symbol): Likewise. - (bfd_elf32_mkobject, elf_backend_object_p): Define. - * elfxx-ia64.c (struct elfNN_ia64_dyn_sym_info): Add tprel_offset, - dtpmod_offset, dtprel_offset, tprel_done, dtpmod_done, dtprel_done, - want_tprel, want_dtpmod, want_dtprel. - (elfNN_ia64_tprel_base, elfNN_ia64_dtprel_base): New functions. - (ia64_howto_table): Add TLS relocs, rename R_IA64_LTOFF_TP22 to - R_IA64_LTOFF_TPREL22. - (elf_code_to_howto_index): Add TLS relocs. - (elfNN_ia64_check_relocs): Support TLS relocs. - (allocate_global_data_got): Account for TLS .got data. - (allocate_dynrel_entries): Account for TLS dynamic relocations. - (elfNN_ia64_install_value): Supprt TLS relocs. - (set_got_entry): Support TLS relocs. - (elfNN_ia64_relocate_section): Likewise. - -2002-05-23 Nick Clifton - - * elf32-arm.h (elf32_arm_final_link_relocate): For the Thumb - BLX reloc round the relocation up rather than down. - * coff-arm.c (coff_arm_relocate_section): Likewise. - -2002-05-21 H.J. Lu (hjl@gnu.org) - - * linker.c (_bfd_generic_link_add_one_symbol): Allow multiple - definition. - -2002-05-22 Alan Modra - - * elf64-ppc.c (ppc64_elf_size_stubs): Don't strip .branch_lt. - (ppc64_elf_relocate_section): Handle unresolved relocs in opd. - -2002-05-22 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Return false for - unresolved relocs. - (ppc64_elf_size_dynamic_sections): Check for splt NULL. - -2002-05-21 Thiemo Seufer - - * bfd.c (bfd_get_arch_size): Remove bfd_set_error call for - non-ELF targets. - -2002-05-21 Thiemo Seufer - - * elf-bfd.h (elf_backend_emit_relocs): Change prototype to return - an error value. - * elflink.h (elf_link_output_relocs): Likewise. Improve error message. - return with false on error. - (elf_link_input_bfd): Check reloc_emitter return value. - -2002-05-21 Jason Thorpe - - * config.bfd (armeb-*-netbsdelf*): New target. - -2002-05-20 Alan Modra - - * elf64-ppc.c (ppc_build_one_stub): Point undefined function syms - at the plt call stub. - -2002-05-19 Thiemo Seufer - - * cpu-mips.c (mips_compatible): Don't try to check machine - compatibility. - -2002-05-18 Tom Rix - - * coff64-rs6000.c (_bfd_xcoff64_swap_aux_out): Fix C_FILE auxent. - -2002-05-17 Alan Modra - - * elf64-ppc.c (ppc64_elf_info_to_howto): Formatting. - (ppc64_elf_relocate_section): Don't warn about reloc overflow when - we've already warned about an undefined symbol. Report more - detail on reloc errors. - -2002-05-17 Alan Modra - - * acinclude.m4 (AM_INSTALL_LIBBFD): New. - * configure.in: Invoke AM_INSTALL_LIBBFD. - * Makefile.am (install-data-local): Revert 2002-05-13. Move to.. - (install_libbfd): .. New target. - (uninstall_libbfd): Likewise. - (install-bfdlibLTLIBRARIES): Likewise. - (uninstall-bfdlibLTLIBRARIES): Likewise. - (bfdlibdir): New. - (bfdincludedir): New. - (lib_LTLIBRARIES): Rename to bfdlib_LTLIBRARIES. - * aclocal.m4: Regenerate. - * configure: Regenerate. - * Makefile.in: Regenerate. - -2002-05-17 Stuart Balfour - - * hash.c (bfd_hash_lookup): Remove computation of len from inside - hash loop. - -2002-05-16 Nick Clifton - - * config.bfd: Add targets for sh64-linux (little endian and - big endian). - -2002-05-15 Laurent Pinchart - - * peXXigen.c (pe_print_idata): Do not assume that the first thunk - is located in the same section as the import table. Instead - check, and if necessary load the section containing the thunk. - -2002-05-15 Nick Clifton - - * aix5ppc-core.c (xcoff64_core_p): Replace bfd_read with - bfd_bread. - (xcoff64_core_file_matches_executable_p): Replace bfd_read - with bfd_bread. - -2002-05-15 Alan Modra - - * aix5ppc-core.c: Warning fixes. - * aout-adobe.c (aout_32_bfd_link_just_syms): Define. - * aout-target.h (MY_bfd_link_just_syms): Define. - * aout-tic30.c (MY_bfd_link_just_syms): Define. - * bfd.c (bfd_link_just_syms): Define. - * binary.c (binary_bfd_link_just_syms): Define. - * bout.c (b_out_bfd_link_just_syms): Define. - * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Update initializer. - * coff64-rs6000.c (rs6000coff64_vec, aix5coff64_vec): Likewise. - * coffcode.h (coff_bfd_link_just_syms): Define. - * elf-bfd.h (enum elf_link_info_type): Add ELF_INFO_TYPE_JUST_SYMS. - (elf_discarded_section): Check for ELF_INFO_TYPE_JUST_SYMS. - (_bfd_elf_link_just_syms): Declare. - * elf.c (_bfd_elf_link_just_syms): New function. - * elf-eh-frame.c (_bfd_elf_maybe_strip_eh_frame_hdr): Check that - sections haven't already been discarded by the linker. - * elflink.h (elf_link_add_object_symbols): Likewise for stab - sections and SEC_MERGE sections. - (elf_bfd_discard_info): Similarly here. - * elfxx-target.h (bfd_elfNN_bfd_link_just_syms): Define. - * i386msdos.c (msdos_bfd_link_just_syms): Define. - * i386os9k.c (os9k_bfd_link_just_syms): Define. - * ieee.c (ieee_bfd_link_just_syms): Define. - * ihex.c (ihex_bfd_link_just_syms): Define. - * libbfd-in.h (_bfd_nolink_bfd_link_just_syms): Define. - (_bfd_generic_link_just_syms): Declare. - * libecoff.h (_bfd_ecoff_bfd_link_just_syms): Define. - * linker.c (_bfd_generic_link_just_syms): New function. - * mmo.c (mmo_bfd_link_just_syms): Define. - * nlm-target.h (nlm_bfd_link_just_syms): Define. - * oasys.c (oasys_bfd_link_just_syms): Define. - * ppcboot.c (ppcboot_bfd_link_just_syms): Define. - * som.c (som_bfd_link_just_syms): Define. - * srec.c (srec_bfd_link_just_syms): Define. - * targets.c (struct bfd_target): Add _bfd_link_just_syms. - (BFD_JUMP_TABLE_LINK): And here. - * tekhex.c (tekhex_bfd_link_just_syms): Define. - * versados.c (versados_bfd_link_just_syms): Define. - * vms.c (vms_bfd_link_just_syms): Define. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - -2002-05-15 Thiemo Seufer - - * elf32-mips.c: Remove superfluous definitions copied from - elfxx-mips.c. - (bfd_elf32_bigmips_vec,bfd_elf32_littlemips_vec): Use the - SGIish vectors to check the special case. - (mips_elf_hi16_reloc): Fix comment. - (mips_elf_got16_reloc): Likewise. - (_bfd_mips_elf32_gprel16_reloc): Likewise. - (elf_reloc_map): Code cleanup. - (mips_reloc_map): Add comment. - (bfd_elf23_bfd_reloc_type_lookup): Code cleanup. - (mips_elf32_rtype_to_howto): Likewise. - (mips_elf32_discard_info): Likewise. - (elf32_mips_irix_compat): Invert logic: Only SGIish vectors - lead to IRIX compatibility now. - -2002-05-15 Thiemo Seufer - - * elfxx-mips.c: Call it IRIX, not Irix in comments. - -2002-05-13 Jason Thorpe - - * config.bfd (shle-*-netbsdelf*): Add target which includes - sh64 support. - -2002-05-13 David Edelsohn - - * configure.in: Revert 2002-04-07. Instead, auto-configure - HAVE_ST_C_IMPL. - * configure: Regenerate. - * config.in: Regenerate. - * rs6000-core.c (CNEW_IMPL): Guard use of c_impl with HAVE_ST_C_IMPL - or AIX_5_CORE. - -2002-05-11 Federico G. Schwindt - - * configure.in (sparc*-*-openbsd*): Support sparc64-openbsd - corefiles as well.2 - * configure: Regenerate. - -2002-05-13 Alan Modra - - * Makefile.am (install-data-local): Install headers to - $(exec_prefix)/include. - * Makefile.in: Regenerate. - -2002-05-11 Ralf Corsepius - Daniel Jacobowitz - - * coff-sh.c (sh_reloc_map): Map to R_SH_IMM32 for non-PE. Don't - map BFD_RELOC_RVA. - -2002-05-11 Federico G. Schwindt - - * config.bfd (alpha*-*-openbsd*, sparc64*-*-openbsd*, - hppa*-*-openbsd*): New targets. - * configure.in (alpha*-*-openbsd*): Set COREFILE. - * configure: Regenerate. - -2002-05-10 Tom Rix - - * coff64-rs6000.c (xcoff64_reloc_type_br): New function for - xcoff64_ppc_relocate_section. - * coff-rs6000.c : Extern common xcoff_reloc_type functions. - * libxcoff.h: Common xcoff_reloc_type function declaration. - -2002-05-10 Alan Modra - - * elf32-i386.c (elf_i386_relocate_section): Remove overflow checks - added in 2002-05-09 commit. - - * elf32-hppa.c (elf32_hppa_size_stubs): Revert part of 2002-05-04, - don't look for stubs on all undefined syms. - -2002-05-09 Alan Modra - - * elf64-ppc.c (RA_REGISTER_MASK, RA_REGISTER_SHIFT): Delete. - (ppc64_elf_howto_raw ): Not pc_relative or - pcrel_offset. - - * elf32-i386.c (elf_howto_table): Comments. - (elf_i386_relocate_section): Handle more relocs for relocatable - linking and against SEC_MERGE sections. - -2002-05-08 Alan Modra - - * elf32-ppc.c (ppc_elf_create_got): New function. - (ppc_elf_create_dynamic_sections): Call ppc_elf_create_got before - _bfd_elf_create_dynamic_sections. Correct .plt flags. - (ppc_elf_check_relocs): Use ppc_elf_create_got in place of - _bfd_elf_create_got_section. - -2002-05-07 Alan Modra - - * elf-bfd.h (struct elf_backend_data): Add rela_normal. - * elfxx-target.h (elf_backend_rela_normal): Define. - (elfNN_bed): Init rela_normal. - * elflink.h (elf_link_input_bfd ): Handle adjustment - for section symbols here if rela_normal. Simplify abs section test. - * elf-m10200.c (mn10200_elf_relocate_section): If relocatable, - return immediately. Remove code handling relocatable linking. - * elf-m10300.c (mn10300_elf_relocate_section): Likewise. - * elf32-fr30.c (fr30_elf_relocate_section): Likewise. - * elf32-i370.c (i370_elf_relocate_section): Likewise. - * elf32-i860.c (elf32_i860_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-mcore.c (mcore_elf_relocate_section): Likewise. - * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - * elf32-arm.h (elf32_arm_relocate_section): Likewise #ifndef USE_REL. - * elf32-m32r.c (m32r_elf_relocate_section): Likewise. - * elf-m10200.c (elf_backend_rela_normal): Define. - * elf-m10300.c (elf_backend_rela_normal): Define. - * elf32-fr30.c (elf_backend_rela_normal): Define. - * elf32-i370.c (elf_backend_rela_normal): Define. - * elf32-i860.c (elf_backend_rela_normal): Define. - * elf32-m68k.c (elf_backend_rela_normal): Define. - * elf32-mcore.c (elf_backend_rela_normal): Define. - * elf32-openrisc.c (elf_backend_rela_normal): Define. - * elf32-ppc.c (elf_backend_rela_normal): Define. - * elf32-s390.c (elf_backend_rela_normal): Define. - * elf32-xstormy16.c (elf_backend_rela_normal): Define. - * elf64-ppc.c (elf_backend_rela_normal): Define. - * elf64-s390.c (elf_backend_rela_normal): Define. - * elf64-x86-64.c (elf_backend_rela_normal): Define. - * elfxx-ia64.c (elf_backend_rela_normal): Define. - * elf32-arm.h (elf_backend_rela_normal): Define #ifndef USE_REL. - * elf32-m32r.c (elf_backend_rela_normal): Likewise. - -2002-05-06 Nick Clifton - - * elf32-arm.h (elf32_arm_final_link_relocate): Convert - 'reloc_signed_max' and 'reloc_signed_min' into half-word offsets. - -2002-05-06 Alan Modra - - * elflink.h (elf_link_input_bfd ): Adjust r_offset - when not relocatable. Fix reloc_emitter call for K&R. - -2002-05-04 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Reinstate code - reloading local sym addend mistakenly removed in 2002-05-01 change. - - * dwarf2.c (struct line_head): Make prologue_length a bfd_vma. - (read_abbrevs): Change "offset" param to bfd_vma. - (parse_comp_unit): Change "version" and addr_size to unsigned ints. - Change "abbrev_offset" to bfd_vma. - (read_indirect_string): Use correct conversion chars in error - message format string, cast bfd_vma's to unsigned long. - (read_abbrevs): Likewise. - (read_attribute_value): Likewise. - (decode_line_info): Likewise. - (scan_unit_for_functions): Likewise. - (parse_comp_unit): Likewise. - -2002-05-04 Tom Rix - - * coffswap.h (coff_swap_reloc_in): Remove XCOFF support. - (coff_swap_reloc_out): Same. - * coff-rs6000.c: (xcoff_swap_reloc_in): Moved from coffswap.h. - (xcoff_swap_reloc_out): Same. - (xcoff_rtype2howto): Renamed from _bfd_xcoff_rtype2howto. Special - case some 16 bit relocs. Add reloc value to output. - (xcoff_howto_table): Remove 64 bit R_POS, add 16 bit - R_RBR. Improve names. - (_bfd_xcoff_reloc_type_lookup): Adjust for removal of 64 bit R_POS. - (bfd_xcoff_backend_data): Update with new reloc swap names. - (bfd_pmac_xcoff_backend_data) : Same. - * coff64-rs6000.c: (xcoff64_swap_reloc_in): Moved from coffswap.h. - (xcoff64_swap_reloc_out): Same. - (xcoff64_rtype2howto): Special case some 16 bit relocs and 32 bit - R_POS. Add reloc value to output. - (xcoff64_howto_table): Move 64 bit R_POS to first entry. Add 16 - bit R_RBR. Improve names, masks. - (xcoff64_reloc_type_lookup): Adjust for move of 64 bit R_POS. - (bfd_xcoff_backend_data): Update with new reloc swap names. - (bfd_xcoff_aix5_backend_data) : Same. - -2002-05-04 Alan Modra - - * elf32-hppa.c (struct elf32_hppa_link_hash_table): Add - bfd_count top_index, input_list, all_local_syms. - (elf32_hppa_setup_section_lists): New function, split from - elf32_hppa_size_stubs. - (elf32_hppa_next_input_section): Likewise. - (group_sections): Likewise. - (get_local_syms): Likewise. - (elf32_hppa_size_stubs): Adjust for split out functions. Look for - stubs on undefined syms too. - (elf32_hppa_set_gp): Use bfd_link_hash* instead of elf_link_hash*. - Only access htab elf fields when we have an elf hash table. - * elf32-hppa.h (elf32_hppa_setup_section_lists): Declare. - (elf32_hppa_next_input_section): Declare. - -2002-05-04 Bob Byrnes - - * opncls.c (_bfd_new_bfd_contained_in): Check return value of - _bfd_new_bfd. - -2002-05-03 H.J. Lu (hjl@gnu.org) - - * elfxx-mips.c (mips_elf_link_hash_entry): Add forced_local. - (mips_elf_link_hash_newfunc): Initialize forced_local to false. - (mips_elf_record_global_got_symbol): Call _bfd_mips_elf_hide_symbol - to hide a global symbol. - (_bfd_mips_elf_hide_symbol): Return if forced_local is true. Set - forced_local to true. - -2002-05-02 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section): Force relative relocs - vs SHN_UNDEF to zero. - -2002-05-02 Alan Modra - - * elf64-ppc.c (ppc64_elf_howto_raw ): Change to a - 16 bit reloc. - : Likewise. - (ppc64_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to - SECTOFF reloc. - * elf32-ppc.c (ppc_elf_howto_raw ): Correct. - (ppc_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to - SECTOFF reloc. - - * elf64-ppc.c (ppc64_elf_addr16_ha_reloc): Delete. - (ppc64_elf_ha_reloc): New function. - (ppc64_elf_brtaken_reloc): New function. - (ppc64_elf_sectoff_reloc): New function. - (ppc64_elf_sectoff_ha_reloc): New function. - (ppc64_elf_toc_reloc): New function. - (ppc64_elf_toc_ha_reloc): New function. - (ppc64_elf_toc64_reloc): New function. - (ppc64_elf_unhandled_reloc): New function. - (ppc64_elf_howto_raw): Use the above. - : Mark pc_relative, pcrel_offset. - : Not pc_relative or pcrel_offset. Fix dst_mask. - : Likewise. - (IS_ABSOLUTE_RELOC): Update. - (struct ppc_link_hash_table): Add have_undefweak. - (ppc64_elf_link_hash_table_create): Init. - (func_desc_adjust): Set have_undefweak. - (ppc64_elf_func_desc_adjust): Call func_desc_adjust earlier. Only - add the .sfpr blr when have_undefweak. - (ppc64_elf_setup_section_lists): Check hash table flavour. - (ppc64_elf_next_input_section): Move output_section->owner test to - ppc64elf.em. - (ppc64_elf_set_toc): Rename to ppc64_elf_toc, remove info param - and relocatable test. Return TOCstart and don't set elf_gp. - (ppc64_elf_relocate_section): Correct BRTAKEN/BRNTAKEN branch - offset calculation. Add assert on weak sym branch tweaks. - * elf64-ppc.h (ppc64_elf_set_toc): Delete. - (ppc64_elf_toc): Declare. - (ppc64_elf_next_input_section): Update. - -2002-05-01 Alan Modra - - * syms.c (_bfd_stab_section_find_nearest_line): Don't bomb on NULL - file_name. - -2002-05-01 Alan Modra - - * elf64-ppc.c (CROR_151515, CROR_313131): Define. - (ppc64_elf_relocate_section): Use them. Don't look for plt calls - on R_PPC64_ADDR24 relocs. Require a nop or no link reg on plt - call branches. Correct undefined weak destination. - (ppc64_elf_func_desc_adjust): Always create at least one blr in - .sfpr, and correct case where either only savef* or restf* is - needed. - - Long branch stubs, multiple stub sections. - * elf64-ppc.h (ppc64_elf_setup_section_lists): Declare. - (ppc64_elf_next_input_section): Declare. - * elf64-ppc.c: Move linker-only prototypes. - (STUB_SUFFIX): Define. - (enum ppc_stub_type): New. - (struct ppc_stub_hash_entry): New. - (struct ppc_branch_hash_entry): New. - (struct ppc_link_hash_entry): Add stub_cache, oh. - (struct ppc_link_hash_table): Add stub_hash_table etc. Remove - sstub. Add sbrlt, srelbrlt, has_14bit_branch, stub_iteration. - Rename plt_overflow to stub_error. - (ppc_stub_hash_lookup): Define. - (ppc_branch_hash_lookup): Define. - (stub_hash_newfunc): New function. - (branch_hash_newfunc): New function. - (link_hash_newfunc): Init new fields. - (ppc64_elf_link_hash_table_create): Likewise. - (ppc64_elf_link_hash_table_free): New function. - (ppc_stub_name): New function. - (ppc_get_stub_entry): New function. - (ppc_add_stub): New function. - (create_linkage_sections): Use bfd_make_section_anyway. Create - .branch_lt and .rela.branch_lt sections. Don't create .stub. - (ppc64_elf_check_relocs): Set has_14bit_branch on R_PPC64_REL14*, - and set up for plt call stubs. Link func and func desc syms. - (ppc64_elf_gc_sweep_hook): Handle REL14* as per REL24. - (func_desc_adjust): Avoid hash lookup when func desc sym available - via shortcut, and set links when processing. - (ppc64_elf_hide_symbol): Likewise. - (allocate_dynrelocs): Don't allocate stub section here. - (ppc64_elf_size_dynamic_sections): Handle sbrlt and srelbrlt. - Remove sstub code. - (ppc_type_of_stub): New function. - (build_one_stub): Delete. - (ppc_build_one_stub): New function. - (ppc_size_one_stub): New function. - (ppc64_elf_setup_section_lists): New function. - (ppc64_elf_next_input_section): New function. - (group_sections): New function. - (get_local_syms): New function. - (ppc64_elf_size_stubs): Rewrite. - (ppc64_elf_build_stubs): Rewrite. - (ppc64_elf_relocate_section): Look up stub entry for REL24 - relocs. Don't propagate REL14* to dynamic objects. Look for long - branch stubs if REL14* or REL24 relocs won't reach. - (bfd_elf64_bfd_link_hash_table_free): Define. - -2002-04-30 Mark Mitchell - - * config.bfd: Add support for powerpc-*-windiss. - -2002-04-30 Tom Rix - - * xcofflink.c (xcoff_link_add_symbols): Always copy undef C_EXT - symbol names into the hash table. - -2002-04-28 Tom Rix - - * coff-rs6000.c (xcoff_calculate_relocation) : Function table for - calulating relocations. - (xcoff_complain_overflow) : Function table for relocation errors. - (xcoff_ppc_relocate_section): Use relocation and complain function - tables. - (xcoff_complain_overflow_unsigned_func): New complain function. - (xcoff_complain_overflow_signed_func): Same. - (xcoff_complain_overflow_bitfield_func): Same. - (xcoff_complain_overflow_dont_func): Same. - (xcoff_reloc_type_crel): New recot function. - (xcoff_reloc_type_br): Same. - (xcoff_reloc_type_ba): Same. - (xcoff_reloc_type_toc): Same. - (xcoff_reloc_type_rel): Same. - (xcoff_reloc_type_neg): Same. - (xcoff_reloc_type_pos): Same. - (xcoff_reloc_type_fail): Same. - (xcoff_reloc_type_noop): Same. - * libxcoff.h : Declare common parts for xcoff64. - * coff64-rs6000.c (xcoff64_ppc_relocate_section): Use relocation - and complain function tables. - -2002-04-28 Alan Modra - - * elf64-x86-64.c (struct elf64_x86_64_dyn_relocs): Comment typo. - * elf32-hppa.c (elf32_hppa_final_link): Formatting. - -2002-04-26 Alan Modra - - * opncls.c (bfd_make_readable): Call bfd_section_list_clear. - * xcofflink.c (xcoff_link_add_dynamic_symbols): Likewise. - - * elflink.h (elf_bfd_final_link): Ensure input bfd class is the - same as the output before calling elf_link_input_bfd. - - * coffcode.h (coff_compute_section_file_positions): Set - section_tail after shuffling section list. - -2002-04-24 Christian Groessler - - * coff-z8k.c (extra_case): Fix R_IMM32 relocations: The - addresses are 23bit with a special layout, not plain 32bit - values. Prevent relocation of immediate values. - -2002-04-24 Chris G. Demetriou - - * elfxx-mips.c (_bfd_mips_elf_print_private_bfd_data): If MDMX or - MIPS-16 ASE flags are set, print something to indicate that. - -2002-04-23 Alan Modra - - * elf32-hppa.c (hppa_type_of_stub): Correct and simplify condition - under which a plt call stub is used. - (final_link_relocate): Similarly. - (allocate_plt_static): Clear h-plabel except when plt entry is - exclusively used for a plabel. - (allocate_dynrelocs): Use the above to simplify plt sizing. - (struct elf32_hppa_link_hash_table): Add has_22bit_branch. - (elf32_hppa_link_hash_table_create): Init. - (BL22_RP): Define. - (hppa_build_one_stub): Use BL22_RP if has_22bit_branch. - (elf32_hppa_check_relocs): Set has_22bit_branch. - - * elf32-hppa.c (elf32_hppa_check_relocs): Remove debug message. - (final_link_relocate): Likewise. - -2002-04-22 Jakub Jelinek - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't build - search table if some FDE is DW_EH_PE_aligned encoded either. - (_bfd_elf_write_section_eh_frame): Handle terminating FDE specially. - -2002-04-22 Richard Smith - Jakub Jelinek - - * elf-eh-frame.c (struct eh_cie_fde): Add per_encoding_relative. - (_bfd_elf_discard_section_eh_frame): Set it for CIEs with pcrel - encoded personality. - (_bfd_elf_write_section_eh_frame): Adjust pcrel encoded personality - for CIE/FDE removal. - -2002-04-20 Tom Rix - - * coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Fix C_FILE auxent. - -2002-04-20 Alan Modra - - * archures.c (bfd_lookup_arch): Move the list order comment.. - (struct bfd_arch_info): ..to where it belongs. - * bfd-in2.h: Regenerate. - - * archures.c (bfd_lookup_arch): Add comment on list order. - (bfd_default_set_arch_mach): Use bfd_lookup_arch. - * cpu-powerpc.c (bfd_powerpc_archs): Re-order so that the default - is always at head of list. - -2002-04-18 Nick Clifton - - * coff-arm.c (coff_thumb_pcrel_12, coff_thumb_pcrel_9, - insert_thumb_branch, record_thumb_to_arm_glue): Suppress - definition of these functions for ARM_WINCE builds as they are - not used. - (SWAP_IN_RELOC_OFFSET, SWAP_OUT_RELOC_OFFSET): Do not define - for ARM_WINCE builds. - -2002-04-18 Nick Clifton - - * coff-arm.c (bfd_arm_process_before_allocation): - -2002-04-17 J"orn Rennecke - - * cpu-sh.c (scan_mach): Delete. - (arch_info_struct): Replace scan_mach with bfd_default_scan. - (bfd_sh_arch): Likewise. - -2002-04-16 Nick Clifton - - * ihex.c (ihex_write_object_contents): Fix check for records - crossing 64K boundaries. - -2002-04-16 Alan Modra - - * elf32-m32r.c (m32r_elf_add_symbol_hook): Check the hash table - type rather than just assuming entries are ELF. - * elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise. - * elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise. - * elf64-sparc.c (sparc64_elf_add_symbol_hook): Likewise. - * elf64-mmix.c (mmix_elf_add_symbol_hook): Use bfd_link_hash_entry - rather than elf_link_hash_entry. - -2002-04-15 Richard Henderson - - * elf32-mips.c (mips_elf32_object_p): Revert 0404 fragment: allow - n32 binaries. - -2002-04-15 Michael Snyder - - * opncls.c (bfd_close): Write contents if writeable. - Minor formatting tidy-ups. - -2002-04-15 Alan Modra - - * elf32-ppc.c (ppc_elf_add_symbol_hook): Check the hash table type. - -2002-04-12 Michael Snyder - - * bfd-in.h (bfd_get_section_lma): New access macro. - Minor white-space fix-up. - -2002-04-12 Alan Modra - - * elf.c (prep_headers): Don't zero EI_OSABI, EI_ABIVERSION or - header pad. - -2002-04-09 DJ Delorie - - * elfarm-nabi.c (elf32_arm_howto_table): Fix ABS16 masks. - -2002-04-09 Casper S. Hornstrup - - * coffcode.h (coff_read_word): New. - (coff_compute_checksum): New. - (coff_apply_checksum): New. - (coff_write_object_contents): Call coff_apply_checksum () to - apply checksum to PE image. - -2002-04-08 Randolph Chung - - * elf32-hppa.c (hppa_unwind_entry_compare): Move to elf-hppa.h. - (elf32_hppa_final_link): Split out sorting logic to.. - * elf-hppa.h (elf_hppa_sort_unwind): ..here. - (elf_hppa_final_link): Call elf_hppa_sort_unwind. - -2002-04-07 Andrew Cagney - - * configure.in: Add missing ``|'' to powerpc-*-aix4.[4-9]* - pattern. - * configure: Re-generate. - -2002-04-07 Andrew Cagney - - * configure.in: Only define AIX_CORE_DUMPX_CORE when AIX version - is greater or equal to 4.3.3. - * configure: Regenerate. - Fix PR gdb/344. - -2002-04-05 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_howto_table) : Fix typo in name. - (cris_elf_check_relocs): Always create .rela.got here when - R_CRIS_16_GOTPLT or R_CRIS_32_GOTPLT is seen. - (elf_cris_adjust_gotplt_to_got): Don't create .rela.got here; - assume it's created. - -2002-04-04 Daniel Jacobowitz - - * aout-adobe.c (aout_32_bfd_link_hash_table_free): Define. - * aout-target.h (MY_bfd_link_hash_table_free): Conditionally - define. - * aout-tic30.c (MY_bfd_link_hash_table_free): Likewise. - * bfd.c (bfd_link_hash_table_free): Define. - * binary.c (binary_bfd_link_hash_table_free): Define. - * bout.c (b_out_bfd_link_hash_table_free): Define. - * coff-rs6000.c (rs6000coff_vec): Include - _bfd_generic_link_hash_table_free. - (pmac_xcoff_vec): Likewise. - * coff64-rs6000.c (rs6000coff64_vec): Likewise. - (aix5coff64_vec): Likewise. - * coffcode.h (coff_bfd_link_hash_table_free): Conditionally define. - * elf-m10300.c (elf32_mn10300_link_hash_table_free): New function. - (bfd_elf32_bfd_link_hash_table_free): Define. - * elf32-hppa.c (elf32_hppa_link_hash_table_free): New function. - (bfd_elf32_bfd_link_hash_table_free): Define. - * elfxx-target.h (bfd_elfNN_bfd_link_hash_table_free): Conditionally - define. - * i386msdos.c (msdos_bfd_link_hash_table_free): Define. - * i386os9k.c (os9k_bfd_link_hash_table_free): Define. - * ieee.c (ieee_bfd_link_hash_table_free): Define. - * ihex.c (ihex_bfd_link_hash_table_free): Define. - * libbfd-in.h (_bfd_nolink_bfd_link_hash_table_free): Define. - (_bfd_generic_link_hash_table_free): Add prototype. - * libcoff-in.h (_bfd_xcoff_bfd_link_hash_table_free): Add prototype. - * libecoff.h (_bfd_ecoff_bfd_link_hash_table_free): Define. - * linker.c (_bfd_generic_link_hash_table_free): New function. - * mmo.c (mmo_bfd_link_hash_table_free): Define. - * nlm-target.h (nlm_bfd_link_hash_table_free): Define. - * oasys.c (oasys_bfd_link_hash_table_free): Define. - * ppcboot.c (ppcboot_bfd_link_hash_table_free): Define. - * som.c (som_bfd_link_hash_table_free): Define. - * srec.c (srec_bfd_link_hash_table_free): Define. - * tekhex.c (tekhex_bfd_link_hash_table_free): Define. - * versados.c (versados_bfd_link_hash_table_free): Define. - * vms.c (vms_bfd_link_hash_table_free): New function. - * xcofflink.c (_bfd_xcoff_bfd_link_hash_table_free): New function. - - * coff-arm.c (coff_arm_link_hash_table_create): Use bfd_malloc - instead of bfd_alloc. - * coff-h8300.c (h8300_coff_link_hash_table_create): Likewise. - * coff-mcore.c (coff_mcore_link_hash_table_create): Likewise. - * coff-ppc.c (ppc_coff_link_hash_table_create): Likewise. - * cofflink.c (_bfd_coff_link_hash_table_create): Likewise. - * ecoff.c (_bfd_ecoff_bfd_link_hash_table_create): Likewise. - * elf-m10300.c (elf32_mn10300_link_hash_table_create): Likewise. - * elf.c (_bfd_elf_link_hash_table_create): Likewise. - * elf32-arm.h (elf32_arm_link_hash_table_create): Likewise. - * elf32-cris.c (elf_cris_link_hash_table_create): Likewise. - * elf32-hppa.c (elf32_hppa_link_hash_table_create): Likewise. - * elf32-i386.c (elf_i386_link_hash_table_create): Likewise. - * elf32-m68k.c (elf_m68k_link_hash_table_create): Likewise. - * elf32-s390.c (elf_s390_link_hash_table_create): Likewise. - * elf32-sh.c (sh_elf_link_hash_table_create): Likewise. - * elf64-alpha.c (elf64_alpha_bfd_link_hash_table_create): Likewise. - * elf64-ppc.c (ppc64_elf_link_hash_table_create): Likewise. - * elf64-s390.c (elf_s390_link_hash_table_create): Likewise. - * elf64-sh64.c (sh64_elf64_link_hash_table_create): Likewise. - * elf64-sparc.c (sparc64_elf_bfd_link_hash_table_create): Likewise. - * elf64-x86-64.c (elf64_x86_64_link_hash_table_create): Likewise. - * elfxx-mips.c (_bfd_mips_elf_link_hash_table_create): Likewise. - * linker.c (_bfd_generic_link_hash_table_create): Likewise. - * m68klinux.c (linux_link_hash_table_create): Likewise. - * sparclinux.c (linux_link_hash_table_create): Likewise. - * sunos.c (sunos_link_hash_table_create): Likewise. - * xcofflink.c (_bfd_xcoff_bfd_link_hash_table_create): Likewise. - - * targets.c: Add _bfd_link_hash_table_free to xvec. - - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * libcoff.h: Regenerate. - -2002-04-04 Alan Modra - - * dep-in.sed: Cope with absolute paths. - * Makefile.am (dep.sed): Subst TOPDIR, and not INCDIR. - Run "make dep-am". - * Makefile.in: Regenerate. - * coff-arm.c: Fix copyright date. - * cpu-h8300.c: Likewise. - * cpu-i370.c: Likewise. - * cpu-s390.c: Likewise. - * cpu-mips.c: Likewise. - * po/SRC-POTFILES.in: Regenerate. - -2002-04-04 Thiemo Seufer - - * Makefile.am: Add elfxx-mips.c to the known backends. - (elf32-mips.lo): remove dependency to coff/external.h. - * Makefile.in: Regenerate. - * configure.in: Add elfxx-mips.lo to all vectors using elf32-mips.lo - Remove elf32-mips.lo from 64 bit vectors. Update dependencies - accordingly. - * configure: Regenerate. - * elf-bfd.h: Move all MIPS ELF specific prototypes to elfxx-mips.h. - (irix_compat_t): IRIX compatibility level, moved from elf32-mips.c. - (elf_backend_mips_irix_compat, elf_backend_mips_rtype_to_howto): New - MIPS specific backend functions. - * elf32-mips.c: Moved most code to elfxx-mips.c. - (mips_elf_hi16_reloc): Rename from _bfd_mips_elf_hi16_reloc and make - static. - (mips_elf_lo16_reloc): Likewise, was _bfd_mips_elf_lo16_reloc. - (mips_elf_got16_reloc): Likewise, was _bfd_mips_elf_got16_reloc. - (mips_elf_gprel32_reloc): Likewise, was _bfd_mips_elf_gprel32_reloc. - (mips_elf32_rtype_to_howto): Rename from mips_rtype_to_howto. Changed - interface to allow selection of the right REL or RELA howto table. - (mips_elf32_object_p): Rename from _bfd_mips_elf_object_p and made - static. Let it refuse n32 objects. - (elf32_mips_grok_prstatus): Rename from _bfd_elf32_mips_grok_prstatus. - (elf32_mips_grok_psinfo): Rename from _bfd_elf32_mips_grok_psinfo. - (elf32_mips_discard_info): Rename from _bfd_elf32_mips_discard_info. - (elf32_mips_ignore_discarded_relocs): Rename from - _bfd_elf32_mips_ignore_discarded_relocs. - (elf32_mips_write_section): Rename from _bfd_elf32_mips_write_section. - (elf32_mips_irix_compat): New function, replaces IRIX_COMPAT. - (elf_mips_howto_table_rela): Remove. - * elf64-mips.c: Moved most code to elfxx-mips.c. - (bfd_elf64_bfd_reloc_type_lookup): Make static. - (mips_elf64_rtype_to_howto): New function. - (mips_elf64_object_p): Likewise. - (elf64_mips_irix_compat): Likewise. - * elfxx-mips.c: New file containing common code merged together from - elf32-mips.c and elf64-mips.c. - * elfxx-mips.h: New file containing MIPS specific prototypes from - elf-bfd.h. - * elfxx-target.h: Add handling for elf_backend_mips_irix_compat and - elf_backend_mips_rtype_to_howto. - -2002-04-04 Alan Modra - - * srec.c (MAXCHUNK, Chunk): Revise comments. - (srec_write_record): Correct buffer size. - (srec_write_header): Do without intermediate buffer. - (srec_write_section): Validate Chunk. - (srec_write_terminator): Pass NULL instead of dummy buffer. - (srec_write_symbols): Pass file and symbol names directly to - bfd_bwrite so sprintf won't overflow buffer. - -2002-04-03 Jakub Jelinek - - * elf32-sparc.c (elf32_sparc_relocate_section): Don't emit dynamic - PC relative relocs against hidden symbols. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - -2002-04-03 Alan Modra - - * elf.c (_bfd_elf_make_section_from_shdr): When setting section - LMAs, loop over segments until p_vaddr and p_memsz specify an - extent enclosing the section. - -2002-04-02 Nick Clifton - - * ihex.c (ihex_write_object_contents): Do not allow records to - cross a 64K boundary - wrap if necessary. - -2002-04-01 Nathan Williams - - * elf.c (elfcore_netbsd_get_lwpid): Fix off-by-one error - which caused the returned LWP ID to always be 0. - -2002-04-01 Richard Henderson - - * elf32-sparc.c (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New. - (elf32_sparc_relocate_section): Use it to figure out when to - initialize .got entries. - * elf64-sparc.c: Similarly. - -2002-03-28 Alan Modra - - * linker.c (link_action): Ignore duplicate warning syms. - (_bfd_generic_link_write_global_symbol): Follow warning symbol link. - * elflink.h (elf_adjust_dynstr_offsets): Likewise. - (elf_adjust_dynamic_symbol): Likewise. - (elf_export_symbol): Likewise. - (elf_link_find_version_dependencies): Likewise. - (elf_link_assign_sym_version): Likewise. - (elf_link_sec_merge_syms): Likewise. - (elf_link_output_extsym): Likewise. - (elf_gc_sweep_symbol): Likewise. - (elf_gc_propagate_vtable_entries_used): Likewise. - (elf_gc_smash_unused_vtentry_relocs): Likewise. - (elf_gc_allocate_got_offsets): Likewise. - (elf_collect_hash_codes): Likewise. - * elflink.c (elf_link_renumber_hash_table_dynsyms): Likewise. - * elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols): Likewise. - (elf_hppa_remark_useless_dynamic_symbols): Likewise. - * elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Likewise. - * elf32-arm.h (elf32_arm_discard_copies): Likewise. - * elf32-cris.c (elf_cris_adjust_gotplt_to_got): Likewise. - (elf_cris_discard_excess_dso_dynamics): Likewise. - * elf32-hppa.c (clobber_millicode_symbols): Likewise. - (mark_PIC_calls): Likewise. - (allocate_plt_static): Likewise. - (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elf32-i386.c (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elf32-i370.c (i370_elf_adjust_dynindx): Likewise. - * elf32-m68k.c (elf_m68k_discard_copies): Likewise. - * elf32-mips.c (mips_elf_output_extsym): Likewise. - (mips_elf_sort_hash_table_f): Likewise. - (mips_elf_check_mips16_stubs): Likewise. - * elf32-s390.c (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elf32-sh.c (sh_elf_discard_copies): Likewise. - * elf32-xstormy16.c (xstormy16_relax_plt_check): Likewise. - (xstormy16_relax_plt_realloc): Likewise. - * elf64-alpha.c (elf64_alpha_calc_got_offsets_for_symbol): Likewise. - (elf64_alpha_output_extsym): Likewise. - * elf64-hppa.c (elf64_hppa_mark_exported_functions): Likewise. - * elf64-mips.c (mips_elf64_sort_hash_table_f): Likewise. - (mips_elf64_check_mips16_stubs): Likewise. - (mips_elf64_output_extsym): Likewise. - * elf64-ppc.c (func_desc_adjust): Likewise. - (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elf64-s390.c (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elf64-sh64.c (sh64_elf64_discard_copies): Likewise. - * elf64-x86-64.c (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - * elfxx-ia64.c (elfNN_ia64_global_dyn_sym_thunk): Likewise. - * aoutx.h (aout_link_write_other_symbol): Likewise. - * cofflink.c (_bfd_coff_write_task_globals): Likewise. - (_bfd_coff_write_global_sym): Likewise. - * i386linux.c (linux_tally_symbols): Likewise. - * m68klinux.c (linux_tally_symbols): Likewise. - * sparclinux.c (linux_tally_symbols): Likewise. - * pdp11.c (aout_link_write_other_symbol): Likewise. - * sunos.c (sunos_scan_dynamic_symbol): Likewise. - * xcofflink.c (xcoff_build_ldsyms): Likewise. - (xcoff_write_global_symbol): Likewise. - - * cofflink.c (_bfd_coff_final_link): Formatting. - * cpu-mips.c (mips_compatible): Make static, prototype. - * elf32-i386.c (elf_i386_check_relocs): Formatting. - * elf32-sh.c (sh_elf_size_dynamic_sections): Likewise. - * elf64-alpha.c (elf64_alpha_output_extsym): Likewise. - * elf64-mips.c (mips_elf64_sort_hash_table): Likewise. - (mips_elf64_final_link): Likewise. - * elflink.h (elf_link_find_version_dependencies): Remove duplicate - prototype. - -2002-03-27 Nick Clifton - - * coff-arm.c (SWAP_IN_RELOC_OFFSET): Define. - (SWAP_OUT_RELOC_OFFSET): Define. - -2002-03-27 Gregory Steuck - - * elf.c (_bfd_elf_get_symtab_upper_bound): Leave space for - terminating NULL if empty symbol table. - (_bfd_elf_get_dynamic_symtab_upper_bound): Likewise. - -2002-03-26 H.J. Lu (hjl@gnu.org) - - * elflink.h (elf_link_input_bfd): Revert the last change since - the gcc exception handling isn't fixed yet. - -2002-03-26 H.J. Lu (hjl@gnu.org) - - * elflink.h (elf_link_input_bfd): Complain about relocations - against local symbols in discarded sections. - -2002-03-26 Alan Modra - - * elflink.h (elf_gc_mark): Don't recurse into non-ELF sections. - -2002-03-23 Alan Modra - - * elf.c (_bfd_elf_make_section_from_shdr): Don't set lma based on - section file offset for !SEC_LOAD sections. - -2002-03-21 Richard Earnshaw - - * elf32-arm.h (elf32_arm_final_link_relocate , - ): Handle relocations to Thumb functions. - -2002-03-21 Alan Modra - - * coff64-rs6000.c (_bfd_xcoff64_put_symbol_name): Prototype. - Whitespace changes. - * archive.c: Update copyright date. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * Makefile.am: Run "make dep-am" - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2002-03-20 Daniel Jacobowitz - - * dwarf2.c (struct funcinfo): Move up. - (lookup_address_in_function_table): New argument function_ptr. - Set it. - (lookup_address_in_line_table): New argument function. If function - is non-NULL, use it to handle ``addr'' before the first line note of - the function. - (comp_unit_find_nearest_line): Update and swap calls to - lookup_address_in_function_table and lookup_address_in_line_table. - * syms.c (_bfd_stab_section_find_nearest_line): Use the first - N_SLINE encountered if we see an N_FUN before any N_SLINE. - -2002-03-20 Tom Rix - - * coff-rs6000.c (_bfd_xcoff_stat_arch_elt): Renamed from - _bfd_xcoff_generic_stat_arch_elt. Fix format check. - * coff64-rs6000.c : Use _bfd_xcoff_stat_arch_elt. - -2002-03-19 Tom Rix - - * xcofflink.c (_bfd_xcoff_bfd_link_add_symbols): Look through all - dynamic objects in archives. - -2002-03-19 Hans-Peter Nilsson - - * elflink.h (NAME(bfd_elf,record_link_assignment)): Don't set - STT_NOTYPE symbols to STT_OBJECT. - -2002-03-18 Jan Hubicka - - * cpu-i386.c (bfd_x86_64_arch): Rename to "i386:x86-64" - -2002-03-18 Tom Rix - - * aix5ppc.core.c : New file for AIX 5 64 bit core support. - * bfd-in.h : Add bfd_xcoff_ar_archive_set_magic declaration. - * coff-rs6000 (do_pad) : New function for archive padding. - (do_copy) : New function for object file copying in archives. - (do_shared_object_padding) : New function for padding shared - objects to their text section alignment in archives. - (bfd_xcoff_ar_achive_set_magic) : Stub. - (xcoff_write_armap_big) : Use do_copy and do_pad. - (xcoff_write_archive_contents_big) : Use do_shared_object_padding, - do_copy and do_pad. - * coff64-rs6000.c (xcoff64_write_ojbect_contents) : Use - bfd_xcoff_magic_number. - (xcoff64_bad_format_hook) : New function for _bfd_bad_format_hook - fop. - (xcoff_backend_data_r) : Use xcoff64_bad_format_hook. - (bfd_xcoff_aix5_backend_data) : New Aix 5 backend data. - (aix5coff64_vec) : New Aix 5 target aix5coff64-rs6000. - * rs6000-core.c : Update copyright date. - * xcofflink.c (bfd_xcoff_size_dynamic_sections): Check for NULL - csectpp. - * coffcode.h (coff_new_section_hook) : Use new accessor macros. - (coff_set_arch_mach_hook) : Add Aix 5 U64_TOCMAGIC magic #. - (coff_set_flags) : Use bfd_xcoff_magic_number. - * libxcoff.h (bfd_xcoff_is_xcoff64): Add U64_TOCMAGIC. - * configure.in : Add powerpc-*-aix5 and rs6000-*-aix5 support. - * Makefile.am : Same. - * config.bfd : Same. - * targets.c : Same. - * configure : Regnerate. - * Makefile.in : Same. - * bfd-in2.h : Same. - -2002-03-18 Nick Clifton - - * po/fr.po: Updated version. - -2002-03-18 Alan Modra - - * libbfd.c (bfd_write_bigendian_4byte_int): Return true iff success. - * libbfd.h: Regenerate. - * archive.c (coff_write_armap): Pass on failures from - bfd_write_bigendian_4byte_int. - -2002-03-14 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set the BFD - error to bfd_error_nonrepresentable_section for reinit_array - section in DSO. - -2002-03-14 Nick Clifton - - * coffcode.h (coff_slurp_symbol_table): When adding BSF_WEAK flag, - OR it in rather than replacing previously selected flags. - - * elfxx-target.h (TARGET_BIG_SYM): Set ar_max_namelen to 15. - (TARGET_LITTLE_SYM): Set ar_max_namelen to 15. - -2002-03-14 Alan Modra - - * cpu-mips.c (mips_compatible): New. Don't check bits_per_word. - (N): Use the above. - * elflink.h (elf_bfd_final_link): Revert last change. Instead, - ensure reloc size matches before calling elf_link_input_bfd. - Add an assert to check reloc size when counting output relocs. - -2002-03-14 Nick Clifton - - * mmo.c (mmo_get_loc): Return NULL rather than false. - -2002-03-13 Nick Clifton - - * po/fr.po: Updated version. - -2002-03-13 Alan Modra - - * archures.c (bfd_default_compatible): Test bits_per_word. - * cpu-i386.c (i386_compatible): Remove. Replace occurrences with - bfd_default_compatible. - * cpu-i370.c (i370_compatible): Likewise. - * cpu-sparc.c (sparc_compatible): Likewise. - * cpu-h8300.c (compatible): Test in->arch == out->arch. - - * elflink.h: Formatting fixes. - (elf_link_output_extsym): Merge undefined and undef weak cases. - - * elflink.h (elf_bfd_final_link): Only call elf_link_input_bfd - when word size of input matches output word size. - -2002-03-12 Andreas Jaeger - - * cpu-i386.c (i386_compatible): New. Use it instead of - bfd_default_compatible. - -2002-03-07 H.J. Lu (hjl@gnu.org) - - * coff-sh.c (shcoff_reloc_map): Use bfd_reloc_code_real_type - as the type for bfd_reloc_val. - -2002-03-05 John David Anglin - - * elf-hppa.h (elf_hppa_is_dynamic_loader_symbol): New function. - (elf_hppa_relocate_section): Ignore undefined dynamic loader symbols. - (elf_hppa_final_link_relocate): Correct relocations for indirect - references to local data through the DLT. Fix .opd creation for - local symbols using R_PARISC_LTOFF_FPTR32 and R_PARISC_FPTR64 - relocations. Use e_lsel selector for R_PARISC_DLTIND21L, - R_PARISC_LTOFF_FPTR21L and R_PARISC_LTOFF_TP21L as per - "Processor-Specific ELF for PA_RISC, Version 1.43" document. - Similarly, use e_rsel for DLT and LTOFF 'R' relocations. - * elf32-hppa.c (final_link_relocate): Revise relocation selectors - as per "Processor-Specific ELF for PA_RISC, Version 1.43" document. - -2002-03-05 Jakub Jelinek - - * merge.c (_bfd_merge_sections): Don't segfault if there - is nothing to merge due to GC. - -2002-03-05 Alan Modra - - * elf32-hppa.c (clobber_millicode_symbols): Remove hack to keep - symbols that have been forced local. - - * elflink.h (elf_bfd_final_link): Call elf_link_output_extsym - to output forced local syms for non-shared link. - (elf_link_output_extsym): Tweak condition for calling backend - adjust_dynamic_symbol so that previous behaviour is kept. - Whitespace changes throughout file. - -2002-03-04 H.J. Lu - - * elf.c (bfd_section_from_shdr): Handle special sections, - .init_array, .fini_array and .preinit_array. - (elf_fake_sections): Likewise. - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Create the - DT entry only if the section is in output for .init_array, - .fini_array and .preinit_array. Complain about .preinit_array - section in DSO. - (elf_bfd_final_link): Warn zero size for .init_array, - .fini_array and .preinit_array sections. - - * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Remove - SHT_INIT_ARRAY, SHT_FINI_ARRAY and SHT_PREINIT_ARRAY. - (elfNN_ia64_fake_sections): Remove .init_array, .fini_array and - .preinit_array. - -2002-03-04 Alan Modra - - * configure.in (WIN32LIBADD): Don't eval PICFLAG assignment. - * configure: Regenerate. - -2002-03-02 Tom Rix - - * coff64-rs6000.c (xcoff64_howto_table): Replace howto types with - symbolic equiv. - * coff-rs6000.c (xcoff_howto_table): Same. - -2002-03-01 David Mosberger - - * elflink.h (size_dynamic_sections): If section named - ".preinit_array" exists, create DT_PREINIT_ARRAY and - DT_PREINIT_ARRAYSZ entries in dynamic table. Analogously for - ".init_array" and ".fini_array". - (elf_bfd_final_link): Handle DT_PREINIT_ARRAYSZ, DT_INIT_ARRAYSZ, - DT_FINI_ARRAYSZ, DT_PREINIT_ARRAY, DT_INIT_ARRAY, and - DT_FINI_ARRAY. - -2002-02-26 Andrew Macleod - - * elflink.h (elf_bfd_final_link): Don't crash on SHN_UNDEF local - dynsyms. - -2002-02-25 Alan Modra - - * elf64-hppa.h: Update copyright date. - - * elf64-ppc.c (ppc64_elf_check_relocs): Warning fix. - (ppc64_elf_relocate_section): Don't generate power4 style branch - hints for *_BRTAKEN and *_BRNTAKEN relocs. - -2002-02-22 Jakub Jelinek - - * elf64-sh64.c (sh_elf64_relocate_section): Fix a typo from my - last patch. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - -2002-02-21 Andreas Jaeger - - * elf64-x86-64.c: Major rework that introduces all recent changes - to the x86-64 backend. Get a closer match to elf32-i386. - (struct elf64_x86_64_dyn_relocs): Rename from - elf64_x86_64_pcrel_relocs_copied, add additional fields. Change - all users. - (struct elf64_x86_64_link_hash_table): Add short cuts to some - sections. - (link_hash_newfunc): Rename from elf64_x86_64_link_hash_newfunc, - remove casts, initialize new hash members. - (create_got_section): New. - (elf64_x86_64_create_dynamic_sections): New. - (elf64_x86_64_copy_indirect_symbol): New. - (elf64_x86_64_check_relocs): Don't allocate space for dynamic - relocs, .got or .relgot here but do it in allocate_dynrelocs. - Reference count possible .plt and .got entries. Don't test input - section SEC_READONLY here to try to avoid copy relocs, and keep - dyn_relocs regardless of ELF_LINK_NON_GOT_REF. Don't set - DF_TEXTREL here. Delay setting of variables until needed. Cache - pointer to "sreloc" section in elf_section_data. Tweak condition - under which .got created. Report files with bad relocation - section names. - (elf64_x86_64_gc_sweep_hook): Sweep dyn_relocs and local_dynrel. - Reference count possible .plt entries. Don't deallocate .got and - .relgot space here. - (elf64_x86_64_adjust_dynamic_symbol): Handle nocopyreloc. Don't - do copy reloc processing for weakdefs. Remove redundant casts and - aborts. Delay setting of vars until needed. Move creation of - dynamic symbols and allocation of .plt and .rela.plt to - allocate_dynrelocs. Replace BFD_ASSERT with abort. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New. - (allocate_dynrelocs): New. - (readonly_dynrelocs): New. - (elf64_x86_64_size_dynamic_sections): Call readonly_dynrelocs. - Allocate space for dyn relocs. Replace BFD_ASSERT with abort. - Zero out the dynamic allocated content space. - (elf64_x86_64_discard_copies): Removed. - (elf64_x86_64_relocate_section): Make use of dynamic section - short-cuts. Localise vars, and delay setting. Better error - reporting, replace BFD_ASSERT with abort. Check - ELF_LINK_HASH_DEF_DYNAMIC to see if a symbol is not defined in the - regular object file and tread the weak definition as the normal - one. Don't discard relocs for undefweak or undefined symbols and - check !DEF_REGULAR as well as DEF_DYNAMIC in test for avoided copy - relocs. - (elf64_x86_64_finish_dynamic_symbol): Don't copy relocs for - symbols that have been forced local. Use same test to decide if - we can use a relative reloc for got as relocate_section. Expand - SHN_UNDEF comment. Move expressions out of function calls. - Replace BFD_ASSERT with abort. - (bfd_elf64_bfd_final_link): Removed. - (elf_backend_copy_indirect_symbol): Define. - -2002-02-20 Tom Rix - - * coff-rs6000.c (xcoff_howto_table): Add 16 bit R_BA. - (_bfd_xcoff_reloc_type_lookup): Use it. - * coff64-rs6000.c (xcoff64_howto_table): Same. - (xcoff64_reloc_type_lookup): Same. - -2002-02-20 Peter Schauer - - * osf-core.c (osf_core_vec): OSF/1 (Digital Unix) core files are - little endian. - -2002-02-19 Martin Schwidefsky - - * archures.c (bfd_mach_s390_esa): Rename to bfd_mach_s390_31. - (bfd_mach_s390_esame): Rename to bfd_mach_s390_64. - * bfd-in2.h: Regenerate. - * cpu-s390.c (arch_info_struct): Use renamed architecture defines. - Replace architecture name "s390" with "s390:31-bit" and "s390:esame" - with "s390:64-bit". - * elf32-s390.c (elf_howto_table): Add 32 bit pc relative relocations. - (elf_s390_reloc_type_lookup): Likewise. - (elf_s390_check_relocs): Likewise. - (elf_s390_gc_sweep_hook): Likewise. - (elf_s390_relocate_section): Likewise. - (elf_s390_object_p): Use renamed architecture define. - * elf64-s390.c (elf_s390_object_p): Use renamed architecture define. - -2002-02-19 Frank Ch. Eigler - - * syms.c (stt[]): Sorted. Added .init/.fini -> "t" mapping. - -2002-02-19 Jakub Jelinek - - * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Enable - absptr -> pcrel optimization for shared libs. - Only create minimal .eh_frame_hdr if absptr FDE encoding in shared - library cannot be converted to pcrel. - (_bfd_elf_eh_frame_section_offset): Return -2 if making absptr - relative. - * elf32-i386.c (elf_i386_relocate_section): If - _bfd_elf_section_offset returned -2, skip, but make sure the - relocation is installed. - * elf32-arm.h (elf32_arm_final_link_relocate): Likewise. - * elf32-cris.c (cris_elf_relocate_section): Likewise. - * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. - * elf32-i370.c (i370_elf_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-s390.c (elf_s390_relocate_section): Likewise. - * elf32-sh.c (sh_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sh64.c (sh_elf64_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Handle - _bfd_elf_section_offset returning -2 the same way as -1. - * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Likewise. - * elf32-mips.c (mips_elf_create_dynamic_relocation): Add FIXME - and BFD_ASSERT. - * elf64-mips.c (mips_elf64_create_dynamic_relocation): Likewise. - -2002-02-18 Tom Rix - - * xcofflink.c (bfd_xcoff_link_gernate_rtinit): Add -brtl support. - (bfd_xcoff_size_dynamic_sections): Same. - * bfd-in.h (bfd_xcoff_link_generate_rtinit): Same. - (bfd_xcoff_size_dynamic_sections): Same. - * coff-rs6000.c (xcoff_generate_rtinit): Same. - * coff-rs646000.c (xcoff64_generate_rtinit): Same. - * libxcoff.h (struct xcoff_backend_data_rec): Same. - * xcofflink.c (xcoff_build_ldsyms, xcoff_link_add_symbols): Clean. - * bfd-in2.h: Regenerate. - -2002-02-18 Alan Modra - - * elf64-ppc.c (STFD_FR0_0R1, LFD_FR0_0R1, BLR): Define. - (struct ppc_link_hash_table): Add sfpr. - (ppc64_elf_link_hash_table_create): Init it. - (ppc64_elf_create_dynamic_sections): Split creation of .stub and - .glink out to.. - (create_linkage_sections): ..here. Make .sfpr too. - (ppc64_elf_check_relocs): Call create_linkage_sections, and set - dynobj early. - (MIN_SAVE_FPR, MAX_SAVE_FPR): Define. - (ppc64_elf_func_desc_adjust): Look for missing ._savef* and - ._restf* functions, and create as needed. - (func_desc_adjust): Only force_local for shared libs. - -2002-02-18 David O'Brien - - * configure.in: Bump version number post 2.12 branching. - * configure: Regenerate. - -2002-02-17 Hans-Peter Nilsson - - * mmo.c: Correct and improve comments. - (mmo_write_chunk): Store trailing byte in bfd buffer; don't - zero-pad. Use input to fill up non-empty bfd buffer. - (mmo_flush_chunk): New function. - (mmo_write_loc_chunk): Add parameter last_vmap, all callers - changed. Don't emit location specifier if VMA is same as - *LAST_VMAP after omitting leading zero contents. Call - mmo_flush_chunk before emitting location specifier. - (mmo_write_loc_chunk_list): Call mmo_flush_chunk when finished - with mmo_write_loc_chunk calls. - (mmo_internal_write_section): Call mmo_flush_chunk after - mmo_write_chunk. - (mmo_write_symbols_and_terminator): Move :Main to first position - in symbol array. Add faked one if it does not exist if there are - other symbols. Don't add it if there are no symbols at all. Move - out test for value of :Main from symbol loop. Rename table - fakemain to maintable and variable mainsym to fakemain. - -2002-02-15 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section) [BRSGP]: A target - section with no got matches any got. Simplify error generaion. - -2002-02-15 Alan Modra - - Support arbitrary length fill patterns. - * linker.c (bfd_new_link_order): Zero all fields with bfd_zalloc. - (_bfd_default_link_order): Remove bfd_fill_link_order code. - Call default_data_link_order. - (default_fill_link_order): Delete. - (default_data_link_order): New function. - * elf32-mips.c (_bfd_mips_elf_final_link): Replace occurrences - of bfd_fill_link_order with bfd_data_link_order. - * elf64-alpha.c (elf64_alpha_final_link): Likewise. - * elf64-mips.c (mips_elf64_final_link): Likewise. - - * bfd.c (bfd_scan_vma): Clamp overflows to max bfd_vma value. - Correct value returned in "end" for "0x". - -2002-02-14 Nick Clifton - - * cpu-arm.c (processors): Replace 'arch' field with 'mach'. - (scan): Test against 'mach' field in info structure. - -2002-02-14 Alan Modra - - * elf.c (elf_fake_sections): Use SHT_NOBITS when SEC_NEVER_LOAD. - -2002-02-14 Matt Fredette - - * elf32-m68k.c (elf32_m68k_print_private_bfd_data): Recognize - EF_M68000. - -2002-02-13 Nick Clifton - - * elf.c (_bfd_elf_make_section_from_shdr): Do not insist on - non-zero physical addresses when adjusting the LMAs of new - sections. - -2002-02-12 John David Anglin - - * elf-hppa.h (elf_hppa_reloc_final_type): New function stripped - from _bfd_elf_hppa_gen_reloc_type. - (_bfd_elf_hppa_gen_reloc_type): Remove duplicate prototype. - * elf32-hppa.h (elf32_hppa_reloc_final_type): Add protptype. - * elf32-hppa.c: Include elf32-hppa.h before elf-hppa.h. - * elf64-hppa.h (elf64_hppa_reloc_final_type): Add protptype. - -2002-02-12 Alexandre Oliva - - * elf-m10300.c (mn10300_elf_relax_section): Skip section before - loading its contents if there's nothing to do in it. - -2002-02-12 Alan Modra - - * elf64-ppc.c (ppc64_elf_size_stubs): Correct test for crossing - 64k boundary. - - * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Add dynamic - DT_PPC64_OPD and DT_PPC64_OPDSZ tags. - (ppc64_elf_finish_dynamic_sections): Set values for them. - -2002-02-11 Michael Snyder - - * elf-bfd.h (elfcore_write_lwpstatus): Add prototype. - * elf.c (elfcore_grok_pstatus): Add prototype. - (elfcore_grok_lwpstatus): Add prototype. - (elfcore_write_lwpstatus): New function. - (elfcore_write_pstatus): Fix typo, eliminate unnecessary memcpy. - -2002-02-11 Alexandre Oliva - - * elf32-sh.c: Added missing prototypes. - * elf32-sh64.c: Likewise. - (sh_elf_align_loads): Mark unused args as such. - * elf64-sh64.c: Added missing prototypes. - (struct elf_sh64_link_hash_entry): Fix typo. - (sh_elf64_relocate_section): Fix info argument passed to - _bfd_elf_section_offset. - -2002-02-11 Alan Modra - - * Makefile.am: "make dep-am". - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - -2002-02-10 Daniel Jacobowitz - - * coff-rs6000.c (xcoff_generate_rtinit): Silence uninitialized - variable warnings. - * elf32-sh.c (sh_elf_relax_section): Silence signed/unsigned - comparison warning. - * trad-core.c (trad_unix_core_file_p): Silence pointer/integer - cast warnings for the common case. - -2002-02-10 Hans-Peter Nilsson - - * config.bfd (sh-*-linux*, sh-*-elf* | sh-*-rtemself*): Add sh64 - vectors. - (sh-*-netbsdelf*): New, to trump sh*-*-netbsdelf* and add sh64 - vectors. - -2002-02-09 Richard Henderson - - * elf64-alpha.c (elf64_alpha_howto): Add R_ALPHA_BRSGP. - (elf64_alpha_reloc_map, elf64_alpha_check_relocs): Likewise. - (elf64_alpha_relocate_section): Likewise. - * reloc.c (BFD_RELOC_ALPHA_BRSGP): New. - * bfd-in2.h, libbfd.h: Rebuild. - -2002-02-09 Hans-Peter Nilsson - - * elf64-mmix.c (_bfd_mmix_finalize_linker_allocated_gregs): Check - that base-plus-offset reloc accounting is consistent. - (mmix_elf_relax_section): Keep base-plus-offset reloc accounting - up to date for undefined symbols. - -2002-02-08 Eric Christopher - - From Rainer Orth - - * elf32-mips.c (_bfd_mips_elf_fake_sections): Don't create .rela - sections for the O32 ABI. - -2002-02-08 Chris Demetriou - - * elf32-arm.h: Fix formatting of _("..."). - * elf32-d10v.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mips.c: Likewise. - -2002-02-08 Ivan Guzvinec - - * coff-or32.c: Fix compile time warning messages. + * elf64-ppc.c (ppc64_elf_check_relocs): Ignore !SEC_ALLOC relocs. + (ppc64_elf_gc_sweep_hook): Likewise. + (ppc64_elf_size_dynamic_sections): Test for .plt directly. -2002-02-08 Alexandre Oliva +2004-01-12 Anil Paranjpe - Contribute sh64-elf. - 2002-01-23 Alexandre Oliva - * reloc.c (R_SH_GOTPLT32, R_SH_GOT_LOW16, R_SH_GOT_MEDLOW16, - R_SH_GOT_MEDHI16, R_SH_GOT_HI16, R_SH_GOTPLT_LOW16, - R_SH_GOTPLT_MEDLOW16, R_SH_GOTPLT_MEDHI16, R_SH_GOTPLT_HI16, - R_SH_PLT_LOW16, R_SH_PLT_MEDLOW16, R_SH_PLT_MEDHI16, - R_SH_PLT_HI16, R_SH_GOTOFF_LOW16, R_SH_GOTOFF_MEDLOW16, - R_SH_GOTOFF_MEDHI16, R_SH_GOTOFF_HI16, R_SH_GOTPC_LOW16, - R_SH_GOTPC_MEDLOW16, R_SH_GOTPC_MEDHI16, R_SH_GOTPC_HI16, - R_SH_GOT10BY4, R_SH_GOTPLT10BY4, R_SH_GOT10BY8, R_SH_GOTPLT10BY8, - R_SH_COPY64, R_SH_GLOB_DAT64, R_SH_JMP_SLOT64, R_SH_RELATIVE64): - New relocs. - * libbfd.h, bfd-in2.h: Rebuilt. - * elf32-sh.c (sh_elf_howto_table): Define new relocs. - (sh_reloc_map): Map them. - (PLT_ENTRY_SIZE, elf_sh_plt0_entry_be, elf_sh_plt0_entry_le, - elf_sh_plt_entry_be, elf_sh_plt_entry_le, elf_sh_pic_plt_entry_be, - elf_sh_pic_plt_entry_le, elf_sh_plt0_entry, elf_sh_plt_entry, - elf_sh_pic_plt_entry, elf_sh_sizeof_plt, elf_sh_plt_plt0_offset, - elf_sh_plt0_gotplt_offset, elf_sh_plt_temp_offset, - elf_sh_plt_symbol_offset, elf_sh_plt_reloc_offset, - movi_shori_putval) [INCLUDE_SHMEDIA]: New. - (elf_sh_link_hash_entry) [INCLUDE_SHMEDIA]: Add - datalabel_got_offset. - (sh_elf_link_hash_newfunc): Initialize it. - (sh_elf_relocate_section): Augment the scope of - seen_stt_datalabel. Introduce GOTPLT support. Extend GOTPC, PLT, - GOT and GOTOFF handling to new SHmedia relocation types. Support - GOT_BIAS. - (sh_elf_check_relocs): Likewise. - (sh_elf_finish_dynamic_symbol) [TARGET_SHMEDIA]: Set up values in - PLT entries using movi_shori_putval. Support GOT_BIAS. - (sh_elf_finish_dynamic_sections): Likewise. - * elf32-sh64.c (shmedia_prepare_reloc): Do not add addend to - relocation, it's now done by the caller. - (GOT_BIAS): New. - * elf64-sh64.c (GOT_BIAS, PLT_ENTRY_SIZE, elf_sh64_sizeof_plt, - elf_sh64_plt_plt0_offset, elf_sh64_plt0_gotplt_offset, - elf_sh64_plt_temp_offset, elf_sh64_plt_symbol_offset, - elf_sh64_plt_reloc_offset, ELF_DYNAMIC_INTERPRETER, - elf_sh64_pcrel_relocs_copied, elf_sh64_link_hash_entry, - elf_sh64_link_hash_table, sh64_elf64_link_hash_traverse, - sh64_elf64_hash_table): New. - (sh_elf64_howto_table): Introduce new relocs. - (sh_elf64_info_to_howto): Accept new PIC relocs. - (sh_elf64_relocate_section): Augment the scope of - seen_stt_datalabel. Support new PIC relocs. - (sh_elf64_check_relocs): Support new PIC relocs. - (elf_sh64_plt0_entry_be, elf_sh64_plt0_entry_le, - elf_sh64_plt_entry_be, elf_sh64_plt_entry_le, - elf_sh64_pic_plt_entry_be, elf_sh64_pic_plt_entry_le, - elf_sh64_plt0_entry, elf_sh64_plt_entry, elf_sh64_pic_plt_entry, - sh64_elf64_link_hash_newfunc, sh64_elf64_link_hash_table_create, - movi_shori_putval, movi_3shori_putval, - sh64_elf64_create_dynamic_sections, - sh64_elf64_adjust_dynamic_symbol, sh64_elf64_discard_copies, - sh64_elf64_size_dynamic_sections, - sh64_elf64_finish_dynamic_symbol, - sh64_elf64_finish_dynamic_sections): New. - (elf_backend_create_dynamic-sections, - bfd_elf64_bfd_link_hash_table_create, - elf_backend_adjust_dynamic_symbol, - elf_backend_size_dynamic_sections, - elf_backend_finish_dynamic_symbol, - elf_backend_finish_dynamic_sections, elf_backend_want_got_plt, - elf_backend_plt_readonly, elf_backend_want_plt_sym, - elf_backend_got_header_size, elf_backend_plt_header_size): - Define. - 2001-05-16 Alexandre Oliva - * elf32-sh.c: Renumbered and renamed some SH5 relocations to - match official numbers and names; moved unmaching ones to the - range 0xf2-0xff. - * elf32-sh64.c, elf64-sh64.c: Likewise. - 2001-03-12 DJ Delorie - * elf32-sh.c (sh_elf_relax_section): Don't relax SHmedia + Adds linker relaxation support for bit manipulation insns like + band, bclr, biand, bild, bior, bist, bixor, bld, bnot, bor, bset, + bst, btst, bxor. + * elf32-h8300.c: Opcode for bit manipulation insn is checked in + elf32_h8_relax_section function while relxation for aa:16 and aa:32. + * coff-h8300.c: Opcode for bit manipulation insn is checked in + h8300_reloc16_extra_cases function while relxation for aa:16 and aa:32. + +2004-01-12 Alan Modra + + * dwarf2.c: Convert to C90, remove unneeded casts and prototypes. + +2004-01-11 Kazu Hirata + + * elf32-h8300.c: Fix formatting. + +2004-01-11 Kazu Hirata + + * elf32-cris.c (cris_elf_gc_sweep_hook): Return early if no + dynamic object is present. Declare r_symndx and h in an inner + scope. + * elf32-vax.c (elf_vax_gc_sweep_hook): Likewise. + +2004-01-09 Daniel Jacobowitz + + * elf32-arm.h (struct elf32_arm_relocs_copied): Remove pc_count. + (elf32_arm_copy_indirect_symbol): Don't copy pc_count. + (elf32_arm_final_link_relocate): Handle PLT32 and PC24 relocs + identically. Do not emit PC24 relocations for shared libraries. + (elf32_arm_gc_sweep_hook): Handle PLT32 and PC24 relocs + identically. Don't adjust pc_count. + (elf32_arm_check_relocs): Handle PLT32 and PC24 relocs identically. + Set ELF_LINK_HASH_NEEDS_PLT for both. Don't adjust pc_count; don't + adjust count for branch relocations. + (allocate_dynrelocs): Correct typo in call to + WILL_CALL_FINISH_DYNAMIC_SYMBOL. Never allocate space for + PC24 or PLT32 relocs when linking. + +2004-01-09 Dmitry Semyonov + + * coff-arm.c (aoutarm_std_reloc_howto): [ARM_WINCE] Synchronize ARM_26D + relocation howto with ARM_26 one for consistency. + (coff_arm_relocate_section): Set partial_inplace for ARM_26 relocations + that will be converted to ARM_26D ones, since we always want 'done' + relocations to be reflected in section's data. + (coff_arm_relocate_section): [ARM_WINCE] Quick fix for BL instruction + offset. + (_bfd_final_link_relocate): Do not modify "inplace" data, if not + requested. + +2004-01-08 Dmitry Semyonov + + * coff-arm.c (coff_arm_relocate_section): Do not alter relocs that + are not partial_inplace during a relocatable link. + +2004-01-08 Kazu Hirata + + * elf32-m68k.c (elf_m68k_gc_sweep_hook): Return early + if no dynamic object is present. Declare r_symndx and h in an + inner scope. + +2004-01-07 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_relax_section): Don't install + trampoline if it is known out of range. + +2004-01-06 Alexandre Oliva + + 2003-12-17 Alexandre Oliva + * elf32-frv.c (_frv_osec_readonly_p): New. + (_frv_emit_got_relocs_plt_entries): Don't emit rofixup for + undefweak symbol. + (_frv_count_got_plt_entries): Adjust expected count accordingly. + (elf32_frv_relocate_section): Likewise. Error out if attempting + to emit rofixups or dynamic relocs in read-only segments. Use + _bfd_elf_section_offset to adjust r_offsets in rofixups and + dynamic relocations. + 2003-12-12 Alexandre Oliva + * elf32-frv.c (elf32_frv_relocate_section): Compute dynamic + relocations or fixups involving merged sections correctly. Avoid + crash when undefined symbol is referenced by R_FRV_32 or + R_FRV_FUNCDESC_VALUE. + 2003-12-02 Alexandre Oliva + * elf32-frv.c (elf32_frv_relocate_section): Add output_offset of + input section holding local symbol to addend of R_FRV_32 or + R_FRV_FUNCDESC_VALUE dynamic relocation. + 2003-11-27 Alexandre Oliva + * elf32-frv.c (elf32_frv_modify_segment_map): Add link info arg. + (elf32_frv_always_size_sections): Don't store pointer to + __stacksize symbol in sec_info. + (elf32_frv_modify_segment_map): Look it up here. + 2003-11-26 Alexandre Oliva + * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Emit the address + of the lazy PLT entry, not only its offset, as the low word of a + function descriptor. + 2003-11-10 Alexandre Oliva + * elf32-frv.c (elf32_frv_always_size_sections): Define __stacksize + if a hash table entry already exists but is not a definition. + 2003-11-05 Alexandre Oliva + * elf32-frv.c (frv_elf_link_hash_table_create): Use bfd_zalloc. + (_frv_add_rofixup): Don't inline. + (_frv_emit_got_relocs_plt_entries): Use NULL as funcdesc address + for undefweak symbols. + (elf32_frv_relocate_section): Avoid crash while computing + relocation when linking with shared library. Only emit rofixups + and dynamic relocations for alloc&load sections. Mark binaries + with inter-segment relocations for relocation as a unit. + (_frv_create_got_section): Rename .rofixup.got to .rofixup. + (DEFAULT_STACK_SIZE): New. + (_frv_count_got_plt_entries): Fix thinko in deciding whether to + emit rofixups or dynamic relocs when linking dynamic non-PIE + executables. + (elf32_frv_size_dynamic_sections): Generate rofixup on PIEs and + shared libs too. Reserve the last entry for the GOT pointer. + (elf32_frv_finish_dynamic_sections): Emit it. + (elf32_frv_always_size_sections): New. + (elf32_frv_modify_segment_map): New. + (elf32_frv_check_relocs): Reserve relocs32 space only in ALLOC sections. - 2001-03-12 DJ Delorie - * elf32-sh64.c (shmedia_prepare_reloc): Validate relocs that must - be aligned. - * elf64-sh64.c (sh_elf64_relocate_section): Ditto. - 2001-01-14 Hans-Peter Nilsson - * elf32-sh64.c (bfd_elf32_bfd_copy_private_section_data): Define. - (sh64_elf_fake_sections): Set type to SHT_SH5_CR_SORTED for a - .cranges section with SEC_SORT_ENTRIES set. - (sh64_backend_section_from_shdr): Set SEC_SORT_ENTRIES on an - incoming sorted .cranges section. - (sh64_bfd_elf_copy_private_section_data): New. - (sh64_elf_final_write_processing): Only sort .cranges and modify - start address if called by linker. - 2001-01-08 Ben Elliston - * elf32-sh64.c (sh64_elf_final_write_processing): Activate - Hans-Peter Nilsson's set bit 0 patch from 2001-01-06. - * elf64-sh64.c (sh64_elf64_final_write_processing): Ditto. - 2001-01-06 Hans-Peter Nilsson - * elf64-sh64.c (sh_elf64_howto_table): No open brace at start of - line. Add comments before all entries. - : Correct and clarify describing - comment. - (sh_elf64_reloc): Correct head comment. - (sh_elf64_relocate_section): Correct spacing. - : Do not honour STO_SH5_ISA32; - instead call reloc_dangerous callback. - : New case. - (sh_elf64_gc_mark_hook): Correct spacing. - (sh_elf64_check_relocs): Ditto. - * elf32-sh64.c (shmedia_prepare_reloc) : - New case. - * elf32-sh.c: Correct #endif comments for #ifndef-wrapped - functions. - (sh_elf_howto_table) : Correct, - clarify describing comment. Add comments before all entries. - (sh_elf_relocate_section) : Do not - honour STO_SH5_ISA32; instead call reloc_dangerous callback. - 2001-01-06 Hans-Peter Nilsson - Sort .cranges section in final link. Prepare to set bit 0 on - entry address. - * elf32-sh64.c (struct sh64_find_section_vma_data): New. - (sh64_elf_link_output_symbol_hook): Fix typo in prototype. - (sh64_elf_set_mach_from_flags): Set SEC_DEBUGGING on incoming - .cranges section. - (sh64_backend_section_from_shdr): New, to recognize - SHT_SH5_CR_SORTED on incoming .cranges section. - (elf_backend_section_from_shdr): Define. - (sh64_elf_final_write_processing): Sort outgoing .cranges - section. (New, temporarily disabled:) Set bit 0 on entry address - according to ISA type. - (sh64_find_section_for_address): New. - (crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb, - crange_bsearch_cmpl): Move here from opcodes/sh64-dis.c. - (sh64_address_in_cranges): Move here from opcodes/sh64-dis.c. Use - bfd_malloc, not xmalloc. - (sh64_get_contents_type): Move here from opcodes/sh64-dis.c. Make - global. - * elf32-sh64.c (sh64_elf64_final_write_processing): New, (but - temporarily disabled) setting bit 0 on entry address. - (elf_backend_final_write_processing): Define. - 2001-01-05 Hans-Peter Nilsson - * elf32-sh.c (sh_elf_howto_table) : Adjust fields to - be a proper relocation for PTA and PTB rather than a marker. - : - Zero src_mask. - * elf64-sh64.c: Ditto. - (sh_elf64_relocate_section) : New case. - * elf32-sh64.c: Include opcodes/sh64-opc.h - (shmedia_prepare_reloc): Take a bfd_link_info pointer as first - argument. Drop const qualifiers from "bfd *" and "bfd_byte *" - parameters. No unused parameters. Caller changed. - : New case. - * Makefile.am (elf32-sh64.lo): Add dependency on sh64-opc.h. - * Makefile.in: Regenerate. - 2000-12-30 Hans-Peter Nilsson - * elf64-sh64.c (sh64_elf64_fake_sections): Set SHF_SH5_ISA32 for - all code sections. - (sh_elf64_set_mach_from_flags): Change from EF_SH64 to EF_SH5. - (sh64_elf_merge_private_data): Ditto. - * elf32-sh64.c (sh64_elf_fake_sections): Use sh64_elf_section_data - to access stored section flags. - (sh64_elf_final_write_processing): Return immediately unless - called by linker. Use sh64_elf_section_data (cranges) to get size - of linker-generated cranges entries. - (sh64_elf_copy_private_data): Add missing "return true". - (sh64_elf_set_mach_from_flags): Change from EF_SH64 to EF_SH5. - (sh_elf64_merge_private_data): Ditto. - 2000-12-19 Hans-Peter Nilsson - * elf64-sh64.c (sh64_elf64_fake_sections): New, copy of - elf64-sh64.c:sh64_elf_fake_sections. - (elf_backend_fake_sections): Define as sh64_elf64_fake_sections. - 2000-12-18 Hans-Peter Nilsson - * elf32-sh64.c (sh64_elf_copy_private_data_internal): Delete. - (sh64_elf_final_write_processing): New. - (elf_backend_final_write_processing): Define. - (sh64_elf_fake_sections): Get header flags from tdata field. - (sh64_elf_copy_private_data): Do not call - sh64_elf_copy_private_data_internal, just copy e_flags field. - (sh64_elf_merge_private_data): Do not call - sh64_elf_copy_private_data_internal. - 2000-12-12 Hans-Peter Nilsson - Remove EF_SH64_ABI64, let ELF size make difference. - Remove SH64-specific BFD section flag. - * elf32-sh64.c (sh64_elf_fake_sections): Recognize section as - containing SHmedia through elf_section_data (asect)->tdata - non-zero, not using a BFD section flag. - (sh64_elf_set_mach_from_flags): Don't recognize EF_SH64_ABI64. - (sh64_elf_merge_private_data): Similar. - (elf_backend_section_flags): Don't define. - (sh64_elf_backend_section_flags): Delete. - * elf64-sh64.c (sh_elf64_set_mach_from_flags): Recognize EF_SH64, - not EF_SH64_ABI64. - (sh_elf64_merge_private_data): Similar. - * section.c (Section flags definitions): Don't define - SEC_SH_ISA_SHMEDIA. - (bfd-in2.h): Regenerate. - 2000-12-09 Hans-Peter Nilsson - Make DataLabel references work with partial linking. - * elf32-sh64.c: Fix formatting. - (sh64_elf_link_output_symbol_hook): New. - (elf_backend_link_output_symbol_hook): Define to - sh64_elf_link_output_symbol_hook. - (sh64_elf_add_symbol_hook): Make DataLabel symbol just global - undefined if partial linking. Adjust sanity check. - * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): New. - (elf_backend_link_output_symbol_hook): Define to - sh64_elf64_link_output_symbol_hook. - (sh64_elf64_add_symbol_hook): Make DataLabel symbol just global - undefined if partial linking. Adjust sanity check. - 2000-12-07 Hans-Peter Nilsson - Implement semantics for inter-file DataLabel references. - * elf64-sh64.c (DATALABEL_SUFFIX): Define. - (sh64_elf64_add_symbol_hook): New. - (sh_elf64_relocate_section): If passing an indirect symbol with - st_type STT_DATALABEL on the way to a symbol with st_other - STO_SH5_ISA32, do not bitor 1 to the relocation. - (elf_backend_add_symbol_hook): Define to - sh64_elf64_add_symbol_hook. - * elf64-sh32.c: Tweak comments. - (DATALABEL_SUFFIX): Define. - (sh64_elf_add_symbol_hook): New. - (elf_backend_add_symbol_hook): Define to sh64_elf_add_symbol_hook. - * elf32-sh.c (sh_elf_relocate_section): If passing an indirect - symbol with st_type STT_DATALABEL on the way to a symbol with - st_other STO_SH5_ISA32, do not bitor 1 to the relocation. - 2000-12-05 Hans-Peter Nilsson - Pass through STT_DATALABEL. - * elf32-sh64.c (sh64_elf_get_symbol_type): New. - (elf_backend_get_symbol_type): Define. - * elf64-sh64.c (sh64_elf64_get_symbol_type): New. - (elf_backend_get_symbol_type): Define. - 2000-11-30 Hans-Peter Nilsson - * elf32-sh64.c: Tweak comments. - (sh64_elf_copy_private_data_internal): Add prototype. - (bfd_elf32_bfd_set_private_flags): Define. - (sh64_elf_copy_private_data_internal): Compare machine name, not - textual BFD target name, to check whether to copy section flag - SHF_SH5_ISA32. - (sh64_elf_merge_private_data): Validize bfd_get_arch_size. - Tweak section-contents-type-mismatch message. - (shmedia_prepare_reloc): Add ATTRIBUTE_UNUSED markers. - Validize reloc-types. - * elf64-sh64.c: New file. - * targets.c (bfd_elf64_sh64_vec, bfd_elf64_sh64l_vec): Declare. - * Makefile.am (BFD64_BACKENDS): Add elf64-sh64.lo. - (BFD64_BACKENDS_CFILES): Add elf64-sh64.c. - Regenerate dependencies. - * Makefile.in: Regenerate. - * config.bfd (sh64-*-elf*): Add bfd_elf64_sh64_vec and - bfd_elf64_sh64l_vec. - * configure.in: Handle bfd_elf64_sh64_vec and - bfd_elf64_sh64l_vec. - * configure: Regenerate. - * po/POTFILES.in: Regenerate. - * po/bfd.pot: Regenerate. - 2000-11-29 Hans-Peter Nilsson - * elf32-sh64.c (sh64_elf_set_mach_from_flags): Do not recognize - anything else but EF_SH64 and EF_SH64_ABI64. - (sh64_elf_merge_private_data): Emit error for anything else but - EF_SH64 and EF_SH64_ABI64. - * config.bfd: Remove bfd_elf32_shblin_vec and bfd_elf32_shlin_vec - from targ_selvecs. - * configure.in: Add cofflink.lo to bfd_elf32_sh64_vec and - bfd_elf32_sh64l_vec as a temporary measure. - * configure: Regenerate. - 2000-11-27 Hans-Peter Nilsson - * cpu-sh.c (arch_info_struct): Include sh5 item - unconditionalized. - * config.bfd (sh64-*-elf*): Do not set targ_cflags. - Add targ_selvecs bfd_elf32_sh_vec, bfd_elf32_shl_vec, - bfd_elf32_shblin_vec and bfd_elf32_shlin_vec. - * elf32-sh64.c: Tweak comments. - (sh64_elf_set_mach_from_flags): Recognize all machine flags that - are proper subsets of SH64 as bfd_mach_sh5. Add EF_SH64_ABI64. - (sh64_elf_copy_private_data_internal): Wrap long line. - (sh64_elf_merge_private_data): Rewrite to allow objects from - SH64 subsets to be linked together. - (INCLUDE_SHMEDIA): Define. - * elf32-sh.c (sh_elf_relocate_section) : - Parenthesize plus-expression inside or-expression. - : Ditto. - (sh_elf_set_mach_from_flags): Remove code refusing - deleted EF_SH64_32BIT_ABI flag. - 2000-11-26 Hans-Peter Nilsson - * elf32-sh.c (sh_elf_howto_table) : Set pcrel_offset to true. - (sh_elf_relocate_section) : Or 1 in - calculation of relocation if sym->st_other & STO_SH5_ISA32. - : Ditto if h->other & STO_SH5_ISA32. - * elf32-sh64.c (shmedia_prepare_reloc): Add rel->r_addend to - relocation. - 2000-11-24 Hans-Peter Nilsson - * Makefile.am (BFD32_BACKENDS): Add elf32-sh64.lo. - (BFD32_BACKENDS_CFILES): Add elf32-sh64.c. - Regenerate dependencies. - * Makefile.in: Regenerate. - * archures.c: Add bfd_mach_sh5. - * config.bfd: Map targ_cpu sh* to bfd_sh_arch. - Handle sh64-*-elf*. Set targ_cflags to -DINCLUDE_SHMEDIA. - * configure.in: Handle bfd_elf32_sh64_vec and bfd_elf32_sh64l_vec. - * configure: Regenerate. - * reloc.c (BFD_RELOC_SH_SHMEDIA_CODE, BFD_RELOC_SH_IMMU5, - BFD_RELOC_SH_IMMS6, BFD_RELOC_SH_IMMS6BY32, BFD_RELOC_SH_IMMU6, - BFD_RELOC_SH_IMMS10, BFD_RELOC_SH_IMMS10BY2, - BFD_RELOC_SH_IMMS10BY4, BFD_RELOC_SH_IMMS10BY8, - BFD_RELOC_SH_IMMS16, BFD_RELOC_SH_IMMU16, BFD_RELOC_SH_IMM_LOW16, - BFD_RELOC_SH_IMM_LOW16_PCREL, BFD_RELOC_SH_IMM_MEDLOW16, - BFD_RELOC_SH_IMM_MEDLOW16_PCREL, BFD_RELOC_SH_IMM_MEDHI16, - BFD_RELOC_SH_IMM_MEDHI16_PCREL, BFD_RELOC_SH_IMM_HI16, - BFD_RELOC_SH_IMM_HI16_PCREL, BFD_RELOC_SH_PT_16): New relocations. - * cpu-sh.c [INCLUDE_SHMEDIA] (arch_info_struct): Define and link - in item for SH5. - * elf32-sh.c [INCLUDE_SHMEDIA] (sh_elf_howto_table): Add howto items - for SHmedia relocs. - [INCLUDE_SHMEDIA] (sh_rel): Add mappings for SHmedia relocs. - [INCLUDE_SHMEDIA] (sh_elf_relocate_section) [default]: Call - shmedia_prepare_reloc, goto final_link_relocate if it returns - non-zero, else fail as before. - (sh_elf_set_mach_from_flags): Provide function only if not defined - as macro. Do not recognize objects with EF_SH64_32BIT_ABI set. - (sh_elf_set_private_flags): Provide function only if not defined - as a macro. - (sh_elf_copy_private_data): Similar. - (sh_elf_merge_private_data): Similar. - * section.c (SEC_SH_ISA_SHMEDIA): New. - * targets.c (bfd_elf32_sh64_vec, bfd_elf32_sh64l_vec): Declare. - * elf32-sh64.c: New file. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * po/POTFILES.in: Regenerate. - * po/bfd.pot: Regenerate. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - -2002-02-07 Daniel Jacobowitz - - * bfd-in.h: Update check to only see if has - been included, not drag it in. - * bfd-in2.h: Regenerate. - -2002-02-06 H.J. Lu (hjl@gnu.org) - - * elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data): Update - the mach and ISA fields if necessary. - -2002-02-06 Nick Clifton - - * coffcode.h (coff_set_arch_mach_hook): Select the highest known - ARM architecture when an F_ARM_5 flag is detected, since we cannot - be sure exactly which architecture this represents. - -2002-02-05 Nick Clifton - - * po/tr.po: Updated translation. - -2002-02-05 Alan Modra - - From Jimi X - * archures (bfd_mach_ppc64): Define. - (bfd_powerpc_arch): Rename to bfd_powerpc_archs. - (bfd_powerpc_arch): Define. - * bfd-in2.h: Regenerate. - * cpu-powerpc.c (arch_info_struct): Rename to bfd_powerpc_archs. - (bfd_powerpc_arch): Move to tail of bfd_powerpc_archs. - (bfd_powerpc_archs): Add default powerpc64 arch. - -2002-02-05 Alan Modra - - * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Check for relocs - against section syms in readonly sections. Don't do the global - sym check if we find one. - * elf64-s390.c (elf_s390_size_dynamic_sections): Likewise. - * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Likewise. - * elf32-i386.c (elf_i386_size_dynamic_sections): Likewise. - * elf32-s390.c (elf_s390_size_dynamic_sections): Likewise. - (elf_s390_grok_prstatus): Add missing prototype. + (frv_elf_merge_private_bfd_data): Clear PIC bit if FDPIC is set. + (frv_elf_print_private_bfd_data): Handle FDPIC and LIBPIC. + (elf_backend_always_size_sections): New. + (elf_backend_modify_segment_map): New. + 2003-10-31 Alexandre Oliva + * config.bfd: Added frv-*-*linux*. + * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Use idx 0 for + ABS section, instead of crashing. + (elf32_frv_relocate_section): Don't crash before warning about + different segments in non-PIC relocation. + 2003-10-17 Alexandre Oliva + * elf32-frv.c (elf32_frv_relocate_section): Don't warn on LABEL24 + relocs to undefweak symbols. + (elf32_frv_relocate_section): Ditto for undefined symbols. + 2003-10-06 Alexandre Oliva + * elf32-frv.c (elf32_frv_create_dynamic_sections): Make sure + gotfixup section was created. + 2003-09-30 Alexandre Oliva + * elf32-frv.c (elf32_frv_howto_table): Change GOT12, + FUNCDESC_GOT12, GOTOFF12 and FUNCDESC_GOTOFF12 to + complain_overflow_signed. + * elf32-frv.c (_frv_add_rofixup): Do not error out if contents + have not been allocated. + (_frv_emit_got_relocs_plt_entries): Return non-void. Assert + privfd only if dynamic sections were created. + (elf32_frv_relocate_section): Compute gprel_segment, and use it + for GPREL relocs. When linking relocatable FDPIC executables, + emit warnings for relocations that would be illegal on PIE or + shared libraries. Emit rofixup for R_FRV_32 only if input object + is not FDPIC. + (_frv_create_got_section): Define _gp symbol in the rofixup + section. + (elf32_frv_finish_dynamic_sections): If rofixups needed but + dynamic sections missing, error out requesting -melf32frvfd. + 2003-09-19 Alexandre Oliva + * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Rearrange + computation of addends from section and global or local symbol + value. Change return type to bfd_boolean, and return a failure if + a dynamic FUNCDESC or FUNCDESC_VALUE relocation that requires a + nonzero addend is required. + (elf32_frv_relocate_section): Likewise. Print error for + unsupported nonzero addends. + 2003-09-18 Alexandre Oliva + * elf32-frv.c (FRV_SYM_LOCAL): In the absence of dynamic sections, + force everything local. + (_frv_emit_got_relocs_plt_entries): Cope with NULL sec. + * elf32-frv.c (struct frv_elf_link_hash_table): Added sgotfixup. + (frv_gotfixup_section): New. + (FRV_SYM_LOCAL): Accept undefweak and local common symbols. + (struct frv_pic_relocs_info): Split relocs into relocs32, relocsfd + and relocsfdv. + (_frv_add_rofixup): New. + (_frv_emit_got_relocs_plt_entries): Generate fixups for non-PIE + fdpic executables. Use FRV_SYM_LOCAL more widely to simplify and + improve some ugly conditions. + (elf32_frv_relocate_section): Likewise. Reject inter-segment + relocations in fdpic. + (_frv_create_got_section): Create .rofixup.got section. + (struct _frv_dynamic_got_info): Added fixups. + (_frv_count_got_plt_entries): Account in-GOT relocations into + relocs32, relocsfd and relocsfdv. Account them into relocs or + fixups, as appropriate. + (elf32_frv_size_dynamic_sections): Size rofixup section. Simplify + sizing of gotrel. + (elf32_frv_finish_dynamic_sections): Verify that the right number + of relocations and fixups was generated. + (elf32_frv_check_relocs): Compute relocs32, relocsfd and + relocsfdv. + * elf32-frv.c (FRV_SYM_LOCAL): New macro, used instead of + SYMBOL_CALLS_LOCAL and SYMBOL_REFERENCES_LOCAL. + (FRV_FUNCDESC_LOCAL): New macro, used to decide whether a function + descriptor of a (formerly-)global symbol is local. + (struct frv_pic_relocs_info): Adjust comments. + (_frv_emit_got_relocs_plt_entries): Adjust. + (elf32_frv_relocate_section): Likewise. + (_frv_count_got_plt_entries): Likewise. + * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Don't add global + symbol's value to addend in the common preamble. Decay dynamic + symbols to section+offset if they bind or call locally, for GOT + and FUNCDESC_VALUE, respectively. + (elf32_frv_relocate_section): Likewise. + (elf32_frv_check_relocs): Don't register as dynamic symbols of + internal or hidden visibility. + 2003-09-17 Alexandre Oliva + * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Get addend as + argument, so as to not call _bfd_elf_rel_local_sym to compute it. + (elf32_frv_relocate_section): Pass relocation addend in. Use + original relocation addend to look up the got relocs/plt entries + table. Do not call _bfd_elf_rel_local_sym. Don't error out when + processing relocations that reference .scommon symbols. + 2003-09-15 Alexandre Oliva + Introduce support for dynamic linking. + * elf32-frv.c (R_FRV_FUNCDESC_VALUE): Mark it as 64 bits. + (elf32_frv_rel_32_howto, elf32_frv_rel_funcdesc_howto, + elf32_frv_rel_funcdesc_value_howto): New REL descriptors. + (frv_reloc_type_lookup): Return REL howtos for executables and + dynamic libraries. + (frv_info_to_howto_rel): New. + (struct frv_elf_link_hash_table): New. + (frv_hash_table, frv_got_section, frv_gotrel_section, + frv_plt_section, frv_pltrel_section, frv_relocs_info, + frv_got_initial_offset, frv_plt_initial_offset): New macros. + (frv_elf_link_hash_table_create): New. + (struct frv_pic_relocs_info): New. + (frv_pic_relocs_info_hash, frv_pic_relocs_info_eq): New. + (frv_pic_relocs_info_find): New. + (frv_pic_relocs_info_for_global, frv_pic_relocs_info_for_local): + New. + (FRV_LZPLT_BLOCK_SIZE, FRV_LZPLT_RESOLVE_LOC): New. + (_frv_add_dyn_reloc, _frv_osec_to_segment): New. + (_frv_emit_got_relocs_plt_entries): New. + (elf32_frv_relocate_section): Add support for dynamic linking. + Handle new relocations. + (_frv_create_got_section): New. + (elf32_frv_create_dynamic_sections): New. + (ELF_DYNAMIC_INTERPRETER): New. + (struct _frv_dynamic_got_info): New. + (_frv_count_got_plt_entries): New. + (struct _frv_dynamic_got_plt_info): New. + (_frv_compute_got_alloc_data): New. + (_frv_get_got_entry, _frv_get_fd_entry): New. + (_frv_assign_got_entries, _frv_assign_plt_entries): New. + (_frv_resolve_final_relocs_info): New. + (elf32_frv_size_dynamic_sections): New. + (elf32_frv_finish_dynamic_sections): New. + (elf32_frv_adjust_dynamic_symbol): New. + (elf32_frv_finish_dynamic_symbol): New. + (elf32_frv_check_relocs): Handle new relocs. Explain how the + whole thing works. + (elf_info_to_howto_rel): Define. + (bfd_elf32_bfd_link_hash_table_create): Define. + (elf_backend_create_dynamic_sections): Define. + (elf_backend_adjust_dynamic_symbol): Define. + (elf_backend_size_dynamic_sections): Define. + (elf_backend_finish_dynamic_symbol): Define. + (elf_backend_finish_dynamic_sections): Define. + (elf_backend_want_got_sym): Define. + (elf_backend_got_header_size): Define. + (elf_backend_want_got_plt): Define. + (elf_backend_plt_readonly): Define. + (elf_backend_want_plt_sym): Define. + (elf_backend_plt_header_size): Define. + (elf_backend_may_use_rel_p): Define. + (elf_backend_may_use_rela_p): Define. + (elf_backend_default_use_rela_p): Define. + 2003-08-08 Alexandre Oliva + * elf32-frv.c (R_FRV_FUNCDESC_VALUE, R_FRV_FUNCDESC_GOTOFF12, + R_FRV_FUNCDESC_GOTOFFHI, R_FRV_FUNCDESC_GOTOFFLO, R_FRV_GOTOFF12, + R_FRV_GOTOFFHI, R_FRV_GOTOFFLO): New. + (frv_reloc_map): Map the corresponding BFD relocs to them. + (frv_reloc_type_lookup): ... and back to BFD relocs. + * reloc.c: New relocs. + * bfd-in2.h, libbfd.h: Rebuilt. + 2003-08-04 Alexandre Oliva + * elf32-frv.c (R_FRV_GOT12, R_FRV_GOTHI, R_FRV_GOTLO, + R_FRV_FUNCDESC, R_FRV_FUNCDESC_GOT12, R_FRV_FUNCDESC_GOTHI, + R_FRV_FUNCDESC_GOTLO): New. + (frv_reloc_map): Map the corresponding BFD relocs to them. + (frv_reloc_type_lookup): ... and back to BFD relocs. + * reloc.c: New relocs. + * bfd-in2.h, libbfd.h: Rebuilt. -2002-02-04 Hans-Peter Nilsson +2004-01-05 Maciej W. Rozycki - * elf64-mmix.c (mmix_dump_bpo_gregs): New function. - (mmix_elf_check_common_relocs) : - Call bfd_get_section_by_name only once. Initialize - bpodata->n_bpo_relocs_this_section. - (_bfd_mmix_prepare_linker_allocated_gregs): Remove comment - referring to DSOs. - (bpo_reloc_request_sort_fn): Don't use difference of values as - return-value. + * elf32-mips.c (ELF_MAXPAGESIZE): Redefine for traditional + targets to support pages of up to 64kB. + (elf32_bed): Redefine to get a separate backend data structure for + traditional targets. + * elf64-mips.c (ELF_MAXPAGESIZE): Redefine for traditional + targets to support pages of up to 64kB. + (elf64_bed): Redefine to get a separate backend data structure for + traditional targets. + * elfn32-mips.c (ELF_MAXPAGESIZE): Redefine for traditional + targets to support pages of up to 64kB. + (elf32_bed): Redefine to get a separate backend data structure for + traditional targets. -2002-02-02 David O'Brien +2004-01-04 Mark Kettenis - * configure.in: Tweak the FreeBSD 4.x recognition more. Only treat - version 4.5 and later the same as 5-CURRENT. - * configure: Re-generate. + * elf32-sparc.c (elf32_sparc_grok_psinfo): New function. -2002-02-02 Jason Thorpe +2004-01-02 Mark Kettenis - * config.bfd (hppa*-*-netbsd*): New target. + * elf32-i386.c (elf_i386_grok_prstatus): Add support for FreeBSD. + (elf_i386_grok_psinfo): Likewise. -2002-01-31 Philipp Thomas +2004-01-02 Bernardo Innocenti - * coff-arm.c (coff_arm_merge_private_bfd_data): Move ERROR - to front of message. Unify messages with elf32-arm.h. Use - commas where neccessary. - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Use all upcase - ERROR in messages. Unify messages with coff-arm.c. Correct - VFP/FPA error message. - (elf32_arm_print_private_bfd_data): Don't mark APCS-26 and - APCS-32 for translation. + * config.bfd: Add m68k-uClinux target. -2002-02-01 Hans-Peter Nilsson +2004-01-01 Grant Edwards - Perform on-demand global register allocation from - R_MMIX_BASE_PLUS_OFFSET relocs. - * elf64-mmix.c (struct bpo_reloc_section_info, struct - bpo_reloc_request, struct bpo_greg_section_info): New. - (mmix_elf_check_common_relocs, mmix_elf_gc_sweep_hook, - bpo_reloc_request_sort_fn, mmix_elf_relax_section, - _bfd_mmix_check_all_relocs, - _bfd_mmix_prepare_linker_allocated_gregs, - _bfd_mmix_finalize_linker_allocated_gregs): New functions. - (elf_mmix_howto_table): Correct src_mask for most relocs. - (mmix_elf_perform_relocation) : New - case. - (mmix_final_link_relocate) : New - case. Fix typo in comment. New label do_mmix_reloc. - (mmix_elf_check_relocs): Abuse bfd_link_info member base_file to - store first object file with a base-plus-offset reloc. Call - mmix_elf_check_common_relocs for the part common with mmo. - (mmix_elf_final_link): Write out linker-allocated register - contents section. + * elflink.h (elf_gc_sections): Warn when gc-sections option is ignored. + * elf32-h8300.c (elf32_h8_gc_mark_hook): New function. + (elf32_h8_gc_sweep_hook): New function. + (elf_backend_gc_mark_hook): Define. (elf_backend_gc_sweep_hook): Define. - (bfd_elf64_bfd_relax_section): Define. - - * mmo.c: Don't include - (mmo_init): Correct init-once logic. - -2002-02-01 Tom Rix - - * config.bfd: Conditionally support for pre AIX 4.3. - -2002-02-01 Alan Modra - - * Makefile.am: Run "make dep-am" - * Makefile.in: Regenerate. - -2002-01-31 David O'Brien - - * configure.in: Recognize the differences in core files from FreeBSD - 4.{0,1} and later versions of 4.x. This treats 4.2+ the same as - 5-CURRENT. - * configure: Regenerate. - -2002-01-31 Ivan Guzvinec - - * coff-or32.c: New file. - * cpu-or32.c: New file. - * elf32-or32.c: New file. - * archures.c: Add support for or32. - * targets.c: Add support for or32. - * bfd-in2.h: Regenerate. - * coffcode.h (coff_set_arch_mach_hook, coff_set_flags, - coff_write_object_contents): Add support for or32. - * config.bfd: Add target. - * configure.in: Add support for or32. - * configure: Regenerate. - * Makefile.am: Add support for or32. - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Add or32 files. - * po/bfd.pot: Regenerate. - -2002-01-31 Nick Clifton - Don Lindsay - - * elf32-mips.c (mips_elf_calculate_relocation): Replace 'return - false' with a return of a bfd_reloc_ error code. - -2002-01-31 Hans-Peter Nilsson - - * elf32-cris.c (elf_cris_discard_excess_program_dynamics): Don't - unexport unreferenced symbols when --export-dynamic. Call - _bfd_elf_strtab_delref when unexporting. - -2002-01-30 Daniel Jacobowitz - - * bfd-in.h: Include if it is available. - * bfd-in2.h: Regenerated. - -2002-01-31 Alan Modra - - * elf64-ppc.c (func_desc_adjust): STV_PROTECTED functions should - not go via the plt. - -2002-01-30 Nick Clifton - - * archures.c: Tidy up formatting of embedded comments. - * bfd.c: Tidy up formatting of embedded comments. - * bfd-in.h: Fix formatting of comments. - * reloc.c: Tidy up formatting of ordinary & embedded comments. - * section.c: Tidy up formatting of embedded comments. - * syms.c: Tidy up formatting of embedded comments. - * targets.c: Tidy up formatting of embedded comments. - - * bfd-in2.h: Regenerate. - -2002-01-30 Nick Clifton - - * vms-tir.c (cmd_name): New function. - (tir_cmd_name): New function. - (etir_sta, etir_sto, etir_opr, etir_stc): Use cmd_name(). - (tir_opr, tir_ctl, tir_cmd): use tir_cmd_name(). - Fix formatting. - - * peXXigen.c (pe_print_idata): Rearrange message to aid in - translation. - (pe_print_pdata): Rearrange message to aid in translation. - - * libbfd.c (warn_deprecated): Rearrange error message to aid in - translation. - - * ihex.c (ihex_write_object_contents): Fix spelling typo. - - * ieee.c (ieee_slurp_external_symbols): Remove spurious space. - - * elf64-sparc.c (sparc64_elf_add_symbol_hook): Rearrange error - message to aid in translation. - - * elf64-mmix.c (mmix_final_link_relocate): Rearrange error message - to aid in translation. - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Fix typo. - -2002-01-30 Philipp Thomas - - * coff-arm.c, elf32-elf.h: Unify messages. - -2002-01-30 Nick Clifton - - * po/sv.po: Updated translation. - -2002-01-30 Philipp Thomas - - * dwarf2.c (read_abbrev): Use full section name in error message. - (decode_line_info): Likewise. - - * elf.c (_bfd_elf_symbol_from_bfd_symbol): Don't translate debugging - message. - -2002-01-30 Alan Modra - - * elf64-ppc.c (func_desc_adjust): Only provide missing function - descriptor symbols for undefined function code syms. Clear - ELF_LINK_NON_ELF so that they can stay weak. - -2002-01-29 Chris Demetriou - Mitch Lichtenberg - - * bfd-in.h (bfd_mips_elf32_create_embedded_relocs): New prototype. - * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): New function - to handle 32-bit ELF embedded reloc (ld --embedded-relocs) - generation. - * bfd-in2.h: Regenerate. - -2002-01-29 Chris Demetriou - - * elf32-mips.c: Add additional comments about HI16 relocation - processing. - (_bfd_mips_elf_hi16_reloc): Don't subtract address here for - pc-relative relocations. (Reverts change made on 2001-10-31.) - (_bfd_mips_elf_lo16_reloc): Subtract address of LO16 part here - for pc-relative relocations. - (mips_elf_calculate_relocation): Add a comment about a kludge - in the R_MIPS_GNU_REL_HI16 handling. - (_bfd_mips_elf_relocate_section): Implement that kludge; - adjust pc-relative HI16 relocation for difference in HI16 and - LO16 addresses, since it can't easily be done in - mips_elf_calculate_relocation. - -2002-01-29 Martin Schwidefsky - - * elf32-i386 (elf_i386_adjust_dynamic_symbol): Do not replace PLT32 - relocations with PC32 relocations for undefined or weak symbols. - * elf32-s390 (elf_i386_adjust_dynamic_symbol): Likewise. - * elf64-s390x (elf_i386_adjust_dynamic_symbol): Likewise. - -2002-01-28 Jason Thorpe - - * elfcore.h (elf_core_file_p): Improve comment for last change. - -2002-01-27 Daniel Jacobowitz - - * configure: Regenerated. - -2002-01-27 Jason Thorpe - - * elfcore.h (elf_core_file_p): Set the machine architecture - before processing the program headers. - -2002-01-26 Hans-Peter Nilsson - - * configure.in <64-bit configuration>: If using gcc, check and - emit error for egcs-1.1.2. - * configure: Regenerate. - -2002-01-26 Egor Duda - - * elf.c (elfcore_grok_win32pstatus): Copy only as much information - as possible to avoid stack corruption. - -2002-01-26 Richard Henderson - - * elf64-alpha.c (elf64_alpha_check_relocs): Don't set reltext - for non-allocated sections. - -2002-01-25 Mark Kettenis - - * elf.c (elfcore_write_prstatus): Make sure we pass the address of - prstat.pr_reg even if it is a struct. - -2002-01-25 Steve Ellcey - - * elfxx-ia64.c: Reset AIX vector function overrides for HP-UX. - -2002-01-25 Philipp Thomas - - * coffgen.c (coff_print_symbol): Don't mark info message - for translation. - -2002-01-25 Nick Clifton - - * po/fr.po: Updated translation. - * po/es.po: Updated translation. - -2002-01-25 Philipp Thomas - - * coff-alpha.c (alpha_relocate_section): Unify warning message - for GP relative relocations without GP defined. - * coff-mips.c (mips_relocate_section): Likewise. - -2002-01-25 Alan Modra - - * elf-eh-frame.c (_bfd_elf_eh_frame_section_offset): Avoid - unsigned overflow when new_offset < old_offset. - -2002-01-24 Philipp Thomas - - * bfd.c (_bfd_abort): Fix typo. - -2002-01-23 Richard Henderson - - * elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't suppress - plt entries for undefweak symbols. - -2002-01-23 Steve Ellcey - - * targets.c (bfd_elf32_ia64_hpux_big_vec): Add to DEFAULT_VECTOR. - (bfd_elf64_ia64_hpux_big_vec): Ditto. - (bfd_elf32_h8300_vec): Ditto. - -2002-01-23 Alan Modra - - * elf64-ppc.c: Remove stale part of ABI comment. - (NO_OPD_RELOCS): Define. - (ppc64_elf_check_relocs): Use it. - (ppc64_elf_relocate_section): Here too. - (build_one_stub): Don't point function syms at the stub. Instead, - hijack plt.offset. - (ppc64_elf_relocate_section): Check whether REL24 relocs should - really go to the stub. Make all dynamic relocs in opd against - locals. - (ppc64_elf_finish_dynamic_symbol): Allow for non-standard use of - plt.offset. - -2002-01-22 Richard Henderson - - * elf64-alpha.c (INSN_UNOP): Encode with RB as $sp. - -2002-01-22 Alan Modra - - * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Correct sign of - TOC_BASE_OFF adjustment. - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2002-01-22 John David Anglin - - * configure.host (hppa*64*-*-hpux*, hppa*64*-*-linux*): Add new - host defines. - -2002-01-21 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section) : - Check for and emit error if sgot is NULL at this point. - -2002-01-21 Jason Thorpe - - * config.bfd (ia64*-*-netbsd*): New target. - -2002-01-21 Thomas Klausner - - * som.c (som_write_space_strings): Comment typo fix. - -2002-01-21 Alan Modra - - * elf64-ppc.c (struct ppc_link_hash_entry): Add is_func and - is_func_descriptor fields. - (link_hash_newfunc): Init them. - (ppc64_elf_check_relocs): Only R_PPC24_REL24 syms starting with a - dot are candidates for plt entries. When processing .opd relocs, - set function descriptor strings to point inside function code - string, and set new ppc_link_hash_entry fields. - (ppc64_elf_gc_sweep_hook): Don't sweep R_PPC64_REL24 relocs. - (ppc64_elf_adjust_dynamic_symbol): Remove most code dealing with - function descriptors. It's now done in.. - (func_desc_adjust): New. - (ppc64_elf_func_desc_adjust): New. - (define elf_backend_always_size_sections): Define. - (ppc64_elf_hide_symbol): New. - (define elf_backend_hide_symbol): Define. - (allocate_dynrelocs): Remove code looking up function descriptors - as that has been done earlier. - (ppc64_elf_size_dynamic_sections): Use htab shortcut to elf hash - table. - (ppc64_elf_finish_dynamic_symbol): Likewise. Remove code looking - up function descriptor. - (build_one_stub): Look up the function code sym. Check for - invalid plt offsets. - (ppc64_elf_relocate_section): Tweak calls to undefined weak syms. - Convert R_PPC64_TOC relocs to R_PPC64_RELATIVE in shared libs. - - * elf-bfd.h (elf_backend_data ): Add - boolean param. - (_bfd_elf_link_hash_hide_symbol): Likewise. - * elflink.h (elf_link_add_object_symbols): Adjust call to - elf_backend_hide_symbol. - (elf_fix_symbol_flags): Likewise. - (elf_link_assign_sym_version): Likewise. Use bfd_malloc rather - than bfd_alloc. - * elf.c (_bfd_elf_link_hash_hide_symbol): Add "force_local" param. - Set ELF_LINK_FORCED_LOCAL and call _bfd_elf_strtab_delref. - * elf32-hppa.c (elf32_hppa_hide_symbol): Likewise. - (clobber_millicode_symbols): Adjust to suit new hide_symbol. - * elf32-cris.c (elf_cris_hide_symbol): Add "force_local" param - and adjust to suit. - * elf32-mips.c (_bfd_mips_elf_hide_symbol): Likewise, and call - _bfd_elf_link_hash_hide_symbol rather than duplicating code. - * elfxx-ia64.c (elfNN_ia64_hash_hide_symbol): Likewise. - -2002-01-18 Alan Modra - - * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Test for a - dynamic function descriptor symbol, not the associated function - symbol. - -2002-01-17 Eric Christopher - - * elf32-mips.c (mips_elf_calculate_relocation): Fix typo. - -2002-01-17 Nick Clifton - - * po/bfd.pot: Regenerate. - * po/fr.po: Regenerate. - -2002-01-17 Alan Modra - - * elf-bfd.h (elf_backend_data ): - Remove "Elf_Internal_Shdr *" param. - (_bfd_mips_elf_section_from_bfd_section): Ditto. - * elf32-mips.c (_bfd_mips_elf_section_from_bfd_section): Ditto. - * elf32-m32r.c (_bfd_m32r_elf_section_from_bfd_section): Ditto. - * elf32-v850.c (v850_elf_section_from_bfd_section): Ditto. - * elf64-mmix.c (mmix_elf_section_from_bfd_section): Ditto. - * elfxx-ia64.c (elfNN_hpux_backend_section_from_bfd_section): Ditto. - * elf.c (_bfd_elf_section_from_bfd_section): Allow backend - function to override special sections. Remove hdr arg from - backend call, and don't loop. - -2002-01-16 Eric Christopher - - * elf32-mips.c (mips_elf_calculate_relocation): Set require_jalxp - on R_MIPS_26 and target is 16bit. Add R_MIPS16_GPREL to list of - relocations requiring gp0 and gp. - -2002-01-16 Richard Earnshaw - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Handle - EF_ARM_VFP_FLOAT. - (elf32_arm_print_private_bfd_data): Likewise. - -2002-01-16 Nick Clifton - - * po/tr.po: Import new version. - -2002-01-16 Alan Modra - - * elf64-ppc.c (ppc64_elf_howto_raw): Remove stale FIXMEs. - (ppc64_elf_reloc_type_lookup): Use proper CTOR reloc. - (ORI_R0_R0_0): Correct. - -2002-01-16 Alan Modra - - * elflink.c (_bfd_elf_create_dynamic_sections): Don't set SEC_CODE - when plt_not_loaded. - * elf64-ppc.c (ppc64_elf_create_dynamic_sections): No need to - clear .plt SEC_CODE here. Create .stub and correct .glink flags. - (PLT_INITIAL_ENTRY_SIZE): Set to 24. - (ppc64_elf_glink_code): Delete. - (PPC64_ELF_GLINK_SIZE): Delete. - (ADDIS_R12_R2, STD_R2_40R1, LD_R11_0R12, LD_R2_0R12, MTCTR_R11, - BCTR, ADDIS_R12_R12_1, LD_R2_40R1, NOP, LI_R0_0, B_DOT, LIS_R0_0, - ORI_R0_R0_0): Define. - (PLT_CALL_STUB_SIZE, GLINK_CALL_STUB_SIZE): Define. - (struct ppc_link_hash_table): Add sstub and plt_overflow. - (ppc64_elf_link_hash_table_create): Init them. - (ppc64_elf_check_relocs ): Refcount .plt entry. - Don't copy to shared lib. - (ppc64_elf_check_relocs): Call bfd_set_error on errors. - (ppc64_elf_gc_sweep_hook ): Sweep plt refcount. - (allocate_dynrelocs ): Don't change function sym here. Make - room for .stub and .glink code. - (ppc64_elf_size_dynamic_sections): Handle .stub. Make entry for - DT_PPC64_GLINK. - (ppc64_elf_final_link): Rename to ppc64_elf_set_toc. Don't call - bfd_elf64_bfd_final_link. - (bfd_elf64_bfd_final_link): Don't define. - (ppc64_elf_size_stubs): New. - (build_plt_stub): New. - (build_one_stub): New. - (ppc64_elf_build_stubs): New. - (ppc64_elf_relocate_section ): Remove assert. - (ppc64_elf_relocate_section): Don't copy R_PPC64_REL24 relocs. - (ppc64_elf_finish_dynamic_symbol): Don't build stubs here. Set - DT_PPC64_GLINK entry. Tweak DT_PLTGOT, DT_JMPREL, DT_PLTRELSZ in - case output sections not separate. Adjust DT_RELASZ to not - include plt relocs. Set reserved got entry. Set got and plt - entry size. - (elf_backend_got_header_size): Set to 8. - * elf64-ppc.h: New file. - -2002-01-16 Alan Modra - - * elf32-arm.h (elf32_arm_size_dynamic_sections): When removing - sections, use bfd_section_list_remove. - * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise. - * elflink.h (elf_link_add_object_symbols): When removing all - sections, use bfd_section_list_clear. - -2002-01-15 Nick Clifton - - * po/sv.po: New file: Swedish translation. - * configure.in (ALL_LINGUAS): Add sv. - * configure: Regenerate. - -2002-01-15 Jakub Jelinek - - * elflink.h (elf_link_input_bfd): Back out 2002-01-07 change. - * elf.c (merge_sections_remove_hook): New function. - (_bfd_elf_merge_sections): Pass it as 3rd argument to - _bfd_merge_sections. - * libbfd-in.h (_bfd_merge_sections): Add 3rd argument. - * libbfd.h: Rebuilt. - * merge.c (_bfd_merge_sections): Add remove_hook argument. - Call remove_hook if a SEC_EXCLUDE section is encountered. - -2002-01-15 Nick Clifton - - * elf32-xstormy16.c (xstormy16_reloc_map): Add new field 'table'. - (xstormy16_reloc_map): Initialise new field with correct howto - table. - (xstormy16_reloc_type_lookup): Use 'table' field to locate correct - howto entry. - -2002-01-10 Michael Snyder - - * elf.c (elfcore_write_prstatus): Use long instead of pid_t; - (elfcore_write_pstatus): Use long instead of pid_t; - * elf-bfd.h: Change prototypes to use long instead of pid_t; - -2002-01-09 Jason Thorpe - - * elf.c: Update copyright years. - (elfcore_grok_netbsd_note): Use NT_NETBSDCORE_PROCINFO - and NT_NETBSDCORE_FIRSTMACH. Improve a comment. - -2002-01-08 Michael Snyder - - Add capability to write corefile note sections, for gdb. - * elf.c (elfcore_write_note): New function. - (elfcore_write_prpsinfo): New function. - (elfcore_write_prstatus): New function. - (elfcore_write_pstatus): New function. - (elfcore_write_prfpreg): New function. - (elfcore_write_prxfpreg): New function. - * elf-bfd.h: Add prototypes for above functions. - -2002-01-08 Alexandre Oliva - - * elf.c (elf_fake_sections): Propagate errors from - elf_backend_fake_section. - -2002-01-07 Jason Thorpe - - * Makefile.am (BFD32_BACKENDS): Add elf32-sh-nbsd.lo. - (BFD32_BACKENDS_CFILES): Add elf32-sh-nbsd.c. - (elf32-sh-nbsd.lo): New rule. - * Makefile.in: Regenerate. - * config.bfd (sh*le-*-netbsdelf*): New target. - (sh*-*-netbsdelf*): New target. - * configure.in: Include netbsd-core.lo for native sh*-*-netbsd*. - (bfd_elf32_shnbsd_vec): New vector. - (bfd_elf32_shlnbsd_vec): New vector. - * configure: Regenerate. - * elf32-sh-nbsd.c: New file. - * targets.c: Update copyright years. - (_bfd_target_vector): Add bfd_elf32_shlnbsd_vec and - bfd_elf32_shnbsd_vec. - -2002-01-07 Aldy Hernandez - - * coff-rs6000.c (READ20): Use bfd_scan_vma. - -2002-01-07 Geoffrey Keating - - * elflink.h (elf_link_input_bfd): Don't ask for the merged offset - of a symbol in a section that will be deleted. - -2002-01-07 Nick Clifton - - * po/es.po: New file: Spanish translation. - * configure.in (ALL_LINGUAS): Add es. - * configure: Regenerate. - -2002-01-06 Steve Ellcey - - * elfxx-ia64.c (is_unwind_section_name): Add target vector as - argument so we can handle HP-UX specially. - (elfNN_ia64_hpux_vec): New for use in is_unwind_section_name. - (elfNN_hpux_backend_section_from_bfd_section): New for support - of SHN_IA_64_ANSI_COMMON. - (elfNN_ia64_relax_section): Add support for SHN_IA_64_ANSI_COMMON. - (is_unwind_section_name): Add special HP-UX support. - (elfNN_ia64_section_from_shdr): Add support for more sections. - (elfNN_ia64_fake_sections): Modify is_unwind_section_name call and - add support for more sections. - (elfNN_ia64_additional_program_headers): Modify - is_unwind_section_name call. - (elfNN_ia64_modify_segment_map): Remove assumption that there is - only one unwind section in segment. - -2002-01-06 Alan Modra - - * syms.c (_bfd_generic_make_empty_symbol): New function. - * libbfd-in.h (_bfd_nosymbols_make_empty_symbol): Define as - _bfd_generic_make_empty_symbol. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * hppabsd-core.c (hppabsd_core_make_empty_symbol): Delete function. - (hppabsd_core_get_symtab_upper_bound): Don't define. - (hppabsd_core_get_symtab): Likewise. - (hppabsd_core_print_symbol): Likewise. - (hppabsd_core_get_symbol_info): Likewise. - (hppabsd_core_bfd_is_local_label_name): Likewise. - (hppabsd_core_get_lineno): Likewise. - (hppabsd_core_find_nearest_line): Likewise. - (hppabsd_core_bfd_make_debug_symbol): Likewise. - (hppabsd_core_read_minisymbols): Likewise. - (hppabsd_core_minisymbol_to_symbol): Likewise. - (hppabsd_core_vec): Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). - Formatting fixes. - * hpux-core.c: Similarly. - * irix-core.c: Similarly. - * osf-core.c: Similarly. - * sco5-core.c: Similarly. - * binary.c (binary_make_empty_symbol): Remove function, define as - _bfd_generic_make_empty_symbol. - * ihex.c (ihex_make_empty_symbol): Likewise. - * mmo.c (mmo_make_empty_symbol): Likewise. - * ppcboot.c (ppcboot_make_empty_symbol): Likewise. - * srec.c (srec_make_empty_symbol): Likewise. - * versados.c (versados_make_empty_symbol): Likewise. - * vms.c (_bfd_vms_make_empty_symbol): Remove. - (vms_make_empty_symbol): Define as _bfd_generic_make_empty_symbol. - * vms-gsd.c (_bfd_vms_slurp_gsd): Call bfd_make_empty_symbol - rather than _bfd_vms_make_empty_symbol. - * vms-misc.c (new_symbol): Likewise. - -2002-01-05 Alan Modra - - * section.c (bfd_section_init): Remove unnecessary initialisations. - (bfd_section_list_clear): New function. - (bfd_section_list_remove, bfd_section_list_insert): New macros. - (_bfd_strip_section_from_output): Use them. - * coffcode.h (coff_set_alignment_hook): Likewise. - * elf32-mips.c (_bfd_mips_elf_final_link): Likewise. - * elf64-mips.c (mips_elf64_final_link): Likewise. - * elf64-mmix.c (mmix_elf_final_link): Likewise. - * sunos.c (sunos_add_dynamic_symbols): Likewise. - * xcofflink.c (_bfd_xcoff_bfd_final_link): Likewise. - * bfd-in2.h: Regenerate. - - * netbsd-core.c (netbsd_core_file_p): Use bfd_make_section_anyway - rather than doing our own section handling. Clean up after errors - with bfd_release and bfd_section_list_clear. Handle unexpected - flags. - * aoutf1.h (sunos4_core_file_p): Likewise. - * aix386-core.c (aix386_core_file_p): Likewise. - * cisco-core.c (cisco_core_file_validate): Likewise. - * ptrace-core.c (ptrace_unix_core_file_p): Likewise. - * trad-core.c (trad_unix_core_file_p): Likewise. - - * hppabsd-core.c (hppabsd_core_core_file_p): Clean up after errors - with bfd_release and bfd_section_list_clear. - * hpux-core.c (hpux_core_core_file_p): Likewise. - * irix-core.c (irix_core_core_file_p): Likewise. - * lynx-core.c (lynx_core_file_p): Likewise. - * osf-core.c (osf_core_core_file_p): Likewise. - * rs6000-core.c (rs6000coff_core_p): Likewise. - * sco5-core.c (sco5_core_file_p): Likewise. - - * elf32-mips.c (_bfd_mips_elf_lo16_reloc): Simplify, and perform - sign extension adjustments without conditionals. - -2002-01-04 Jakub Jelinek - - * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Don't crash if - CIE at .eh_frame start is removed due to no FDEs referencing it. - -2002-01-04 Jason Thorpe - - * config.bfd (x86_64-*-netbsd*): New target. - * configure.in (x86_64-*-netbsd*): Set COREFILE - to netbsd-core.lo. - * configure: Regenerated. - -2002-01-03 Tom Rix - - * xcofflink.c (_bfd_xcoff_bfd_final_link): Update .pad section ordering - for recent bfd_make_section_anyway change. - -2002-01-03 Nick Clifton - - * elf32-arm.h (elf32_arm_final_link_relocate): Handle - R_ARM_THM_PC11 reloc. - -2002-01-02 Nick Clifton - - * configure.in (LINGUAS): Add ja. - * configure: Regenerate. - * po/ja.po: Import from translation project's web site. - -2002-01-02 Nick Clifton - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Reformat error - messages to ease translation into other languages. + (elf_backend_can_gc_sections): Define. -For older changes see ChangeLog-0001 +For older changes see ChangeLog-0203 Local Variables: mode: change-log diff -uprN binutils-2.14.90.0.7/bfd/ChangeLog-0203 binutils-2.14.90.0.8/bfd/ChangeLog-0203 --- binutils-2.14.90.0.7/bfd/ChangeLog-0203 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/ChangeLog-0203 2004-01-14 13:07:42.000000000 -0800 @@ -0,0 +1,11405 @@ +2003-12-19 Kazuhiro Inaoka + + Adfd m32r-linux and PIC support. Add new ABI that uses RELA. + * config.bfd (m32r*-*-linux*, m32r*le-*-linux*, m32r*le-*-*): Added. + * configure.in (bfd_elf32_m32rlin_vec, bfd_elf32_m32rlelin_vec, + bfd_elf32_m32rle_vec): Added + * configure: Regenerated. + * elf32-m32r.c (m32r_info_to_howto, m32r_elf_adjust_dynamic_symbol, + m32r_elf_size_dynamic_sections, m32r_elf_create_dynamic_sections, + m32r_elf_finish_dynamic_sections, m32r_elf_finish_dynamic_symbol, + allocate_dynrelocs, readonly_dynrelocs, m32r_elf_reloc_type_class, + m32r_elf_fake_sections): Added. + (m32r_elf_howto_table): Added + R_M32R_16_RELA, R_M32R_32_RELA, R_M32R_24_RELA, + R_M32R_10_PCREL_RELA, R_M32R_18_PCREL_RELA, + R_M32R_26_PCREL_RELA, R_M32R_HI16_ULO_RELA, + R_M32R_HI16_SLO_RELA, R_M32R_LO16_RELA, + R_M32R_SDA16_RELA, R_M32R_RELA_GNU_VTINHERIT, + R_M32R_RELA_GNU_VTENTRY, R_M32R_GOT24, + R_M32R_26_PLTREL, R_M32R_COPY, R_M32R_GLOB_DAT, + R_M32R_JMP_SLOT, R_M32R_RELATIVE, R_M32R_GOTOFF, + R_M32R_GOTPC24, R_M32R_GOT16_HI_ULO, + R_M32R_GOT16_HI_SLO, R_M32R_GOT16_LO, + R_M32R_GOTPC_HI_ULO, R_M32R_GOTPC_HI_SLO, + R_M32R_GOTPC_LO. + (m32r_elf_relocate_section, m32r_elf_check_relocs): Changed for + New ABI. + * reloc.c: Add BFD_RELOC_M32R_GOT24, BFD_RELOC_M32R_26_PLTREL, + BFD_RELOC_M32R_COPY, BFD_RELOC_M32R_GLOB_DAT, + BFD_RELOC_M32R_JMP_SLOT, BFD_RELOC_M32R_RELATIVE, + BFD_RELOC_M32R_GOTOFF, BFD_RELOC_M32R_GOTPC24, + BFD_RELOC_M32R_GOT16_HI_ULO, BFD_RELOC_M32R_GOT16_HI_SLO, + BFD_RELOC_M32R_GOT16_LO, BFD_RELOC_M32R_GOTPC_HI_ULO, + BFD_RELOC_M32R_GOTPC_HI_SLO, BFD_RELOC_M32R_GOTPC_LO. + * targets.c (bfd_elf32_m32rlin_vec, bfd_elf32_m32rlelin_vec, + bfd_elf32_m32rle_vec): Added. + * bfd-in2.h: Regenerated. + * libbfd.h: Regenerated. + +2003-12-19 Danny Smith + + * coffcode.h (styp_to_sec_flags): Don't treat .reloc section + as SEC_DEBUGGING. + +2003-12-18 Richard Sandiford + + * elf32-mips.c (elf_mips_howto_table_rel): Replace all uses of + mips_elf_generic_reloc with _bfd_mips_elf_generic_reloc. Use + _bfd_mips_elf_hi16_reloc for R_MIPS_HI16 and R_MIPS_GNU_REL_HI16, + _bfd_mips_elf_lo16_reloc for R_MIPS_LO16 and R_MIPS_GNU_REL_LO16, + and _bfd_mips_elf_got16_reloc for R_MIPS_GOT16. Change rightshift + to 16 for R_MIPS_HI16 and R_MIPS_GNU_REL_HI16. + (mips_elf_generic_reloc, struct mips_hi16, mips_elf_hi16_reloc) + (mips_elf_lo16_reloc, mips_elf_got16_reloc): Delete. + (_bfd_mips_elf32_gprel16_reloc): Remove special case. + (mips_elf_gprel32_reloc, mips32_64bit_reloc): Likewise. + + * elf64-mips.c (mips_elf64_howto_table_rel): Replace all uses of + mips_elf_generic_reloc with _bfd_mips_elf_generic_reloc. Use + _bfd_mips_elf_hi16_reloc for R_MIPS_HI16, _bfd_mips_elf_lo16_reloc + for R_MIPS_LO16 and _bfd_mips_elf_got16_reloc for R_MIPS_GOT16. + Change R_MIPS_HI16's rightshift to 16. + (mips_elf64_howto_table_rela): Replace all uses of + mips_elf_generic_reloc with _bfd_mips_elf_generic_reloc. + Use _bfd_mips_elf_generic_reloc for R_MIPS_GOT16 as well. + (mips_elf64_hi16_reloc, mips_elf64_got16_reloc): Delete. + (mips_elf64_shift6_reloc): Remove special case. Use + _bfd_mips_elf_generic_reloc instead of returning bfd_reloc_continue. + + * elfn32-mips.c (prev_reloc_section): Delete. + (prev_reloc_address, prev_reloc_addend): Delete. + (elf_mips_howto_table_rel, elf_mips_howto_table_rela): As for + elf64-mips.c + (GET_RELOC_ADDEND, SET_RELOC_ADDEND): Delete. + (mips_elf_generic_reloc, struct mips_hi16, mips_elf_hi16_reloc) + (mips_elf_lo16_reloc, mips_elf_got16_reloc): Delete. + (mips_elf_gprel16_reloc): Delete use of GET_RELOC_ADDEND. + (mips_elf_literal_reloc, mips_elf_gprel32_reloc): Likewise. + (mips16_jump_reloc, mips16_gprel_reloc): Likewise. + (mips_elf_shift6_reloc): Likewise. Delete use of SET_RELOC_ADDEND. + + * elfxx-mips.c (_bfd_mips_elf_gprel16_with_gp): Use + _bfd_relocate_contents to install an in-place addend. + (mips_hi16): New structure. + (mips_hi16_list): Moved from elf32-mips.c. + (_bfd_mips_elf_hi16_reloc, _bfd_mips_elf_got16_reloc): New functions. + (_bfd_mips_elf_lo16_reloc, _bfd_mips_elf_generic_reloc): New functions. + (mips_elf_calculate_relocation): Assume addend is unshifted. + (_bfd_mips_elf_relocate_section): Don't apply the howto rightshift + on top of the usual high-part shift. Don't shift the addend right + before calling mips_elf_calculate_relocation. + + * elfxx-mips.h (_bfd_mips_elf_hi16_reloc): Declare. + (_bfd_mips_elf_got16_reloc, _bfd_mips_elf_lo16_reloc): Declare. + (_bfd_mips_elf_generic_reloc): Declare. + +2003-12-16 Eric Youngdale + Nick Clifton + + * peicode.h (pe_ILF_build_a_bfd): Only skip one instance of each + prefix character, if they are present. + +2003-12-15 Dmitry Semyonov + Nick Clifton + + * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Ensure that correct flags + are set on known section types. + +2003-12-12 Nick Clifton + + * po/ro.po: Updated translation. + +2003-12-12 Alan Modra + + * elf64-hppa.c (elf64_hppa_link_output_symbol_hook): Check for + NULL dyn_h. + +2003-12-11 Nick Clifton + + * elf.c (INCLUDE_SECTION_IN_SEGMENT): Skip PT_GNU_STACK segments. + +2003-12-08 Richard Sandiford + + * elfxx-mips.h, elfxx-mips.c, cpu-mips.c: Convert prototypes. + Remove casts that were only needed for K&R compatibility. + +2003-12-08 Alan Modra + + * elf-bfd.h (struct elf_backend_data): Remove "bfd *" and add + "elflink_hash_entry *" param to elf_backend_link_output_symbol_hook. + Add "elflink_hash_entry *" param to elf_backend_output_arch_syms. + * elflink.h (elf_link_output_sym): Add "elflink_hash_entry *" param, + and pass to output_symbol_hook. + (elf_bfd_final_link): Adjust elf_link_output_sym calls. + (elf_link_output_extsym): Likewise. + (elf_link_input_bfd): Likewise. + * elf32-sh64.c (sh64_elf_link_output_symbol_hook): Adjust. + * elf32-v850.c (v850_elf_link_output_symbol_hook): Likewise. + * elf64-mmix.c (mmix_elf_link_output_symbol_hook): Likewise. + * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): Likewise. + * elfxx-mips.c (_bfd_mips_elf_link_output_symbol_hook): Likewise. + * elfxx-mips.h (_bfd_mips_elf_link_output_symbol_hook): Likewise. + * elf64-sparc.c (sparc64_elf_output_arch_syms): Likewise. + * elf64-hppa.c (elf64_hppa_link_output_symbol_hook): Likewise. + Validate dynh->h against h. + * elf64-ppc.c (struct ppc_link_hash_entry): Add adjust_done bitfield. + (link_hash_newfunc): Init it. + (adjust_opd_syms): New function. + (ppc64_elf_edit_opd): Set adjust_done when global .opd sym adjusted. + Set opd.adjust for all .opd relocs. Call adjust_opd_syms. + (ppc64_elf_tls_optimize): Adjust possible .opd sym values here. + (ppc64_elf_relocate_section): Also adjust syms not a multiple of 24. + (ppc64_elf_output_symbol_hook): New function. + (elf_backend_link_output_symbol_hook): Define. + +2003-12-07 Richard Sandiford + + * elf32-mips.c, elfn32-mips.c, elf64-mips.c: Convert prototypes. + Remove casts that were only needed for K&R compatibility. + +2003-12-05 Dmitry Semyonov + + * coff-arm.c (aoutarm_std_reloc_howto [ARM_WINCE]): Set + partial_inplace for these relocs to FALSE for comptability with + the MS linker. + Remap ARM_26D relocation from 5 to 0. This fixes "bad fixup" error + generated by MS linker, and brings the relocation in line the MS + PE documentation. + +2003-12-04 H.J. Lu + + * elf32-ppc.c (ppc_elf_relax_section): Don't check relax_finalizing. + +2003-12-04 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_relax_section): Use the + need_relax_finalize field in link_info instead of + relax_finalizing to check if the relax finalize pass is being + done. + +2003-12-04 Dmitry Semyonov + + * coff-arm.c (coff_arm_relocate_section, bfd_arm_process_before_allocation): + Change ARM26* to ARM_26* in comments to match definitions. + (coff_arm_adjust_symndx): Replace hard-coded constants with + appropriate definitions (ARM_26*). + +2003-12-04 Alan Modra + + * coff-i860.c (coff_i860_reloc_nyi): Return bfd_reloc_not_supported. + * elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Warning fixes. + (mn10300_elf_relax_section): Likewise. + * nlm32-alpha.c (ONES): Define. + (nlm32_alpha_howto_table): Use it to avoid warnings. + +2003-12-04 Alan Modra + + * elf32-i386.c (elf_i386_object_p): Delete. + (elf_backend_object_p): Don't define. + * elf32-s390.c (elf_s390_object_p): No need to alloc tdata here. + * elf32-sh.c (sh_elf_object_p): Likewise. + * elf32-sparc.c (elf32_sparc_object_p): Likewise. + * elf64-alpha.c (elf64_alpha_object_p): Likewise. + * elf64-s390.c (elf_s390_object_p): Likewise. + * elf64-x86-64.c (elf64_x86_64_elf_object_p): Likewise. + +2003-12-03 Kazuhiro Inaoka + + * archures.c (bfd_mach_m32r2): Add new machine type. + * bfd-in2.h: Regenerate. + * cpu-m32r.c : Add new machine type. + * elf32-m32r.c (m32r_elf_object_p, m32r_elf_final_write_processing, + m32r_elf_merge_private_bfd_data): Add support for new machine + type. + +2003-12-03 Dave Airlie + + * config.bfd: Add vax-linux-gnu target. + * configure.in: Likewise. + * configure: Regenerate. + +2003-12-03 Alan Modra + + * ecoff.c (ecoff_link_add_archive_symbols): Update for renamed + bfd_link_hash_entry field "next" -> "und_next". + * linker.c (_bfd_link_hash_newfunc): Likewise. + (bfd_link_add_undef): Likewise. + (_bfd_generic_link_add_archive_symbols): Likewise. + (_bfd_generic_link_add_one_symbol): Likewise. + * xcofflink.c (xcoff_link_add_symbols): Likewise. + +2003-12-02 Nick Clifton + + * configure.in (ALL_LINGUAS): Add ro. + * po/ro.po: New Romanian translation. + +2003-12-02 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + +2003-12-01 Dmitry Semyonov + + * coffcode.h (coff_compute_section_file_positions): Set page_size + to 1 instead of 0 in the case file alignment value is zero. + +2003-12-01 Kazu Hirata + + * coff-rs6000.c: Remove ARGSUSED and VARARGS. + * coff64-rs6000.c: Likewise. + * coffcode.h: Likewise. + * elf32-vax.c: Likewise. + * hash.c: Likewise. + * hppabsd-core.c: Likewise. + * hpux-core.c: Likewise. + * ihex.c: Likewise. + * netbsd-core.c: Likewise. + * osf-core.c: Likewise. + * pdp11.c: Likewise. + * ptrace-core.c: Likewise. + * sco5-core.c: Likewise. + * section.c: Likewise. + * sunos.c: Likewise. + * trad-core.c: Likewise. + +2003-12-01 Alan Modra + + * elf-bfd.h (is_elf_hash_table): Take hash tab rather than info arg. + * elf.c (_bfd_elf_merge_sections): Adjust to suit. + (_bfd_elf_link_just_syms): Likewise. + (bfd_elf_get_needed_list): Likewise. + (bfd_elf_get_runpath_list): Likewise. + (_bfd_elf_link_hash_copy_indirect): Remove unneeded parens. + * elf32-hppa.c (elf32_hppa_setup_section_lists): Don't check hash tab + creator flavour. + (elf32_hppa_set_gp): Look up output sections rather than using htab. + * elf32-i960.c: Comment fix. Formatting. + * elf32-m32r.c (m32r_elf_add_symbol_hook): Use is_elf_hash_table + rather than testing creator flavour. + * elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise. + * elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise. + * elflink.c (_bfd_elf_link_create_dynamic_sections): Adjust for + is_elf_hash_table change. Remove redundant test. + (bfd_elf_record_link_assignment): Use is_elf_hash_table rather than + testing creator flavour. + (elf_link_record_local_dynamic_symbol): Adjust for is_elf_hash_table. + (_bfd_elf_fix_symbol_flags): Likewise. + (_bfd_elf_adjust_dynamic_symbol): Likewise. + * elflink.h (elf_link_add_object_symbols): Likewise. Remove redundant + checks. Use is_elf_hash_table rather than testing creator flavour. + Use hash_table throughout in place of info->hash. + (elf_add_dynamic_entry): Adjust for is_elf_hash_table change. + (NAME(bfd_elf,size_dynamic_sections)): Likewise. Remove redundant + check. + (elf_bfd_final_link): Adjust for is_elf_hash_table change. + (elf_link_check_versioned_symbol): Use is_elf_hash_table rather than + testing creator flavour. + (elf_gc_sections): Add is_elf_hash_table check. + (elf_gc_common_finalize_got_offsets): Likewise. + (elf_bfd_discard_info): Adjust for is_elf_hash_table change. Remove + redundant check. + * elfxx-ia64.c (elfNN_ia64_relax_section): Use is_elf_hash_table + rather than testing creator flavour. + +2003-11-28 Christian Groessler + + * cpu-z8k.c: Convert to ISO C90. + * coff-z8k.c: Likewise. + +2003-11-27 Alexandre Oliva + + * elf-bfd.h (elf_backend_data::elf_backend_modify_segment_map): + Add link info argument. + * elf32-i370.c (elf_backend_modify_segment_map): Likewise. + * elf32-ppc.c (ppc_elf_modify_segment_map): Likewise. + * elf32-xtensa.c (elf_xtensa_modify_segment_map): Likewise. + * elf64-hppa.c (elf64_hppa_modify_segment_map): Likewise. + * elfxx-ia64.c (elfNN_ia64_modify_segment_map): Likewise. + * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Likewise. + * elfxx-mips.h (_bfd_mips_elf_modify_segment_map): Likewise. + * elf.c (assign_file_positions_except_relocs, + assign_file_positions_for_segments): Likewise. Adjust calls. + +2003-11-27 Mark Kettenis + + * elf.c (elfcore_grok_netbsd_procinfo): Make a pseudosection out + of the note. + +2003-11-26 Daniel Jacobowitz + Richard Sandiford + + * elfxx-mips.c (mips_elf_set_global_got_offset): Don't set no_fn_stub. + (mips_elf_set_no_stub): New function. + (mips_elf_multi_got): Call it. + (_bfd_mips_elf_finish_dynamic_symbol): If a relocation is needed for + a secondary GOT entry, create an R_MIPS_32 or R_MIPS_64 relocation and + use mips_elf_create_dynamic_relocation to deal with any compatibility + issues. Store the adjusted addend in the GOT slot. + +2003-11-25 Mattias Engdegård + + * stabs.c (_bfd_link_section_stabs): Skip N_EXCL stabs when + procesing N_BINCL stabs. + +2003-11-25 Alan Modra + + * elf64-ppc.c (ppc_type_of_stub): Disallow stubs other than + ppc_stub_plt_call to symbols defined in shared libs. + +2003-11-22 Jakub Jelinek + + * elf-bfd.h (ELF_LINK_POINTER_EQUALITY_NEEDED): Define new flag. + * elf.c (_bfd_elf_link_hash_copy_indirect): Copy it. + * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. + (elf_i386_check_relocs): Set it. + (elf_i386_finish_dynamic_symbol): If it is not set, + clear st_value of SHN_UNDEF symbol. + +2003-11-20 Jim Blandy + + * cpu-powerpc.c (powerpc_compatible): Any ISA in the PowerPC + family is a superset of . + +2003-11-20 Martin Schwidefsky + + * elf32-s390.c (elf_s390_relocate_section): Don't recalculate symbol + section for reloc output and subtract the output section's address + from the addend when converting a relocation into one against a + section symbol. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + +2003-11-18 James E Wilson + + * elfxx-ia64.c (get_fptr): For fptr_rel, use dynobj not abfd. + (elfNN_ia64_size_dynamic_sections): When stripping sections, check + for ia64_info->rel_fptr_sec. + +2003-11-18 Alan Modra + + * elf64-ppc.c (toc_adjusting_stub_needed): Exit early if section + size is zero. + +2003-11-17 Daniel Jacobowitz + + * elf.c (_bfd_elf_link_hash_copy_indirect): Copy + ELF_LINK_HASH_NEEDS_PLT. Fix formatting. + * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise. + * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. + * elf32-ppc.c (ppc_elf_copy_indirect_symbol): Likewise. + * elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise. + * elf32-sh.c (sh_elf_copy_indirect_symbol): Likewise. + * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. + * elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise. + * elf64-x86-64.c (elf64_x86_64_copy_indirect_symbol): Likewise. + * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. + * elf32-xtensa.c (elf_xtensa_copy_indirect_symbol): Remove. + (elf_backend_copy_indirect_symbol): Don't define. + +2003-11-14 Daniel Jacobowitz + + * elfxx-mips.c (mips_elf_merge_gots): Weaken assert for local + GOT entries. + +2003-11-13 Martin Schwidefsky + + * elf32-s390.c (elf_s390_relocate_section): Only convert R_390_32 + to R_390_RELATIVE. Convert the other relocations against local + symbols to relocations against the start of the section. + * elf64-s390.c (elf_s390_relocate_section): Only convert R_390_64 + to R_390_RELATIVE. Convert the other relocations against local + symbols to relocations against the start of the section. + +2003-11-11 Nick Clifton + + * elf-m10300.c (bfd_mn10300_elf_size_dynamic_sections): Use + info->executable not info->shared to decide if a .interp section + should be present. + * elf32-arm.h (elf32_arm_size_dynamic_sections): Likewise. + * elf32-cris.c (elf_cris_size_dynamic_sections): Likewise. + * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Likewise. + * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise. + * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise. + * elf32-vax.c (elf_vax_size_dynamic_sections): Likewise. + * elf32-xtensa.c (elf_xtensa_size_dynamic_sections): Likewise. + * elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise. + * elfxx-mips.c (_bfd_mips_size_dynamic_sections): Likewise. + * elflink.h (size_dynamic_sections): Likewise. + +2003-11-10 Jonathan Wilson + + * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Swap out tls pointer. + (_bfd_XXi_final_link_postscript): Look for __tks_used symbol. If + found initialise the tls data directory entry. + +2003-11-07 Alan Modra + + * elf32-ppc.c (ppc_elf_install_value): Delete. + (shared_stub_entry, stub_entry): Make them arrays of ints. + Remove initial branch. + (ppc_elf_relax_section): Write one branch around all trampolines + instead. Correct bogus R_PPC_PLTREL24 handling. Correct + branch range check. Only use shared_stub_entry when shared. + Test that branches can reach stubs. Write trampolines out at + end so that just one realloc is used. Handle little-endian + mode. Move relevant code from ppc_elf_install_value to here. + (ppc_elf_relocate_section): Move code handling RELAX32 from + ppc_elf_install_value to here. + +2003-11-06 Alan Modra + + * elf32-ppc.c (ppc_elf_howto_raw); Add entry for R_PPC_RELAX32PC. + (ppc_elf_install_value): Handle R_PPC_RELAX32PC. Merge duplicate + cases. + (shared_stub_entry): Correct opcode. + (ppc_elf_relax_section): Generate R_PPC_RELAX32PC relocs. + (ppc_elf_relocate_section): Handle them. + +2003-11-05 Alan Modra + + * elf.c (_bfd_elf_rela_local_sym): Accept asection **, and return + updated section in case of merged section. + * elf-bfd.h (_bfd_elf_rela_local_sym): Update declaration. + * elf-hppa.h (elf_hppa_relocate_section): Adjust call. + * elf-m10200.c (mn10200_elf_relocate_section): Likewise. + * elf-m10300.c (mn10300_elf_relocate_section): Likewise. + * elf32-arm.h (elf32_arm_relocate_section): Likewise. + * elf32-avr.c (elf32_avr_relocate_section): Likewise. + * elf32-cris.c (cris_elf_relocate_section): Likewise. + * elf32-fr30.c (fr30_elf_relocate_section): Likewise. + * elf32-frv.c (elf32_frv_relocate_section): Likewise. + * elf32-h8300.c (elf32_h8_relocate_section): Likewise. + * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. + * elf32-i370.c (i370_elf_relocate_section): Likewise. + * elf32-i860.c (elf32_i860_relocate_section): Likewise. + * elf32-m32r.c (m32r_elf_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-mcore.c (mcore_elf_relocate_section): Likewise. + * elf32-msp430.c (elf32_msp430_relocate_section): Likewise. + * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf32-sh.c (sh_elf_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf32-v850.c (v850_elf_relocate_section) Likewise. + * elf32-vax.c (elf_vax_relocate_section): Likewise. + * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. + * elf32-xtensa.c (elf_xtensa_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf64-mmix.c (mmix_elf_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-sh64.c (sh_elf64_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. + + * elf32-cris.c (cris_elf_relocate_section): Don't recalculate symbol + section for reloc output. + * elf32-i370.c (i370_elf_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf32-vax.c (elf_vax_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + + * elf32-ppc.c (ppc_elf_relocate_section): Don't recalculate everything + for R_PPC_RELAX32 reloc. Don't bother checking ppc_elf_install_value + return value. + * elf64-ppc.c (ppc64_elf_relocate_section ): Sanity check + sec->id. + +2003-11-05 Alan Modra + + * elf32-d10v.c (extract_rel_addend, insert_rel_addend): New functions. + (elf32_d10v_relocate_section): Use them to handle -r reloc + adjustments, and in place of _bfd_elf_rela_local_sym. + + * cpu-iq2000.c (arch_info_struct): Warning fix. + +2003-11-05 Alan Modra + + * elf32-hppa.c (ELIMINATE_COPY_RELOCS): Define. + (elf32_hppa_copy_indirect_symbol): Don't copy NON_GOT_REF on + weakdefs. + (elf32_hppa_check_relocs): Use ELIMINATE_COPY_RELOCS. + (elf32_hppa_adjust_dynamic_symbol): Likewise. Copy weakdef + NON_GOT_REF. + (allocate_dynrelocs): Use ELIMINATE_COPY_RELOCS and + SYMBOL_CALLS_LOCAL. Discard relocs for undef weak syms with + non-default visibility. + (elf32_hppa_relocate_section): Use ELIMINATE_COPY_RELOCS and + SYMBOL_CALLS_LOCAL. + +2003-11-04 Alan Modra + + * aout-target.h, aoutf1.h, bfdio.c, bfdwin.c: Update copyright date. + * coff-apollo.c, coff-sparc.c, coff-w65.c, coff-we32k.c: Ditto. + * coff-z8k.c, coffgen.c, cpu-frv.c, cpu-h8500.c, cpu-hppa.c: Ditto. + * cpu-ia64-opc.c, cpu-m10300.c, cpu-mips.c, cpu-msp430.c: Ditto. + * cpu-rs6000.c, cpu-z8k.c, efi-app-ia32.c, elf32-am33lin.c: Ditto. + * gen-aout.c, hash.c, hp300hpux.c, init.c, mach-o.c: Ditto. + * nlm-target.h, nlm.c, som.h, stabs.c, sysdep.h, xsym.h: Ditto. + + * elf-m10300.c (_bfd_mn10300_elf_create_got_section): Fix + "dereferencing type-punned pointer" warnings. + + * aout-adobe.c (aout_adobe_set_section_contents): Constify location. + * aoutx.h (NAME(aout,set_section_contents)): Ditto. + * bfd-in2.h: Regenerate. + * binary.c (binary_set_section_contents): Ditto. + * bout.c (b_out_set_section_contents): Ditto. + * coff-tic54x.c (tic54x_set_section_contents): Ditto. + * coffcode.h (coff_set_section_contents): Ditto. + * ecoff.c (_bfd_ecoff_set_section_contents): Ditto. + * elf-bfd.h (_bfd_elf_set_section_contents): Ditto. + * elf.c (_bfd_elf_set_section_contents): Ditto. + * elfxx-mips.c (_bfd_mips_elf_set_section_contents): Ditto. + * elfxx-mips.h (_bfd_mips_elf_set_section_contents): Ditto. + * i386msdos.c (msdos_set_section_contents): Ditto. + * ieee.c (ieee_set_section_contents): Ditto. + * ihex.c (ihex_set_section_contents): Ditto. + * libaout.h (NAME(aout,set_section_contents)): Ditto. + * libbfd-in.h (_bfd_nowrite_set_section_contents): Ditto. + (_bfd_generic_set_section_contents): Ditto. + * libbfd.h: Regenerate. + * libbfd.c (_bfd_generic_set_section_contents): Ditto. + * libecoff.h (_bfd_ecoff_set_section_contents): Ditto. + * libnlm.h (nlmNAME(set_section_contents)): Ditto. + (struct nlm_backend_data ): Ditto. + * mmo.c (mmo_set_section_contents): Ditto. + * nlm32-alpha.c (nlm_alpha_mangle_relocs): Ditto. + * nlm32-i386.c (nlm_i386_mangle_relocs): Ditto. + * nlm32-ppc.c (nlm_powerpc_mangle_relocs): Ditto. + * nlm32-sparc.c (nlm_sparc_mangle_relocs): Ditto. + * nlmcode.h (nlm_set_section_contents): Ditto. + * oasys.c (oasys_set_section_contents): Ditto. + * pdp11.c (NAME(aout,set_section_contents)): Ditto. + * ppcboot.c (ppcboot_set_section_contents): Ditto. + * srec.c (srec_set_section_contents): Ditto. + * targets.c (BFD_JUMP_TABLE_WRITE <_bfd_set_section_contents>): Ditto. + * tekhex.c (tekhex_set_section_contents): Ditto. + (move_section_contents): Ditto. + * versados.c (versados_set_section_contents): Ditto. + * vms-misc.c (_bfd_save_vms_section): Ditto. + * vms.c (vms_set_section_contents): Ditto. + * vms.h (_bfd_save_vms_section): Ditto. + +2003-11-04 Alan Modra + + * elf64-ppc.c (ppc_size_one_stub): Size relbrlt. Accept info arg + rather than htab. + (ppc64_elf_size_stubs): Adjust ppc_size_one_stub traversal. Zero + relbrlt size. + (ppc64_elf_build_stubs): Allocate space for relbrlt. + +2003-11-04 Alan Modra + + * bfd-in.h (_bfd_elf_tls_setup): Declare. + * bfd-in2.h: Regenerate. + * elf-bfd.h (struct elf_link_tls_segment): Delete. + (struct elf_link_hash_table): Add tls_sec and tls_size. + * elf.c (_bfd_elf_link_hash_table_init): Init tls_sec and tls_size. + * elflink.c (_bfd_elf_tls_setup): New function. + * elflink.h (struct elf_final_link_info): Remove first_tls_sec. + (elf_bfd_final_link): Don't set first_tls_sec here. Update code + saving tls segment info, round segment size up. + (elf_link_output_extsym): Adjust code using tls segment info. + (elf_link_input_bfd): Likewise. + * elf32-i386.c (dtpoff_base, tpoff): Likewise. + * elf32-s390.c (dtpoff_base, tpoff): Likewise. + * elf32-sh.c (dtpoff_base, tpoff): Likewise. + * elf32-sparc.c (dtpoff_base, tpoff): Likewise. + * elf64-s390.c (dtpoff_base, tpoff): Likewise. + * elf64-x86-64.c (dtpoff_base, tpoff): Likewise. + * elfxx-ia64.c (elfNN_ia64_tprel_base): Likewise. + (elfNN_ia64_dtprel_base): Likewise. + * elf64-alpha.c (alpha_get_dtprel_base): Likewise. + (alpha_get_tprel_base): Likewise. + (struct alpha_relax_info): Remove tls_segment. + (elf64_alpha_relax_got_load): Adjust invocation of + alpha_get_dtprel_base and alpha_get_tprel_base. + (elf64_alpha_relax_tls_get_addr): Likewise. + (elf64_alpha_relax_section): Likewise. + (elf64_alpha_relocate_section): Likewise. + (elf64_alpha_relax_find_tls_segment): Delete. + * elf32-ppc.c (struct ppc_elf_link_hash_table): Remove tls_sec. + (ppc_elf_tls_setup): Call _bfd_elf_tls_setup. Return section. + (ppc_elf_relocate_section): Adjust to use elf.tls_sec. + * elf32-ppc.h (ppc_elf_tls_setup): Update. + * elf64-ppc.c (struct ppc_link_hash_table): Remove tls_sec. + (ppc64_elf_tls_setup): Call _bfd_elf_tls_setup. Return section. + (ppc64_elf_tls_optimize): Adjust to use elf.tls_sec. + (ppc64_elf_relocate_section): Likewise. + * elf64-ppc.h (ppc64_elf_tls_setup): Update. + +2003-11-03 Daniel Jacobowitz + + * elf-bfd.h (struct elf_backend_data): Remove plt_header_size. + * elf-m10300.c (elf_backend_plt_header_size): Don't define. + * elf32-arm.h (elf_backend_plt_header_size): Don't define. + * elf32-cris.c (elf_backend_plt_header_size): Don't define. + * elf32-i386.c (elf_backend_plt_header_size): Don't define. + * elf32-mips.c (elf_backend_plt_header_size): Don't define. + * elf32-ppc.c (elf_backend_plt_header_size): Don't define. + * elf32-s390.c (elf_backend_plt_header_size): Don't define. + * elf32-sh.c (elf_backend_plt_header_size): Don't define. + * elf32-sparc.c (elf_backend_plt_header_size): Don't define. + * elf64-alpha.c (elf_backend_plt_header_size): Don't define. + * elf64-hppa.c (elf_backend_plt_header_size): Don't define. + * elf64-mips.c (elf_backend_plt_header_size): Don't define. + * elf64-ppc.c (elf_backend_plt_header_size): Don't define. + * elf64-s390.c (elf_backend_plt_header_size): Don't define. + * elf64-sh64.c (elf_backend_plt_header_size): Don't define. + * elf64-sparc.c (elf_backend_plt_header_size): Don't define. + * elf64-x86-64.c (elf_backend_plt_header_size): Don't define. + * elfn32-mips.c (elf_backend_plt_header_size): Don't define. + * elfxx-ia64.c (elf_backend_plt_header_size): Don't define. + * elfxx-target.h (elf_backend_plt_header_size): Don't define + or include in target initializer. + +2003-11-03 Andrew Cagney + + * section.c (bfd_set_section_contents): Make the "location" buffer + constant. + * bfd-in2.h: Re-generate. + +2003-10-30 Andrew Cagney + + * syms.c: Replace "struct symbol_cache_entry" with "struct + bfd_symbol". + * vms.h, targets.c, section.c, reloc.c, peicode.h: Ditto. + * mipsbsd.c, elf.c, linker.c, elf-bfd.h, ecoff.c: Ditto. + * cpu-z8k.c, cpu-ns32k.c, cpu-h8500.c, bfd.c, bfd-in.h: Ditto. + * bfd-in2.h: Re-generate. + +2003-10-30 Jakub Jelinek + + * elfxx-ia64.c: Include objalloc.h, hashtab.h. + (struct elfNN_ia64_local_hash_entry): Remove root. Add id and r_sym + fields. + (struct elfNN_ia64_local_hash_table): Remove. + (struct elfNN_ia64_link_hash_table): Change loc_hash_table's type + to htab_t. Add loc_hash_memory field. + (elfNN_ia64_local_hash_table_init, elfNN_ia64_new_loc_hash_entry): + Removed. + (elfNN_ia64_local_htab_hash, elfNN_ia64_local_htab_eq): New + functions. + (elfNN_ia64_hash_table_create): Use hashtab.h hashtable for + loc_hash_table. Initialize loc_hash_memory. + (elfNN_ia64_hash_table_free): New function. + (elfNN_ia64_local_hash_lookup): Remove. + (elfNN_ia64_local_dyn_sym_thunk): Change into htab_traverse + callback. + (elfNN_ia64_dyn_sym_traverse): Use htab_traverse. + (get_local_sym_hash): Use hashtab.h hashtable for loc_hash_table. + (bfd_elfNN_bfd_link_hash_table_free): Define. + +2003-10-30 Alan Modra + + * elflink.c (_bfd_elf_link_record_dynamic_symbol): Modify versioned + symbol string in place. + +2003-10-30 Jim Blandy + + * cpu-rs6000.c (rs6000_compatible): Check the correct arch_info + object's mach field: all PowerPC machines are supersets of the + original rs6000, but not later rs6000 machines. + +2003-10-30 Alan Modra + + * dwarf2.c (struct attribute): Delete "unsnd", "snd" and "addr". + Add "val" and "sval" fields. + (DW_STRING, DW_UNSND, DW_BLOCK, DW_SND, DW_ADDR): Delete. + (read_attribute_value): Expand and adjust DW_* occurrences. + (scan_unit_for_functions, parse_comp_unit): Likewise. + +2003-10-30 Phil Edwards + + * config.bfd (arm-*-vxworks): Remove separate stanza; merge with + other common ELF triples. + (i[3-7]86-*-vxworks): Change to ELF format. + (mips*-*-windiss): New triple, add to common MIPS/ELF stanza. + (sh-*-vxworks): New stanza. + +2003-10-30 Lars Knoll + Michael Matz + Jakub Jelinek + Alan Modra + + * merge.c (struct sec_merge_sec_info): Update comment. + (struct sec_merge_hash_entry): Remove entsize. + (sec_merge_hash_lookup): Only adjust alignment when creating. + (sec_merge_emit): Remove register keyword. + (cmplengthentry, last4_eq, last_eq): Delete. + (strrevcmp, strrevcmp_align, is_suffix): New. + (merge_strings): Use them to implement fast suffix merging. + * elf-strtab.c (struct elf_strtab_hash_entry): Update comments. + Make "len" signed. + (_bfd_elf_strtab_add): Lose on >2G strings. + (_bfd_elf_strtab_emit): Don't emit strings with len < 0. + (cmplengthentry, last4_eq): Delete. + (strrevcmp, is_suffix): New. + (_bfd_elf_strtab_finalize): Rework to implement fast suffix merging. + +2003-10-29 Daniel Jacobowitz + + * elf32-arm.h (elf32_arm_final_link_relocate): Move check for + SEC_ALLOC. + +2003-10-29 Philip Blundell + + * elf32-arm.h (elf32_arm_plt0_entry, elf32_arm_plt_entry): New + code sequence. + (PLT_HEADER_SIZE): New. + (struct elf32_arm_pcrel_relocs_copied): Rename to ... + (struct elf32_arm_relocs_copied): ... this. Count both + pcrel and non-pcrel relocs. All uses updated. + (struct elf32_arm_link_hash_table): Add pointers to dynamic linker + sections and symbol/section mapping cache. + (create_got_section): New. + (elf32_arm_create_dynamic_sections): New. + (elf_backend_create_dynamic_sections): Use it. + (elf32_arm_final_link_relocate): Support garbage collection of relocs. + (elf32_arm_check_relocs): Likewise. + (elf32_arm_adjust_dynamic_symbol): Likewise. + (elf32_arm_copy_indirect_symbol): New. + (elf32_arm_link_hash_table_create): Initialise new fields. + (elf32_arm_gc_sweep_hook): Implement. + (elf32_arm_discard_copies): Delete. + (elf32_arm_finish_dynamic_symbol): Use new PLT code. + (elf32_arm_finish_dynamic_sections): Likewise. + (elf_backend_can_refcount): Define. + (elf_backend_copy_indirect_symbol): Likewise. + (elf_backend_plt_header_size): Set to PLT_HEADER_SIZE. + +2003-10-29 Alan Modra + + * elf64-ppc.c (elf_backend_grok_prstatus): Define. + (elf_backend_grok_psinfo): Define. + (ppc64_elf_grok_prstatus, ppc64_elf_grok_psinfo): New functions. + + * elf.c (_bfd_elfcore_make_pseudosection): Allow multiple + sections with the same name. + (elfcore_grok_lwpstatus): Likewise. + (elfcore_grok_win32pstatus): Likewise. + (elfcore_grok_note): Likewise. + (elfcore_grok_nto_status): Likewise. + (elfcore_grok_nto_gregs): Likewise. + +2003-10-27 Daniel Jacobowitz + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Never skip dynamic + objects. + +2003-10-14 Richard Sandiford + + * elfxx-mips.c (mips_elf_create_got_section): Initialize global_gotno. + +2003-10-24 H.J. Lu + + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Look up + hash table for real symbols. + +2003-10-23 Michael Snyder + + * section.c (asection): Fix typo in comment. + +2003-10-23 Alan Modra + + * elf64-ppc.c (get_tls_mask): Add toc_symndx param, save toc + reloc symbol index to it. Don't allow gd syms in shared libs + to be optimized. + (ppc64_elf_tls_optimize): Adjust get_tls_mask call. + (ppc64_elf_size_stubs): Likewise. + (ppc64_elf_relocate_section): Check that tls relocs are only used + with tls syms, and similarly for non-tls. Correct symbol used + when optimizing toc tls code. + +2003-10-22 Nick Clifton + + * peicode.h (coff_swap_scnhdr_in): Only remove padding when + processing an executable. + +2003-10-22 Jakub Jelinek + + * elflink.c (_bfd_elf_export_symbol): Adjust for globals and locals + field changes. + (_bfd_elf_link_assign_sym_version): Likewise. + * elflink.h (size_dynamic_sections): Likewise. + +2003-10-21 Alexandre Oliva , + Michael Snyder + + * archures.c (bfd_mach_sh4a, bfd_mach_sh4al_dsp, bfd_mach_sh4_nofpu, + bfd_mach_sh4a_nofpu): New machine types. + * bfd-in2.h: Rebuilt. + * cpu-sh.c (compatible): Remove unused function. + (SH4A_NEXT, SH4AL_DSP_NEXT, SH4_NOFPU_NEXT, SH4A_NOFPU_NEXT): New. + (arch_info_struct): Add sh4a, sh4al_dsp, sh4-nofpu and sh4a-nofpu. + * elf32-sh.c (sh_elf_set_mach_from_flags): Handle them. + +2003-10-21 Wouter van Heyst + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Correct text + describing mismatched formats involving the Maverick FP type. + +2003-10-21 Anil Paranjpe + + * binary.c (binary_object_p): Pass machine flag along with + architecture. + +2003-10-21 Thorsten Brehm + + * archures.c (bfd_default_scan): Add support for mcf528x. + * ieee.c (ieee_write_processor): Likewise. + +2003-10-21 Peter Barada + Bernardo Innocenti + + * archures.c: Add MCF528x (MCFv4) support. + * bfd/cpu-m68k.c (arch_info_struct): Likewise. + * bfd-in2.h: Regenerate. + +2003-10-20 Andrew Cagney + + * targets.c: Replace "struct sec" with "struct bfd_section" + * syms.c, sparclynx.c, section.c, opncls.c: Ditto. + * libcoff-in.h, libbfd-in.h, elfxx-target.h: Ditto. + * elf.c, coffgen.c, bfd.c, bfd-in.h, aoutf1.h: Ditto. + * aout-tic30.c, aout-target.h: + * bfd-in2.h, libcoff.h, libbfd.h: Regenerate. + +2003-10-18 Hans-Peter Nilsson + + Support linker relaxation of new R_MMIX_PUSHJ_STUBBABLE relocs. + * elf64-mmix.c (MAX_PUSHJ_STUB_SIZE): New macro. + (struct _mmix_elf_section_data): New member pjs. + (mmix_set_relaxable_size, mmix_elf_get_section_contents): New + functions. + (elf_mmix_howto_table): New entry for R_MMIX_PUSHJ_STUBBABLE. + (mmix_reloc_map): Ditto. + (mmix_elf_relocate_section): Handle R_MMIX_PUSHJ_STUBBABLE. + (mmix_final_link_relocate, mmix_elf_check_common_relocs): Ditto. + (mmix_elf_perform_relocation): Ditto. Don't mark parameter addr + unused. + (mmix_elf_check_relocs): Move early return to after + mmix_elf_check_common_relocs call. + (mmix_elf_symbol_processing): Fix cut-and-pasto in head comment. + (_bfd_mmix_before_linker_allocation): Rename from + _bfd_mmix_prepare_linker_allocated_gregs. All referers changed. + Arrange to set the initial relaxable size of sections. + (_bfd_mmix_after_linker_allocation): Rename from + _bfd_mmix_finalize_linker_allocated_gregs. + (mmix_elf_relax_section): Relax a R_MMIX_PUSHJ_STUBBABLE reloc. + (bfd_elf64_get_section_contents): Define. + * reloc.c: Add ENUMX for BFD_RELOC_MMIX_PUSHJ_STUBBABLE. + * libbfd.h, bfd-in2.h: Regenerate. + + * reloc.c (bfd_generic_relax_section): Default-set + section->_cooked_size here. + (bfd_generic_get_relocated_section_contents): Don't set it here. + Explain why. + +2003-10-17 John David Anglin + + * elf32-hppa.c (elf32_hppa_relocate_section): Skip relocation if + output section has been discarded. + +2003-10-17 Shrinivas Atre + + * coff-h8300.c (funcvec_hash_newfunc): Handle normal mode. + (h8300_reloc16_extra_cases): Likewise. + (h8300_bfd_link_add_symbols): Likewise. + +2003-10-17 Dhananjay Deshpande + + * cpu-h8300.c (h8300sxn_info_struct): Correct address size. + (h8300sn_info_struct): Likewise. + (h8300hn_info_struct): Likewise. + +2003-10-16 Pavel Roskin + + * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Don't calculate image size + for sections which lack size info. + +2003-10-17 Danny Smith + + * configure.host: Add __USE_MINGW_FSEEK to HDEFINES for + mingw32. + +2003-10-16 H.J. Lu + + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Also warn + undefined patterns with '*'. + +2003-10-16 H.J. Lu + + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't + use the last CIE from a different section. + (_bfd_elf_write_section_eh_frame): Don't pad beyond the raw + size of the output section. + +2003-10-07 Roland McGrath + + * elf.c (_bfd_elf_make_section_from_phdr): Set alignment_power of + new section from p_align header field. + +2003-10-16 H.J. Lu + + * elf32-xtensa.c (xtensa_read_table_entries): The external size + of entry is 8 bytes. + +2003-10-15 Andrew Cagney + + * targets.c (BFD_JUMP_TABLE_SYMBOLS): Replace NAME##_get_symtab + with NAME##_canonicalize_symtab. + * libcoff-in.h (coff_canonicalize_symtab): Update. + * xsym.h (bfd_sym_canonicalize_symtab): Update. + * elf-bfd.h (_bfd_elf_canonicalize_symtab): Update. + * coffgen.c (coff_canonicalize_symtab): Update. + * libbfd-in.h (_bfd_nosymbols_canonicalize_symtab): Update. + * libnlm.h (nlmNAME(canonicalize_symtab)): Update. + * ieee.c (ieee_vec): Update comment. + * libecoff.h (_bfd_ecoff_canonicalize_symtab): Update. + * mmo.c (mmo_canonicalize_symtab): Update. + * nlm-target.h (nlm_canonicalize_symtab): Update. + * nlmcode.h (nlm_canonicalize_symtab): Update. + * i386msdos.c (msdos_canonicalize_symtab): Update. + * hp300hpux.c (MY (canonicalize_symtab)): Update. + * oasys.c (oasys_canonicalize_symtab): Update. + * som.c (som_canonicalize_symtab): Update. + * pef.c (bfd_pef_canonicalize_symtab): Update. + * nlmcode.h (nlm_canonicalize_symtab): Update. + * xsym.c (bfd_sym_canonicalize_symtab): Update. + * vms.c (vms_canonicalize_symtab): Update. + * versados.c (versados_canonicalize_symtab): Update. + * mach-o.c (bfd_mach_o_canonicalize_symtab): Update. + * ieee.c (ieee_canonicalize_symtab): Update. + * pdp11.c (NAME(aout,canonicalize_symtab)): Update. + * reloc.c: Update comment. + * libaout.h (NAME(aout,canonicalize_symtab)): Update. + * coff64-rs6000.c (aix5coff64_vec): Update. + * coff64-rs6000.c (bfd_xcoff_aix5_backend_data): Update. + * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Update. + * aoutx.h (NAME(aout,canonicalize_symtab)): Update. + * elfxx-target.h (bfd_elfNN_canonicalize_symtab): Update. + * hp300hpux.c (MY_canonicalize_symtab): Update. + * ecoff.c (_bfd_ecoff_canonicalize_symtab): Update. + * aout-tic30.c (MY_canonicalize_symtab): Update. + * aout-target.h (MY_canonicalize_symtab): Update. + * ppcboot.c (ppcboot_canonicalize_symtab): Update. + * elf.c (_bfd_elf_canonicalize_symtab): Update. + * elfcode.h (elf_canonicalize_symtab): Update. + * ihex.c (ihex_canonicalize_symtab): Update. + * tekhex.c (tekhex_canonicalize_symtab): Update. + * binary.c (binary_canonicalize_symtab): Update. + * srec.c (srec_canonicalize_symtab): Update. + +2003-10-15 Kazu Hirata + + * elf32-h8300.c (elf_reloc_map): Fix a comment typo. + +2003-10-15 Kaz Kojima + + * elf32-sh.c (sh_elf_relocate_section): Handle R_SH_IMM_*_PCREL + relocations. + (sh_elf_check_relocs): Likewise. + + * elf32-sh64.c (elf_backend_merge_symbol_attribute): Define. + (sh64_elf_merge_symbol_attribute): New. + * elf64-sh64.c (elf_backend_merge_symbol_attribute): Define. + (sh64_elf64_merge_symbol_attribute): New. + +2003-10-14 Kaz Kojima + + * elf-bfd.h (struct elf_backend_data): New function pointer member + elf_backend_merge_symbol_attribute. + * elflink.h (elf_link_add_object_symbols): Adjust call to + elf_backend_merge_symbol_attribute if the backend defined it. + * elfxx-target.h (elf_backend_merge_symbol_attribute): New macro. + (elfNN_bed): Add that to the initializer. + +2003-10-14 Bob Wilson + + * elf32-xtensa.c (get_is_linkonce_section): Delete. + (xtensa_is_property_section, xtensa_is_littable_section): Use + XTENSA_INSN_SEC_NAME and XTENSA_LIT_SEC_NAME macros. Do not recognize + linkonce sections containing ".xt.insn" and ".xt.lit" substrings. + (xtensa_get_property_section_name): Check section name instead of + calling get_is_linkonce_section. Remove unused bfd parameter. Use + XTENSA_INSN_SEC_NAME and XTENSA_LIT_SEC_NAME macros. Never generate + linkonce section names by appending ".xt.insn" or ".xt.lit". + (xtensa_read_table_entries): Remove bfd argument in call to + xtensa_get_property_section_name. Free section name when done. + (elf_xtensa_combine_prop_entries): Free leaking table. + +2003-10-13 Richard Sandiford + + * elfxx-mips.c (_bfd_mips_elf_size_dynamic_sections): Don't add + DT_MIPS_LIBLIST or DT_MIPS_CONFLICT entries. + (_bfd_mips_elf_finish_dynamic_symbol): Don't handle them. Don't + handle DT_MIPS_MSYM. Set DT_RELSZ based on the number of relocations + that were needed. + (_bfd_mips_elf_modify_segment_map): Fix placement of PT_MIPS_OPTIONS. + (_bfd_mips_elf_merge_private_bfd_data): Ignore EF_MIPS_UCODE. + +2003-10-13 H.J. Lu + + * bfd-in.h (bfd_elf32_ia64_after_parse): New prototype. + (bfd_elf64_ia64_after_parse): Likewise. + * bfd-in2.h: Regenerated. + + * elfxx-ia64.c (oor_ip): New. + (oor_branch_size): Likewise. + (bfd_elfNN_ia64_after_parse): Likewise. + (elfNN_ia64_relax_section): Use oor_ip if oor_branch_size + equals sizeof (oor_ip). + +2003-10-12 Kaz Kojima + + * elf64-sh64.c (sh_elf64_relocate_section): Tidy up for the + renumbering of some relocation numbers. + +2003-10-11 Alan Modra + + * coff-sh.c: Move definition of MAP and guard more code with + COFF_IMAGE_WITH_PE. + + * section.c (bfd_get_section_size_before_reloc): Ignore reloc_done. + * bfd-in2.h: Regenerate. + +2003-10-10 H.J. Lu + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + * doc/Makefile.in: Likewise. + +2003-10-09 H.J. Lu + + * cofflink.c: Include "safe-ctype.h". + (coff_link_add_symbols): Use ISDIGIT instead of isdigit. + +2003-10-08 Dave Brolley + On behalf of Michael Snyder + + * archures.c: Add FRV fr550 machine. + * cpu-frv.c: Ditto. + * elf32-frv.c: Ditto. + * bfd-in2.h: Regenerate. + +2003-10-08 Thiemo Seufer + + * elfxx-mips.c (STUB_MOVE,STUB_LI16): Fix stub code + for non-SGI N64 ABI. Improve code consitency. + +2003-10-07 Alexandre Oliva + + * elf32-frv.c (elf32_frv_howto_table): Set R_FRV_LABEL16's + rightshift to 2. + +2003-10-07 Nathan Sidwell + + * libbfd-in.h (_bfd_link_section_stabs): Add string offset + parameter. + * cofflink.c (coff_link_add_symbols): Deal with split stab + sections. + * elflink.h (elf_link_add_object_symbols): Deal with split stab + sections. + * stabs.c (_bfd_link_section_stabs): Add string offset parameter. + * libbfd.h: Regenerated. + + * coffcode.h (coff_set_alignment_hook): With PE_COFF reloc + overflow, set reloc start position to after the count + reloc. Subtract one from num relocs. Give error on 0xffff relocs + and no overflow. + * cofflink.c (_bfd_coff_final_link): Deal with PE_COFF reloc + overflow. + * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Do overflow if >= + 0xffff. + +2003-10-06 H.J. Lu + + * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Pad the + last CIE/FDE if needed. + +2003-10-06 Nick Clifton + + * targets.c (_bfd_target_vector): Include bfd_elf64_sparc_vec if + BFD64 is enabled. + +2003-10-06 Matt Thomas + + * config.bfd: Move the hppa*-*-netbsd* case to the hppa*-*-linux* case. + +2003-10-06 Robert Millan + + * configure.in: Match GNU/KNetBSD with new knetbsd*-gnu triplet. + * config.bfd: Likewise. + * configure: Regenerate. + +2003-10-04 Christian Groessler + + * coff-z8k.c (extra_case): Fix displacement length check for R_JR + and R_CALLR. + +2003-10-04 Stephane Carrez + + * elf32-m68hc1x.c: Update to ISO C90; replace PTR with void*. + * elf32-m68hc11.c: Likewise. + * elf32-m68hc12.c: Likewise. + * elf32-m68hc1x.h: Likewise. + +2003-10-04 Stephane Carrez + + * elf32-m68hc1x.c (_bfd_m68hc11_elf_merge_private_bfd_data): Fix merge + of flags between HC12 and HCS12. + +2003-10-04 Bryce McKinlay + + * merge.c (_bfd_merge_sections): Set SEC_EXCLUDE flag on sections + which become empty after merging. + +2003-09-30 Jakub Jelinek + + * elfxx-ia64.c (ia64_howto_table): Fix size of R_IA64_TPREL64[LM]SB, + R_IA64_DTPREL{32,64}[LM]SB and R_IA64_DTPMOD64[LM]SB. + +2003-09-30 Chris Demetriou + + * archures.c (bfd_mach_mipsisa64r2): New define. + * bfd-in2.h: Regenerate. + * aoutx.h (NAME(aout,machine_type)): Handle bfd_mach_mipsisa64r2. + * cpu-mips.c (I_mipsisa64r2): New enum value. + (arch_info_struct): Add entry for I_mipsisa64r2. + * elfxx-mips.c (_bfd_elf_mips_mach) + (_bfd_mips_elf_print_private_bfd_data): Handle E_MIPS_ARCH_64R2. + (mips_set_isa_flags): Add bfd_mach_mipsisa64r2 case. + (mips_mach_extensions): Add entry for bfd_mach_mipsisa64r2. + +2003-09-29 H.J. Lu + + * elfxx-ia64.c (elfNN_hpux_backend_symbol_processing): New. + Handle SHN_IA_64_ANSI_COMMON. + (elf_backend_section_from_bfd_section): Defined. + +2003-09-26 H.J. Lu + + * elflink.c (elf_link_read_relocs_from_section): Add an argument + of a pointer to section. Check bad symbol index. + (_bfd_elf_link_read_relocs): Modify calls to + elf_link_read_relocs_from_section. + +2003-09-23 DJ Delorie + + * elf32-sh.c (sh_elf_howto_table): R_SH_SWITCH8, + R_SH_GNU_VTINHERIT, R_SH_GNU_VTENTRY, + R_SH_LOOP_START,R_SH_LOOP_END moved to "reserved" spaces, + R_SH_DIR16, R_SH_DIR8, R_SH_DIR8UL, R_SH_DIR8UW, R_SH_DIR8U, + R_SH_DIR8SW, R_SH_DIR8S, R_SH_DIR4UL, R_SH_DIR4UW, R_SH_DIR4U, + R_SH_PSHA, R_SH_PSHL added. + (sh_reloc_map): Add R_SH_DIR16 and R_SH_DIR8. + (sh_elf_relocate_section): Support new relocs. + +2003-09-23 Bob Wilson + + * elf32-xtensa.c (elf_xtensa_relocate_section): Fix typo that clobbered + dynamic relocation offsets. + +2003-09-23 Alan Modra + + * simple.c (bfd_simple_get_relocated_section_contents): Free the + hash table using _bfd_generic_link_hash_table_free. + +2003-09-23 Alan Modra + + * elf-bfd.h (struct bfd_elf_special_section): Remove "suffix". Change + type of prefix_length and suffix_length to int. Rename "attributes" + to "attr". Comment. + (_bfd_elf_get_sec_type_attr): Update prototype. + * elf.c (get_special_section): Rewrite. + (_bfd_elf_get_sec_type_attr): Return struct rather than passing in + attr and type pointers. + (_bfd_elf_new_section_hook): Adjust for above. + (special_sections): Merge suffix with prefix. Set + prefix_length for all entries. Set suffix_length appropriately. + * elf32-m32r.c (m32r_elf_special_sections): Likewise. + * elf32-m68hc11.c (elf32_m68hc11_special_sections): Likewise. + * elf32-m68hc12.c (elf32_m68hc12_special_sections): Likewise. + * elf32-mcore.c (mcore_elf_special_sections): Likewise. + * elf32-sh64.c (sh64_elf_special_sections): Likewise. + * elf32-v850.c (v850_elf_special_sections): Likewise. + * elf32-xtensa.c (elf_xtensa_special_sections): Likewise. + * elf64-alpha.c (elf64_alpha_special_sections): Likewise. + * elf64-hppa.c (elf64_hppa_special_sections): Likewise. + * elf64-ppc.c (ppc64_elf_special_sections): Likewise. + * elf64-sh64.c (sh64_elf64_special_sections): Likewise. + * elfxx-ia64.c (elfNN_ia64_special_sections): Likewise. + * elfxx-mips.c (_bfd_mips_elf_special_sections): Likewise. + * elf32-ppc.c (ppc_elf_special_sections): Likewise. Fix .plt flags. + +2003-09-21 Daniel Jacobowitz + + * elf64-alpha.c (elf64_alpha_create_got_section): Initialize + ->got if the section already exists. + +2003-09-19 Nathan Sidwell + + * dwarf2.c (decode_line_info): Cope with an initially empty + filename table. + +2003-09-18 H.J. Lu + + * acinclude.m4: Include ../config/accross.m4. + * aclocal.m4: Regenerated. + + * configure.host (HOST_64BIT_TYPE): Remove if it is set to long + or long long. + (HOST_U_64BIT_TYPE): Remove if it is set to unsigned long long. + (host64): Remove if HOST_64BIT_TYPE is set to long. + + * configure.in (HOST_64BIT_TYPE): Set according to the size of + long and long long. + (HOST_U_64BIT_TYPE): Likewise. + (host64): Likewise. + * configure: Regenerated. + +2003-09-19 Alan Modra + + * elf.c (elfcore_write_note): Don't use sizeof(Elf_External_note) + since some ABIs round up the size of the struct. + +2003-09-18 H.J. Lu + + * elflink.c (_bfd_elf_merge_symbol): Allow type change if + the old symbol is undefined and the new symbol is defined. + +2003-09-18 Andreas Schwab + + * simple.c (bfd_simple_get_relocated_section_contents): Use + _bfd_generic_link_hash_table_create instead of + bfd_link_hash_table_create. + +2003-09-10 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_special_sections): Mark all sections + started with ".sbss" or "".sdata" as SHF_IA_64_SHORT. + +2003-09-10 John David Anglin + Randolph Chung + + * elf32-hppa.c (struct elf32_hppa_link_hash_entry, + hppa_link_hash_newfunc, hppa_build_one_stub, + elf32_hppa_adjust_dynamic_symbol, mark_PIC_calls, allocate_plt_static, + allocate_dynrelocs, elf32_hppa_size_dynamic_sections, + elf32_hppa_finish_dynamic_symbol): Remove pic_call field and all code + for generating import stubs for calls to statically linked PIC + functions. + (hppa_type_of_stub): Don't generate an import stub for calls to + statically linked pic functions. Generate import stubs for calls + in a shared object, to functions not in a regular file, and to + defined weak functions. Add new argument INFO. + (hppa_build_one_stub): Don't undef ADDIL_DP. + (elf32_hppa_check_relocs): Don't set SEC_HAS_GOT_REF flag. + (elf32_hppa_size_stubs): Pass info to hppa_type_of_stub. + (final_link_relocate): Change all DLTIND relocs to DPREL relocs in a + non-shared link. Convert instructions that use the the linkage table + pointer, or a facsimile thereof, to use the global data pointer when + the reloc has been changed. + +2003-09-08 Joel Brobecker + + * archures.c: Add new machine names for hppa. + * bfd-in2.h: Regenerate. + * cpu-hppa.c: Use the new machine names. + +2003-09-06 Stephane Carrez + + * elf32-m68hc1x.h (struct m68hc11_elf_link_hash_table): Remove + all_local_syms member. + * elf32-m68hc1x.c (elf32_m68hc11_size_stubs): Use bfd_elf_get_elf_syms + to get the local symbols. + +2003-09-06 Stephane Carrez + + * elf32-m68hc12.c (elf32_m68hc12_special_sections): New for hc11. + (elf_backend_special_sections): Define.a + + PR savannah/4950: + * elf32-m68hc11.c (elf32_m68hc11_special_sections): The .vectors + section is read-only. + +2003-09-04 Nick Clifton + + * archures.c (bfd_mach_v850e1): Define. + * bfd-in2.h: Regenerate. + * cpu-v850.h (scan): Accept bfd_mach_v850e1. + (arch_info_struct): Include an entry for bfd_mach_v850e1. + * elf32-v850.c (v850_elf_object_p): Accept E_V850E1_ARCH flag. + (v850_elf_final_write_processing): Accept bfd_mach_v850e1. + (v850_elf_print_private_bfd_data): Interpret E_V850E1_ARCH flag. + (v850_elf_merge_private_bfd_data): Allow v850e1 binaries to be + linked with v850e binaries. Mark the output as v850e. + +2003-09-03 Nick Clifton + + * cofflink.c (_bfd_coff_link_input_bfd): Do not skip section + symbols that are used in relocs. + +2003-08-30 Robert Millan + + * configure.in: Match GNU/KFreeBSD with new kfreebsd*-gnu triplet. + * config.bfd: Likewise. + * configure: Regenerate. + +2003-08-31 Christian Groessler + + * elf32-i860.c (i860_howto_pc26_reloc): Finish relocation here + instead of returning bfd_reloc_continue. + +2003-08-31 Andreas Jaeger + + * merge.c: Update to ISO C90. + +2003-08-27 Ian Lance Taylor + + * configure.in: Check for strtoull. + * bfd.c (bfd_scan_vma): Use strtoull when available. + * configure, config.in: Regenerate. + + * configure.in: Define and substitute BFD_HOST_LONG_LONG. + * bfd-in.h: Define BFD_HOST_LONG_LONG. Test it rather than + __GNUC__ when deciding whether to use long long for + BFD_HOST_64_BIT. + * configure, Makefile.in, doc/Makefile.in, bfd-in2.h: Regenerate. + +2003-08-27 Christian Groessler + + * elf32-i860.c (i860_howto_pc26_reloc, i860_howto_pc16_reloc, + i860_howto_splitn_reloc, i860_howto_highadj_reloc): New + functions. + (elf32_i860_howto_table): Insert the new functions as + 'special_function's in the proper reloc type entries. + +2003-08-27 Richard Sandiford + + * elf32-frv.c (elf32_frv_relocate_section): Use + _bfd_elf_rela_local_sym. + +2003-08-26 Michael Snyder + + * cpu-frv.c: Remove unused enum. + +2003-08-25 Maciej W. Rozycki + + * reloc.c: Fix documentation for MIPS ELF relocations. + libbfd.h: Regenerate. + bfd-in2.h: Regenerate. + +2003-08-24 Jason Eckhardt + + * coff-i860.c (CALC_ADDEND): Define to be a no-op. + +2003-08-24 Jason Eckhardt + + * elf32-i860.c (elf32_i860_relocate_pc16): Subtract 4 and + shift by 2 before storing the relocated value. + +2003-08-23 Jason Eckhardt + + * coff-i860.c (coff_i860_reloc_nyi): New function. + (howto_table): Add entries for relocations PAIR, HIGHADJ, HIGH, + LOWn, SPLITn, and BRADDR. + (RTYPE2HOWTO): Check that the r_type is within the howto_table + before trying to access the entry. + (coff_i860_rtype_to_howto): Likewise. + (coff_i860_reloc_type_lookup): New function. + (i860_reloc_processing): New function. + (coff_bfd_reloc_type_lookup): Define macro. + (RELOC_PROCESSING): Define macro. + Minor formatting adjustments. + +2003-08-23 Alan Modra + + * elflink.h (elf_link_add_object_symbols): Don't crash on NULL owner. + +2003-08-22 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_create_dynamic_sections): Align the + .got section at 8 bytes. + +2003-08-21 Nick Clifton + + * cofflink.c: Update to ISO C90 and tidy up formatting. + +2003-08-21 Randolph Chung + + * elf32-hppa.c (elf32_hppa_object_p): For elf32-hppa-linux, objects + can have OSABI=Linux or OSABI=SysV. Check for both. + * elf64-hppa.c (elf64_hppa_object_p): Likewise. + +2003-08-21 Nick Clifton + + * po/sv.po: Updated Swedish translation. + +2003-08-20 Richard Sandiford + + * elf64-mips.c (elf_backend_copy_indirect_symbol): Define. + +2003-08-20 Nick Clifton + + * elf-bfd.h (RELOC_FOR_GLOBAL_SYMBOL): New macro used to + replace some duplicated code in most elfxx-xxxx.c files. This + version uses the new fields in bfd_link_info. + + * elf-m10300.c (mn10300_elf_relocate_section): Use new macro. + * elf32-arm.h (elf32_arm_relocate_section): Likewise. + * elf32-cris.c (cris_elf_relocate_section): Likewise. + * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. + * elf32-i386.c (elf_i386_relocate_section): Likewise. + * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. + * elf32-iq2000.c (iq2000_elf_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf32-vax.c (elf_vax_relocate_section): Likewise. + * elf32-xtensa.c (elf_xtensa_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. + + * elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols, + elf_hppa_remark_useless_dynamic_symbols, + elf_hppa_relocate_section): Use the new fields in + bfd_link_info structure. + * elf32-sh.c (sh_elf_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_check_relocs): Likewise. + * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. + * elf64-sh64.c (sh_elf64_relocate_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_check_relocs): Likewise. + * elfxx-mips.c (mips_elf_calculate_relocation): Likewise. + + * elflink.h (elf_link_output_extsym): Fix test for reporting + undefined symbols in shared libraries. Remove redundant test + of shlib_undefined when reporting references to forced local + symbols. + +2003-08-18 Andreas Schwab + + * libpei.h (bfd_pe_executable_p): Also recognize efi-app + executables. + +2003-08-17 Hans-Peter Nilsson + + * simple.c (bfd_simple_get_relocated_section_contents): Move + reloc_done hack to before first bfd_section_size call. Change all + returns to use new wrapper macro RETURN, restoring sec->reloc_done. + +2003-08-16 Alan Modra + + * elf64-ppc.c: Don't include elf/ppc.h. + +2003-08-14 Richard Sandiford + + * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Fix PT_DYNAMIC + code to work with 64-bit bfds. + +2003-08-14 Alan Modra + + * dep-in.sed: Remove libintl.h. + * Makefile.am (SRC-POTFILES.in, BLD-POTFILES.in): Unset LC_COLLATE. + (POTFILES.in): Remove target. + * Makefile.in: Regenerate. + +2003-08-12 Alan Modra + + * elf64-ppc.c (ppc64_elf_next_input_section): Update comment. + (ppc64_elf_relocate_section): For zero sym R_PPC64_TOC relocs, + use the function sym from the previous reloc. + +2003-08-11 Jakub Jelinek + + * elf32-i386.c (elf_i386_relocate_section): Make undefined symbols + fatal if -pie. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + (ppc_elf_relocate_section) : Issue fatal error + on undefined symbols if -pie. + * elf32-sh.c (sh_elf_relocate_section): Likewise. + +2003-08-11 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Add special case for crt1.o + branch to __libc_start_main. + +2003-08-08 Dmitry Diky + + * archures.c: Add xW42 and xE42 parts. Sort MPU list according to + gcc order. + * cpu-msp430.c: Likewise. + * elf32-msp430.c: Likewise. + * bfd-in2.h: Regenerate. + +2003-08-07 Alan Modra + + * elfxx-target.h: Remove PTR cast. + * targets.c (bfd_target): Make backend_data const void *. + * elf-bfd.h: Constify all occurrences of struct elf_backend_data. + * elf-m10300.c: Likewise. + * elf.c: Likewise. + * elf32-hppa.c: Likewise. + * elf32-i386.c: Likewise. + * elf32-m68hc1x.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-s390.c: Likewise. + * elf32-sh.c: Likewise. + * elf32-sh64.c: Likewise. + * elf32-sparc.c: Likewise. + * elf32-xtensa.c: Likewise. + * elf64-mips.c: Likewise. + * elf64-ppc.c: Likewise. + * elf64-s390.c: Likewise. + * elf64-sh64.c: Likewise. + * elf64-sparc.c: Likewise. + * elf64-x86-64.c: Likewise. + * elfcode.h: Likewise. + * elfcore.h: Likewise. + * elflink.c: Likewise. + * elflink.h: Likewise. + * elfxx-ia64.c: Likewise. + * elfxx-mips.c: Likewise. + * elfxx-mips.h: Likewise. + * elf.c (prep_headers): Remove useless check for null backend_data. + * bfd-in2.h: Regenerate. + + * elf-bfd.h: Remove PARAMS macro. Replace PTR with void *. + (NAME): Use ## rather than CONCAT4 macro. + * elfcode.h: Remove one remaining PARAMS macro. + * elf-eh-frame.c: Convert to C90, remove unneeded casts and prototypes. + * elf-strtab.c: Likewise. + * elf-hppa.h: Likewise. + * elf32-hppa.h: Likewise. + * elf32-hppa.c: Likewise. + (elf32_hppa_add_symbol_hook): Delete. + (elf_backend_add_symbol_hook): Don't define. + * libhppa.h: Convert to C90. Replace INLINE with inline. + +2003-08-06 Alan Modra + + * elf64-ppc.c (ppc_stub_name): Tweak names for better readability. + (ppc64_elf_adjust_dynamic_symbol): Allow copy relocs against + function descriptors, but warn. + (ppc_build_one_stub): Remove a couple of vars. Move code creating + stub syms so that we can avoid a stub sym if we already have a + plt sym. Do not redefine an existing symbol. + (ppc64_elf_build_stubs): When --emit-stub-syms, print a symbol for + glink. + +2003-08-06 Nick Clifton + + * po/fr.po: Updated French translation. + +2003-08-06 Alan Modra + + * elflink.c (_bfd_elf_create_dynamic_sections): Mark .dynbss with + SEC_LINKER_CREATED. + +2003-08-05 Daniel Jacobowitz + + * elf32-arm.h (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. + (elf32_arm_final_link_relocate, elf32_arm_relocate_section): Use it. + +2003-08-03 Jeff Muizelaar + + * coffcode.h (coff_slurp_line_table): Return with a warning + message if the line number table could not be read. + +2003-08-04 Nick Clifton + + * elflink.h (elf_link_add_object_symbols): Prepend "warning: " + to messages produced for .gnu.warning.SYMBOL sections. + +2003-08-04 Alan Modra + + * elfcode.h: Convert to C90, remove unneeded casts and prototypes. + * elfcore.h: Likewise. + * elflink.c: Likewise. + * elflink.h: Likewise. + * elf.c (sym_is_global): Remove INLINE. + (align_file_position): Replace INLINE with inline. + * elfcode.h (elf_swap_dyn_in, elf_swap_dyn_out): Remove INLINE. + (elf_file_p): Replace INLINE with inline. + +2003-08-02 Kaz Kojima + + * elf32-sh.c (sh_elf_check_relocs): Don't set DF_TEXTREL here. + +2003-08-01 H.J. Lu + + * elfxx-ia64.c (get_got): Align the .got section at 8 bytes. + +2003-08-01 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_finish_dynamic_symbol): Use + ElfNN_External_Rela instead of Elf64_External_Rela. + +2003-08-01 Nick Clifton + + * config.bfd: Add code to catch obsolete configurations and warn + about them unless --enable-obsolete is used. Use this to mark + vax-vms port as obsolete. + +2003-07-30 Alan Modra + + * elf32-ppc.c (ppc_elf_install_value): Tidy. + (ppc_elf_relax_section): Remove dead code. Remove unnecessary casts. + Formatting. + * elfxx-target.h: Remove PARAMS macro. Formatting. + +2003-07-30 Alan Modra + + * elf.c (bfd_section_from_r_symndx): Test for SHN_UNDEF. + * elf64-ppc.c (get_fdh): New function, split out from + ppc64_elf_edit_opd. + (ppc64_elf_check_relocs): Use get_fdh. + (func_desc_adjust): Likewise. Tidy. + (ppc64_elf_edit_opd): Tighten reloc checks. Free local_syms on error + exit. Use get_fdh. Account for superfluous dynamic relocs. + (ppc64_elf_relocate_section): Warning fix. + +2003-07-30 Jason Eckhardt + + * coff-i860.c: Convert to ISO C90. Remove superflous prototypes. + +2003-07-30 Jason Eckhardt + + * elf32-i860.c: Convert to ISO C90. Remove superflous prototypes. + +2003-07-30 Randolph Chung + + * elf-hppa.h (elf_hppa_relocate_section): Look up dyn_h for undefweak. + * elf64-hppa.c (elf64_hppa_finalize_dlt): Check h->root.type. + +2003-07-30 Alan Modra + + * elf.c: Convert to C90, remove unnecessary prototypes and casts. + Replace PTR with void *. Formatting. + (_bfd_elf_assign_file_position_for_section): Remove INLINE. + (make_mapping): Likewise. + +2003-07-29 Alan Modra + + * elf64-ppc.c (func_desc_adjust): Give linker created function + descriptor symbols a size and type. + (ppc64_elf_relocate_section): Correct lq insn test. + +2003-07-28 Eric Christopher + + * elf32-ppc.c (R_PPC_RELAX32): New relocation. + (ppc_elf_install_value): New function. + (ppc_elf_sort_rela): Remove. + (ppc_elf_relax_section): Rewrite. Remove old relaxation + and replace with out of range branch stubs. + (ppc_elf_relocate_section): Handle R_PPC_RELAX32. + +2003-07-29 Alexandre Oliva + + * elf-m10300.c (mn10300_elf_relax_section): Take symbol hash table + from input_bfd. + +2003-07-28 Alan Modra + + * elf.c (special_sections): Set attributes for .got and .plt. + +2003-07-27 Alan Modra + + * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Ensure no copy relocs + on function descriptors. + (ELIMINATE_COPY_RELOCS): Expand comment. + (ppc64_elf_special_sections): Move. Don't include non-ppc64 sections. + Do include ".toc1". + +2003-07-25 H.J. Lu + + * elf.c (_bfd_elf_new_section_hook): Set the default section + type to SHT_NULL. + (elf_fake_sections): Set the section type based on asect->flags + if it is SHT_NULL. Don't abort on processor specific section + types. + +2003-07-25 H.J. Lu + + * bfd-in2.h: Regenerated. + +2003-07-25 H.J. Lu + + * elf-bfd.h (bfd_elf_special_section): New. + (elf_backend_data): Add special_sections, a pointer to + bfd_elf_special_section. + (elf_section_type). New. + (elf_section_flags): New. + (_bfd_elf_get_sec_type_attr): New. + + * elf.c (_bfd_elf_make_section_from_shdr): Always use the + real section type/flags. + (special_sections): New. + (get_special_section): New. + (_bfd_elf_get_sec_type_attr): New. + (_bfd_elf_new_section_hook): Check special_section to set + elf_section_type and elf_section_flags. + (elf_fake_sections): Don't use section name to set ELF section + data. + + * elf32-m32r.c (m32r_elf_special_sections): New. + (elf_backend_special_sections): Defined. + + * elf32-m68hc11.c (elf32_m68hc11_special_sections): New. + (elf_backend_special_sections): Defined. + + * elf32-mcore.c (mcore_elf_special_sections): New. + (elf_backend_special_sections): Defined. + + * elf32-ppc.c (ppc_elf_special_sections): New. + (elf_backend_special_sections): Defined. + + * elf32-sh64.c (sh64_elf_special_sections): New. + (elf_backend_special_sections): Defined. + + * elf32-v850.c (v850_elf_special_sections): New. + (elf_backend_special_sections): Defined. + + * elf32-xtensa.c (elf_xtensa_special_sections): New. + (elf_backend_special_sections): Defined. + + * elf64-alpha.c (elf64_alpha_special_sections): New. + (elf_backend_special_sections): Defined. + + * elf64-hppa.c (elf64_hppa_special_sections): New. + (elf_backend_special_sections): Defined. + + * elf64-ppc.c (ppc64_elf_special_sections): New. + (elf_backend_special_sections): Defined. + + * elf64-sh64.c (sh64_elf64_special_sections): New. + (elf_backend_special_sections): Defined. + + * elfxx-ia64.c (elfNN_ia64_special_sections): New. + (elf_backend_special_sections): Defined. + + * elfxx-mips.c (_bfd_mips_elf_special_sections): New. + + * elfxx-mips.h (_bfd_mips_elf_special_sections): New. + (elf_backend_special_sections): Defined. + + * elfxx-target.h (elf_backend_special_sections): New. Default + to NULL. + (elfNN_bed): Initialize special_sections. + + * section.c (bfd_abs_section): Remove const. + (bfd_und_section): Likewise. + (bfd_com_section): Likewise. + (bfd_ind_section): Likewise. + +2003-07-24 Nick Clifton + + * coff-arm.c (EXTRA_S_FLAGS): Include SEC_CODE so that code + sections are assigned the LOAD attribute. + +2003-07-25 Kaz Kojima + + * elf32-sh.c: Convert to C90. Replace PTR with void *. + * elf32-sh64-com.c: Likewise. + * elf32-sh64.c: Likewise. + * elf32-sh64.h: Likewise. + * elf64-sh64.c: Likewise. + +2003-07-24 Kaz Kojima + + * elf32-sh.c (sh_elf_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL. + (allocate_dynrelocs): Likewise. + (sh_elf_relocate_section): Likewise. Use SYMBOL_REFERENCES_LOCAL. + (sh_elf_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL. + +2003-07-24 Nick Clifton + + * po/fr.po: Updated French translation. + +2003-07-23 Bob Wilson + + * elf32-xtensa.c (xtensa_elf_dynamic_symbol_p): Make inline and move + near the beginning of the file. Swap order of arguments. Call + _bfd_elf_dynamic_symbol_p with "ignore_protected" set to 0. + (elf_xtensa_fix_refcounts): Adjust xtensa_elf_dynamic_symbol_p call. + (elf_xtensa_relocate_section): Likewise. + (shrink_dynamic_reloc_sections): Likewise. + +2003-07-23 Bob Wilson + + * elf32-xtensa.c (plt_reloc_count): Fix typo in comment. + (elf_xtensa_size_dynamic_sections): Use elf_discarded_section. + (elf_xtensa_combine_prop_entries): Avoid returning non-zero without + first printing an error message. + (elf_xtensa_finish_dynamic_sections): Likewise. + (elf_xtensa_discard_info_for_section): Adjust size of .got.loc when + discarding literal table entries. + (elf_xtensa_merge_private_bfd_data): Remove newline from error message. + (elf_xtensa_do_asm_simplify): Likewise. + +2003-07-23 Stephane Carrez + + * elf32-m68hc1x.c (elf32_m68hc11_size_stubs): Avoid crash when + we have a local symbol in common section. + +2003-07-22 H.J. Lu + + * elflink.c (_bfd_elf_dynamic_symbol_p): Don't return TRUE for + weak symbols. + +2003-07-22 Nick Clifton + + * coffcode.h (coff_slurp_symbol_table): Add C_TCSYM and C_ECOML to + expected RS6000 storage classes. + +2003-07-21 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_size_dynamic_sections): Mark + output_bfd unused to silence gcc. + +2003-07-21 Nick Clifton + + * po/sv.po: Updated Swedish translation. + +2003-07-21 Alan Modra + + * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Use.. + (_bfd_elf_symbol_refs_local_p): ..this. Declare. + * elflink.c (_bfd_elf_symbol_refs_local_p): New function. + * elf32-i386.c (elf_i386_relocate_section): Remove h NULL test + now done in _bfd_elf_symbol_refs_local_p. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + +2003-07-18 H.J. Lu + + * elflink.c (_bfd_elf_dynamic_symbol_p): Undo the last change. + +2003-07-18 H.J. Lu + + * elf-bfd.h (SYMBOL_REFERENCES_LOCAL): Fix a typo. + (SYMBOL_CALLS_LOCAL): Likewise. + + * elflink.c (_bfd_elf_dynamic_symbol_p): Return TRUE + immediately if symbol isn't defined locally. + +2003-07-18 Richard Henderson + + * elflink.c (_bfd_elf_dynamic_symbol_p): New. + * elf-bfd.h (_bfd_elf_dynamic_symbol_p): Declare it. + (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Use it. + * elf32-xtensa.c (xtensa_elf_dynamic_symbol_p): Likewise. + * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise. + * elf64-hppa.c (elf64_hppa_dynamic_symbol_p): Likewise. + * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Likewise. + Update all callers to provide the relocation being resolved. + +2003-07-17 Shaun Jackman + + * config.bfd (arm-wince-pe): Add -DARM_COFF_BUGFIX to + targ_cflags. + +2003-07-17 Nick Clifton + + * po/es.po: New Spanish translation. + * po/sv.po: New Swedish translation. + * po/opcodes.pot: Regenerate. + +2003-07-16 Richard Henderson + + * config.bfd, configure.host, configure.in: Remove ia64-aix support. + * elfxx-ia64.c, targets.c: Likewise. + +2003-07-16 Richard Henderson + + * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Properly return false + for symbols defined locally plus -Bsymbolic. Tidy logic. + +2003-07-15 Richard Sandiford + + * archures.c (bfd_mach_mips7000): New. + * bfd-in2.h: Regenerated. + * cpu-mips.c (arch_info_struct): Add an entry for mips:7000. + * elfxx-mips.c (mips_set_isa_flags): Handle bfd_mach_mips7000. + (mips_mach_extensions): Add an entry for it. + +2003-07-14 Nick Clifton + + * po/tr.po: Update with latest version. + * po/SRC-POTFILES.in: Regenerate. + * po/bfd.pot: Regenerate. + * Makfile.in: Regenerate. + * configure: Regenerate. + +2003-07-12 Jeff Baker + + * bfd/config.bfd (__QNXTARGET__): Define for Neutrino architectures. + * bfd/elf32-arm.h (ELF_MAXPAGESIZE): Set to 4k for Neutrino. + * bfd/elf32-sh.c (ELF_MAXPAGESIZE): Set to 4k for Neutrino. + * bfd/elf32-ppc.c (ELF_MAXPAGESIZE): Set to 4k for Neutrino. + +2003-07-12 Jeff Muizelaar + + * coffcode.h (coff_set_section_contents): Set the + IMAGE_FILE_32BIT_MACHINE flag for PE targets. + +2003-07-11 Richard Sandiford + + * bfd-in.h (bfd_h8300_pad_address): Declare. + * bfd-in2.h: Regenerate. + * cpu-h8300.c (bfd_h8300_pad_address): New function. + * coff-h8300.c (h8300_reloc16_estimate): Use it to canonicalize + addresses before checking whether they can be relaxed. + (h8300_reloc16_extra_cases): Likewise for the R_MOVL2 sanity check. + Don't complain about overflows in general 8-bit relocations. + * elf32-h8300.c (elf32_h8_relax_section): Use bfd_h8300_pad_address. + Fix handling of R_H8_DIR24A8. + +2003-07-11 Richard Sandiford + + * elf32-h8300.c: Convert function prototypes and definitions + to C90 syntax. + * coff-h8300.c: Likewise. + * cpu-h8300.c: Likewise. + +2003-07-11 Alan Modra + + * po/SRC-POTFILES.in: Regenerate. + * po/bfd.pot: Likewise. + +2003-07-10 Bob Wilson + + * elf32-xtensa.c (elf_xtensa_create_dynamic_sections): Create new + .got.loc section. Do not set SEC_ALLOC or SEC_LOAD flags for the + .xt.lit.plt section. + (elf_xtensa_size_dynamic_sections): Set size of the .got.loc section + and allocate memory for it. + (elf_xtensa_combine_prop_entries): Copy contents of .xt.lit output + section to the .got.loc section. + (elf_xtensa_finish_dynamic_sections): Fix up call to + elf_xtensa_combine_prop_entries and set DT_XTENSA_GOT_LOC_OFF to + the address of .got.loc. + (relax_property_section): Shrink .got.loc to match changes in any + literal table section. + (xtensa_is_property_section): Change to match + xtensa_get_property_section_name. + (xtensa_is_littable_section): New. + +2003-07-10 H.J. Lu + + * elfxx-ia64.c (IA64_HOWTO): Set dst_mask to -1 instead of + -1LL. + +2003-07-10 Alan Modra + + * Makefile.am (BFD32_BACKENDS): Add elf32-am33lin.lo. + (BFD32_BACKENDS_CFILES): elf32-am33lin.c not elf32-am33lin.lo. + Run "make dep-am". + * Makefile.in: Regenerate. + +2003-07-10 Alexandre Oliva + + 2001-09-12 Alexandre Oliva + * elf32-am33lin.c (ELF_MACHINE_CODE): Redefine to EM_MN10300. + (ELF_MACHINE_ALT1): Define to EM_CYGNUS_MN10300. + 2001-06-02 Nick Clifton + * elf32-am33lin.c: Rename global functions. + 2001-05-09 Alexandre Oliva + * config.bfd (am33_2.0, am33_2.0-*-linux*): Added. + * configure.in (bfd_elf32_am33lin_vec): Added. + * Makefile.am (BFD32_BACKENDS): Added elf32-am33lin.lo. + (elf32-am33lin.lo): List dependencies. + * aclocal.m4, configure, Makefile.in: Rebuilt. + * elf-m10300.c (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME, + ELF_ARCH, ELF_MACHINE_CODE, ELF_MAXPAGESIZE): Define only if + ELF_ARCH was not defined before. + (elf_symbol_leading_char): Define if not defined. + * elf32-am33lin.c: Override the definitions above. + * targets.c (bfd_elf32_am33lin_vec): New. + +2003-07-09 Alexandre Oliva + + 2002-12-12 Alexandre Oliva + * elf-m10300.c (elf32_mn10300_link_hash_newfunc): Initialize + pcrel_relocs_copied. + 2001-12-13 Alexandre Oliva + * elf-m10300.c (ELF_DYNAMIC_INTERPRETER): Renamed from + ld-linux.so.2 to ld.so.1. + 2001-10-10 Alexandre Oliva + * elf-m10300.c (elf_mn10300_sizeof_plt0): New macro. + (_bfd_mn10300_elf_adjust_dynamic_symbol): Use it. + (_bfd_mn10300_elf_finish_dynamic_symbol): Likewise. + * elf-m10300.c (_bfd_mn10300_elf_size_dynamic_sections): Allocate + .rela.* section contents with bfd_zalloc. + 2001-09-25 Alexandre Oliva + * elf-m10300.c: Added declarations for functions missing them. + Merge some shared-library changes from the i386 back-end. Use + R_MN10300_RELATIVE instead of R_MN10300_PCREL32 and + R_MN10300_GLOB_DAT instead of R_MN10300_32 where appropriate. + (struct elf32_mn10300_link_hash_entry): Remove duplicates of + members of elf_link_hash_entry. Adjusted references. + (mn10300_elf_final_link_relocate): dynobj was already loaded + into a local variable, use it. + 2001-09-21 Nick Clifton + * elf-m10300.c: Add missing function prototypes. + 2001-08-24 Alexandre Oliva + * elf-m10300.c (mn10300_elf_relocate_section): Don't compute + relocation for dynamic relocations. + 2001-05-16 Alexandre Oliva + * reloc.c (BFD_RELOC_MN10300_GOTOFF24): New. + * elf-m10300.c: Introduce GOTPC16, GOTOFF24, GOTOFF16 and + PLT16, and rename GOTPC to GOTPC32 and GOTOFF to GOTOFF32. + (_bfd_mn10300_elf_create_dynamic_sections): Move creation ot PLT... + (_bfd_mn10300_elf_create_got_section): ... here, so that its + adress is already known at the time we compute relaxations. + (mn10300_elf_relax_section): Relax GOTPC32, GOTOFF32, GOT32 + and PLT32 to narrower relocations. + * libbfd.h, bfd-in2.h: Rebuilt. + 2001-04-12 Alexandre Oliva + * reloc.c (BFD_RELOC_MN10300_GOT32, BFD_RELOC_MN10300_GOT24, + BFD_RELOC_MN10300_GOT16, BFD_RELOC_MN10300_COPY, + BFD_RELOC_MN10300_GLOB_DAT, BFD_RELOC_MN10300_JMP_SLOT, + BFD_RELOC_MN10300_RELATIVE): New relocs. + * libbfd.h, bfd-in2.h: Rebuilt. + * elf-m10300.c (struct elf_mn10300_pcrel_relocs_copied): New. + (struct elf32_mn10300_link_hash_entry): Added DSO-related + fields. + (elf_mn10300_howto): Defined new relocation types. + (mn10300_reloc_map): Map them. + (_bfd_mn10300_elf_create_got_section): New fn. + (mn10300_elf_check_relocs): Handle PIC relocs. + (mn10300_elf_final_link_relocate): Likewise. + (mn10300_elf_relocate_section): Handle DSOs. + (PLT0_ENTRY_SIZE, PLT_ENTRY_SIZE, PIC_PLT_ENTRY_SIZE): New macros. + (elf_mn10300_plt0_entry, elf_mn10300_plt_entry, + elf_mn10300_pic_plt_entry): New. + (elf_mn10300_sizeof_plt, elf_mn10300_plt_plt0_offset, + elf_mn10300_plt0_linker_offset, elf_mn10300_plt0_gotid_offset, + elf_mn10300_plt_temp_offset, elf_mn10300_plt_symbol_offset, + elf_mn10300_plt_reloc_offset: New macros. + (ELF_DYNAMIC_INTERPRETER): Likewise. + (_bfd_mn10300_elf_create_dynamic_sections): New function. + (_bfd_mn10300_elf_adjust_dynamic_symbol): Likewise. + (_bfd_mn10300_elf_discard_copies): Likewise. + (_bfd_mn10300_elf_size_dynamic_sections): Likewise. + (_bfd_mn10300_elf_finish_dynamic_symbol): Likewise. + (_bfd_mn10300_elf_finish_dynamic_sections): Likewise. + (elf_backend_can_gc_sections, + elf_backend_create_dynamic_sections, + elf_backend_adjust_dynamic_sections, + elf_backend_size_dynamic_sections, + elf_backend_finish_dynamic_symbol, + elf_backend_finish_dynamic_sections, elf_backend_want_got_plt, + elf_backend_plt_readonly, elf_backend_want_plt_sym, + elf_backend_got_header_size, elf_backend_plt_header_size): New + macros. + +2003-07-09 Alexandre Oliva + + 2001-05-06 Alexandre Oliva + * elf-m10300.c (compute_function_info): Account for AM33 + registers in `movm' when computing stack space for `call' when + linking for AM33/2.0 link. + 2000-04-01 Alexandre Oliva + * archures.c (bfd_mach_am33_2): Renamed from bfd_mach_am332. + * bfd-in2.h: Rebuilt. + * cpu-m10300.c (bfd_am33_2_arch): Renamed from bfd_am332_arch. + * elf-m10300.c: Updated. + 2000-03-31 Alexandre Oliva + * archures.c (bfd_mach_am332): Defined. + * bfd-in2.h: Rebuilt. + * cpu-m10300.c (bfd_am332_arch): Defined. + (bfd_am33_arch): Chained with am33-2. + * elf-m10300.c (elf_mn10300_mach): Handle am332. + (_bfd_mn10300_elf_final_write_processing): Likewise. + +2003-07-09 H.J. Lu + + * elfxx-ia64.c (IA64_HOWTO): Set dst_mask to -1LL. + +2003-07-10 Alan Modra + + * elf64-ppc.c (bfd_elf64_mkobject): Define. + (struct ppc64_elf_obj_tdata): New. + (ppc64_elf_tdata, ppc64_tlsld_got): Define. + (ppc64_elf_mkobject): New function. + (struct got_entry): Add "owner". Move "tls_type". + (struct ppc_link_hash_table): Delete "relgot", "tlsld_got". + (ppc64_elf_init_stub_bfd): New function. + (create_got_section): Create header .got in dynobj. Create .got + and .rela.got in each bfd. Stash pointers in ppc64_elf_obj_tdata. + (ppc64_elf_create_dynamic_sections): Don't call create_got_section. + Look for dynobj .got, and test it. + (ppc64_elf_copy_indirect_symbol): Adjust for changed got. + (update_local_sym_info): Likewise. + (ppc64_elf_check_relocs): Likewise. + (ppc64_elf_gc_sweep_hook): Likewise. + (ppc64_elf_tls_optimize): Likewise. + (allocate_dynrelocs): Likewise. + (ppc64_elf_size_dynamic_sections): Likewise. + (ppc64_elf_relocate_section): Likewise. + (ppc64_elf_next_toc_section): Update comment. + (toc_adjusting_stub_needed): Remove unneeded cast. + (ppc64_elf_build_stubs): Check for stub sections in stub bfd by + testing section flags. + (ppc64_elf_build_stubs): Likewise. + (ppc64_elf_size_stubs): Likewise. Remove stub_bfd param. + (ppc64_elf_finish_dynamic_sections): Write out got sections. + (func_desc_adjust): Copy over dynamic info for undef weaks. + * elf64-ppc.h (ppc64_elf_init_stub_bfd): Declare. + (ppc64_elf_size_stubs): Update prototype. + * elflink.h (elf_link_sort_relocs): Use link_orders to find reldyn + input sections rather than scanning dynobj. + +2003-07-09 Richard Sandiford + + * elfxx-mips.c (mips_elf_link_hash_entry): Remove min_dyn_reloc_index. + (bfd_mips_elf_swap_msym_in, bfd_mips_elf_swap_msym_out): Delete. + (mips_elf_create_msym_section): Delete. + (mips_elf_create_dynamic_relocation): Don't set min_dyn_reloc_index. + (_bfd_mips_elf_copy_indirect_symbol): Likewise. + (_bfd_mips_elf_create_dynamic_sections): Don't create .msym. + (_bfd_mips_elf_size_dynamic_sections): Don't calculate its size. + (_bfd_mips_elf_size_dynamic_sections): Don't add DT_MIPS_MSYM. + (_bfd_mips_elf_finish_dynamic_symbol): Don't add symbols to .msym. + (_bfd_mips_elf_finish_dynamic_sections): Likewise. + +2003-07-09 Richard Sandiford + + * elfxx-mips.c (mips_elf_irix6_finish_dynamic_symbol): Make the + symbols protected. + +2003-07-09 Richard Sandiford + + * elfxx-mips.c (mips_elf_create_dynamic_relocation): Fix handling + of relocations whose offset is -2. + +2003-07-09 Richard Sandiford + + * bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): Treat + forced-local symbols like other locals. Don't create relocations + against STN_UNDEF in irix objects. + +2003-07-09 Richard Sandiford + + * bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): In SGI- + compatible objects, add the values of defined external symbols + to the addend. + +2003-07-09 Richard Sandiford + + * elfxx-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Always + initialize a GOT entry to the symbol's st_value. + +2003-07-08 Alan Modra + + * elf-bfd.h (struct elf_obj_tdata): Move linker_section_pointers.. + * elf32-ppc.c (struct ppc_elf_obj_tdata): ..to here. New. + (ppc_elf_tdata): Define. + (elf_local_ptr_offsets): Adjust. + (ppc_elf_mkobject): New function. + (bfd_elf32_mkobject): Define. + + * elfcode.h (elf_object_p): Allocate tdata via _bfd_set_format. + * elfcore.h (elf_core_file_p): Likewise. + * section.c (bfd_section_init): Remove prototype. + +2003-07-08 Alan Modra + + * elf-bfd.h (struct elf_link_hash_entry): Remove linker_section_pointer + field. + (enum elf_linker_section_enum): Delete. + (struct elf_linker_section): Delete. + (struct elf_linker_section_pointers): Delete. + (struct elf_obj_tdata): Remove #if 0 chunk. Remove linker_section. + Make linker_section_pointers a void**. + (elf_local_ptr_offsets, elf_linker_section): Don't define. + * elf32-ppc.c (enum elf_linker_section_enum): New, cut-down version + of old item in elf-bfd.h. + (struct elf_linker_section): Likewise. + (struct elf_linker_section_pointers): Likewise. + (elf_local_ptr_offsets): Define. + (struct ppc_elf_link_hash_entry): Add linker_section_pointer. + (ppc_elf_link_hash_newfunc): Init it. + (struct ppc_elf_link_hash_table): Add sbss. + (ppc_elf_link_hash_table_create): zmalloc rather than clearing + individual fields. + (elf_create_linker_section): Fold into.. + (ppc_elf_create_linker_section): ..here. Remove hole_size code. + Make rela section here if shared. + (elf_find_pointer_linker_section): Pass lsect rather than enum. + (elf_create_pointer_linker_section): Adjust. zalloc rather than + clearing in a loop. + (elf_finish_pointer_linker_section): Adjust. Don't make rela + section here. + (ppc_elf_check_relocs): Adjust. + (ppc_elf_add_symbol_hook): Tighten hash creator test. Remove code + creating .sbss by hand. + * elf.c (_bfd_elf_link_hash_newfunc): Adjust. + +2003-07-04 Jakub Jelinek + + * elf32-s390.c (elf_howto_table): Change R_390_GOT12 to + complain_overflow_bitfield. + * elf64-s390.c (elf_howto_table): Change R_390_GOT12 to + complain_overflow_bitfield. + +2003-07-04 Jakub Jelinek + + * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Return + true even if -pie. + +2003-07-04 Jakub Jelinek + + * elfxx-ia64.c (struct elfNN_ia64_link_hash_table): Add rel_fptr_sec. + (elfNN_ia64_dynamic_symbol_p): Change info->shared into + !info->executable. + (get_fptr): For -pie create .opd as writable section and create + .rela.opd as well. + (elfNN_ia64_check_relocs): Change info->shared into + !info->executable. + (allocate_fptr): Likewise. + (allocate_dynrel_entries): Account for a relative reloc for -pie + @fptr(). Don't account for a relative reloc if -pie want_ltoff_fptr + for undefweak symbol. Account for an IPLT reloc in .rela.opd + section if -pie. + (set_got_entry): Don't create a relative reloc if -pie + want_ltoff_fptr for undefweak symbol. + (set_fptr_entry): Emit an IPLT reloc in .rela.opd for -pie. + (elfNN_ia64_relocate_section): Emit a relative reloc for -pie + @fptr(). + + * elfxx-ia64.c (elfNN_ia64_relocate_section): Issue undefined_symbol + even if -pie. + * elf32-i386.c (elf_i386_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + +2003-07-04 Paul Clarke + + * elf32-h8300.c (R_H8_DIR32A16): Fix name field. + (elf32_h8_relax_section) : Adjust position of relocation. + : Fix type of relocation. + +2003-07-04 Kaz Kojima + + * elf32-sh.c (sh_elf_create_dynamic_sections): Return if dynamic + sections were created already. Remove unnecessary tests of + the previous change. + +2003-07-04 Kaz Kojima + + * elf32-sh.c (sh_elf_create_dynamic_sections): Don't call + bfd_make_section for existing sections. + +2003-07-04 Alan Modra + + * elf32-sparc.c (elf32_sparc_check_relocs): Don't call + create_got_section if we already have done so. + * elf32-sh.c (sh_elf_create_dynamic_sections): Likewise. + (sh_elf_check_relocs): Likewise. + (sh_elf_adjust_dynamic_symbol): Delete "dynobj" var. Use + htab->root.dynobj instead. + (sh_elf_check_relocs): Likewise. + (sh_elf_finish_dynamic_sections): Likewise. + + * section.c (bfd_make_section): Return NULL for existing section. + +2003-07-04 Alan Modra + + * elf32-ppc.c (ppc_elf_create_dynamic_sections): Don't call + ppc_elf_create_got if we've already done so. + + * elf-bfd.h (_bfd_elf_create_linker_section) Don't declare. + (_bfd_elf_find_pointer_linker_section): Likewise. + (bfd_elf32_create_pointer_linker_section): Likewise. + (bfd_elf32_finish_pointer_linker_section): Likewise. + (bfd_elf64_create_pointer_linker_section): Likewise. + (bfd_elf64_finish_pointer_linker_section): Likewise. + (_bfd_elf_make_linker_section_rela): Likewise. + * elfcode.h (elf_create_pointer_linker_section): Don't define. + (elf_finish_pointer_linker_section): Likewise. + * elflink.c (_bfd_elf_make_linker_section_rela): Delete. + (_bfd_elf_create_linker_section): Move this function.. + (_bfd_elf_find_pointer_linker_section): ..and this.. + * elflink.h (elf_create_pointer_linker_section): ..and this.. + (elf_finish_pointer_linker_section): ..and this.. + * elf32-ppc.c: ..to here, renaming to the following, and adjusting + calls. + (elf_create_linker_section): Convert to C90, tidy. + (elf_find_pointer_linker_section): Likewise. + (elf_create_pointer_linker_section): Likewise. + (elf_finish_pointer_linker_section): Likewise. + * elf32-i370.c: Delete #if 0 code. + +2003-07-02 Alan Modra + + * elf64-ppc.c (ppc64_elf_func_desc_adjust): Don't allow _savef* and + _restf* to be satisfied by shared libs, and always force them local. + (toc_adjusting_stub_needed): Avoid scanning linker created sections. + Correct test for "bl". + (ppc64_elf_relocate_section ): Correct test for + primary opcode 31. + +2003-07-01 Martin Schwidefsky + + * elf32-s390.c (s390_elf_ldisp_reloc): New prototype. + (s390_tls_reloc): New function. + (elf_howto_table): Add long displacement relocations R_390_20, + R_390_GOT20, R_390_GOTPLT20 and R_390_TLS_GOTIE20. + (elf_s390_reloc_type_lookup): Likewise. + (elf_s390_check_relocs): Likewise. + (elf_s390_gc_sweep_hook): Likewise. + (elf_s390_relocate_section): Likewise. + * elf64-s390.c: Same changes as for elf32-s390.c. + * reloc.c: Add long displacement relocations BFD_RELOC_390_20, + BFD_RELOC_390_GOT20, BFD_RELOC_390_GOTPLT20 and + BFD_RELOC_390_TLS_GOTIE20. + * bfd-in2.h: Regenerate. + * libbfd.h: Likewise. + +2003-06-30 Alan Modra + + * cpu-ia64-opc.c (ext_imms_scaled): Don't sign extend using shifts. + (ins_imms, ins_immsm1u4): Likewise. Warning fix. + +2003-06-29 Alan Modra + + * archive.c: Convert to C90, remove unnecessary prototypes and casts. + Replace PTR with void *. Formatting. + * archive64.c: Likewise. + * archures.c: Likewise. + * bfd-in.h: Likewise. + * bfd.c: Likewise. + * bfdio.c: Likewise. + * bfdwin.c: Likewise. + * cache.c: Likewise. + * corefile.c: Likewise. + * format.c: Likewise. + * init.c: Likewise. + * libbfd-in.h: Likewise. + * libbfd.c: Likewise. + * linker.c: Likewise. + * opncls.c: Likewise. + * reloc.c: Likewise. + * section.c: Likewise. + * simple.c: Likewise. + * syms.c: Likewise. + * targets.c: Likewise. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + + * ecoff.c (bfd_debug_section): Add missing kept_section initialization. + * libbfd-in.h (_bfd_sh_align_load_span): Don't declare if defined. + * libbfd.c (COERCE32, EIGHT_GAZILLION): Simplify. + (bfd_getb64): Rewrite without parens. + (bfd_getl64, bfd_getb_signed_64, bfd_getl_signed_64): Likewise. + * cache.c (insert, snip): Remove INLINE. + * linker.c (bfd_link_add_undef): Likewise. + +2003-06-29 Andreas Jaeger + + * elf64-x86-64.c: Convert to ISO C90 prototypes, remove + unnecessary prototypes. Replace PTR with void *. + (elf64_x86_64_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL to + trim plt entries. Move undefweak non-default visibility test ... + (allocate_dynrelocs): ... from here. + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. + Change all callers. + (allocate_dynrelocs): Use SYMBOL_CALLS_LOCAL. Use + SYMBOL_REFERENCES_LOCAL for dynreloc check. + (elf64_x86_64_relocate_section): Use SYMBOL_CALLS_LOCAL for + dynreloc and .got relocs. + (elf64_x86_64_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL + for .got relocs. + +2003-06-29 Thiemo Seufer + + * elfxx-mips.c: Allow lazy binding for R_MIPS_JALR. + +2003-06-27 Nick Clifton + + * opncls.c (bfd_add_gnu_debuglink_section): Rename to + bfd_add_gnu_debuglink_section and only create the section, do not + fill in its contents. + (bfd_fill_in_gnu_debuglink_section): New function. Fill in the + contents of a .gnu-debuglink section. + * bfd-in2.h: Regenerate. + +2003-06-27 Thiemo Seufer + + * elfxx-mips.c: Revert .got alignment to 2**4. + +2003-06-27 Thiemo Seufer + + * elf32-mips.c: Fix addend for _gp_disp special symbol. + +2003-06-27 Thiemo Seufer + + * elfxx-mips.c (_bfd_mips_elf_fake_sections): Remove non-default + relocation header setup. + +2003-06-25 Alan Modra + + * elf32-ppc.c (ppc_elf_howto_table): Remove unnecessary cast. + (ppc_elf_reloc_type_lookup): Modify comment. + (ppc_elf_info_to_howto): Ditto. + (ppc_elf_relocate_section): Ditto. + (ppc_elf_check_relocs): Call ppc_elf_howto_init. + +2003-06-25 Alan Modra + + * aout-ns32k.c: Correct spelling of "relocatable". + * aoutx.h: Likewise. + * bfd-in.h: Likewise. + * bfd.c: Likewise. + * bout.c: Likewise. + * coff-a29k.c: Likewise. + * coff-alpha.c: Likewise. + * coff-arm.c: Likewise. + * coff-i386.c: Likewise. + * coff-i860.c: Likewise. + * coff-i960.c: Likewise. + * coff-m68k.c: Likewise. + * coff-m88k.c: Likewise. + * coff-mcore.c: Likewise. + * coff-mips.c: Likewise. + * coff-or32.c: Likewise. + * coff-ppc.c: Likewise. + * coff-rs6000.c: Likewise. + * coff-sh.c: Likewise. + * coff-tic80.c: Likewise. + * coff64-rs6000.c: Likewise. + * cofflink.c: Likewise. + * cpu-ns32k.c: Likewise. + * ecoff.c: Likewise. + * ecofflink.c: Likewise. + * elf-bfd.h: Likewise. + * elf-eh-frame.c: Likewise. + * elf-hppa.h: Likewise. + * elf-m10200.c: Likewise. + * elf-m10300.c: Likewise. + * elf.c: Likewise. + * elf32-arm.h: Likewise. + * elf32-avr.c: Likewise. + * elf32-cris.c: Likewise. + * elf32-d10v.c: Likewise. + * elf32-dlx.c: Likewise. + * elf32-fr30.c: Likewise. + * elf32-frv.c: Likewise. + * elf32-h8300.c: Likewise. + * elf32-hppa.c: Likewise. + * elf32-i370.c: Likewise. + * elf32-i386.c: Likewise. + * elf32-i860.c: Likewise. + * elf32-i960.c: Likewise. + * elf32-ip2k.c: Likewise. + * elf32-iq2000.c: Likewise. + * elf32-m32r.c: Likewise. + * elf32-m68hc11.c: Likewise. + * elf32-m68hc1x.c: Likewise. + * elf32-m68k.c: Likewise. + * elf32-mcore.c: Likewise. + * elf32-mips.c: Likewise. + * elf32-msp430.c: Likewise. + * elf32-openrisc.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-s390.c: Likewise. + * elf32-sh.c: Likewise. + * elf32-sh64.c: Likewise. + * elf32-sparc.c: Likewise. + * elf32-v850.c: Likewise. + * elf32-vax.c: Likewise. + * elf32-xstormy16.c: Likewise. + * elf32-xtensa.c: Likewise. + * elf64-alpha.c: Likewise. + * elf64-hppa.c: Likewise. + * elf64-mips.c: Likewise. + * elf64-mmix.c: Likewise. + * elf64-ppc.c: Likewise. + * elf64-s390.c: Likewise. + * elf64-sh64.c: Likewise. + * elf64-sparc.c: Likewise. + * elf64-x86-64.c: Likewise. + * elfcode.h: Likewise. + * elflink.h: Likewise. + * elfn32-mips.c: Likewise. + * elfxx-ia64.c: Likewise. + * elfxx-mips.c: Likewise. + * i386linux.c: Likewise. + * ieee.c: Likewise. + * libcoff-in.h: Likewise. + * linker.c: Likewise. + * m68klinux.c: Likewise. + * pdp11.c: Likewise. + * pe-mips.c: Likewise. + * peXXigen.c: Likewise. + * reloc.c: Likewise. + * reloc16.c: Likewise. + * sparclinux.c: Likewise. + * sunos.c: Likewise. + * syms.c: Likewise. + * versados.c: Likewise. + * vms.c: Likewise. + * xcofflink.c: Likewise. + * bfd-in2.h: Regenerate. + * libcoff.h: Regenerate. + * libbfd.h: Regenerate. + +2003-06-24 Alan Modra + + * elf32-ppc.c (ppc_elf_check_relocs): Report plt reloc against + local sym errors. + + * elf32-i386.c: Convert to C90 function definitions, remove unnecessary + prototypes and casts. Replace PTR with void *. Formatting. + * elf32-ppc.c: Likewise. Break long strings too. + (ppc_elf_relax_section): Use enum elf_ppc_reloc_type for r_type. + (ppc_elf_unhandled_reloc): Internationalize error message. + * elf32-ppc.h: Remove PARAMS. + +2003-06-23 Mark Mitchell + + * elf32-ppc.c (ppc_elf_begin_write_processing): Use bytes to count + APUinfo slots. + (ppc_elf_final_write_processing): Likewise. + +2003-06-23 H.J. Lu + + * elflink.h (elf_link_input_bfd): Check raw size when using + kept_section to preserve debug information discarded by + linkonce. + +2003-06-20 Alan Modra + + * elf64-ppc.c (struct ppc_link_hash_table): Add top_id. + (ppc64_elf_setup_section_lists): Set it. + (ppc64_elf_relocate_section): Check sym section id against top_id. + (ppc_build_one_stub): Comment on top_id. + +2003-06-20 Ralf Corsepius + + * config.bfd: Add tic4x-*-rtems*. + +2003-06-20 Alan Modra + + * elf64-ppc.c: Convert to C90 function definitions, remove unnecessary + prototypes and casts. Replace PTR with void *. Format copyright. + Mention ABI links. + (struct ppc_link_hash_table): Rename sgot, srelgot, splt, srelplt, + sdynbss, srelbss, sglink, sbrlt and srelbrlt to got, relgot .. relbrlt. + (ppc_type_of_stub): Make r_type an enum. + (ppc64_elf_size_stubs): Likewise. + * elf64-ppc.h: Remove PARAMS macro. + +2003-06-19 Alan Modra + + * elf64-ppc.c (ppc64_elf_link_hash_table_create): Reinstate init of + elf hash tab fields. + + * elf64-ppc.c (ppc64_elf_reloc_type_lookup): Tidy prototype. + (ppc64_elf_info_to_howto): Likewise. + (ppc64_elf_build_stubs): Add "stats" param, and print statistics. + * elf64-ppc.h (ppc64_elf_build_stubs): Adjust prototype. + +2003-06-19 Alan Modra + + * elf64-sparc.c (sparc64_elf_relocate_section): Ignore R_SPARC_DISP32 + reloc overflow on discarded eh_frame entries. + +2003-06-19 Alan Modra + + * elf64-ppc.c (toc_adjusting_stub_needed): New function. + (ppc64_elf_next_input_section): Use it here to set has_gp_reloc. + Return error condition. + (ppc64_elf_size_stubs): Restrict toc adjusting stubs to sections + that have has_gp_reloc set. + (struct ppc_link_hash_table): Add stub_count. + (ppc_build_one_stub): Increment it. + (ppc64_elf_link_hash_table_create): zmalloc rather than clearing + individual fields. + * elf64-ppc.h (ppc64_elf_next_input_section): Update prototype. + +2003-06-18 Alan Modra + + * elflink.h (elf_gc_record_vtentry): Revert last change. Correct + size calculation from addend. Round size up. + +2003-06-18 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section) : When linking a program, don't complain about a + symbol from a normal object or an undefined weak symbol. + +2003-06-18 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Accept a symbol on + R_PPC64_TOC relocs. + +2003-06-17 H.J. Lu + + * section.c (struct sec): Put back kept_section. + (STD_SECTION): Put back kept_section initialization. + * bfd-in2.h: Regenerate. + + * elflink.h (elf_link_input_bfd): Also check discarded linkonce + sections for relocateable output. Use kept_section to preserve + debug information discarded by linkonce. + +2003-06-17 Roland McGrath + + * elfxx-ia64.c (elfNN_ia64_relocate_section): Support + segment-relative relocation between different segments. + +2003-06-17 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Do unaligned reloc + optimizations earlier. + + * elf64-ppc.c (struct ppc_link_hash_table): Reinstate top_index. + Restore previous input_list type. + (ppc64_elf_link_hash_table_create): Undo last change. + (ppc64_elf_setup_section_lists): Reinstate code setting up input lists + per output section, but don't bother with bfd_abs_section marker. + (ppc64_elf_next_input_section): Adjust for multiple input section + lists. + (group_sections): Likewise. + +2003-06-17 Jakub Jelinek + + * elf64-ppc.c (ppc64_elf_relocation_section): Ensure + *r_offset == r_addend for RELATIVE relocs against .got. + +2003-06-17 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Optimize unaligned relocs. + +2003-06-17 Nick Clifton + + * elflink.h (elf_gc_record_vtentry): Allocate an extra element + in the vtable_entries_used array to allow for the accessing + the largest element. + +2003-06-17 Alan Modra + + * elf64-ppc.c (struct ppc_link_hash_table): Remove top_index. Modify + input_list. + (ppc64_elf_link_hash_table_create): Init input_list here. + (ppc64_elf_setup_section_lists): Remove code setting up input lists + per output section. Set toc_off for abs and other standard sections. + (ppc64_elf_reinit_toc): Don't set elf_gp on input bfds lacking a toc. + (ppc64_elf_next_input_section): Adjust for single input section list. + Don't set toc_curr from input bfds that haven't set elf_gp. + (group_sections): Adjust for single input section list. + + * elf64-ppc.c (ppc64_elf_relocate_section): Correct pcrel section zero. + +2003-06-16 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): When optimizing toctprel + tls, check that a TOC16_DS or TOC16_LO_DS reloc isn't pointing to a + dtprel entry. Ensure TLS_LD DTPMOD reloc has a zero addend. Write + got section for RELATIVE relocs. Fix wrong comment. Change condition + under which dynamic relocs update the section contents. + +2003-06-13 Robert Millan + + * config.bfd: Add i386-netbsd-gnu target. + +2003-06-12 Nick Clifton + + * opncls.c (calc_crc32): Rename to + bfd_calc_gnu_debuglink_crc32 and export. + (GNU_DEBUGLINK): Define and use to replace occurrences of + hard-coded ".gnu_debuglink" in the code. + (get_debug_link_info): Prevent aborts by replacing call to + xmalloc with a call to malloc. + (find_separate_debug_file): Prevent aborts by replacing calls + to xmalloc and xstrdup with calls to malloc and strdup. + (bfd_add_gnu_debuglink): New function. Add a .gnu_debuglink + section to a bfd. + * bfd-in2.h: Regenerate. + +2003-06-12 Federico G. Schwindt + + * config.bfd (i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3]): + New target (was i[3-7]86-*-openbsd* before). + (i[3-7]86-*-openbsd*): Change to use bfd_elf32_i386_vec. + (vax-*-openbsd*): New target. + +2003-06-11 Thiemo Seufer + + * elfxx-mips.c (MIPS_ELF_OPTIONS_SECTION_NAME): Use .MIPS.options + for n32, too. + (MIPS_ELF_STUB_SECTION_NAME): Use .MIPS.stubs for n32, too. + (mips_elf_rel_dyn_section): Use appropriate section alignment. + (mips_elf_create_got_section): Likewise. + (_bfd_mips_elf_create_dynamic_sections): Likewise. + +2003-06-11 Thiemo Seufer + + * elf32-mips.c (mips_elf_generic_reloc): New Function. + (elf_mips_howto_table_rel): Use it. + (gprel32_with_gp): Move prototype. + (mips_elf_hi16_reloc): Check for ! BSF_LOCAL instead of zero addend. + Use mips_elf_generic_reloc. + (mips_elf_got16_reloc): Check for ! BSF_LOCAL instead of zero addend. + Code cleanup. + (_bfd_mips_elf32_gprel16_reloc): Check for ! BSF_LOCAL instead of + zero addend. + (mips_elf_gprel32_reloc): Likewise. Use the same GP assignment logic + as in the other *_gprel*_reloc functions. + (gprel32_with_gp): Handle partial_inplace properly. + (mips32_64bit_reloc): Use mips_elf_generic_reloc. + (mips16_gprel_reloc): Check for ! BSF_LOCAL instead of zero addend. + Do addend handling directly instead of calling + _bfd_mips_elf_gprel16_with_gp. Handle partial_inplace properly. + * elf64-mips.c (mips_elf64_hi16_reloc): Check for ! BSF_LOCAL instead + of zero addend. Handle partial_inplace properly. + (mips_elf64_got16_reloc): Check for ! BSF_LOCAL instead of zero + addend. + (mips_elf64_gprel16_reloc): Likewise. + (mips_elf64_literal_reloc): Likewise. + (mips_elf64_gprel32_reloc): Likewise. Use the same GP assignment + logic as in the other *_gprel*_reloc functions. Handle + partial_inplace properly. + (mips_elf64_shift6_reloc): Check for ! BSF_LOCAL instead of zero + addend. Handle partial_inplace properly. + (mips16_gprel_reloc): Likewise. Do addend handling directly instead + of calling _bfd_mips_elf_gprel16_with_gp. + * elfn32-mips.c (mips_elf_got16_reloc): Check for BSF_LOCAL. + (mips_elf_gprel32_reloc): Check for ! BSF_LOCAL instead + of zero addend. + (mips_elf_shift6_reloc): Handle partial_inplace properly. + (mips16_gprel_reloc): Likewise. Do addend handling directly instead + of calling _bfd_mips_elf_gprel16_with_gp. + * elfxx-mips.c (_bfd_mips_elf_gprel16_with_gp): Handle + partial_inplace properly. Fix wrong addend handling. Fix overflow + check. + (_bfd_mips_elf_sign_extend): Renamed from mips_elf_sign_extend and + exported. + (mips_elf_calculate_relocation): Use _bfd_mips_elf_sign_extend. + (_bfd_mips_elf_relocate_section): Likewise. + (mips_elf_create_dynamic_relocation): Update sec_info_type access. + * elfxx-mips.h (_bfd_mips_relax_section): Fix prototype declaration. + (_bfd_mips_elf_sign_extend): New prototype. + +2003-06-11 Federico G. Schwindt + + * config.bfd (sparc-*-openbsd[0-2].* | sparc-*-openbsd3.[0-1]): + New target (was sparc-*-openbsd* before). + (sparc-*-openbsd*): Change to use bfd_elf32_sparc_vec. + + * configure.in (vax-*-openbsd*): Set COREFILE to netbsd-core.lo. + * configure: Regenerate. + +2003-06-11 H.J. Lu + + * po/Make-in (DESTDIR): New. + (install-data-yes): Support $(DESTDIR). + (uninstall): Likewise. + +2003-06-11 Alan Modra + + * Makefile.am (config.status): Depend on version.h. + Run "make dep-am". + * Makefile.in: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + +2003-06-10 Alan Modra + Gary Hade + + * elf64-ppc.c (ppc64_elf_relocate_section <*_DS>): Special case lq. + +2003-06-10 Richard Sandiford + + * archures.c (bfd_mach_h8300sxn): New architecture. + * bfd-in2.h: Regenerate. + * cpu-h8300.c (h8300_scan): Check for 'sxn'. + (h8300sxn_info_struct): New. + (h8300sx_info_struct): Link to it. + * elf32-h8300.c (elf32_h8_mach): Add h8300sxn case. + (elf32_h8_final_write_processing): Likewise. + +2003-06-08 Alan Modra + + * elf64-ppc.c: Move TARGET_LITTLE_SYM and other macros used by + elfxx-target.h so that we can use elf_backend_got_header_size. + (ELF_MACHINE_ALT1, ELF_MACHINE_ALT2): Delete. + (GLINK_CALL_STUB_SIZE): Modify. Define new glink call stub and + associated macros. + (ppc64_elf_howto_raw ): Correct + dst_mask. + (enum ppc_stub_type): Add ppc_stub_long_branch_r2off and + ppc_stub_plt_branch_r2off. + (struct ppc_stub_hash_entry): Reorganize. + (struct ppc_link_hash_table): Add no_multi_toc, multi_toc_needed, + toc_curr, toc_off and emit_stub_syms. + (ppc64_elf_link_hash_table_create): Init them. + (ppc_stub_name): Correct string size. + (ppc64_elf_check_relocs): Set has_gp_reloc on GOT and TOC relocs. + (ppc64_elf_size_dynamic_sections): Set no_multi_toc if GOT entries + used. + (ppc_type_of_stub): Tweak root.type test. + (build_plt_stub): Remove glink code. Adjust for insn macro changes. + (ppc_size_one_stub): Handle ppc_stub_long_branch_r2off and + ppc_stub_plt_branch_r2off. + (ppc_build_one_stub): Likewise. Fix var shadowing. Correct addis,addi + range test. Use toc_off to calculte r2 values. Handle emit_stub_syms. + (ppc64_elf_setup_section_lists): Remove htab creator flavour test. + Initialize elf_gp and toc_curr. + (ppc64_elf_next_toc_section, ppc64_elf_reinit_toc): New functions. + (ppc64_elf_next_input_section): Set toc_off. + (group_sections): Ensure groups have the same TOC. + (ppc64_elf_size_stubs): Check whether we need a TOC adjusting stub. + (ppc64_elf_build_stubs): Add emit_stub_syms param, and stash in htab. + Build new glink stub. + (ppc64_elf_relocate_section): Handle multiple TOCs. Fix comments. + (ppc64_elf_finish_dynamic_sections): Adjust DT_PPC64_GLINK. + * elf64-ppc.h (ppc64_elf_build_stubs): Update prototype. + (ppc64_elf_next_toc_section, ppc64_elf_reinit_toc): Declare. + * section.c (struct sec): Rename flag12 to has_gp_reloc. + (STD_SECTION): Update. + * ecoff.c (bfd_debug_section): Update comment. + * bfd-in2.h: Regenerate. + +2003-06-05 Daniel Jacobowitz + + * elfcode.h (elf_slurp_reloc_table_from_section): Don't dereference + NULL function pointers. + +2003-06-05 Daniel Jacobowitz + + * simple.c (bfd_simple_get_relocated_section_contents): Call + _bfd_generic_link_add_symbols instead of bfd_link_add_symbols. + +2003-06-04 Svein E. Seldal + + * coff-tic54x.c: Removed the ticoff0_bad_format_hook() and + ticoff1_bad_format_hook() functions. Removed the coff0 and coff1 + swaptables. + * coff-tic4x.c: Ditto + * coffcode.h: Added extra arguments to CREATE_BIG_COFF_TARGET_VEC + and CREATE_LITTLE_COFF_TARGET_VEC. Created the macro + CREATE_BIGHDR_COFF_TARGET_VEC. Created the ticoff0_bad_format_hook(), + ticoff1_bad_format_hook() functions. Created the coff0 and coff1 + swap tables. + * coff-tic4x.c: Adopted new CREATE_xxx_COFF_TARGET_VEC macros. + * coff-a29k.c: Append COFF_SWAP_TABLE argument + * coff-apollo.c: Ditto + * coff-arm.c: Ditto + * coff-h8300.c: Ditto + * coff-h8500.c: Ditto + * coff-i960.c: Ditto + * coff-m68k.c: Ditto + * coff-m88k.c: Ditto + * coff-mcore.c: Ditto + * coff-sh.c: Ditto + * coff-sparc.c: Ditto + * coff-tic80.c: Ditto + * coff-we32k.c: Ditto + * coff-z8k.c: Ditto + * coff-w65.c: Ditto + +2003-06-04 Svein E. Seldal + + * coff-tic4x.c (ticoff0_swap_table, ticoff1_swap_table): Fixed + initialization bug + +2003-06-03 Jakub Jelinek + + * elf.c (_bfd_elf_print_private_bfd_data): Handle PT_GNU_STACK. + (bfd_section_from_phdr): Likewise. + (map_sections_to_segments): Create PT_GNU_STACK segment header. + (get_program_header_size): Count with PT_GNU_STACK. + * elf-bfd.h (struct elf_obj_tdata): Add stack_flags. + * elflink.h (bfd_elfNN_size_dynamic_sections): Set stack_flags. + +2003-06-03 H.J. Lu + + * elflink.h (elf_link_input_bfd): Call linker error_handler + for discarded definitions. + +2003-06-03 Elias Athanasopoulos + + * syms.c (decode_section_type): Return 'n' if section flags are + SEC_HAS_CONTENTS && SEC_READONLY. + +2003-06-03 Nick Clifton + + * elf32-v850.c (v850_elf_howto_t): Rename R_V850_32to + R_V850_ABS32. Add entry for R_V850_REL32. + (v850_elf_reloc_map): Likewise. + (v850_elf_check_relocs): Likewise. + (v850_elf_perform_relocation): Likewise. + (v850_elf_final_link_relocate): Likewise. Include computation + to make R_V850_REl32 pc-relative. + +2003-06-03 Kaz Kojima + + * elf32-sh.c (sh_elf_size_dynamic_sections): Create .interp section + and DT_DEBUG dynamic tag even for position independent executables. + * elf64-sh64.c (sh64_elf64_size_dynamic_sections): Likewize. + +2003-06-02 Daniel Jacobowitz + + * config.bfd: Move obsolete entries out of the range of the + targmatch sed script. + +2003-06-02 Daniel Jacobowitz + + * config.bfd (mips*-dec-bsd*, mips*-*-pe*): Mark as obsolete. + +2003-05-31 Jakub Jelinek + + * elf32-ppc.c (allocate_dynrelocs): Use single slot for first 8192 + plt entries, not just 8191. + +2003-05-30 Daniel Jacobowitz + + * elfxx-mips.c (_bfd_mips_elf_discard_info): Correct loop index. + Reported by Ken Faiczak . + +2003-05-30 Ulrich Drepper + Jakub Jelinek + + * elflink.h (elf_link_add_object_symbols): Use !info->executable + instead of info->shared where appropriate. + (bfd_elfNN_size_dynamic_sections, elf_link_output_extsym): Likewise. + * elflink.c (_bfd_elf_create_got_section): Likewise. + (_bfd_elf_link_create_dynamic_sections): Likewise. + (_bfd_elf_link_assign_sym_version): Likewise. + * elf32-i386.c (elf_i386_size_dynamic_sections): Create .interp section + and DT_DEBUG dynamic tag even for position independent executables. + * elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise. + * elf32-s390.c (elf_s390_size_dynamic_sections: Likewise. + * elf64-ppc.c (ppc64_elf_size_dynamic_sections: Likewise. + * elf64-s390.c (elf_s390_size_dynamic_sections: Likewise. + * elf64-x86-64.c (elf64_x86_64_size_dynamic_sections: Likewise. + * elfxx-ia64.c (elfNN_ia64_size_dynamic_sections: Likewise. + * elf32-sparc.c (elf32_sparc_size_dynamic_sections: Likewise. + * elf64-alpha.c (elf64_alpha_size_dynamic_sections: Likewise. + * elf64-sparc.c (sparc64_elf_size_dynamic_sections: Likewise. + +2003-05-30 Kris Warkentin + + * elf.c (elfcore_grok_nto_status): Only set lwpid for the active or + signalled thread. + (elfcore_grok_nto_gregs): Only make .reg section for the active thread. + +2003-05-29 Nick Clifton + + * pef.c: Include "safe-ctype.h" instead of . + Tidy up formatting. + * Makefile.am: Add dependency on safe-ctype.h. + * Makefile.in: Regenerate. + +2003-05-29 Thiemo Seufer + + * elfxx-mips.c: Don't force symbols local unconditionally. + +2003-05-28 Alan Modra + + * elf32-hppa.c (elf32_hppa_relocate_section): Delete bogus + undefined_symbol call. + +2003-05-27 Richard Sandiford + + * elfxx-mips.c (mips_elf_hash_sort_data): Fix formattting. + (mips_elf_link_hash_table): Likewise. + +2003-05-22 Thiemo Seufer + + * elf64-mips.c (elf_mips_gnu_rel16_s2): Add internally used + R_MIPS_GNU_REL16_S2 support. + (bfd_elf64_bfd_reloc_type_lookup): Use it. + (mips_elf64_rtype_to_howto): Use it. + * elfn32-mips.c (elf_mips_gnu_rel16_s2): Add internally used + R_MIPS_GNU_REL16_S2 support. + (bfd_elf32_bfd_reloc_type_lookup): Use it. + (mips_elf_n32_rtype_to_howto): Use it. + +2003-05-21 Stuart F. Downing + + * som.h: Define PA_2_0 before including a.out.h + +2003-05-07 Eric Christopher + Alexandre Oliva + + * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Adjust + pic tests, change to warning. + (_bfd_mips_elf_final_link): Remove EF_MIPS_CPIC flag setting. + +2003-05-21 Marcus Comstedt + + * config.bfd: Check for a target triplet of shl-...-netbsdelf as + well as shle-...-netbsdelf. Remove duplicate entry. + +2003-05-21 Nick Clifton + + * elf32-xstormy16.c (xstormy16_elf_howto_table): Fix dst_mask + for X_STORMY16_REL_12 reloc. + + * elf.c (bfd_elf_get_needed_list): Use is_elf_hash_table to check + the type of the hash table in the bfd_link_info structure. + (bfd_elf_get_runpath_list): Likewise. + +2003-05-19 Roland McGrath + + * elf.c (bfd_elf_bfd_from_remote_memory): New function. + * bfd-in.h: Declare it. + * bfd-in2.h: Regenerated. + * elfcode.h (NAME(_bfd_elf,bfd_from_remote_memory)): New function. + * elf-bfd.h (struct elf_backend_data): New function pointer member + elf_backend_bfd_from_remote_memory. + (_bfd_elf32_bfd_from_remote_memory, _bfd_elf64_bfd_from_remote_memory): + Declare them. + * elfxx-target.h (elf_backend_bfd_from_remote_memory): New macro. + (elfNN_bed): Add that to the initializer. + +2003-05-15 Roland McGrath + + * elf.c (elfcore_grok_note): Grok NT_AUXV note, make ".auxv" section. + +2003-05-20 Jakub Jelinek + + * elflink.h (elf_link_output_extsym): Only issue error about != + STV_DEFAULT symbols if they are bfd_link_hash_undefined. + +2003-05-20 H.J. Lu + + * elflink.c (_bfd_elf_merge_symbol): Check ELF_LINK_DYNAMIC_DEF + when removing the old definition for symbols with non-default + visibility. + +2003-05-18 Jason Eckhardt + + * elf32-i860.c (elf32_i860_relocate_highadj): Simplify calculation. + +2003-05-17 Andreas Schwab + + * elf32-m68k.c (elf_m68k_check_relocs): Cache reloc section in + elf_section_data during processing of pc-relative and absolute + relocations. + (elf_m68k_relocate_section): Use the cached reloc section instead + of computing it again. Fix handling of visibility. Don't modify + addend when copying over a relocation into the output. + +2003-05-17 Alan Modra + + * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL + to trim plt entries. Move undefweak non-default visibility test.. + (allocate_dynrelocs): ..from here. + * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't test + dynamic_sections_created here. Update comment. Move undefweak + non-default visibility test.. + (allocate_dynrelocs): ..from here. Fix comment. + * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL + to trim plt entries. Move undefweak non-default visibility test.. + (allocate_dynrelocs): ..from here. Fix comment. + * elflink.h (elf_link_output_extsym): Compare ELF_ST_VISIBILITY with + STV_DEFAULT rather than comparing with zero. + * elflink.c (_bfd_elf_merge_symbol): Likewise. + (_bfd_elf_fix_symbol_flags): Likewise. Format comment. + +2003-05-17 Thiemo Seufer + + * bfd.c (_bfd_get_gp_value): Prevent illegal access for abfd null + pointers. + (_bfd_set_gp_value): Likewise. + +2003-05-16 Michael Snyder + From Bernd Schmidt + * archures.c (bfd_mach_h8300sx): New. + * bfd-in2.h: Regenerate. + * cpu-h8300.c (h8300_scan)): Add support for h8300sx. + (h8300sx_info_struct): New. + (h8300s_info_struct): Link to it. + * elf32-h8300.c (elf32_h8_mach): Add support for h8300sx. + (elf32_h8_final_write_processing): Likewise. + (elf32_h8_relax_section): Likewise. + +2003-05-16 Kelley Cook + + * config.bfd: Accept i[3-7]86 variants. + * configure.host: Likewise. + * configure.in: Likewise. + * configure: Regenerate. + +2003-05-15 H.J. Lu + + * elflink.c (_bfd_elf_fix_symbol_flags): Also hide protected + symbol. + +2003-05-15 H.J. Lu + + * elflink.h (elf_link_check_versioned_symbol): Also allow + the base version. + +2003-05-15 Alan Modra + H.J. Lu + + * elf32-i386.c (allocate_dynrelocs): Use SYMBOL_CALLS_LOCAL. + (elf_i386_relocate_section): Likewise. + * elf32-ppc.c (allocate_dynrelocs): Likewise. + (ppc_elf_relocate_section): Likewise. + * elf64-ppc.c (allocate_dynrelocs): Likewise. + (ppc64_elf_relocate_section): Likewise. + +2003-05-15 Thiemo Seufer + + * elf32-mips.c (gprel32_with_gp): Remove useless N64 ABI case. + +2003-05-13 Stephane Carrez + + * elf32-m68hc1x.c (_bfd_m68hc11_elf_merge_private_bfd_data): Check for + processor capability, allow merge of HC12 and HCS12 in some cases. + (m68hc11_elf_hash_table_create): Use bfd_malloc instead of bfd_zalloc. + * cpu-m68hc12.c (bfd_m68hc12s_arch): New struct. + (bfd_m68hc12_arch): Link it. + (scan_mach): New function. + +2003-05-13 Andrew Haley + + * elf.c (bfd_elf_hash): Mask lower 32 bits of hash. + +2003-05-13 Alan Modra + H.J. Lu + + * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Move from + elf32-ppc.c. Add ELF_LINK_FORCED_LOCAL check. + * elf32-ppc.c: (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Delete. + (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL for dynreloc check. + (ppc_elf_relocate_section): Likewise. + * elf64-ppc.c (allocate_dynrelocs): Likewise. + (ppc64_elf_relocate_section): Likewise. Use for .got relocs too. + (ppc64_elf_adjust_dynamic_symbol): Don't assume symbols with .plt + relocs need no other types. + * elf32-i386.c (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL for + dynreloc check. + (elf_i386_relocate_section): Likewise. Use for .got relocs too. + (elf_i386_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL for + .got relocs. + +2003-05-13 Kaz Kojima + + * elf32-sh.c (sh_elf_adjust_dynamic_symbol): For weak symbols, + copy ELF_LINK_NON_GOT_REF from weakdef. + (allocate_dynrelocs): For undef weak syms with non-default + visibility, a) don't allocate plt entries, b) don't allocate + .got relocs, c) discard dyn rel space + (sh_elf_relocate_section): d) don't generate .got relocs, e) + don't generate dynamic relocs. + (sh_elf_copy_indirect_symbol): Don't copy ELF_LINK_NON_GOT_REF + for weakdefs when symbol already adjusted. + +2003-05-12 Nick Clifton + + * elf32-xstormy16.c (xstormy16_elf_howto_table): use 'bitfield' + overflow detection for R_XSTORMY16_16 reloc. + +2003-05-12 Paul Clarke + + * elf32-h8300.c: Fix typo in name of R_H8_DIR8 reloc. + +2003-05-11 Jason Eckhardt + + * elf32-i860.c (elf32_i860_relocate_highadj): Properly + adjust upper bits. + (elf32_i860_relocate_splitn): Obtain upper 5 bits from the + proper place. + (elf32_i860_relocate_pc16): Obtain upper 5 bits from the + proper place. + +2003-05-11 Andreas Schwab + + * elf32-m68k.c (elf_m68k_relocate_section): Replace ugly + complicated tests for unresolvable relocs with a simple direct + scheme using "unresolved_reloc" var. Report some detail on + bfd_reloc_outofrange and similar errors. + +2003-05-09 Martin Schwidefsky + + * elf32-s390.c (allocate_dynrelocs, elf_s390_relocate_section): + Fix WILL_CALL_FINISH_DYNAMIC_SYMBOL call. + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. + * elf64-s390.c: Likewise. + +2003-05-09 Martin Schwidefsky + + * elf32-s390.c (ELIMINATE_COPY_RELOCS): Define as one. + (elf_s390_adjust_dynamic_symbol): For weak symbols, copy + ELF_LINK_NON_GOT_REF from weakdef. + (elf_s390_copy_indirect_symbol): Test whether the weakdef sym has + already been adjusted before treating it specially. + * el64-s390.c: Likwise. + +2003-05-09 Martin Schwidefsky + + * elf32-s390.c (allocate_dynrelocs): For undef weak syms with + non-default visibility, a) don't make them dynamic, b) discard + space for dynamic relocs. + (elf_s390_relocate_section): Initialize the GOT entries and skip + R_390_{8,16,32}/R_390_PC{16,16DBL,32DBL,32} for weak undefined + symbols with non-default visibility. + * elf64-s390.c: Likewise. + +2003-05-09 Alan Modra + + * cpu-arm.c (arm_check_note): Warning fix. + * elf32-iq2000.c (iq2000_elf_check_relocs): Warning fixes. Arrange + to keep relocs if edited. + (iq2000_elf_print_private_bfd_data): Return TRUE. + * elfxx-ia64.c (elfNN_ia64_relax_section): Use ELFNN_R_SYM, not + ELF64_R_SYM. + (elfNN_ia64_relax_ldxmov): Warning fix. + * xtensa-isa.c (xtensa_add_isa): Warning fix. + * xtensa-modules.c (get_num_opcodes): Warning fix. + +2003-05-09 Andrey Petrov + + * elf.c (elf_fake_sections): Use correct cast for sh_name. + +2003-05-09 Alan Modra + + * elflink.c (_bfd_elf_link_create_dynamic_sections): Move from + elflink.h. Replace LOG_FILE_ALIGN with bed->s->log_file_align. + (_bfd_elf_create_dynamic_sections): Use bed->s->log_file_align. + (bfd_elf_record_link_assignment): Move from elflink.h. + (_bfd_elf_merge_symbol): Likewise. + (_bfd_elf_add_default_symbol): Likewise. + (_bfd_elf_export_symbol): Likewise. + (_bfd_elf_link_find_version_dependencies): Likewise. + (_bfd_elf_link_assign_sym_version): Likewise. + (_bfd_elf_link_read_relocs): Likewise. + (_bfd_elf_link_size_reloc_section): Likewise. + (_bfd_elf_fix_symbol_flags): Likewise. + (_bfd_elf_adjust_dynamic_symbol): Likewise. + (_bfd_elf_link_sec_merge_syms): Likewise. + (elf_link_read_relocs_from_section): Likewise. Use bed->s->sizeof_rel + and bed->s->sizeof_rela. + (_bfd_elf_link_output_relocs): Likewise. + * elf-bfd.h (struct elf_size_info): Rename file_align to + log_file_align. + (struct elf_info_failed): Move from elflink.h. + (struct elf_assign_sym_version_info): Likewise. + (struct elf_find_verdep_info): Likewise. + (_bfd_elf_create_dynamic_sections): Delete duplicate declaration. + (_bfd_elf_merge_symbol, _bfd_elf_add_default_symbol, + _bfd_elf_export_symbol, _bfd_elf_link_find_version_dependencies, + _bfd_elf_link_assign_sym_version, + _bfd_elf_link_create_dynamic_sections, _bfd_elf_link_read_relocs, + _bfd_elf_link_size_reloc_section, _bfd_elf_link_output_relocs, + _bfd_elf_fix_symbol_flags, _bfd_elf_adjust_dynamic_symbol, + _bfd_elf_link_sec_merge_syms): Declare. + (bfd_elf32_link_create_dynamic_sections): Don't declare. + (_bfd_elf32_link_read_relocs): Likewise. + (bfd_elf64_link_create_dynamic_sections): Likewise. + (_bfd_elf64_link_read_relocs): Likewise. + * elflink.h: Move lots o' stuff elsewhere. + * bfd-in.h (bfd_elf32_record_link_assignment): Don't declare. + (bfd_elf64_record_link_assignment): Likewise. + (bfd_elf_record_link_assignment): Declare. + * bfd-in2.h: Regenerate. + * elfcode.h (elf_link_create_dynamic_sections): Don't declare. + (NAME(_bfd_elf,size_info)): Adjust for log_file_align. + * elf.c (_bfd_elf_init_reloc_shdr): Adjust for bed->s->log_file_align. + (assign_file_positions_for_segments): Likewise. + (assign_file_positions_except_relocs): Likewise. + (swap_out_syms, elfcore_write_note): Likewise. + * elf-m10200.c: Adjust for changed function names. + * elf-m10300.c: Likewise. + * elf32-arm.h: Likewise. + * elf32-h8300.c: Likewise. + * elf32-hppa.c: Likewise. + * elf32-ip2k.c: Likewise. + * elf32-m32r.c: Likewise. + * elf32-m68hc11.c: Likewise. + * elf32-m68hc1x.c: Likewise. + * elf32-m68k.c: Likewise. + * elf32-mips.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-sh.c: Likewise. + * elf32-v850.c: Likewise. + * elf32-xtensa.c: Likewise. + * elf64-alpha.c: Likewise. + * elf64-hppa.c: Likewise. + * elf64-mmix.c: Likewise. + * elf64-ppc.c: Likewise. + * elf64-sh64.c: Likewise. + * elfxx-ia64.c: Likewise. + * elfxx-mips.c: Likewise. + (MIPS_ELF_LOG_FILE_ALIGN): Use log_file_align. + * elf64-alpha.c (alpha_elf_size_info): Adjust for log_file_align. + * elf64-hppa.c (hppa64_elf_size_info): Likewise. + * elf64-mips.c (mips_elf64_size_info): Likewise. + * elf64-s390.c (s390_elf64_size_info): Likewise. + * elf64-sparc.c (sparc64_elf_size_info): Likewise. + +2003-05-08 H.J. Lu + + * elflink.h (elf_add_default_symbol): After skipping the + unversioned symbol, go to non-default one. + +2003-05-07 H.J. Lu + + * elfxx-ia64.c (_bfd_elf_link_hash_hide_symbol): Also clear the + want_plt field. + (elfNN_ia64_relocate_section): Don't do dynamic symbol lookup + for symbols with non-default visibility. + +2003-05-07 H.J. Lu + + * elflink.h (elf_link_check_versioned_symbol): Also handle the + case that a DSO references a hidden symbol which may be + satisfied by a versioned symbol in another DSO. + (elf_link_output_extsym): Check versioned definition for hidden + symbol referenced by a DSO. + +2003-05-07 Nick Clifton + + * elf32-xstormy16.c (xstormy16_elf_howto_table): Reset + R_XSTORMY16_16 reloc to ignore overflows. + +2003-05-06 Alexandre Oliva + + * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Improve + error message for mixing different-endian files. Check for ABI + compatibility of input files with the selected emulation. + +2003-05-05 Alan Modra + + * elf32-i386.c (allocate_dynrelocs): For undef weak syms with + non-default visibility, a) don't make them dynamic, b) discard + space for dynamic relocs. + * elf64-x86-64.c (allocate_dynrelocs): Likewise. + + * elf32-ppc.c (allocate_dynrelocs): For undef weak syms with + non-default visibility, a) don't allocate plt entries, b) don't + allocate .got relocs, c) discard dyn rel space, + (ppc_elf_relocate_section): d) don't generate .got relocs, e) + don't generate dynamic relocs. + * elf64-ppc.c (allocate_dynrelocs): As above. + (ppc64_elf_relocate_section): As above. + +2003-05-05 Andreas Jaeger + + * elf64-x86-64.c (allocate_dynrelocs): Don't allocate dynamic + relocation entries for weak undefined symbols with non-default + visibility. + (elf64_x86_64_relocate_section): Initialize the GOT entries and + skip R_386_32/R_386_PC32 for weak undefined symbols with + non-default visibility. + +2003-05-04 H.J. Lu + + * elf32-i386.c (allocate_dynrelocs): Don't allocate dynamic + relocation entries for weak undefined symbols with non-default + visibility. + (elf_i386_relocate_section): Initialize the GOT entries and + skip R_386_32/R_386_PC32 for weak undefined symbols with + non-default visibility. + + * elfxx-ia64.c (allocate_fptr): Don't allocate function + descriptors for weak undefined symbols with non-default + visibility. + (allocate_dynrel_entries): Don't allocate relocation entries + for symbols resolved to 0. + (set_got_entry): Don't install dynamic relocation for weak + undefined symbols with non-default visibility. + (set_pltoff_entry): Likewise. + + * elflink.h (elf_fix_symbol_flags): Hide weak undefined symbols + with non-default visibility. + (elf_link_output_extsym): Don't make weak undefined symbols + with non-default visibility dynamic. + +2003-05-04 H.J. Lu + + * elflink.h (elf_merge_symbol): Correctly handle weak definition. + +2003-05-04 H.J. Lu + + * elflink.h (elf_merge_symbol): Don't record a hidden/internal + symbol dynamic. Check indirection when removing the old + definition for symbols with non-default visibility. + (elf_add_default_symbol): Skip when told by elf_merge_symbol. + +2003-05-02 Nick Clifton + + * elf32-xstormy16.c (xstormy16_elf_howto_table): Make the + R_XSTORMY16_8 and R_XSTORMY16_16 relocs detect and complain about + unsigned overflow. + +2003-05-02 Andreas Jaeger + + * elf64-x86-64.c (elf_x86_64_copy_indirect_symbol): Don't copy + ELF_LINK_NON_GOT_REF for weakdefs when symbol already adjusted. + (ELIMINATE_COPY_RELOCS): Define as one. Use throughout. + (elf_x86_64_adjust_dynamic_symbol): For weak symbols, copy + ELF_LINK_NON_GOT_REF from weakdef. + +2003-05-02 Charles Lepple + Nick Clifton + + * acinclude.m4: Fix name of --enable-install-libbfd switch. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * Makefile.in: Regenerate. + +2003-05-01 Alan Modra + + * elf32-ppc.c (ppc_elf_copy_indirect_symbol): Test whether the + weakdef sym has already been adjusted before treating it specially. + * elf32-i386.c (elf_i386_copy_indirect_symbol): Don't copy + ELF_LINK_NON_GOT_REF for weakdefs when symbol already adjusted. + * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. + (ppc64_elf_check_relocs): Set ELF_LINK_NON_GOT_REF. + +2003-04-28 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_relax_section): Relax ldxmov during + the relax finalize pass. + + * section.c (struct sec): Add need_finalize_relax and remove + flag11. + (STD_SECTION): Update struct sec initializer. + * bfd-in2.h: Regenerated. + +2003-04-28 H.J. Lu + + * elflink.h (elf_merge_symbol): Call elf_backend_copy_indirect_symbol + to copy any information related to dynamic linking when we flip + the indirection. + +2003-04-27 H.J. Lu + + * elf-bfd.h (ELF_LINK_DYNAMIC_DEF): New. + (ELF_LINK_DYNAMIC_WEAK): New. + + * elflink.h (elf_merge_symbol): Add one argument to indicate if + a symbol should be skipped. Ignore definitions in dynamic + objects for symbols with non-default visibility. + (elf_add_default_symbol): Adjusted. + (elf_link_add_object_symbols): Check if a symbol should be + skipped. Don't merge the visibility field with the one from + a dynamic object. + (elf_link_check_versioned_symbol): Use undef_bfd. + (elf_link_output_extsym): Warn if a forced local symbol is + referenced from dynamic objects. Make non-weak undefined symbol + with non-default visibility a fatal error. + +2003-04-27 Daniel Jacobowitz + + * configure.in: Bump version on HEAD to 2.14.90. + * configure: Regenerated. + +2003-04-26 Stephane Carrez + + PR savannah/3331: + * elf32-m68hc11.c (m68hc11_elf_relax_section): Clear prev_insn_group + when we couldn't relax something. + +2003-04-25 Alan Modra + + * elflink.h (elf_merge_symbol): When we find a regular definition + for an indirect symbol, flip the indirection so that the old + direct symbol now points to the new definition. + +2003-04-24 Roland McGrath + + * elf.c (bfd_section_from_phdr): Map PT_GNU_EH_FRAME to "eh_frame_hdr". + +2003-04-24 Alan Modra + + * elf32-ppc.c: Formatting and comment fixes. + (ELIMINATE_COPY_RELOCS): Move before ppc_elf_copy_indirect_symbol. + (ppc_elf_copy_indirect_symbol): Copy flags here for weakdefs. + +2003-04-24 Dhananjay Deshpande + + * archures.c (bfd_mach_h8300hn, bfd_mach_h8300sn): Added. + * bfd-in2.h: Rebuilt. + * coff-h8300.c (BADMAG): Add check for H8300HNBADMAG & H8300SNBADMAG. + * coffcode.h (coff_set_arch_mach_hook): Add case for H8300HNMAGIC + & H8300SNMAGIC. + (coff_set_flags): Add case for bfd_mach_h8300hn & bfd_mach_h8300sn. + * cpu-h8300.c (h8300_scan): Handle h8300hn, h8300sn. + (h8300sn_info_struct, h8300hn_info_struct): New. + * elf32-h8300.c (elf32_h8_mach): Handle case for h8300hn & h8300sn + (elf32_h8_final_write_processing): Likewise. + +2003-04-23 Kaz Kojima + + * elf32-sh.c (tpoff): New. + (struct elf_sh_dyn_relocs): Remove tls_tpoff32. + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. + (allocate_dynrelocs): Don't make unnecessary dynamic TLS + relocations. Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses. + (sh_elf_relocate_section): Likewise. Remove unnecessary tests. + (dtpoff_base): Fix wrong indentation. + (sh_elf_check_relocs): Don't set DF_STATIC_TLS flag with non-TLS + relocations. Don't set tls_tpoff32 flag. Don't make unnecessary + R_SH_TLS_TPOFF32 relocations. + +2003-04-23 J"orn Rennecke + + * archures.c (enum bfd_architecture): Amend comment to refer to SuperH. + * cpu-sh.c: Likewise. + * elf32-sh.c: Likewise. + * reloc.c (bfd_reloc_code_real): Likewise. + * elf32-sh64-com.c: Change comment to refer to SuperH. + * elf32-sh64.c: Likewise. + * elf64-sh64.c: Likewise. + * bfd-in2.h (enum bfd_architecture): Regenerate. + +2003-04-23 Alan Modra + + From Julien LEMOINE + * elf32-i386.c (elf_i386_info_to_howto): Delete. + (elf_info_to_howto): Define as elf_i386_info_to_howto_rel. + +2003-04-22 Kazuhiro Inaoka + + * archures.c: Replace references to Mitsubishi M32R with references + to Renesas M32R. + * relocs.c: Likewise. + * bfd-in2.h: Regenerate. + +2003-04-21 Richard Henderson + + * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Return false for an + executable when a symbol is defined both regular and dynamic. + +2003-04-21 Stephane Carrez + + * Makefile.am (BFD32_BACKENDS): Add elf32-m68hc1x.lo. + (elf32-m68hc1x.lo): Update dependencies + * configure.in: Add elf32-m68hc1x.lo. + * configure: Rebuild. + * Makefile.in: Rebuild. + +2003-04-21 Stephane Carrez + + * elf32-m68hc1x.c: New file (from elf32-m68hc11.c and elf32-m68hc12.c) + (m68hc11_elf_hash_table_create): New function. + (elf32_m68hc11_link_hash_table_free): New function. + (stub_hash_newfunc): New function. + (m68hc11_add_stub): New function. + (elf32_m68hc11_add_symbol_hook): New function. + (elf32_m68hc11_setup_section_lists): New function. + (elf32_m68hc11_next_input_section): New function. + (elf32_m68hc11_size_stubs): New function. + (elf32_m68hc11_build_stubs): New function. + (m68hc11_get_relocation_value): New function. + (elf32_m68hc11_relocate_section): Call the above to redirect + some relocations to the trampoline code. + (m68hc11_elf_export_one_stub): New function. + (m68hc11_elf_set_symbol): New function. + (elf32_m68hc11_build_stubs): Call it via bfd_hash_traverse. + (m68hc11_elf_get_bank_parameters): Get parameters only when the info + is not yet initialized. + + * elf32-m68hc1x.h: New file (from elf32-m68hc11.c and elf32-m68hc12.c) + (elf32_m68hc11_stub_hash_entry): New struct. + (m68hc11_page_info): Add trampoline handler address. + (m68hc11_elf_link_hash_table): Add stubs generation members. + (elf32_m68hc11_add_symbol_hook): Declare. + (elf32_m68hc11_setup_section_lists): Declare. + (elf32_m68hc11_size_stubs): Declare. + (elf32_m68hc11_build_stubs): Declare. + + * elf32-m68hc11.c (m68hc11_elf_ignore_reloc): Move to elf32-m68hc1x.c. + (elf32_m68hc11_gc_mark_hook, elf32_m68hc11_gc_sweep_hook): Likewise. + (elf32_m68hc11_check_relocs, elf32_m68hc11_relocate_section): Ditto. + (_bfd_m68hc11_elf_set_private_flags): Ditto. + (_bfd_m68hc11_elf_merge_private_bfd_data): Ditto. + (_bfd_m68hc11_elf_print_private_bfd_data): Ditto. + (bfd_elf32_bfd_link_hash_table_create): Define. + (elf_backend_add_symbol_hook): Define. + (m68hc11_elf_bfd_link_hash_table_create): New function. + (m68hc11_elf_build_one_stub): New function. + (m68hc11_elf_size_one_stub): New function. + (m68hc11_elf_bfd_link_hash_table_create): Install the above. + (bfd_elf32_bfd_link_hash_table_create): Define. + + * elf32-m68hc12.c (m68hc11_elf_ignore_reloc): Remove. + (m68hc12_addr_is_banked): Remove, use m68hc11_addr_is_banked. + (m68hc12_phys_addr): Ditto. + (m68hc12_phys_page): Ditto. + (m68hc12_elf_special_reloc): Move to elf32-m68hc1x.c. + (elf32_m68hc11_gc_mark_hook): Likewise. + (elf32_m68hc11_gc_sweep_hook): Likewise. + (elf32_m68hc11_check_relocs): Likewise. + (elf32_m68hc11_relocate_section): Likewise. + (_bfd_m68hc12_elf_set_private_flags): Likewise. + (_bfd_m68hc12_elf_merge_private_bfd_data): Likewise. + (_bfd_m68hc12_elf_print_private_bfd_data): Likewise. + (m68hc12_elf_build_one_stub): New function. + (m68hc12_elf_size_one_stub): New function. + (m68hc12_elf_bfd_link_hash_table_create): New function, use the above. + (elf_backend_add_symbol_hook): Define. + (elf_m68hc11_howto_table): Use TRUE for pcrel relocs; fix masks. + +2003-04-18 Nick Clifton + + * format.c (bfd_check_format_matches): Only check associated + vector if the matching_vector has been created. + +2003-04-15 Alexandre Oliva + + * dwarf2.c (_bfd_dwarf2_find_nearest_line): Fix typo in + 2003-04-09's change. + +2003-04-15 Brian Ford + + * peicode.h (coff_swap_scnhdr_in): If a section holds + uninitialized data and is from an object file or from an + executable image that has not initialized the s_size field, or if + the physical size is padded, use the virtual size (stored in + s_paddr) instead. + +2003-04-15 H.J. Lu + + * elflink.h (elf_link_add_object_symbols): Properly report + filename for alignment reduction. + +2003-04-15 Rohit Kumar Srivastava + + * archures.c: Replace occurrances of 'Hitachi' with 'Renesas'. + * reloc.c: Likewise. + * coff-h8300.c: Likewise. + * coff-h8500.c: Likewise. + * coff-sh.c: Likewise. + * cpu-h8300.c: Likewise. + * cpu-sh.c: Likewise. + * elf32-h8300.c: Likewise. + * elf32-sh.c: Likewise. + * elf32-sh64-com.c: Likewise. + * elf32-sh64.c: Likewise. + * elf64-sh64.c: Likewise. + * bfd-in2.h: Regenerate. + +2003-04-14 H.J. Lu + + * elflink.h (elf_link_add_object_symbols): Maintain maximum + alignment for common symbols. Warn reducing alignment for + common symbols. Report old filename when symbol size changes. + +2003-04-12 Alexandre Oliva + + * elfxx-mips.c (mips_elf_calculate_relocation): Adjust two other + occurrences of the same test changed in the previous patch. + Optimize. + +2003-04-11 Alexandre Oliva + + * elfxx-mips.c (mips_elf_get_global_gotsym_index): New. + (mips_elf_calculate_relocation): Decay GOT_PAGE/GOT_OFST to + GOT_DISP/addend only if the symbol got a global GOT entry. + +2003-04-10 Alexandre Oliva + + * elfxx-mips.c (mips_elf_calculate_relocation): Decay + GOT_PAGE/GOT_OFST referencing overridable symbol to + GOT_DISP/addend. + (_bfd_mips_elf_check_relocs): Handle GOT_PAGE referencing + global symbol as GOT_DISP. + +2003-04-10 Bob Wilson + + * elf32-xtensa.c (elf_xtensa_relocate_section): Don't continue to the + next relocation on an undefined symbol. + +2003-04-09 Richard Henderson + + * elf64-alpha.c (elf64_alpha_relocate_section) : + Ignore relocations against r_symndx == 0. + +2003-04-09 H.J. Lu + + * elf64-alpha.c (elf64_alpha_relocate_section): Don't return + FALSE for undefined symbols. + * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. + +2003-04-09 Alexandre Oliva + + * dwarf2.c (_bfd_dwarf2_find_nearest_line): Try DWARF3-standard + and IRIX-specific shift-to-64-bit 4-byte lengths before following + addr_size. + +2003-04-08 Alexandre Oliva + + * elf32-mips.c (bfd_elf32_bfd_reloc_type_lookup): Detect (ctor) + pointer size from ABI, not arch_bits_per_address. + +2003-04-07 Kevin Buettner + + * elfn32-mips.c (elf32_mips_grok_prstatus): Adjust core file related + constants for n32 ABI. + +2003-04-06 Andrew Cagney + + * simple.c (bfd_simple_get_relocated_section_contents): Disable + free that leads to GDB vs BFD memory corruption. + +2003-04-04 Stephane Carrez + + * elf32-m68hc11.c (m68hc11_elf_relax_delete_bytes): Also adjust + symbols that mark the end of the section. + (m68hc11_elf_relax_section): Use R_M68HC11_PCREL_8 relocs when + converting to a relative branch so that the offset is computed after + the relaxation; also relocate a jsr into a bsr if possible but don't + relax them if they are to a far symbol as we need to call the + trampoline code. + (elf_m68hc11_howto_table): Set pcrel_offset to true. + +2003-04-04 Svein E. Seldal + + * archures.c: Namespace cleanup. Rename bfd_mach_c3x to + bfd_mach_tic3x and bfd_mach_c4x to bfd_mach_tic4x + * bfd-in2.h: Regenerate + * coff-tic4x.c: Namespace cleanup. Replace s/c4x/tic4x/ + * cpu-tic4x.c: Ditto + +2003-04-03 Nick Clifton + + * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Compute ps and ss + differently for object files and executables. + * peicode.h (coff_swap_scnhdr_in): Only set the s_size field + for object files or for executables who have not already + initialised the field. + * libpei.h (bfd_pe_executable_p): New macro. Return true if + the PE format bfd is an executable. + +2003-04-03 Alan Modra + + * elf32-ppc.c (ppc_elf_check_relocs): Don't use SYMBOL_REFERENCES_LOCAL + here as it's too early to reliably determine locality. + (ppc_elf_gc_sweep_hook): Likewise. + (SYMBOL_REFERENCES_LOCAL): Expand comment. + +2003-04-02 Bob Wilson + + * xtensa-modules.c: Remove comment indicating that this is a + generated file. + +2003-04-02 Alan Modra + + * elfxx-mips.c (_bfd_mips_elf_hide_symbol): Test for NULL dynobj. + +2003-04-01 Bob Wilson + + * Makefile.am (ALL_MACHINES): Add cpu-xtensa.lo. + (ALL_MACHINES_CFILES): Add cpu-xtensa.c. + (BFD32_BACKENDS): Add elf32-xtensa.lo, xtensa-isa.lo, and + xtensa-modules.lo. + (BFD32_BACKENDS_CFILES): Add elf32-xtensa.c, xtensa-isa.c, and + xtensa-modules.c. + (cpu-xtensa.lo): New target. + (elf32-xtensa.lo): Likewise. + (xtensa-isa.lo): Likewise. + (xtensa-modules.lo): Likewise. + * Makefile.in: Regenerate. + * archures.c (bfd_architecture): Add bfd_{arch,mach}_xtensa. + (bfd_archures_list): Add bfd_xtensa_arch. + * config.bfd: Handle xtensa-*-*. + * configure.in: Handle bfd_elf32_xtensa_{le,be}_vec. + * configure: Regenerate. + * reloc.c: Add BFD_RELOC_XTENSA_{RTLD,GLOB_DAT,JMP_SLOT,RELATIVE, + PLT,OP0,OP1,OP2,ASM_EXPAND,ASM_SIMPLIFY}. + * targets.c (bfd_elf32_xtensa_be_vec): Declare. + (bfd_elf32_xtensa_le_vec): Likewise. + (bfd_target_vector): Add bfd_elf32_xtensa_{be,le}_vec. + * cpu-xtensa.c: New file. + * elf32-xtensa.c: Likewise. + * xtensa-isa.c: Likewise. + * xtensa-modules.c: Likewise. + * libbfd.h: Regenerate. + * bfd-in2.h: Likewise. + +2003-04-01 Nick Clifton + + * archures.c (bfd_mach_arm_unknown): Define. + * bfd-in.h (bfd_arm_merge_machines, bfd_arm+update_notes, + bfd_arm_get_mach_from_notes): Prototype. + * bfd-in2.h: Regenerate. + * coff-arm.c (coff_arm_merge_private_bfd_data): Call + bfd_arm_merge_machines. + (coff_arm_final_link_postscript): Call bfd_arm_update_notes. + * coffcode.h (coff_set_arch_mach_hook): Call + bfd_arm_get_mach_from_notes. + * coffgen.c (coff_real_object_p): Revert previous delta. + * cpu_arm.c (arm_check_note): New function. Examine a note in a + .note section. + (bfd_arm_merge_machines): New function: Handle the merging of ARM + binaries compiled for different architectures.. + (bfd_arm_update_notes): New function: Update an ARM note section. + (bfd_arm_get_mach_from_notes): New function: Extract a bfd machine + number from an ARM note section. + * elf32-arm.h (elf32_arm_object_p): Use + bfd_arm_get_mach_from_notes. + (elf32_arm_merge_private_bfd_data): Use bfd_arm_merge_machines. + (elf32_arm_final_write_processing): Use bfd_arm_update_notes. + +2003-04-01 Ben Elliston + + * dwarf2.c (read_attribute_value): Correct typo in comment. + +2003-04-01 Nick Clifton + + * dwarf2.c (concat_filename): Use bfd_malloc() and strdup() + instead of concat(). + (decode_line_info): Only free filename if it is not NULL. + (add_line_info): Make a copy of the filename when storing it into + the info structure. + +2003-03-31 Andreas Schwab + Daniel Jacobowitz + + * simple.c (bfd_simple_get_relocated_section_contents): Add + parameter symbol_table. Optionally use it instead of the symbol + table from the bfd. Save and restore output offsets and output + sections around bfd_get_relocated_section_contents. Fix a memory + leak. + (simple_save_output_info, simple_restore_output_info): New + functions. + * bfd-in2.h: Regenerate. + * dwarf2.c (read_abbrevs): Use + bfd_simple_get_relocated_section_contents instead of + bfd_get_section_contents. + (decode_line_info): Likewise. + (_bfd_dwarf2_find_nearest_line): Likewise. Don't call + find_rela_addend. + (find_rela_addend): Remove. + * elfxx-ia64.c (elfNN_ia64_reloc): Weaken sanity check for + debugging sections. + (elfNN_ia64_hash_table_create): Create the hash table with malloc, + not bfd_zalloc. + +2003-03-31 David Heine + + * aoutx.h (aout_link_hash_table_create): Use bfd_malloc instead of + bfd_alloc. + * dwarf2.c (concat_filename): Always allocate space for the + returned filename. + (decode_line_info): Free the allocated filename returned by + concat_filename. + * elf-eh-frame.c (bfd_elf_write_section_eh_frame): Fix memory leaks. + * elf.c (copy_private_bfd_data): Likewise. + (_bfd_elf_slurp_version_tables): Fix bug freeing contents pointer. + * elflink.h (elf_link_sort_relocs): Fix memory leak. + * format.c (bfd_check_format_matches): Likewise. + * linker.c (bfd_generic_final_link): Likewise. + * opncls.c (find_separate_debug_info): Likewise. + * simple.c (bfd_simple_get_relocated_section_contents): Likewise. + +2003-03-28 H.J. Lu + + * elflink.h (elf_link_add_object_symbols): Correctly combine + visibilities. + +2003-03-27 Jakub Jelinek + + * elfxx-ia64.c (elfNN_ia64_relax_section): Reset self_dtpmod_offset + to -1 before recomputing got offsets. + +2003-03-26 Andreas Schwab + + * elf32-m68k.c (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. + (elf_m68k_relocate_section): Use it to correctly handle symbols + forced to be local. + (elf_m68k_finish_dynamic_symbol): Emit RELATIVE reloc for got + entries for symbols that are forced to be local. + +2003-03-25 Alexandre Oliva + + * elfxx-mips.c (_bfd_mips_relax_section): New function. + * elfxx-mips.h (_bfd_mips_relax_section): Declare. + * elfn32-mips.c, elf64-mips.c: Use it. + +2003-03-25 Stan Cox + Nick Clifton + + Contribute support for Intel's iWMMXt chip - an ARM variant: + + * archures.c: Add bfd_mach_arm_iWMMXt. + * reloc.c: Add BFD_RELOC_ARM_CP_OFF_IMM_S2. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * coff-arm.c (coff_arm_merge_private_bfd_data): Allow iWMMXt + object files to be linked with XScale ones. + (coff_arm_final_link_postscript): Update note section. + * coffcode.h (coff_set_arch_mach_hook): Handle note section. + * coffgen.c (coff_real_object_p): Call bfd_coff_set_arch_mach_hook + after identifying a coff binary. + * cpu-arm.c (processors): Add iWMMXt. + (arch_inf): Likewise. + * elf32-arm.h (arm_object_p): Handle note section. + (elf32_arm_merge_private_bfd_data): Allow iWMMXt object files to + be linked with XScale ones. + (elf32_arm_section_flags): New function: Set flags on note section. + (elf32_arm_final_write_processing): Handle note section. + +2003-03-21 DJ Delorie + + * elf32-xstormy16.c (elf32_xstormy16_relocate_section): Call + _bfd_elf_rela_local_sym. + +2003-03-20 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_relax_section): Don't try relax for + non-ELF outputs. + +2003-03-20 Nick Clifton + + * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Initialise $idata2 and + $idata5 in case bfd_coff_final_link is not called. + +2003-03-19 Jakub Jelinek + + * elf64-sparc.c (struct sparc64_elf_section_data): Add reloc_count + field. + (canon_reloc_count): Define. + (sparc64_elf_slurp_one_reloc_table, sparc64_elf_slurp_reloc_table, + sparc64_elf_canonicalize_dynamic_reloc): Use it instead of + reloc_count. + (sparc64_elf_canonicalize_reloc): New routine. + (bfd_elf64_canonicalize_reloc): Define. + +2003-03-18 Jakub Jelinek + + * elfxx-ia64.c (elfNN_ia64_relax_section): Handle relaxation + againt mergeable sections. Take r_addend into account when caching + trampolines. + +2003-03-18 Richard Henderson + + * elfxx-ia64.c (get_dyn_sym_info): Return NULL gracefully for + local symbols that have no dyninfo. + +2003-03-14 Gene Smith + + * ieee.c (ieee_write_expression): Handle the case where symbol is + NULL. + General formatting improvements. + +2003-03-13 Nick Clifton + + * configure.in (LINGUAS): Add zh_CN. + * configure: Regenerate. + * po/zh_CN.po: New file. + +2003-03-13 Elias Athanasopoulos + + * aout-cris.c (BYTES_IN_WORD): Don't define. + aout-encap.c: Likewise. + aout-ns32k.c: Likewise. + aout-tic30.c: Likewise. + hp300bsd.c: Likewise. + i386aout.c: Likewise. + i386dynix.c: Likewise. + i386linux.c: Likewise. + i386lynx.c: Likewise. + i386mach3.c: Likewise. + m68k4knetbsd.c: Likewise. + m68klinux.c: Likewise. + m68klynx.c: Likewise. + m68knetbsd.c: Likewise. + m88kmach3.c: Likewise. + mipsbsd.c: Likewise. + newsos3.c: Likewise. + sparclinux.c: Likewise. + sparclynx.c: Likewise. + sparcnetbsd.c: Likewise. + vaxbsd.c: Likewise. Fix comment formatting. + +2003-03-12 Alexandre Oliva + + * Reverted 2003-03-02's patch. + + * elfxx-target.h (bfd_elfNN_canonicalize_reloc): Make it + overridable. + * elf64-mips.c (mips_elf64_canonicalize_reloc, + mips_elf64_get_dynamic_reloc_upper_bound, + mips_elf64_canonicalize_dynamic_reloc): New, adapted from elf.c. + (bfd_elf64_get_canonicalize_reloc, + bfd_elf64_get_dynamic_reloc_upper_bound, + bfd_elf64_canonicalize_dynamic_reloc): Define. + (mips_elf64_slurp_reloc_table): Support dynamic. + (mips_elf64_slurp_one_reloc_table): Adjust. + +2003-03-12 Nick Clifton + + * xsym.c (bfd_sym_fetch_type_information_table_entry): Change + 'index' to 'offset' in test for zero value. + +2003-03-11 Alexandre Oliva + + * elfxx-mips.c (mips_elf_create_dynamic_relocation): Do not create + dynamic relocations pointing to local or section symbols, use the + NULL symbol instead. Document the choice to not emit an + additional R_MIPS_64 relocation. + +2003-03-11 Alan Modra + + * elf32-ppc.c (ppc_elf_relocate_section): Subtract tls seg vma from + zero index dynamic tls relocs generated for the GOT. Tidy code. + Set "relocation" to 1 on DTPMOD32 relocs. Optimize HA adjustment. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + +2003-03-07 Alan Modra + + * elf32-ppc.c (ppc_elf_relocate_section): Don't look for a nop after + a tls_get_addr call. + + * elf32-ppc.c (ELIMINATE_COPY_RELOCS): Define as one. + (ppc_elf_adjust_dynamic_symbol): For weak symbols, copy + ELF_LINK_NON_GOT_REF from weakdef. + * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define as one. + (ppc64_elf_adjust_dynamic_symbol): For weak symbols, copy + ELF_LINK_NON_GOT_REF from weakdef. + * elf32-i386.c (ELIMINATE_COPY_RELOCS): Define as one. Use throughout. + (elf_i386_adjust_dynamic_symbol): For weak symbols, copy + ELF_LINK_NON_GOT_REF from weakdef. + +2003-03-06 Jakub Jelinek + Andrew Haley + + * elflink.h (elf_bfd_discard_info): Don't process eh frames if + output is relocateable. + +2003-03-06 Steven Konopa + + * som.c (som_fixup_formats): Correct formats for R_AUX_UNWIND and + R_COMMENT. + +2003-03-06 Alan Modra + + * elf32-ppc.c (ppc_elf_create_linker_section): Don't capitalize + error messages. + (ELIMINATE_COPY_RELOCS): Define to zero. + (ppc_elf_relocate_section): Don't deref htab->tls_sec when calculating + TLSLD relocs. Report reloc types on a number of errors. Optimize + LOCAL24PC check for non-local syms. Don't capitalize error messages. + * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define to zero. + (ppc64_elf_relocate_section): Don't deref htab->tls_sec when + calculating TLSLD relocs. Report reloc types on a number of errors. + Don't capitalize error messages. + +2003-03-03 H.J. Lu + + * elfxx-ia64.c (USE_BRL): Removed. + (oor_ip): Removed. + +2003-03-03 J"orn Rennecke + + * elf32-sh.c (sh_elf_howto_tab): Make R_SH_IND12W into an ordinary + relocation (no special function), and make it non-partial_inplace. + (sh_elf_relax_section): When creating a bsr, use a consistent value + no matter if the symbol is extern or not; set addend to -4. + Don't swap load / non-load instructions for SH4. + (sh_elf_relax_delete_bytes): In R_SH_IND12W case, check the offset + rather than if the symbol is external to determine if adjusting the + offset makes sense. Adjust the addend too if appropriate. + (sh_elf_relocate_section): In R_SH_IND12W, don't fiddle with the + relocation. + +2003-03-03 Nick Clifton + + * po/da.po: Installed latest translation. + +2003-03-02 Thiemo Seufer + + * elf32-mips.c (elf_mips_howto_table_rel): Change definition of + R_MIPS_PC16 to rightshift 2. + (elf_reloc_map mips_reloc_map): Map to rightshifted BFD reloc. + (bfd_elf32_bfd_reloc_type_lookup): Support + BFD_RELOC_MIPSEMB_16_PCREL_S2. + * elf64-mips.c (mips_elf64_howto_table_rel): Change definition of + R_MIPS_PC16 to rightshift 2. + (mips_elf64_howto_table_rela): Likewise. + (mips_reloc_map): Map to rightshifted BFD reloc. + * elfn32-mips.c: The same as in elf64-mips.c. + * elfxx-mips.c (mips_elf_got_for_ibfd): Typo in comment. + (mips_elf_calculate_relocation): Handle rightshifted addends for + R_MIPS_PC16. + * reloc.c (BFD_RELOC_MIPSEMB_16_PCREL_S2): New BFD relocation for + MIPS Embedded PIC. Remove superfluous empty COMMENT. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + +2003-02-28 Richard Henderson + + * elfxx-ia64.c (elfNN_ia64_relax_section): Correct bounds + for ltoff22x relaxation. + +2003-03-01 Alan Modra + + * bfd-in.h (_bfd): Don't define. + * bfd.c: Rename occurrences of "struct _bfd" to "struct bfd". + * syms.c: Likewise. + * bfd-in2.h: Regenerate. + +2003-02-27 Richard Henderson + + * elfxx-ia64.c (struct elfNN_ia64_dyn_sym_info): Add want_gotx; + (elfNN_ia64_check_relocs): Set it. + (allocate_global_data_got): Check it. + (allocate_local_got): Likewise. + (allocate_dynrel_entries): Likewise. + (elfNN_ia64_relax_ldxmov): New. + (elfNN_ia64_relax_section): Handle LTOFF22X, LDXMOV. + (elfNN_ia64_choose_gp): Split out from ... + (elfNN_ia64_final_link): ... here. + +2003-02-27 Andrew Cagney + + * bfd.c (struct bfd): Rename "struct _bfd". + * bfd-in.h: Update copyright. + (struct bfd): Rename "struct _bfd". + (_bfd): Define for backward compatibility. + * bfd-in2.h: Regenerate. + +2003-02-25 Alan Modra + + * elflink.h (elf_bfd_final_link): Apportion reloc counts to rel_hdr + and rel_hdr2 when initially counting input relocs rather than after + creating output reloc sections. + (elf_link_read_relocs_from_section): Don't abort with wrong reloc + sizes. + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + +2003-02-24 Kris Warkentin + + * elf.c (elfcore_read_notes): Add check for QNX style core file. + (elfcore_grog_nto_note): New function. + (elfcore_grog_nto_gregs): New function. + (elfcore_grog_nto_status): New function. + +2003-02-24 Alan Modra + + * elflink.c (_bfd_elf_create_got_section): Check existing .got + section flags before concluding that we've already been called. + Don't use register keyword. + (_bfd_elf_create_dynamic_sections): Don't use register keyword. + (_bfd_elf_create_linker_section): Formatting. + +2003-02-20 jmc + + * coff-h8300.c: Fix typo: intial -> initial. + * coff-ppc.c: Likewise. + +2003-02-20 Alan Modra + + * elf32-ppc.c: Formatting. + (allocate_dynrelocs): LD and GD relocs against the same sym need + separate GOT entries. + (ppc_elf_relocate_section): Correct GOT handling for multiple GOT + entries per symbol. + +2003-02-19 Alan Modra + + * elf32-hppa.c (elf32_hppa_gc_sweep_hook): Simplify dynamic reloc + removal. Localize vars. Remove unnecessary dynobj test. + * elf32-i386 (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead + of INFO. + (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses, + and optimize. + (elf_i386_relocate_section): Likewise. + (elf_i386_gc_sweep_hook): Simplify dyn reloc removal. Localize vars. + * elf32-s390.c (elf_s390_gc_sweep_hook): Likewise. + * elf32-sh.c (sh_elf_gc_sweep_hook): Likewise. + * elf64-s390.c (elf_s390_gc_sweep_hook): Likewise. + * elf64-x86-64.c (elf64_x86_64_gc_sweep_hook): Likewise. + * elf32-sparc.c (elf32_sparc_gc_sweep_hook): Likewise. Remove + local_dynrel for section too. Don't touch HIPLT22, LOPLT10, PCPLT32 + or PCPLT10 relocs. Don't subtract twice on PLT32 relocs. + Formatting. + + * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define. + (ppc64_elf_check_relocs): Use it. Correct comment. Move SEC_ALLOC + test. + (ppc64_elf_adjust_dynamic_symbol): Use ELIMINATE_COPY_RELOCS. + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. + (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses, + and optimize. Use ELIMINATE_COPY_RELOCS. + (ppc64_elf_relocate_section): Likewise. + + * elf32-ppc.c (struct ppc_elf_dyn_relocs): Add pc_count field. + (ppc_elf_copy_indirect_symbol): Copy pc_count field. + (ELIMINATE_COPY_RELOCS): Define. + (ppc_elf_adjust_dynamic_symbol): Convert copy relocs to dynamic. + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. + (MUST_BE_DYN_RELOC): Define. + (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses, + and optimize. Trim dyn_relocs. + (ppc_elf_check_relocs): Don't generate dyn_relocs when we know they'll + not be used. Do generate dyn_relocs for copy reloc avoidance. Keep + track of pc_rel dyn relocs. + (ppc_elf_relocate_section): Remove "will_become_local". Adjust + WILL_CALL_FINISH_DYNAMIC_SYMBOL use. Trim dyn relocs as per + allocate_dynrelocs. Don't recalculate "sec". + +2003-02-18 Alan Modra + + * elf32-ppc.c (ppc_elf_relocate_section): Remove unnecessary test. + * elf64-ppc.c (ppc64_elf_tls_optimize): Decrement tlsld_got.refcount + on invalid LD relocs. + (allocate_dynrelocs): Invalid LD relocs don't use tlsld_got entry. + (ppc64_elf_relocate_section): Unify new handling of LD relocs and + tlsld_got entry. Use IS_PPC64_TLS_RELOC. + + * elf32-ppc.h: New file. + * elf32-ppc.c: Include elf32-ppc.h. + (NOP, CROR_151515, CROR_313131, TP_OFFSET, DTP_OFFSET): Define. + (struct ppc_elf_link_hash_entry): Rename "root" to "elf". Adjust uses. + Add "tls_mask" field. + (TLS_GD, TLS_LD, TLS_TPREL, TLS_DTPREL, TLS_TLS, TLS_TPRELGD): Define. + (struct ppc_elf_link_hash_table): Rename "root" to "elf". Adjust uses. + Add got, relgot, plt, relplt, dynbss, relbss, dynsbss, relsbss, + sdata, sdata2, tls_sec, tls_get_addr, tlsld_got fields. + Make use of htab shortcuts throughout file. + (ppc_elf_link_hash_newfunc): Init tls_mask field. + (ppc_elf_link_hash_table_create): Init new fields. + (ppc_elf_copy_indirect_symbol): Copy tls_mask. + (ppc_elf_howto_raw): Add tls relocs. + (ppc_elf_reloc_type_lookup): Handle them. + (ppc_elf_unhandled_reloc): New function. + (ppc_elf_create_got): Stash got section pointer in hash table, + return status. Make .rela.got too. + (ppc_elf_create_dynamic_sections): Stash section pointers in htab. + (ppc_elf_adjust_dynamic_symbol): Only set up copy relocs when + NON_GOT_REF set. Don't allocate space in .plt here.. + (allocate_dynrelocs): ..do so here instead, properly ref-counting and + not allocating plt entries unnecessarily. Allocate got entries here. + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. + (ppc_elf_size_dynamic_sections): Allocate local got entries. Pass + "info" during allocate_dynrelocs hash traversal. Use htab section + shortcuts rather than searching for named sections. Get rid of + "plt" and "strip" booleans. + (update_local_sym_info, bad_shared_reloc): New functions. + (ppc_elf_check_relocs): Handle TLS relocs. Move .rela.got creation to + ppc_elf_create_got. Don't mark got or plt reloc syms dynamic, do so + in allocate_dynreloc. Use update_local_sym_info and bad_shared_reloc. + Disallow R_PPC_EMB_RELSDA, R_PPC_EMB_NADDR32, R_PPC_EMB_NADDR16, + R_PPC_EMB_NADDR16_LO, R_PPC_EMB_NADDR16_HI and R_PPC_EMB_NADDR16_HA + in shared libs. R_PPC_PLTREL32 is a plt reloc too. Refcount all + relocs that might use a plt entry. Set NON_GOT_REF too. + Enumerate all do-nothing relocs. + (ppc_elf_gc_sweep_hook): Simplify removal of dynrelocs. Handle + tls relocs and all plt relocs. + (ppc_elf_tls_setup, ppc_elf_tls_optimize): New functions. + (ppc_elf_finish_dynamic_symbol): Don't build got entries here. + (ppc_elf_finish_dynamic_sections): Rewrite tag code using htab + shortcuts. + (ppc_elf_relocate_section): Tidy. Handle TLS relocs. Use + bfd_elf_local_sym_name. Simplify unresolved reloc code. Build got + entries and got relocs here. Warn on non-zero got reloc addend. + Split out branch taken/not taken reloc code into a separate switch + and correct offset calculation. Allow BRTAKEN/BRNTAKEN dynamic relocs. + Split out HA reloc adjustments to separate switch statement. Don't + warn on reloc overflow if we've already warned about undefined. + Don't rebuild sym name when reporting errors. Report all possible + errors from _bfd_final_link_relocate. + (bfd_elf32_bfd_final_link): Don't define. + +2003-02-18 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Don't init "r". Don't + rebuild sym name when reporting errors. + +2003-02-17 Nick Clifton + + * elflink.h (elf_link_output_extsym): Only check + allow_shlib_undefined for shared libraries. + * elf32-i386.c (elf_i386_relocate_section): Remove bogus check + of allow_shlib_undefined. + * elf32-cris.c (cris_elf_relocate_section): Likewise. + * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf32-sh.c (sh_elf_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf32-vax.c (elf_vax_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf64-hppa.c (elf64_hppa_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. + * elfxx-mips.c (_bfd_mips_elf_relocate_section): Likewise. + +2003-02-17 Nick Clifton + + * elf.c (SEGMENT_AFTER_SEGMENT): Add third parameter - the + address field to use in the comparison. + (SEGMENT_OVERLAPS): Check that LMAs overlap as well. + +2003-02-14 Bob Wilson + + * elfcore.h (elf_core_file_p): Compare alternate machine codes for ELF + backends when checking if the generic ELF target should be used. + + * syms.c (_bfd_stab_section_find_nearest_line): For line number stabs + outside of functions, treat values as absolute addresses. + + * bfd.c: Change embedded documentation to use consistent indentation + and to split up long lines. Change informal style of description + for functions lacking real documentation. + * coffcode.h: Break up long lines in embedded documentation. + * format.c: Likewise. + * targets.c: Likewise. + * libcoff.h: Regenerate. + * bfd-in2.h: Regenerate. + +2003-02-14 Alan Modra + + * elf64-ppc.c (ppc64_elf_link_hash_table_create): Init tls_get_addr. + (ppc64_elf_copy_indirect_symbol): Merge tls_mask too. + (ppc64_elf_gc_sweep_hook): Simplify removal of dyn_relocs. + (allocate_dynrelocs): Don't treat undefined and undefweak specially. + (ppc_size_one_stub): Fix warning, and tighten plt entry check. + (group_sections): Don't share a stub section if stubs are for a large + section. Adjust comment. + (ppc64_elf_size_stubs): Roughly double the size left for stubs if + !stubs_always_before_branch. + (ppc64_elf_relocate_section): Initialize tlsld GOT entry once. Don't + treat undefined and undefweak specially when processing dyn relocs. + +2003-02-13 Jakub Jelinek + + * elflink.h (elf_link_add_object_symbols): Handle .symver x, x@FOO. + +2003-02-13 Nick Clifton + + * elf32-arm.h (elf32_thumb_to_arm_stub): Include section VMAs + in computation of offset to insert into BL instruction. + +2003-02-11 Uwe Stieber + + * config.bfd: Add support for kaOS as cross build target system. + +2003-02-11 Alan Modra + + * elf64-ppc.c (ppc64_elf_check_relocs): Match versioned + .__tls_get_addr too. + (ppc64_elf_tls_setup): Ensure cached tls_get_addr is not indirect. + +2003-02-10 Kaz kojima + + * elf32-sh.c (elf_sh_dyn_relocs): Add tls_tpoff32 field. + (elf_sh_link_hash_entry): Remove tls_tpoff32 field. + (sh_elf_link_hash_newfunc): Remove the initialization of + tls_tpoff32 field. + (allocate_dynrelocs): Keep dyn_relocs if it includes the entry + for which tls_tpoff32 flag is set. + (sh_elf_relocate_section): Covert to LE only if the dyn_relocs + of the symbol includes the entry matched with the input_section + and having tls_tpoff32 flag on. When linking statically, set + symbol index of R_SH_TLS_TPOFF32 relocation to zero if the symbol + is defined in this executable. + (sh_elf_check_relocs): Set tls_tpoff32 flag appropriately. + +2003-02-10 Jakub Jelinek + + * elf32-s390.c (elf_s390_size_dynamic_sections): Set relocs to TRUE + even if there is just non-empty .rela.plt. + +2003-02-10 Nick Clifton + + * archures.c (bfd_mach_arm_ep9312): Define. + * bfd-in2.h: Regenerate. + * cpu-arm.c (processors[]): Add ep9312. + (bfd_arm_arch): Add ep9312. + * elf32-arm.h (elf32_arm_merge_private_data): Update error + messages and add test for Maverick floating point support. + (elf32_arm_print_private_bfd_data): Handle + EF_ARM_MAVERICK_FLOAT flag. + (elf32_arm_object_p): New function. + (elf_backend_object_p): Define. + +2003-02-10 Alan Modra + + * elf64-ppc.c: Rename assorted occurrences of tls_type and similar + variables, structure fields or function params to tls_mask or + similar to better reflect usage. + (struct got_entry): Comment. + (struct ppc_link_hash_entry): Expand comment, and renumber TLS_*. + (get_tls_mask): Rename from get_tls_type. + +2003-02-09 Alan Modra + + * elf64-ppc.c (TLS_GD_LD): Don't define.. + (TLS_GD): ..define this instead and update all uses. + (TLS_TPRELGD): Define. + (ppc64_elf_link_hash_table_create): Tweak initialization of + init_refcount and init_offset. + (ppc64_elf_check_relocs): Add one extra element to t_symndx array. + Mark second slot of GD or LD toc entries. + (get_tls_type): Return an int. Distinguish toc GD and LD entries + from other tls types. + (ppc64_elf_tls_setup): New function, split out from.. + (ppc64_elf_tls_optimize): ..here. Don't optimize when symbols are + defined in a dynamic object. Fix LD optimization. Don't set TLS_TPREL + on GD->IE optimization, use TLS_TPRELGD instead. Use get_tls_type + return value to properly decide whether toc GD and LD entries can + optimize away __tls_get_addr call. Check next reloc after DTPMOD64 + to determine GD or LD rather than looking at TLS_LD flag. Don't + attempt to adjust got entry tls_type here.. + (allocate_dynrelocs): ..instead, adjust got entry tls_type here, and + look for possible merges. + (ppc64_elf_size_dynamic_sections): Adjust local got entries for + optimization. + (ppc64_elf_size_stubs): Tweak __tls_get_addr fudge. + (ppc64_elf_relocate_section): Rename some vars to better reflect usage. + Make use of return value from get_tls_type to properly detect GD and + LD optimizations. Split tlsld/gd hi/ha from lo/ds case. Don't + handle tls_get_addr removal when looking at REL24 relocs, do it when + looking at the previous reloc. Check reloc after DTPMOD64 to determine + GD or LD. + * elf64-ppc.h (ppc64_elf_tls_setup): Declare. + +2003-02-08 Alan Modra + + * elf32-hppa.c (group_sections): Don't share a stub section if + stubs are for a large section. + + * elf32-hppa.c (elf32_hppa_size_stubs): Double the size left for + stubs if !stubs_always_before_branch. + +2003-02-07 Nick Clifton + + * elf.c (swap_out_syms): Generate an error message if an + equivalent output section cannot be found for a symbol. + +2003-02-07 Jakub Jelinek + + * elf64-alpha.c (elf64_alpha_relax_section): Don't crash if + local_got_entries is NULL. + +2003-02-06 Andreas Schwab + + * elf-eh-frame.c (get_DW_EH_PE_signed): Define. + (read_value): Add parameter is_signed, use signed extraction if + the value is signed. + (_bfd_elf_write_section_eh_frame): Pass signed flag of the + encoding to read_value. + +2003-02-06 Alan Modra + + * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy got and + plt info when called to transfer weak sym info. + +2003-02-05 Alan Modra + + * reloc.c: Add PPC and PPC64 TLS relocs. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + * elf64-ppc.c (TP_OFFSET, DTP_OFFSET): Declare. + (ppc64_elf_howto_raw): Add TLS howto's. Adjust R_PPC64_NONE to be + against a 32 bit field. + (ppc64_elf_reloc_type_lookup): Handle TLS relocs. + (_ppc64_elf_section_data): Add t_symndx and comments. + (ppc64_elf_section_data): Use elf_section_data macro. + (ppc64_elf_new_section_hook): American spelling. + (struct got_entry, struct plt_entry): New. + (MUST_BE_DYN_RELOC): Rename from IS_ABSOLUTE_RELOC. + (struct ppc_stub_hash_entry): Add "addend" field. + (struct ppc_link_hash_entry): Add "tls_type". + (TLS_TLS, TLS_GD_LD, TLS_LD, TLS_TPREL, TLS_DTPREL, + TLS_EXPLICIT): Define. + (struct ppc_link_hash_table): Add tls_sec, tls_get_addr, tlsld_got. + (link_hash_newfunc): Init new fields. + (ppc64_elf_link_hash_table_create): Likewise. Set init_refcount and + init_offset to NULL. + (ppc64_elf_copy_indirect_symbol): Copy got and plt info. Don't call + _bfd_elf_link_hash_copy_indirect, rather insert relevant code from + there. + (update_local_sym_info, update_plt_info): New functions. + (ppc64_elf_check_relocs): Use them. Handle TLS relocs. Adjust GOT + handling to use got.glist rather than got.refcount. Likewise for PLT. + (ppc64_elf_gc_sweep_hook): Handle TLS relocs, new GOT and PLT lists. + (func_desc_adjust): Adjust for new PLT list. + (ppc64_elf_adjust_dynamic_symbol): Likewise. + (get_sym_h, get_tls_type): New functions. + (ppc64_elf_edit_opd): Remove unused variable. Use get_sym_h. + (ppc64_elf_tls_optimize): New function. + (allocate_dynrelocs): Adjust for new PLT and GOT lists. Allocate + TLS relocs. + (ppc64_elf_size_dynamic_sections): Likewise. + (ppc_type_of_stub): Adjust for new PLT list. + (ppc_build_one_stub): Likewise. + (ppc64_elf_size_stubs): Likewise. Use get_sym_h. Treat __tls_get_addr + calls specially. + (ppc64_elf_relocate_section): Adjust for new GOT and PLT lists. Handle + TLS relocs. Report local syms using bfd_elf_local_sym_name. Don't + init GOT entries that have a reloc. Generate GOT relocs here.. + (ppc64_elf_finish_dynamic_symbol): ..not here. Adjust for PLT list. + * elf64-ppc.h (ppc64_elf_tls_optimize): Declare. + +2003-02-04 Andreas Schwab + + * elf32-m68k.c (elf_m68k_hash_entry): Define. + (elf_m68k_link_hash_traverse): Remove. + (elf_m68k_link_hash_newfunc): Use struct bfd_hash_entry and + elf_m68k_hash_entry instead of struct elf_m68k_link_hash_entry to + reduce casting. + (elf_m68k_check_relocs): Use elf_m68k_hash_entry instead of + casting. + (elf_m68k_size_dynamic_sections): Use elf_link_hash_traverse + instead of elf_m68k_link_hash_traverse. + (elf_m68k_discard_copies): Change first parameter to pointer to + struct elf_link_hash_entry and use elf_m68k_hash_entry when struct + elf_m68k_link_hash_entry is needed. + +2003-02-04 Alan Modra + + * elf-bfd.h (struct got_entry, struct plt_entry): Forward declare. + (struct elf_link_hash_entry): Add "glist" and "plist" fields to + "got" union, and declare as gotplt_union. Use gotplt_uinion for + "plt" field. + (struct elf_link_hash_table): Make "init_refcount" a gotplt_union. + Add "init_offset" field. + (struct elf_obj_tdata ): Add "struct got_entry **" to union. + (elf_local_got_ents): Declare. + * elf.c (_bfd_elf_link_hash_newfunc): Adjust initialization of "got" + and "plt". + (_bfd_elf_link_hash_hide_symbol): Use "init_offset". + (_bfd_elf_link_hash_table_init): Set "init_offset". + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set init_refcount + from init_offset. + (elf_adjust_dynamic_symbol): Set plt and got offsets using init_offset. + + * elf.c (bfd_elf_local_sym_name): Split out from.. + (group_signature): ..here. + * elf-bfd.h (bfd_elf_local_sym_name): Declare. + +2003-02-04 Alan Modra + + * elf-bfd.h (enum elf_link_info_type): Remove. + (struct bfd_elf_section_data): Move sec_info_type, use_rela_p fields + to struct sec. Remove linkonce_p field. + (elf_linkonce_p): Delete. + (elf_discarded_section): Update for sec_info_type change. + * section.c (struct sec): Add sec_info_type, use_rela_p, has_tls_reloc, + flag11, flag12, flag13, flag14, flag15, flag16, flag20, flag24. + (ELF_INFO_TYPE_NONE): Define. + (ELF_INFO_TYPE_STABS): Define. + (ELF_INFO_TYPE_MERGE): Define. + (ELF_INFO_TYPE_EH_FRAME): Define. + (ELF_INFO_TYPE_JUST_SYMS): Define. + (STD_SECTION): Update struct sec initializer. + * ecoff.c (bfd_debug_section): Likewise. + * elf.c: Likewise. Update occurrences of sec_info_type and use_rela_p. + * elflink.h: Likewise. + * elf-eh-frame.c: Likewise. + * elf64-alpha.c: Likewise. + * elfxx-ia64.c: Likewise. + * elfxx-mips.c: Likewise. + * bfd-in2.h: Regenerate. + + * elf32-sparc.c (sec_do_relax): Use elf_section_data macro rather than + referring to used_by_bfd. + * elf64-sparc.c (sec_do_relax): Likewise. + * elf64-mmix.c (mmix_elf_section_data): Likewise. + * elfxx-mips.c (mips_elf_section_data): Likewise. + * ieee.c (ieee_slurp_section_data): Use ieee_per_section macro. + (ieee_get_section_contents): Likewise. + (ieee_new_section_hook): Formatting. + (ieee_canonicalize_reloc): Remove commented out code. + * mmo.c (mmo_section_data): Define. Use throughout file. + * oasys.c (oasys_get_section_contents): Use oasys_per_section macro. + +2003-01-31 Graydon Hoare + + * Makefile.am (opncls.lo): Add dependency upon libiberty.h. + * Makefile.in: Regenerate. + * opncls.c (calc_crc32, get_debug_link_info, + seperate_debug_file_exists, find_seperate_debug_file): New + internal functions. + (bfd_follow_gnu_debuglink): New function. Follow the pointer + contained inside a .gnu_debuglink section. + * bfd-in2.h: Regenerate. + +2003-01-29 Alexandre Oliva + + * elfxx-mips.c (mips_elf_got_entry_hash): Don't dereference + entry->abfd when it's NULL. + +2003-01-27 Alexandre Oliva + + * elfxx-mips.c (mips_elf_create_dynamic_relocation): Handle + _bfd_elf_section_offset returning -2 the same way as -1. + + * elfxx-mips.c (mips_elf_multi_got): New function. + (struct mips_got_entry): Make symndx and gotidx signed. Moved + addend into union along with address and link hash entry. + (struct mips_got_info): Added bfd2got and next. + (struct mips_elf_hash_sort_data): Added max_unref_got_dynindx. + (mips_elf_got_section, mips_elf_create_got_section): Use + SEC_EXCLUDE bit to tell whether we really need the got + section. Take boolean arguments to disregard an excluded + section, or to create it as excluded. Adjust all callers. + Use mips_elf_got_section all over. + (mips_elf_local_got_index, mips_elf_got_page, + mips_elf_got16_entry): Take input bfd as argument, and pass it + on to mips_elf_create_local_got_entry. + (mips_elf_global_got_index, mips_elf_create_local_got_entry): + Take input bfd as argument, and manage entries in the + appropriate GOT. + (mips_elf_got_offset_from_index): Take input bfd as argument, + and use it to adjust the GP offset of the bfd. + (mips_elf_sort_hash_table, mips_elf_sort_hash_table_f): Move + unreferenced GOT entries of global symbols to the end. + (mips_elf_record_global_got_symbol): Take input bfd as + argument. Add entries to the master GOT hash table. + (struct mips_elf_bfd2got_hash): New. + (struct mips_elf_got_per_bfd_arg): New. + (struct mips_elf_set_global_got_offset_arg): New. + (mips_elf_hash_bfd_vma, mips_elf_multi_got_entry_hash, + mips_elf_multi_got_entry_eq, mips_elf_bfd2got_entry_hash, + mips_elf_bfd2got_entry_eq, mips_elf_make_got_per_bfd, + mips_elf_merge_gots, mips_elf_set_global_got_offset, + mips_elf_resolve_final_got_entry, + mips_elf_resolve_final_got_entries, mips_elf_adjust_gp, + mips_elf_got_for_ibfd): New functions. + (ELF_MIPS_GP_OFFSET): Don't depend on SGI_COMPAT. + (MIPS_ELF_GOT_MAX_SIZE): New macro. + (STUB_LW): Generate 64-bit stub regardless of SGI_COMPAT. + (mips_elf_got_entry_hash): Take new fields into account. Use + mips_elf_hash_bfd_vma. + (mips_elf_got_entry_eq): Take new fields into account. + (mips_elf_create_got_section): Initialize new fields. + (mips_elf_calculate_relocation): Pass input_bfd to functions + that now take it. Adjust gp for the input_bfd. + (mips_elf_allocate_dynamic_relocation, + mips_elf_create_dynamic_relocation, + _bfd_mips_elf_create_dynamic_sections): Use... + (mips_elf_rel_dyn_section): New function. Borrow code from... + (_bfd_mips_elf_check_relocs): Pass input_bfd to functions that + now take it. Create the got section if needed, even if + excluded, before recording a global got symbol. Move some + code to... + (mips_elf_record_local_got_symbol): New fn. + (_bfd_mips_elf_size_dynamic_sections): Disable combreloc. + Compute multi-got global entries offsets. Move GOT code to... + (_bfd_mips_elf_always_size_sections): Call mips_elf_multi_got + if the GOT is too big. + (_bfd_mips_elf_finish_dynamic_symbol): Set got entry of + undefweak symbol to zero. Generate dynamic relocations for + non-primary GOT entries for global symbols. + (_bfd_mips_elf_finish_dynamic_sections): Handle multi-got + case. Generate dynamic relocations for local got entries. + Sort dynamic relocations on N64 too, using... + (sort_dynamic_relocs_64): New fns. + (_bfd_mips_elf_hide_symbol): Adjust multi-got counters. + (_bfd_mips_elf_merge_private_bfd_data): Ignore EF_MIPS_XGOT. + +2003-01-27 Alexandre Oliva + + * bfd.c (struct _bfd): Added id field. + * opncls.c (_bfd_id_counter): New static variable. + (_bfd_new_bfd): Use it. + * bfd-in2.h: Rebuilt. + +2003-01-25 Alan Modra + + * elf32-sparc.c (bfd_elf32_new_section_hook): Define. + +2003-01-25 Jakub Jelinek + + * elf32-sparc.c (_bfd_sparc_elf_howto_table): Add TLS relocs. + (elf32_sparc_rev32_howto): New variable. + (sparc_reloc_map): Add TLS relocs. + (elf32_sparc_reloc_type_lookup, elf32_sparc_info_to_howto): + Handle REV32. + (sparc_elf_hix22_reloc, sparc_elf_lox10_reloc, elf32_sparc_mkobject): + New functions. + (struct elf32_sparc_dyn_relocs, struct elf32_sparc_link_hash_entry, + struct elf32_sparc_link_hash_table): + New structures. + (elf32_sparc_tdata, elf32_sparc_local_got_tls_type, + elf32_sparc_hash_table): Define. + (link_hash_newfunc, elf32_sparc_link_hash_table_create, + create_got_section, elf32_sparc_create_dynamic_sections, + elf32_sparc_copy_indirect_symbol, elf32_sparc_tls_transition): New + functions. + (elf32_sparc_check_relocs): Handle TLS relocs. Add dynamic reloc + reference counting. + (elf32_sparc_gc_sweep_hook): Likewise. + (elf32_sparc_adjust_dynamic_symbol): Likewise. + (elf32_sparc_size_dynamic_sections): Likewise. + (elf32_sparc_relocate_section): Likewise. + (allocate_dynrelocs, readonly_dynrelocs, dtpoff_base, tpoff): + New functions. + (elf32_sparc_object_p): Allocate backend private object data. + (bfd_elf32_bfd_link_hash_table_create, + elf_backend_copy_indirect_symbol, bfd_elf32_mkobject, + elf_backend_can_refcount): Define. + (elf_backend_create_dynamic_sections): Define to + elf32_sparc_create_dynamic_sections. + * reloc.c: Add SPARC TLS relocs. + * bfd-in2.h, libbfd.h: Rebuilt. + * elf64-sparc.c (sparc64_elf_howto_table): Add TLS relocs. + (sparc_reloc_map): Likewise. + +2003-01-24 Martin Schwidefsky + + * bfd-in2.h: Regenerate. + * elf32-s390.c (elf_s390_mkobject, elf_s390_tls_transition, + s390_tls_reloc, dtpoff_base, tpoff, invalid_tls_insn): New functions. + (elf_howto_table): Add TLS relocs. + (elf_s390_reloc_type_lookup): Likewise. + (elf_s390_link_hash_entry): Add tls_type. + (elf_s390_hash_entry, elf_s390_obj_tdata, elf_s390_local_got_tls_type): + New macros. + (elf_s390_link_hash_table): Add tls_ldm_got. + (link_hash_newfunc): Initialize tls_type. + (elf_s390_link_hash_table_create): Initialize refcount of tls_ldm_got. + (elf_s390_copy_indirect_symbol): Copy tls_type information. + (elf_s390_check_relocs): Support TLS relocs. + (elf_s390_gc_sweep_hook): Likewise. + (allocate_dynrelocs): Likewise. + (elf_s390_size_dynamic_sections): Likewise. + (elf_s390_relocate_section): Likewise. + (elf_s390_finish_dynamic_symbol): Likewise. + (bfd_elf32_mkobject): Define for TLS. + * elf64-s390.c: Same changes as for elf32-s390.c. + * libbfd.h: Regenerate. + * reloc.c: Add s390 TLS relocations. + +2003-01-24 Charles Lepple + + * aclocal.m4: Fix name of --enable-install-libbfd switch. + +2003-01-23 Nick Clifton + + * Add sh2e support: + 2002-04-02 Elena Zannoni + * archures.c (bfd_mach_sh2e): Added. + * bfd-in2.h: Rebuilt. + * cpu-sh.c (arch_info_struct): Added SH2e. + * elf32-sh.c (sh_elf_set_mach_from_flags): Handle EF_SH2E. + +2003-01-23 Alan Modra + + * elf-bfd.h (struct bfd_elf_section_data): Remove tdata. Change + dynindx to an int. Rearrange for better packing. + * elf.c (_bfd_elf_new_section_hook): Don't alloc if already done. + * elf32-mips.c (bfd_elf32_new_section_hook): Define. + * elf32-sh64.h: New. Split out from include/elf/sh.h. + (struct _sh64_elf_section_data): New struct. + (sh64_elf_section_data): Don't dereference sh64_info (was tdata). + * elf32-sh64-com.c: Include elf32-sh64.h. + * elf32-sh64.c: Likewise. + (sh64_elf_new_section_hook): New function. + (bfd_elf32_new_section_hook): Define. + (sh64_elf_fake_sections): Adjust for sh64_elf_section_data change. + (sh64_bfd_elf_copy_private_section_data): Likewise. + (sh64_elf_final_write_processing): Likewise. + * elf32-sparc.c (struct elf32_sparc_section_data): New. + (elf32_sparc_new_section_hook): New function. + (SET_SEC_DO_RELAX, SEC_DO_RELAX): Delete. + (sec_do_relax): Define. + (elf32_sparc_relax_section): Adjust to use sec_do_relax. + (elf32_sparc_relocate_section): Likewise. + * elf64-mips.c (bfd_elf64_new_section_hook): Define. + * elf64-mmix.c (struct _mmix_elf_section_data): New. + (mmix_elf_section_data): Define. Use throughout file. + (mmix_elf_new_section_hook): New function. + (bfd_elf64_new_section_hook): Define. + * elf64-ppc.c (struct _ppc64_elf_section_data): New. + (ppc64_elf_section_data): Define. Use throughout. + (ppc64_elf_new_section_hook): New function. + (bfd_elf64_new_section_hook): Define. + * elf64-sparc.c (struct sparc64_elf_section_data): New. + (sparc64_elf_new_section_hook): New function. + (SET_SEC_DO_RELAX, SEC_DO_RELAX): Delete. + (sec_do_relax): Define. + (sparc64_elf_relax_section): Adjust to use sec_do_relax. + (sparc64_elf_relocate_section): Likewise. + (bfd_elf64_new_section_hook): Define. + * elfn32-mips.c (bfd_elf32_new_section_hook): Define. + * elfxx-mips.c (struct _mips_elf_section_data): New. + (mips_elf_section_data): Define. Use throughout. + (_bfd_mips_elf_new_section_hook): New function. + (mips_elf_create_got_section): Don't alloc used_by_bfd. + * elfxx-mips.h (_bfd_mips_elf_new_section_hook): Declare. + * elfxx-target.h (bfd_elfNN_new_section_hook): Add #ifndef. + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + +2003-01-21 Richard Henderson + + * elf64-alpha.c (ALPHA_ELF_LINK_HASH_PLT_LOC): New. + (struct alpha_elf_link_hash_entry): Add plt_old_section, plt_old_value. + (elf64_alpha_adjust_dynamic_symbol): Set them. + (elf64_alpha_size_plt_section_1): Reset them when plt entry removed. + (elf64_alpha_relax_tls_get_addr): Handle LDM relocs. Frob the + symbol index when relaxing LDM to TPREL. + (elf64_alpha_relax_section): Likewise. Allow relaxation of GD + relocs, even if the target isn't locally defined. + (elf64_alpha_check_relocs): Frob LDM reloc symndx to zero. + (elf64_alpha_relocate_section): Likewise. Force TP-relative + relocs vs symndx 0 to the tp base. + +2003-01-21 Fabio Alemagna + + * config.bfd: Handle i[3456]86-*-aros*. + +2003-01-21 Andreas Schwab + + * elf32-ppc.c (struct ppc_elf_dyn_relocs): Define. + (struct ppc_elf_link_hash_entry): Define. + (ppc_elf_hash_entry): New function. + (struct ppc_elf_link_hash_table): Define. + (ppc_elf_hash_table): New function. + (ppc_elf_link_hash_newfunc): New function. + (ppc_elf_link_hash_table_create): New function. + (ppc_elf_copy_indirect_symbol): New function. + (allocate_dynrelocs): New function. + (readonly_dynrelocs): New function. + (ppc_elf_size_dynamic_sections): Allocate space for dynamic + relocs and determine DT_TEXTREL. + (ppc_elf_check_relocs): Don't do that here, just count the + dynamic relocs. + (ppc_elf_gc_sweep_hook): Discard any dynamic relocs against the + removed section. + (bfd_elf32_bfd_link_hash_table_create): Define. + (elf_backend_copy_indirect_symbol): Define. + +2003-01-21 Richard Henderson + + * elf64-alpha.c (alpha_dynamic_entries_for_reloc): GOTTPREL and + TPREL also get a reloc if shared. Remove SREL support. + (elf64_alpha_emit_dynrel): New. + (elf64_alpha_relocate_section): Use it. Resolve dynamic TPREL + and GOTTPREL relocs to local symbols against the tp base. + (elf64_alpha_finish_dynamic_symbol): Use elf64_alpha_emit_dynrel. + + * elf64-alpha.c (elf64_alpha_relax_got_load): Decrement got + use count before clobbering r_type. + (elf64_alpha_relax_tls_get_addr): Don't use pos[1] if insn + ordering would mean dataflow inspection is necessary. + +2003-01-20 Svein E. Seldal + + * coffcode.h (coff_set_flags): Added get/set arch hooks. + +2003-01-20 Fabio Alemagna + + * elf32-sh.c: Treat elfNN_bed like other macros defined in + elfxx-target.h and #undef it before #define'ing it. + * elf32-i386.c: Likewise. + * elf32-sh64.c: Likewise. + * elf64-alpha.c: Likewise. + * elf64-sh64.c: Likewise. + +2003-01-20 Martin Schwidefsky + + * bfd-in2.h: Regenerate. + * elf32-s390.c (elf_s390_adjust_gotplt): New prototype. + (elf_howto_table): Rename R_390_GOTOFF to R_390_GOTOFF32. Add + R_390_GOTOFF16, R_390_GOTOFF64, R_390_GOTPLT12, R_390_GOTPLT16, + R_390_GOTPLT32, R_390_GOTPLT64, R_390_GOTPLTENT, R_390_PLTOFF16, + R_390_PLTOFF32 and R_390_PLTOFF64. + (elf_s390_reloc_type_lookup): Likewise. + (struct elf_s390_link_hash_entry): Add gotplt_refcount to keep track + of GOTPLT references to a function. + (link_hash_newfunc): Initialize gotplt_refcount. + (elf_s390_check_relocs): Move allocation of local_got_refcounts array + and creation of the got section out of the main switch. Add support + for the gotoff, gotplt and pltoff relocations. + (elf_s390_gc_sweep_hook): Add reference counting for gotoff, gotplt + and pltoff. + (elf_s390_adjust_gotplt): New function. + (elf_s390_adjust_dynamic_symbol): Adjust gotplt refcount for removed + plt entries. + (allocate_dynrelocs): Add comment. + (elf_s390_relocate_section): Change r_type to unsigned. Add support + for gotoff, gotplt and pltoff relocations. + * elf64-s390.c: Same changes as for elf32-s390.c. + * libbfd.h: Regenerate. + * reloc.c: Add BFD_RELOC_390_GOTOFF64, BFD_RELOC_390_GOTPLT12, + BFD_RELOC_390_GOTPLT16, BFD_RELOC_390_GOTPLT32, BFD_RELOC_390_GOTPLT64, + BFD_RELOC_390_GOTPLTENT, BFD_RELOC_390_PLTOFF16, BFD_RELOC_390_PLTOFF32 + and BFD_RELOC_390_PLTOFF64. + +2003-01-18 Jakub Jelinek + + * elfxx-ia64.c (elfNN_ia64_relocate_section): Handle + R_IA64_TPREL64[LM]SB against non-global symbol properly. + +2003-01-16 Jakub Jelinek + + * elfxx-ia64.c (struct elfNN_ia64_link_hash_table): Add + self_dtpmod_done and self_dtpmod_offset. + (allocate_global_data_got): Only use one got entry for all + dtpmod relocs against local symbols. + (allocate_dynrel_entries): Only need .rela.got entry for + dtpmod against global symbol. + (elfNN_ia64_size_dynamic_sections): Initialize self_dtpmod_offset. + Reserve space in .rela.got for the local dtpmod entry. + (set_got_entry): Initialize the common local dtpmod .got entry. + (elfNN_ia64_relocate_section): Handle R_IA_64_DTPREL64LSB + and R_IA_64_DTPREL64MSB. + +2003-01-16 Alan Modra + + * elf64-ppc.c: Include elf/ppc64.h rather than elf/ppc.h. + (R_PPC_*): Rename all occurrences to R_PPC64_*. + (R_PPC64_ADDR30): Rename all occurrences to R_PPC64_REL30. + (enum elf_ppc_reloc_type): Ditto to enum elf_ppc64_reloc_type. + (ppc64_elf_gc_sweep_hook): Handle R_PPC64_REL30 along with other + relative relocs, not with absolute ones. + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + +2003-01-15 Andreas Schwab + + * elf32-ppc.c (ppc_elf_check_relocs): Don't set DF_TEXTREL for a + relocation against a non-allocated readonly section. + +2003-01-10 Alan Modra + + * elf32-ppc.c (ppc_elf_relocate_section): Adjust addend for GOT16_HA. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. PLTGOT16_HA too. + +2002-01-08 Klee Dienes + + * Makefile.am (ALL_MACHINES): Use cpu-msp430.lo, not cpu-msp430.c. + (BFD32_BACKENDS): Use elf32-msp430.lo, not elf32-msp430.c. + * Makefile.in: Regenerate. + +2003-01-08 Alexandre Oliva + + * elfn32-mips.c (prev_reloc_section): New. + (GET_RELOC_ADDEND): Use it. Parenthesize macro arguments. + (SET_RELOC_ADDEND): Parenthesize macro argument. + +2003-01-07 John David Anglin + + * elf32-hppa.c (final_link_relocate): For all DP relative relocations, + adjust addil instructions if the symbol has no section. + +2003-01-07 DJ Delorie + + * elf32-xstormy16.c (xstormy16_elf_howto_table): Make REL_12 not + partial_inplace. + +2003-01-07 Andreas Schwab + + * elf32-m68k.c (elf_m68k_check_relocs): Don't set DF_TEXTREL for + PC relative relocations. + (elf_m68k_discard_copies): Set it here instead. + +2002-01-02 Ben Elliston + Jeff Johnston + + * Makefile.am (ALL_MACHINES): Add cpu-iq2000.lo. + (ALL_MACHINES_CFILES): Add cpu-iq2000.c. + (BFD32_BACKENDS): Add elf32-iq2000.lo. + (BFD32_BACKENDS_CFILES): Add elf32-iq2000.c. + (cpu-iq2000.lo): New target. + * Makefile.in: Regenerate. + * config.bfd: Handle iq2000-*-elf. + * archures.c (bfd_architecture): Add bfd_{arch,mach}_iq2000. + (bfd_archures_list): Add bfd_iq2000_arch. + * configure.in: Handle bfd_elf32_iq2000_vec. + * configure: Regenerate. + * reloc.c: Add BFD_RELOC_IQ2000_OFFSET_16, BFD_RELOC_IQ2000_OFFSET_21, + and BFD_RELOC_IQ2000_UHI16. + * targets.c (bfd_elf32_iq2000_vec): Declare. + (bfd_target_vector): Add bfd_elf32_iq2000_vec. + * elf.c (prep_headers): Set e_machine to EM_IQ2000. + * cpu-iq2000.c: New file. + * elf32-iq2000.c: Likewise. + * libbfd.h: Regenerate. + * bfd-in2.h: Likewise. + +2003-01-02 Richard Sandiford + + * elfxx-mips.c: Include libiberty.h. + (elf_mips_isa, _bfd_mips_elf_mach_extends_p): Remove. + (mips_set_isa_flags): New function, split out from... + (_bfd_mips_elf_final_write_processing): ...here. Only call + mips_set_isa_flags if the EF_MIPS_MACH bits are clear. + (mips_mach_extensions): New array. + (mips_32bit_flags_p): New function. + (_bfd_mips_elf_merge_private_bfd_data): Rework architecture checks. + Use mips_32bit_flags_p to check if one binary is 32-bit and the + other is 64-bit. When adopting IBFD's architecture, adopt the + bfd_mach as well as the flags. + +2003-01-02 Nick Kelsey + + * elf32-ip2k.c: Re-work of linker relaxation code for the ip2k to + fix internal errors, fix bad code generation, fix incorrect stabs + information, and improve ability to eliminate redundant page + instructions. Added code to ip2k_final_link_relocate to self-verify + the linker relaxation. Fix formatting problems. + +2002-12-30 Chris Demetriou + + * aoutx.h (NAME(aout,machine_type)): Add bfd_mach_mipsisa32r2 case. + * archures.c (bfd_mach_mipsisa32r2): New define. + * bfd-in2.h: Regenerate. + * cpu-mips.c (I_mipsisa32r2): New enum value. + (arch_info_struct): Add entry for I_mipsisa32r2. + * elfxx-mips.c (elf_mips_isa, _bfd_elf_mips_mach) + (_bfd_mips_elf_print_private_bfd_data): Handle E_MIPS_ARCH_32R2. + (_bfd_mips_elf_final_write_processing): Add + bfd_mach_mipsisa32r2 case. + (_bfd_mips_elf_merge_private_bfd_data): Handle merging of + binaries marked as using MIPS32 Release 2. + +2002-12-30 Dmitry Diky + + * Makefile.am: Add msp430 target. + * configure.in: Likewise. + * Makefile.in: Regenerate. + * configure: Regenerate. + * archures.c: Add msp430 architecture vector. + * config.bfd: Likewise. + * reloc.c: Add msp430 relocs. + * targets.c: Add msp320 target. + * cpu-msp430.c: New file: msp430 cpu detection. + * elf32-msp430.c: New file: msp430 reloc processing. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + +2002-12-28 Jakub Jelinek + + * elf.c (elf_sort_sections): Don't reorder .tbss. + (assign_file_positions_for_segments): Only adjust off/voff + for increased alignment in PT_LOAD or PT_NOTE segment, + but adjust p_filesz for .tbss too. in PT_LOAD consider + .tbss to have zero memory size. + (copy_private_bfd_data) [SECTION_SIZE]: Define. + [IS_CONTAINED_BY_VMA, IS_CONTAINED_BY_LMA]: Use it. + [INCLUDE_SECTION_IN_SEGMENT]: Only put SHF_TLS sections + into PT_TLS segment. Never put SHF_TLS sections in + segments other than PT_TLS or PT_LOAD. + + * elf64-alpha.c (elf64_alpha_finish_dynamic_sections): Clear .plt + sh_entsize. + +2002-12-23 DJ Delorie + + * coff64-rs6000.c (xcoff64_ppc_relocate_section): Fix logic reversal. + +2002-12-23 Alan Modra + + * elflink.h (elf_link_output_extsym): Heed strip_discarded. + +2002-12-23 Nick Clifton + + * archures.c (bfd_arch_get_compatible): Add third parameter + 'accept_unknowns'. Only accept unknown format BFDs if + accept_unknowns is true, or if the format is "binary". + * bfd-in2.h: Regenerate. + +2002-12-21 Nick Clifton + + * coff-arm.c (coff_arm_relocate_section): Disable WINCE workaround + that subtracted 8 from pc relative relocations. + +2002-12-20 Kazu Hirata + + * coff-h8300.c: Fix comment typos. + * coffcode.h: Likewise. + * cpu-cris.c: Likewise. + * elf32-vax.c: Likewise. + * genlink.h: Likewise. + * linker.c: Likewise. + * som.c: Likewise. + * tekhex.c: Likewise. + * vms-misc.c: Likewise. + +2002-12-20 DJ Delorie + + * reloc.c: Add BFD_RELOC_XSTORMY16_12. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + * elf32-xstormy16.c (xstormy16_elf_howto): Add R_XSTORMY16_12. + (xstormy16_reloc_map): Add R_XSTORMY16_12. + +2002-12-19 Kazu Hirata + + * doc/bfdint.texi: Fix typos. + +2002-12-20 Paul Eggert + + Port to POSIX 1003.1-2001. + * acinclude.m4 (AM_INSTALL_LIBBFD): Do not rely on "test -o". + * configure.in (build-warnings): Likewise. + (Horrible hacks to build DLLs on Windows): Do not rely on "tail -1". + * aclocal.m4: Regenerate. + * config.in: Regenerate. + * configure: Regenerate. + +2002-12-19 Alan Modra + + * coff-h8300.c: Include libiberty.h. + (h8300_reloc16_extra_cases): Check the hash table creator before + referencing h8300 specific fields. Stash the hash table pointer + in a local var. Comment typo fixes. + (h8300_bfd_link_add_symbols): Likewise. + + * reloc.c (struct reloc_howto_struct): Revise src_mask and + dst_mask comments. + * bfd-in2.h: Regenerate. + +2002-12-18 Alan Modra + + * elf32-ppc.c (ppc_elf_relocate_section): Reorganize dynamic reloc + code a little. Comment on dynamic relocs against section symbols. + +2002-12-17 Roger Sayle + + * configure.host (ia64-*-hpux*): Support 64 bit targets using + the HP compiler's "long long". + +2002-12-16 Andrew MacLeod + + * elf32-xstormy16.c (xstormy16_elf_howto): Add R_XSTORMY16_LO16 + and R_XSTORMY16_HI16) howto entries. + (xstormy16_reloc_map): Map R_XSTORMY16_{LO,HI}16 to BFD_RELOC_{LO,HI}16. + (xstormy16_info_to_howto_rela): Use R_XSTORMY16_GNU_VTINHERIT to + determine the start of the second reloc table. + +2002-12-16 Nathan Tallent + + * ecofflink.c: Fix the reading of the debugging information + of Tru64/Alpha binaries that are produced by recent Compaq + compilers. + (mk_fdrtab): Fix error in creating the FDR (file descriptor) + table. + (lookup_line): Because of the strange information sometimes + generated by Compaq's recent compilers, change how the FDR + table is searched so that PDRs (procedure descriptors) are + correctly found. Note that this change is really more of a hack; + however, I have included extensive documentation as to why + this is the best solution short of an extensive rewrite or + another hack. + (fdrtab_lookup): Add comments to explain the algorithm. + +2002-12-12 Alexandre Oliva + + * elf-m10300.c (elf32_mn10300_link_hash_newfunc): Reorder + initializers to match struct declaration. + +2002-12-12 Alan Modra + + * dwarf2.c (comp_unit_contains_address): Comment typo fix. + * elf.c (get_program_header_size): Likewise. + * elf32-m32r.c (m32r_elf_lo16_reloc): Likewise. + (m32r_elf_generic_reloc): Likewise. + * elf32-ppc.c (ppc_elf_howto_init): Likewise. + * elflink.h (elf_bfd_discard_info): Likewise. + +2002-12-12 Alan Modra + + * elf32-i386.c (elf_i386_finish_dynamic_sections): Add output_offset + to DT_JMPREL. Use srelplt input section size for DT_PLTRELSZ and + DT_RELSZ adjustment, not output section. Avoid writing tags when + unchanged. Don't assume linker script is sane, adjust DT_REL too. + * elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Just use raw + size of srelplt for DT_PLTRELSZ. Use srelplt input section size for + DT_RELASZ adjustment, not output section. Avoid writing tags when + unchanged. Adjust DT_RELA. + * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Tweaks for better + formatting. Avoid writing tags when unchanged. Adjust DT_RELA. + +2002-12-12 Alexandre Oliva + + * elfxx-mips.c (mips_elf_calculate_relocation): Don't divide + addend by 4. + +2002-12-12 Alexandre Oliva + + * elfxx-mips.c (struct mips_got_entry): New. + (struct mips_got_info): Added got_entries field. + (mips_elf_got_entry_hash, mips_elf_got_entry_eq): New functions. + (mips_elf_local_got_index, mips_elf_got_page, + mips_elf_got16_entry): Re-implement in terms of new... + (mips_elf_create_local_got_entry): Rewrite to use got_entries. + Change return type. + (mips_elf_highest): Warning clean-up. + (mips_elf_create_got_section): Initialize got_entries. + (_bfd_mips_elf_check_relocs): Use got_entries to estimate + local got size. + (_bfd_mips_elf_size_dynamic_sections): Do not account for + GOT_PAGE entries, since we now reuse GOT16 entries. + +2002-12-10 Jason Thorpe + + * aoutx.h (set_section_contents): Allow an otherwise unrepresentable + read-only section that lies after .text and before .data to be + written into the output file and included in a_text. + (translate_to_native_sym_flags): If an otherwise unrepresentable + section was merged with .text, convert its symbols to N_TEXT + symbols. + * libaout.h (aout_section_merge_with_text_p): New macro. + +2002-12-08 Alan Modra + + * bfd-in.h: Comment typo fix. Formatting. + * bfd-in2.h: Regenerate. + * coff64-rs6000.c (xcoff64_openr_next_archived_file): Warning fix. + * elf32-m68hc12.c (m68hc12_elf_set_mach_from_flags): Prototype. + * elf64-mmix.c (mmix_dump_bpo_gregs): Warning fix. + +2002-12-05 Richard Henderson + + * elfxx-ia64.c (elfNN_ia64_relax_section): Handle PCREL21BI. + Only send PCREL21B though the plt. Fix installed reloc type. + (elfNN_ia64_relocate_section): Give error for dynamic reloc + against PCREL22 or PCREL64I; clean up error messages for + branch relocs. + +2002-12-04 Kevin Buettner + + * elf64-mips.c (elf64_mips_grok_prstatus, elf64_mips_grok_psinfo): + New functions. + (elf_backend_grok_prstatus, elf_backend_grok_psinfo): Define. + +2002-12-04 David Mosberger + + * cpu-ia64-opc.c: Add operand constant "ar.csd". + +2002-12-04 H.J. Lu + + * elfxx-ia64.c (get_local_sym_hash): Use section ID instead of + BFD address when constructing local name. + +2002-12-04 Andreas Schwab + + * elf32-m68k.c (struct elf_m68k_link_hash_table): Add sym_sec + member. + (elf_m68k_link_hash_table_create): Initialize it. + (elf_m68k_check_relocs): Handle symbols that are forced to be + local due to visibility changes. + (elf_m68k_adjust_dynamic_symbol): Likewise. + (elf_m68k_size_dynamic_sections): Likewise. + (elf_m68k_discard_copies): Likewise. + (elf_m68k_relocate_section): Likewise. + +2002-12-04 Alan Modra + + * elf64-ppc.c (ppc64_elf_edit_opd): Correct typo. + +2002-12-04 Alan Modra + + * srec.c (srec_write_symbols): Restore '$' prefix to address + accidentally removed in 2002-04-04 change. + (srec_get_symtab): Use 0 instead of `(long) FALSE'. + +2002-12-03 Nick Clifton + + * elf32-ppc.c (apuinfo_list_init): New function. + (apuinfo_list_add): New function: Add a value to the list. + (apuinfo_list_length): New function: Return the number of + values on the list. + (apuinfo_list_element): New function: Return a value on the + list. + (apuinfo_list_finish): New function: Free the resources used + by the list. + (ppc_elf_begin_write_processing): New function. Scan the + input bfds for apuinfo sections. + (ppc_elf_write_section): New function: Delay the creation of + the contents of an apuinfo section in an output bfd. + (ppc_elf_final_write_processing): New function. Create the + contents of an apuinfo section in an output bfd. + (elf_backend_begin_write_processing): Define. + (elf_backend_final_write_processing): Define. + (elf_backend_write_section): Define. + +2002-12-03 Richard Henderson + + * cpu-ia64-opc.c (elf64_ia64_operands): Add ldxmov entry. + +2002-12-01 Stephane Carrez + + Fix PR savannah/1417: + * elf32-m68hc11.c (m68hc11_elf_relax_delete_bytes): Don't adjust + branch if it goes to the start of the deleted region. + +2002-12-01 Stephane Carrez + + * bfd-in2.h (bfd_mach_m6812): Rebuild. + * archures.c (bfd_mach_m6812_default, bfd_mach_m6812, + bfd_mach_m6812s): Declare. + + * elf32-m68hc12.c (m68hc12_elf_set_mach_from_flags): New function. + (_bfd_m68hc12_elf_set_private_flags): Call it. + (_bfd_m68hc12_elf_print_private_bfd_data): Report processor version. + (_bfd_m68hc12_elf_merge_private_bfd_data): Merge the flags and + report microcontroller incompatibilities (HC12 vs HCS12). + (elf_backend_object_p): Update. + +2002-11-30 Alan Modra + + * bfd-in.h (TRUE_FALSE_ALREADY_DEFINED, BFD_TRUE_FALSE): Delete. + (enum bfd_boolean, boolean): Delete. + (bfd_boolean): Typedef to an int. + (FALSE, TRUE): Define. + * aix386-core.c, aix5ppc-core.c, aout-adobe.c, aout-arm.c, aout-cris.c, + aout-encap.c, aout-ns32k.c, aout-target.h, aout-tic30.c, aoutf1.h, + aoutx.h, archive.c, archive64.c, archures.c, bfd-in.h, bfd.c, bfdwin.c, + binary.c, bout.c, cache.c, cisco-core.c, coff-a29k.c, coff-alpha.c, + coff-apollo.c, coff-arm.c, coff-aux.c, coff-h8300.c, coff-h8500.c, + coff-i386.c, coff-i860.c, coff-i960.c, coff-ia64.c, coff-m68k.c, + coff-m88k.c, coff-mcore.c, coff-mips.c, coff-or32.c, coff-ppc.c, + coff-rs6000.c, coff-sh.c, coff-sparc.c, coff-stgo32.c, coff-tic30.c, + coff-tic4x.c, coff-tic54x.c, coff-tic80.c, coff-w65.c, coff-we32k.c, + coff-z8k.c, coff64-rs6000.c, coffcode.h, coffgen.c, cofflink.c, + corefile.c, cpu-a29k.c, cpu-alpha.c, cpu-arc.c, cpu-arm.c, cpu-avr.c, + cpu-cris.c, cpu-d10v.c, cpu-d30v.c, cpu-dlx.c, cpu-fr30.c, cpu-frv.c, + cpu-h8300.c, cpu-h8500.c, cpu-hppa.c, cpu-i370.c, cpu-i386.c, + cpu-i860.c, cpu-i960.c, cpu-ia64.c, cpu-ip2k.c, cpu-m10200.c, + cpu-m10300.c, cpu-m32r.c, cpu-m68hc11.c, cpu-m68hc12.c, cpu-m68k.c, + cpu-m88k.c, cpu-mcore.c, cpu-mips.c, cpu-mmix.c, cpu-ns32k.c, + cpu-openrisc.c, cpu-or32.c, cpu-pdp11.c, cpu-pj.c, cpu-powerpc.c, + cpu-rs6000.c, cpu-s390.c, cpu-sh.c, cpu-sparc.c, cpu-tic30.c, + cpu-tic4x.c, cpu-tic54x.c, cpu-tic80.c, cpu-v850.c, cpu-vax.c, + cpu-w65.c, cpu-we32k.c, cpu-xstormy16.c, cpu-z8k.c, dwarf1.c, + dwarf2.c, ecoff.c, ecofflink.c, efi-app-ia32.c, efi-app-ia64.c, + elf-bfd.h, elf-eh-frame.c, elf-hppa.h, elf-m10200.c, elf-m10300.c, + elf-strtab.c, elf.c, elf32-arc.c, elf32-arm.h, elf32-avr.c, + elf32-cris.c, elf32-d10v.c, elf32-d30v.c, elf32-dlx.c, elf32-fr30.c, + elf32-frv.c, elf32-gen.c, elf32-h8300.c, elf32-hppa.c, elf32-hppa.h, + elf32-i370.c, elf32-i386.c, elf32-i860.c, elf32-i960.c, elf32-ip2k.c, + elf32-m32r.c, elf32-m68hc11.c, elf32-m68hc12.c, elf32-m68k.c, + elf32-mcore.c, elf32-mips.c, elf32-openrisc.c, elf32-or32.c, + elf32-pj.c, elf32-ppc.c, elf32-s390.c, elf32-sh.c, elf32-sh64-com.c, + elf32-sh64.c, elf32-sparc.c, elf32-v850.c, elf32-vax.c, + elf32-xstormy16.c, elf64-alpha.c, elf64-gen.c, elf64-hppa.c, + elf64-mips.c, elf64-mmix.c, elf64-ppc.c, elf64-ppc.h, elf64-s390.c, + elf64-sh64.c, elf64-sparc.c, elf64-x86-64.c, elfarm-nabi.c, + elfarm-oabi.c, elfcode.h, elfcore.h, elflink.c, elflink.h, + elfn32-mips.c, elfxx-ia64.c, elfxx-mips.c, elfxx-mips.h, + elfxx-target.h, format.c, freebsd.h, genlink.h, hash.c, hp300hpux.c, + hppabsd-core.c, hpux-core.c, i386aout.c, i386linux.c, i386lynx.c, + i386mach3.c, i386msdos.c, i386os9k.c, ieee.c, ihex.c, irix-core.c, + libaout.h, libbfd-in.h, libbfd.c, libcoff-in.h, libecoff.h, libieee.h, + libnlm.h, liboasys.h, libpei.h, libxcoff.h, linker.c, lynx-core.c, + m68klinux.c, m68klynx.c, mach-o.c, mach-o.h, merge.c, mipsbsd.c, + mmo.c, netbsd-core.c, netbsd.h, nlm.c, nlm32-alpha.c, nlm32-i386.c, + nlm32-ppc.c, nlm32-sparc.c, nlmcode.h, oasys.c, opncls.c, osf-core.c, + pc532-mach.c, pdp11.c, pe-arm.c, pe-i386.c, pe-mcore.c, pe-mips.c, + pe-sh.c, peXXigen.c, pef.c, pei-arm.c, pei-i386.c, pei-mcore.c, + pei-mips.c, pei-sh.c, peicode.h, ppcboot.c, ptrace-core.c, reloc.c, + reloc16.c, riscix.c, rs6000-core.c, sco5-core.c, section.c, simple.c, + som.c, som.h, sparclinux.c, sparclynx.c, srec.c, stabs.c, sunos.c, + syms.c, targets.c, tekhex.c, ticoff.h, trad-core.c, versados.c, + vms-gsd.c, vms-hdr.c, vms-misc.c, vms-tir.c, vms.c, vms.h, + xcoff-target.h, xcofflink.c, xsym.c, xsym.h: Replace boolean with + bfd_boolean, true with TRUE, false with FALSE. Simplify comparisons + of bfd_boolean vars with TRUE/FALSE. Formatting. + * bfd-in2.h, libbfd.h, libcoff.h: Regenerate + +2002-11-28 Alan Modra + + * elf-bfd.h: Replace occurrences of Elf32_Internal_* and + Elf64_Internal_* with Elf_Internal_*. Replace Elf_Internal_Rel + with Elf_Internal_Rela. + * elf-hppa.h, elf-m10200.c, elf-m10300.c, elf32-arc.c, elf32-arm.h, + elf32-avr.c, elf32-cris.c, elf32-d10v.c, elf32-d30v.c, elf32-dlx.c, + elf32-fr30.c, elf32-frv.c, elf32-gen.c, elf32-h8300.c, elf32-hppa.c, + elf32-i370.c, elf32-i386.c, elf32-i860.c, elf32-i960.c, elf32-ip2k.c, + elf32-m32r.c, elf32-m68hc11.c, elf32-m68hc12.c, elf32-m68k.c, + elf32-mcore.c, elf32-mips.c, elf32-openrisc.c, elf32-or32.c, + elf32-ppc.c, elf32-s390.c, elf32-sh.c, elf32-v850.c, elf32-vax.c, + elf32-xstormy16.c, elf64-alpha.c, elf64-gen.c, elf64-hppa.c, + elf64-mips.c, elf64-mmix.c, elf64-ppc.c, elf64-s390.c, elf64-sh64.c, + elf64-sparc.c, elf64-x86-64.c, elfarm-nabi.c, elfarm-oabi.c, + elfcode.h, elflink.h, elfn32-mips.c, elfxx-ia64.c, elfxx-mips.c: Ditto. + * elf-hppa.h (elf_hppa_internal_shdr): Delete. Use Elf_Internal_Shdr + throughout instead. + * elf.c (_bfd_elf_no_info_to_howto_rel): Delete. + * elfcode.h (elf_swap_reloca_in): Pass source operand as a bfd_byte *. + Remove INLINE keyword. + (elf_swap_reloc_in): Likewise. Also clear r_addend. + (elf_swap_reloc_out, elf_swap_reloca_out): Pass destination operand + as a bfd_byte *. + (elf_write_relocs): Consolidate REL and RELA code. + (elf_slurp_reloc_table_from_section): Simplify REL code. + (NAME(_bfd_elf,size_info)): Populate reloc swap entries. + * elf-bfd.h (MAX_INT_RELS_PER_EXT_REL): Define. + * elflink.h (elf_link_read_relocs_from_section): Consolidate REL and + RELA code. + (elf_link_adjust_relocs): Likewise. Don't malloc space for temp + reloc array, use a fixed size of MAX_INT_RELS_PER_EXT_REL. + (elf_link_output_relocs): Likewise. + (elf_reloc_link_order): Likewise. + (elf_finish_pointer_linker_section): Likewise. + (struct elf_link_sort_rela): Remove union. + (elf_link_sort_cmp1): Update to suit. + (elf_link_sort_cmp2): Here too. + (elf_link_sort_relocs): Consolidate REL and RELA code. Fix memory + over-allocation for int_rels_per_ext_rel != 1 case. + * elf32-arm.h: Update all bfd_elf32_swap_reloc_out calls. + * elf32-i386.c: Likewise. + * elf32-cris.c: Likewise for bfd_elf32_swap_reloca_out. + * elf32-hppa.c, elf32-i370.c, elf32-m68k.c, elf32-ppc.c, elf32-s390.c, + elf32-sh.c, elf32-vax.c, elfxx-mips.c: Likewise. + * elf64-alpha.c: Likewise for bfd_elf64_swap_reloca_out. + * elf64-hppa.c, elf64-mips.c, elf64-ppc.c, elf64-s390.c, elf64-sh64.c, + elf64-sparc.c, elf64-x86-64.c: Likewise. + * elfxx-ia64.c: Likewise for bfd_elfNN_swap_reloca_out. + * elfxx-mips.c (sort_dynamic_relocs): Likewise for + bfd_elf32_swap_reloc_in. + + * elf32-arm.h: Update elf32_arm_info_to_howto calls. + * elf32-mips.c: Likewise for mips_info_to_howto_rel. + (mips_elf64_swap_reloc_in): Zero r_addend. + (mips_elf64_be_swap_reloc_in): Likewise. + (mips_elf64_slurp_one_reloc_table): Simplify. + + * elf64-alpha.c (alpha_elf_size_info): Populate reloc swap entries. + * elf64-hppa.c (hppa64_elf_size_info): Likewise. + * elf64-sparc.c (sparc64_elf_size_info): Likewise. + +2002-11-28 Kaz Kojima + + * elf32-sh.c (sh_elf_relocate_section): Don't complain about + unresolved debugging relocs in dynamic applications. + * elf64-sh64.c (sh_elf64_relocate_section): Likewise. + +2002-11-26 Alan Modra + + * elf-eh-frame.c (ENSURE_NO_RELOCS): Disregard R_*_NONE relocs. + (_bfd_elf_discard_section_eh_frame): Don't discard duplicate CIEs + on a relocatable link. Comment typos. + * elf.c (_bfd_elf_link_hash_newfunc): Assign elements of structure + in the order they are declared. Clear elf_hash_value too. + (_bfd_elf_link_hash_table_init): Likewise assign in order. Clear + eh_info and tls_segment. + * elflink.h (elf_link_input_bfd ): Keep reloc offsets + sorted when discarding relocs by turning them into R_*_NONE. + + * libbfd.c (warn_deprecated): Comment spelling. + * po/SRC-POTFILES.in: Regenerate. + +2002-11-21 Richard Henderson + + * elflink.h (elf_link_add_object_symbols): Don't overwrite the + arch's st_other bits when merging visibilities. + (elf_link_output_extsym): Tidy clearing of visibility field. + +2002-11-21 Alan Modra + + * coff-mcore.c (SWAP_IN_RELOC_OFFSET): Define. + (SWAP_OUT_RELOC_OFFSET): Define. + +2002-11-20 Alexandre Oliva + + * elf.c (_bfd_elf_link_hash_table_init): Make sure + can_refcount is properly extended to the type of + init_refcount. + +2002-11-19 Alexandre Oliva + + * elfxx-mips.c (MIPS_RELOC_RELA_P): New macro. + (_bfd_mips_elf_relocate_section): Use it. + + * elfxx-mips.c (MNAME): New macro. + (_bfd_mips_elf_check_relocs): Use it. + (_bfd_mips_elf_discard_info): Likewise. + (_bfd_mips_elf_final_link): Likewise. + +2002-11-19 Alan Modra + + * elf64-ppc.c (ppc64_elf_edit_opd): When deleting relocs, adjust + rel_hdr.sh_size too. + +2002-11-18 Klee Dienes + + * Makefile.am (BFD32_LIBS): Add bfdwin.lo, bfdio.lo. + (BFD32_LIBS_CFILES): Add bfdwin.c, bfdio.c. + (BFD_H_FILES): Add bfdwin.c, bfdio.c. + (LIBBFD_H_FILES): Add bfdwin.c, bfdio.c. + Add dependencies for bfdwin.c, bfdio.c. + * bfd.c: Remove bfd_get_mtime, bfd_get_size. + * libbfd.c: Remove real_read, bfd_bread, _bfd_window_internal, + bfd_init_window, bfd_free_window, bfd_get_file_window, bfd_bwrite, + bfd_tell, bfd_flush, bfd_stat, bfd_seek. + * bfdio.c: New file. Contains real_read, bfd_bread, bfd_write, + bfd_tell, bfd_flush, bfd_stat, bfd_seek, bfd_ge_mtime, + bfd_get_size (moved from libbfd.c and bfd.c). + * bfdwin.c New file. Contains _bfd_window_internal, + bfd_init_window, bfd_free_window, bfd_get_file_window (moved from + libbfd.c and bfd.c). + * po/SRC-POTFILES.in: Regenerate. + * po/bfd.pot: Regenerate. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + * aclocal.m4: Regenerate. + * Makefile.in: Regenerate. + * configure: Regenerate. + +2002-11-18 Klee Dienes + + * bfd.c (bfd_preserve_save): Don't zero BFD_IN_MEMORY. + +2002-11-15 Kazu Hirata + + * coff-h8300.c (h8300_reloc16_estimate): Do not optimize away + jsr after a short jump. + * elf32-h8300.c (elf32_h8_relax_section): Likewise. + +2002-11-15 Klee Dienes + + * pef.c (bfd_pef_convert_architecture): Move declaration of + ARCH_POWERPC and ARCH_M68K to the start of the function. + +2002-11-14 Svein E. Seldal + + * coff-tic4x.c (tic4x_howto_table): Formatting fixup + +2002-11-14 Hans-Peter Nilsson + + * elf64-mmix.c (_bfd_mmix_finalize_linker_allocated_gregs): + For bpo_gregs_section->contents, allocate _raw_size, not + _cooked_size. + +2002-11-13 Klee Dienes + + * config.bfd: Add entries for powerpc-*-darwin and cousins. + +2002-11-13 H.J. Lu + + * elfcode.h (elf_object_p): Don't restore abfd->arch_info. + +2002-11-13 Klee Dienes + Alan Modra + + * bfd.c (struct bfd_preserve): New. + (bfd_preserve_save): New function. + (bfd_preserve_restore): Ditto. + (bfd_preserve_finish): Ditto. + * bfd-in2.h: Regenerate. + * mach-o.c: Formatting. + (bfd_mach_o_scan_read_symtab_symbol): Make "value" unsigned. + (bfd_mach_o_object_p): Use bfd_preserve_save/restore/finish. + (bfd_mach_o_core_p): Ditto. + (bfd_mach_o_scan): Pass in mdata. + * mach-o.h (bfd_mach_o_scan): Update prototype. + * pef.c: Formatting. + (bfd_pef_object_p): Use bfd_preserve_save/restore/finish. + (bfd_pef_xlib_object_p): Ditto. + (bfd_pef_scan): Pass in mdata. Move version check to bfd_pef_object_p. + * pef.h (bfd_pef_scan): Update prototype. + * xsym.c: Formatting, K&R fixes. + (bfd_sym_object_p): Use bfd_preserve_save/restore/finish. + (bfd_sym_scan): New function split out from bfd_sym_object_p. + * xsym.h (bfd_sym_scan): Declare. + * elfcode.h (elf_object_p): Use bfd_preserve_save/restore/finish. + * elfcore.h (elf_core_file_p): Likewise. + * targets.c (_bfd_target_vector): Revert 2002-11-08 change. + +2002-11-12 Nick Clifton + + * po/da.po: Updated Danish translation. + +2002-11-12 Alan Modra + + * elflink.h (elf_link_add_object_symbols): Optimize stabs for + relocatable link too. + (elf_link_input_bfd): When emitting relocs, adjust offsets for + eh_frame and stab sections. Zap deleted relocs. + (elf_reloc_symbol_deleted_p): Return true for zero r_symndx. + (elf_bfd_discard_info): Run for relocatable link too. + * elf64-ppc.c (ppc64_elf_edit_opd): Rename from edit_opd. Make global. + Handle ld -r case. + (ppc64_elf_size_dynamic_sections): Don't call edit_opd from here. + * elf64-ppc.h (ppc64_elf_edit_opd): Declare. + + * elf-bfd.h (struct cie_header): Move from elf_eh-frame.c. + (struct cie, struct eh_cie_fde, struct eh_frame_sec_info): Likewise. + (struct eh_frame_array_ent, struct eh_frame_hdr_info): Likewise. + (enum elf_link_info_type): Remove ELF_INFO_TYPE_EH_FRAME_HDR. + (struct eh_frame_hdr_info): Add "hdr_sec", remove "split". + (struct elf_link_hash_table): Add eh_info. + (struct elf_obj_tdata): Change eh_frame_hdr to an asection *. + (_bfd_elf_discard_section_eh_frame): Update prototype. + (_bfd_elf_discard_section_eh_frame_hdr): Likewise. + (_bfd_elf_write_section_eh_frame): Likewise. + (_bfd_elf_write_section_eh_frame_hdr): Likewise. + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Remove "ehdrsec" + param. Get "hdr_info" from link hash table. + (_bfd_elf_discard_section_eh_frame_hdr): Remove "sec" param. Get + header section from link hash table. Save header section to elf_tdata. + (_bfd_elf_maybe_strip_eh_frame_hdr): Remove local "sec". Use + header section from link hash table. Don't alloc hdr_info. Clear + hdr_sec instead of setting "strip". + (_bfd_elf_eh_frame_section_offset): Formatting. + (_bfd_elf_write_section_eh_frame): Remove "ehdrsec", add "info" param. + Get header section from link hash table. + (_bfd_elf_write_section_eh_frame_hdr): Remove "sec", add "info" param. + Get header section from link hash table. + * elf.c (map_sections_to_segments): Use cached eh_frame_hdr. + (get_program_header_size): Likewise. + (_bfd_elf_section_offset): Formatting. + * elflink.h (elf_link_create_dynamic_sections): Stash eh frame header + section pointer in link hash table. + (elf_bfd_final_link): Adjust _bfd_elf_write_section_eh_frame_hdr + and _bfd_elf_write_section_eh_frame calls. Update comment about + eh_frame entries. + (elf_bfd_discard_info): Adjust _bfd_elf_discard_section_eh_frame and + _bfd_elf_discard_section_eh_frame_hdr calls. Remove "ehdr". + + * po/SRC-POTFILES.in: Regenerate. + + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't zero + relocs for discarded FDEs. Remove dead code. + (_bfd_elf_write_section_eh_frame_hdr): Remove dead code. + * elflink.h (elf_bfd_discard_info): Don't save edited relocs. + Tidy conditions under which stabs are edited. Formatting. + * elf64-sparc.c (sparc64_elf_relocate_section): Ignore overflows + from discarded relocs. + * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Add reloc output + section adjustments after testing magic values. + +2002-11-12 Thomas Moestl + + * elf64-sparc.c (sparc64_elf_adjust_dynamic_symbol): Correct + references to large plt symbols. + +2002-11-12 Klee Dienes + + * mach-o.c (bfd_mach_o_scan_read_thread): Don't re-use 'i' when + looking for an unused section name. + +2002-11-11 Kazu Hirata + + * coff-h8300.c: Fix formatting. + * elf32-h8300.c: Likewise. + * reloc16.c: Likewise. + +2002-11-09 Jeroen Dobbelaere + + * elf32-arm.h (elf32_arm_size_dynamic_sections): Don't strip output + section when dynamic section unused; _bfd_strip_section_from_output + instead. + +2002-11-08 Alan Modra + + * targets.c (_bfd_target_vector): Disable pef_vec, pef_xlib_vec + and sym_vec. + + * dwarf2.c: Revert last change. + +2002-11-07 Michal Ludvig + + * dwarf2.c (read_indirect_string, read_abbrevs, decode_line_info, + _bfd_dwarf2_find_nearest_line): Use + bfd_simple_get_relocated_section_contents() instead of + bfd_get_section_contents(). + * reloc.c (bfd_perform_relocation): Add sanity check. + * simple.c (simple_get_relocated_section_contents): If the section + does not have any relocs associated with it, just return the + unadjusted contents. + +2002-11-07 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section) : Correct test for filling in constant .got + contents, enabling for a non-DSO, for symbols defined in the + program with --export-dynamic. + +2002-11-07 Alan Modra + + * elf64-ppc.c: Comment typo fixes. + (ppc64_elf_merge_private_bfd_data): Allow BFD_ENDIAN_UNKNOWN input. + +2002-11-07 Nick Clifton + + * po/da.po: Updated Danish translation. + +2002-11-06 Alexandre Oliva + + * elf64-mips.c (mips_elf64_slurp_one_reloc_table): Generate + exactly three internal relocs per external reloc. Set reloc_count + to the external reloc count. + +2002-11-06 Klee Dienes + + * coff-stgo32.c (stub_bytes): Mark as const. + Fix comment formatting. + +2002-11-06 Klee Dienes + + * Makefile.am (BFD32_BACKENDS): Add mach-o.lo, pef.lo, and + xsym.lo. + (BFD32_BACKENDS_CFILES): Add mach-o.c, pef.c, and xsym.c. + (SOURCE_HFILES): Add mach-o.h, pef.h, pef-traceback.h, xsym.h + * archures.c (enum bfd_architecture): Add bfd_arch_m98k. + * bfd.c (struct bfd): Add private data for mach-o, pef, and sym. + * targets.c (enum bfd_flavour): Add flavours for mach-o, pef, and + sym. + (_bfd_target_vector): Add target vectors for mach-o, pef, and sym. + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + * bfd-in2.h: Regenerate. + * xsym.c: New file. Contains support for the Apple/Metrowerks + xSYM debugging format. + * xsym.h: New file. + * pef.c: New file. Contains support for the Apple Code Fragment + Manager Preferred Executable Format + * pef.h: New file. + * pef-traceback.h: New file. Contains support for parsing PowerPC + traceback tables as used by PEF executables (and perhaps other + systems as well). + * mach-o.c: New file. Contains support for the Mach-O object file + format. + * mach-o.h: New file. + * mach-o-target.c: New file. Declares the mach-o targets + themselves. Included three times by mach-o.c; each time with a + different set of macros set. + +2002-11-06 Graeme Peterson + + * Makefile.am: Remove entries for elf32-qnx.[ch]. + * Makefile.in: Regenerate. + * config.bfd: Change arm-nto to use bfd_elf32_{big|little}arm_vec, + ppc-nto to use bfd_elf32_powerpc{le}_vec, sh-nto to use + bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec. + * configure.in: Remove support for bfd_elf32_sh{l}qnx_vec, + bfd_elf32_powerpc{le}qnx_vec, bfd_elf32_{big|little}armqnx_vec, + and bfd_elf32_i386qnx_vec, and removed elf32-qnx.lo from other targets. + bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec. + * configure: Regenerate. + * elf32-qnx.c: Remove. + * elf32-qnx.h: Remove. + * elf.c: Remove calls to QNX specific set_nonloadable_filepos, + is_contained_by_filepos, and copy_private_bfd_data_p. + * elf-bfd.h (struct elf_backend_data): Remove set_nonloadable_filepos, + is_contained_by_filepos, and copy_private_bfd_data_p. + * elf32-i386.c: Remove QNX extended bfd support. + * elf32-ppc.c: Remove QNX extended bfd support. + * elf32-sh.c: Remove QNX extended bfd support. + * elfarm-nabi.c: Remove QNX extended bfd support. + * targets.c: Remove qnx vectors. + * elfxx-target.h (elf_backend_set_nonloadable_filepos): Remove + (elf_backend_is_contained_by_filepos): Remove. + (elf_backend_copy_private_bfd_data_p): Remove. + * po/SRC-POTFILES.in: Regenerate. + +2002-11-06 David O'Brien + Alan Modra + + * elf64-sparc.c (sparc64_elf_relocate_section): Adjust addend of + dynamic relocs against section symbols for the output section vma. + +2002-11-05 Alan Modra + + * elf32-arm.h (t2a1_push_insn, t2a2_ldr_insn, t2a3_mov_insn, + t2a4_bx_insn, t2a5_pop_insn, t2a6_bx_insn): Remove. + +2002-11-05 Kaz Kojima + Alan Modra + + * config.bfd (sh-*-linux*): Use bfd_elf*_sh64*lin_vec as sh64 + vectors in target_selvecs. + (shle-*-netbsdelf*): Use bfd_elf*_sh64*nbsd_vec as sh64 vectors + in target_selvecs. + (sh-*-netbsdelf*): Likewise. + * configure.in (assocvecs): New variable. Handle assocvecs like + selvecs. + * configure: Regenerate. + * format.c (bfd_check_format_matches): Store bfd_target pointers + in matching_vector instead of target names. Select first target + from bfd_associated_vector that matches a list of ambiguous targets. + * targets.c (_bfd_associated_vector): New array. + (bfd_associated_vector): New variable. + (_bfd_target_vector): Add bfd_elf*_sh64*lin_vec. + * libbfd-in.h (bfd_associated_vector): Declare. + * libbfd.h: Regenerate. + +2002-11-05 Elias Athanasopoulos + + * vms-gsd.c (_bfd_vms_write_gsd): Check that symbol->udata.p is + non-NULL before dereferencing. + +2002-11-04 Kaz Kojima + + * vms.c (vms_object_p): Restore the start address when returning + NULL. + +2002-11-04 Alan Modra + Hans-Peter Nilsson + + * elflink.h (struct elf_final_link_info): Add shndxbuf_size. + (elf_bfd_final_link): Don't bother zeroing symtab_hdr fields. + Set up a larger symshndxbuf, and write it out. Free it on + exit rather than freeing symbuf twice. Correct section index + on output section symbol loop. + (elf_link_output_sym): Accumulate symbol extension section + indices, reallocating symshndxbuf rather than writing it out. + (elf_link_flush_output_syms): Don't flush symshndxbuf. + * elf.c (assign_section_numbers): Init i_shdrp to all zero. + Use bfd_zalloc to clear i_shdrp[0] too. + +2002-11-03 Stephen Clarke + + * elf32-sh64-com.c (sh64_address_in_cranges): Use + _raw_size of cranges section if _cooked_size not yet set. + +2002-11-03 Hans-Peter Nilsson + + * elf32-v850.c (v850_elf_relax_delete_bytes): Correct parameters + for bfd_elf32_swap_symbol_out. + +2002-10-31 David O'Brien + + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't mix + signed and unsigned in comparison. + +2002-10-30 Daniel Jacobowitz + + * coffcode.h: Remove extraneous '\'. + +2002-10-28 H.J. Lu + + * Makefile.am (targets.lo): Depend on Makefile instead of + config.status. + (archures.lo): Likewise. + * Makefile.in: Regenerated. + +2002-10-25 Jason Thorpe + + * config.bfd (mips*el-*-netbsd*, mips*-*-netbsd*): Add + bfd_elf64_bigmips_vec and bfd_elf64_littlemips_vec to + targ_selvecs. + +2002-10-25 Jim Wilson + + * elf64-sh64.c (sh_elf64_relocate_section): Call + _bfd_elf_rela_local_sym. Handle relocs against STT_SECTION symbol + of SHF_MERGE section. + +2002-10-25 Hans-Peter Nilsson + + * simple.c: Correct placement of ATTRIBUTE_UNUSED. + +2002-10-24 John David Anglin + + * aoutx.h (NAME(aout,swap_ext_reloc_in)): Cast bytes->r_index to + unsigned int. Cast RELOC_BASE10, RELOC_BASE13 and RELOC_BASE22 to + unsigned int. + (NAME(aout,final_link)): Cast enum used in assignment. + (aout_link_write_symbols): Cast enums in comparisons, int values to + boolean, enums in assignments to int. + (aout_link_input_section_std): Cast rel->r_index to unsigned int. + (aout_link_input_section_ext): Likewise. Cast enums used in + comparisons with unsigned ints. + (aout_link_reloc_link_order): Cast enum to int in assignment. + * archive.c (_bfd_generic_read_ar_hdr_mag): Cast result of memchr + calls to char *. + * bfd-in.h (bfd_set_section_vma): Cast enum true to unsigned int in + assignment. + * bfd-in2.h (bfd_set_section_vma): Likewise. + * bfd.c (bfd_record_phdr): Cast enums in assignments. + * binary.c (bfd_alloc): Cast enum to long. + * coffgen.c (_bfd_coff_is_local_label_name): Cast return to boolean. + * dwarf2.c (read_abbrevs): Add casts to enum types. + (read_attribute_value): Likewise. + (arange_add): Cast result of bfd_zalloc call. + (comp_unit_contains_address): Return true and false. + (comp_unit_find_nearest_line): Cast return to boolean. + * format.c (bfd_check_format_matches, bfd_set_format): Likewise. + * gen-aout.c: define macro '_' if not defined. + * libbfd.c (bfd_realloc): Cast malloc and realloc to PTR. + (bfd_bwrite): Cast bfd_realloc to bfd_byte *. + (bfd_write_bigendian_4byte_int): Cast return to boolean. + (bfd_seek): Cast bfd_realloc to bfd_byte *. + (bfd_generic_is_local_label_name): Cast return to boolean. + * libcoff.h (_bfd_coff_adjust_symndx): Remove extraneous '\'. + * linker.c (_bfd_link_hash_newfunc): Cast bfd_hash_allocate result to + struct bfd_hash_entry *. + (_bfd_generic_link_hash_newfunc): likewise. + (_bfd_generic_final_link): Cast enum to unsigned int. + * merge.c (sec_merge_emit): Cast return to boolean. + (merge_strings): Add casts to const unsigned char *. + * reloc.c (bfd_get_reloc_code_name): Cast enums in comparison to int. + (bfd_generic_get_relocated_section_content): Cast enum to unsigned int. + * section.c (bfd_section_hash_newfunc): Cast bfd_hash_allocate result + to struct bfd_hash_entry *. + (bfd_set_section_content): Add cast to PTR in comparison. + * simple.c (simple_dummy_warning, simple_dummy_undefined_symbol, + simple_dummy_reloc_overflow, simple_dummy_reloc_dangerous, + simple_dummy_unattached_reloc, + bfd_simple_get_relocated_section_contents): Add K&R declarations and + function definitions. + * srec.c (S3Forced): Initialize to false. + (srec_get_symtab): Cast return value from bfd_alloc to asymbol *. + * stabs.c (_bfd_link_section_stabs): Cast enum to int in comparisons. + (_bfd_discard_section_stabs): Likewise. Also cast return to boolean. + * syms.c (bfd_is_undefined_symclass): Cast return to boolean. + (_bfd_stab_section_find_nearest_line): Cast enum to bfd_byte in + comparisons. + +2002-10-23 Jakub Jelinek + + * elf64-alpha.c (elf64_alpha_check_relocs): Only put maybe_dynamic + relocs into shared lib non-allocated reloc sections. + +2002-10-23 Nathan Tallent + + * dwarf2.c (add_line_info): Ensure that the line_info_table is + sorted even when given an out-of-order line sequence. + (lookup_address_in_line_info_table): When an exact VMA match is + not found, return line information with the closest VMA. + +2002-10-23 Ross Alexander + + * elf64-hppa.c: Force DT_FLAGS to always be set. Required by + HPUX 11.00 patch PHSS_26559. + +2002-10-22 Alexandre Oliva + + * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Don't move + the options section into a separate section unless IRIX 6 + compatibility is enabled. + +2002-10-22 Alexandre Oliva + + * elflink.h (struct elf_link_sort_rela): Turn rel and rela + into arrays. + (elf_link_sort_cmp1, elf_link_sort_cmp2): Adjust. + (elf_link_sort_relocs): Likewise. Take int_rels_per_ext_rel + into account. + * elfxx-mips.c (mips_elf_create_dynamic_relocation): Compose + R_MIPS_REL32 with R_MIPS64 if ABI_64_P. + +2002-10-21 Graeme Peterson + + * targets.c (_bfd_target_vector): Add missing qnx vectors. + +2002-10-21 Alan Modra + + * targets.c (bfd_target_list): Don't return the default target twice. + +2002-10-21 Elias Athanasopoulos + + * archive.c (_bfd_archive_bsd_update_armap_timestamp): Replace + perror with bfd_perror. + +2002-10-19 H.J. Lu + + * elflink.h (elf_link_add_object_symbols): Correctly handle + DT_RPATH and DT_RUNPATH. + +2002-10-19 Mark Kettenis + + * elf.c (elfcore_grok_note): Fix recognition on NT_PRXFPREG notes. + +2002-10-17 Denis Chertykov + + * elf32-ip2k.c (ELF_MACHINE_ALT1): Define alternate machine code + for ip2k port. + +2002-10-17 Alan Modra + + * elfxx-target.h (USE_REL): Don't define as 1. + * elf32-arm.h (USE_REL): Provide a default define of 0. + Use #if rather than #ifdef when testing USE_REL. + * elf32-m32r.c: Likewise. + + * elf32-arc.c (USE_REL): Define as 1. + * elf32-d10v.c (USE_REL): Likewise. + * elf32-m32r.c (USE_REL): Likewise. + * elf32-m68hc11.c (USE_REL): Likewise. + * elf32-m68hc12.c (USE_REL): Likewise. + * elf32-or32.c (USE_REL): Likewise. + * elfarm-nabi.c (USE_REL): Likewise. + +2002-10-16 Jakub Jelinek + + * config.bfd (s390-*-linux*): Add targ64_selvecs. + (s390x-*-linux*): Add targ_selvecs. + +2002-10-16 Alan Modra + + * Makefile.am (BFD32_BACKENDS): Remove elfarmqnx-nabi.lo, + elf32-i386-fbsd.lo, elf32-i386qnx.lo, elf32-ppcqnx.lo, + elf32-sh-lin.lo, elf32-sh64-lin.lo, elf32-sh-nbsd.lo, + elf32-sh64-nbsd.lo, elf32-shqnx.lo. Add elf32-qnx.lo. + (BFD32_BACKENDS_CFILES): Likewise for corresponding C files. + (BFD64_BACKENDS): Remove elf64-sh64-lin.lo, elf64-sh64-nbsd.lo. + (BFD64_BACKENDS_CFILES): Likewise for corresponding C files. + (SOURCE_HFILES): Add elf32-qnx.h. + (BUILD_HFILES): Add bfdver.h. + Run "make dep-am". + * Makefile.in: Regenerate. + * configure.in Update bfd vector dependencies. + * configure: Regenerate. + * elf32-i386-fbsd.c: Delete. Move code to elf32-i386.c. + * elf32-i386qnx.c: Likewise. + * elf32-ppcqnx.c: Delete. Move code to elf32-ppc.c. + * elf32-sh-nbsd.c: Delete. Move code to elf32-sh.c. + * elf32-sh-lin.c: Likewise. + * elf32-shqnx.c: Likewise. + * elf32-sh64-lin.c: Delete. Move code to elf32-sh64.c. + * elf32-sh64-nbsd.c: Likewise. + * elf64-sh64-lin.c: Delete. Move code to elf64-sh64.c. + * elf64-sh64-nbsd.c: Likewise. + * elfarmqnx-nabi.c: Delete. Move code to elfarm-nabi.c. + * elf32-arm.h (ELF_MAXPAGESIZE): Always define. + * elf32-i386.c: Remove ELF_ARCH and ELF32_I386_C_INCLUDED tests. + * elf32-ppc.c: Remove ELF32_PPC_C_INCLUDED tests. + * elf32-qnx.h (elf_backend_set_nonloadable_filepos): Always define. + (elf_backend_is_contained_by_filepos): Likewise. + (elf_backend_copy_private_bfd_data_p): Likewise. + Globalize and move functions to.. + * elf32-qnx.c: ..here. New file. + * elf32-sh.c: Remove ELF_ARCH and ELF32_SH_C_INCLUDED tests. Don't + emit target vectors when INCLUDE_SHMEDIA. + * elf32-sh64.c: Remove ELF_ARCH test. Move TARGET_* etc. defines to + end of file. + * elf64-sh64.c: Remove ELF_ARCH test. + * elfarm-nabi.c: Remove ELFARM_NABI_C_INCLUDED test. + * po/BLD-POTFILES.in: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + +2002-10-16 Alan Modra + + * elflink.h (elf_link_add_object_symbols): Error out on dynamic objects + loaded with --just-symbols. + + * elf32-i386qnx.c (TARGET_LITTLE_NAME): Define. + * elf32-ppcqnx.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define. + * elf32-shqnx.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define. + * elfarmqnx-nabi.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define. + +2002-10-15 Richard Henderson + + * Makefile.am (BFD64_BACKENDS): Remove elf64-alpha-fbsd. + (BFD64_BACKENDS_CFILES): Likewise. + * configure.in (bfd_elf64_alpha_freebsd_vec): Use elf64-alpha. + * elf64-alpha-fbsd.c: Remove file, move code ... + * elf64-alpha.c: ... here. + * Makefile.in, configure: Rebuild. + +2002-10-14 Richard Henderson + + * elf64-alpha.c (elf64_alpha_relocate_section) [BRSGP]: Increment + VALUE, not ADDEND. + +2002-10-14 Stephen Clarke + + * elf32-sh.c (elf_sh_link_hash_entry): Replace + datalabel_got_offset with union of datalabel_got + offset and refcount. + (sh_elf_link_hash_newfunc): Initialize datalabel_got.refcount. + (allocate_dynrelocs): Delete unnecessary code for + STT_DATALABEL type. Create entry in got for + datalabel version of symbol if datalabel_got.refcount > 0. + (sh_elf_relocate_section): Use datalabel_got union. + (sh_elf_gc_sweep_hook): Pull common code to initialize + h and eh out of switch statement. Declare seen_stt_datalabel. + Initialize it. Decrement datalabel_got.refcount for + got relocs when seen_stt_datalabel is true. + Decrement local_got_refcounts entry for datalabel got relocs + of local symbols. + (sh_elf_copy_indirect_symbol): Copy datalabel_got field over. + (sh_elf_check_relocs): Declare seen_stt_datalabel. + Initialize it. When seen_stt_datalabel is true, increment + datalabel_got refcount rather than got.refcount. + (sh_elf_finish_dynamic_symbol): Create relocs to + initialize got entry for datalabel version of symbol. + +2002-10-14 Alan Modra + + * Makefile.am: Run "make dep-am". + (BFD_H_FILES): Remove version.h. + * bfd-in.h (BFD_VERSION, BFD_VERSION_DATE, BFD_VERSION_STRING): Move.. + * version.h: ..to here. + * configure.in (bfd_version_date): Remove. + (AC_OUTPUT): Make bfdver.h from version.h. + * bfd.c: #include "bfdver.h". + * vms-hdr.c: Likewise. + * Makefile.in: Regenerate. + * bfd-in2.h: Regenerate. + * configure: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + +2002-10-14 Alan Modra + + * archures.c (bfd_mach_i386_i386, bfd_mach_i386_i8086, + bfd_mach_i386_i386_intel_syntax, bfd_mach_x86_64, + bfd_mach_x86_64_intel_syntax bfd_mach_ppc, bfd_mach_ppc64, + bfd_mach_rs6k, bfd_mach_d10v, bfd_mach_sh, bfd_mach_v850, + bfd_mach_arc_5, bfd_mach_arc_6, bfd_mach_arc_7, bfd_mach_arc_8, + bfd_mach_m32r, bfd_mach_frv, bfd_mach_frvsimple, + bfd_mach_ia64_elf64, bfd_mach_ia64_elf32, + bfd_mach_ip2022, bfd_mach_ip2022ext, + bfd_mach_s390_31, bfd_mach_s390_64, bfd_mach_xstormy16): Renumber. + * bfd-in2.h: Regenerate. + +2002-10-14 Kaz Kojima + + * config.bfd (sh*eb-*-linux*, sh*-*-linux*): Add the alternative + endian vector to targ_selvecs. + +2002-10-13 Alexandre Oliva + + * elfxx-mips.c (mips_elf_calculate_relocation): Take + save_addend argument. Don't apply the 32-bit mask to a + GPREL32 value if it's to be used in another relocation. Don't + use forced-check computation of local_p to decide whether to + add gp0 to GPREL16 value. Don't use only the lowest 16 bits + of the addend of a non-in-place GPREL16 relocation. + (_bfd_mips_elf_relocate_section): Pass use_saved_addend_p to + mips_elf_calculate_relocation(). + +2002-10-12 Stephane Carrez + + * elf32-m68hc11.c (m68hc11_elf_relax_section): Don't treat relocs + with symbols in other sections if we relaxed something; the sections + output offsets must be re-computed before. + +2002-10-12 Stephane Carrez + + * elf32-m68hc11.c (m68hc11_elf_relax_section): Update symbols + handling to use Elf_Internal_Sym. + (m68hc11_elf_relax_delete_bytes): Likewise. + +2002-10-11 Kaz Kojima + + * elf32-sh.c (sh_elf_optimized_tls_reloc, sh_elf_mkobject, + sh_elf_object_p, dtpoff_base): New functions. + (sh_elf_howto_table): Add TLS relocs. + (sh_reloc_map): Likewise. + (sh_elf_info_to_howto): Support TLS relocs. + (elf_sh_link_hash_entry): Add tls_type and tls_tpoff32. + (sh_elf_hash_entry, sh_elf_tdata, sh_elf_local_got_tls_type): + New macros. + (sh_elf_obj_tdata): New. + (elf_sh_link_hash_table): Add tls_ldm_got. + (sh_elf_link_hash_table_create): Clear refcount of tls_ldm_got. + (allocate_dynrelocs): Support TLS relocs. + (sh_elf_size_dynamic_sections): Likewise. + (sh_elf_relocate_section): Support TLS relocs. Don't try to find + .rela.got section when found already. Return false after printing + error about unresolvable relocation. + (sh_elf_gc_sweep_hook): Support TLS relocs. + (sh_elf_check_relocs): Likewise. + (sh_elf_finish_dynamic_symbol): Likewise. + (bfd_elf32_mkobject, elf_backend_object_p): Define for TLS case. + * reloc.c: Add SH TLS relocs. + * bfd-in2.h, libbfd.h: Regenerate. + +2002-10-11 Daniel Jacobowitz + + * Makefile.in: Regenerated. + +2002-10-11 Daniel Jacobowitz + + * Makefile.am: Run dep-am. + (BFD_H_DEP): Add simple.c and linker.c. + (BFD32_LIBS): Add simple.lo. + (BFD32_LIBS_CFILES): Add simple.c. + * Makefile.in: Regenerated. + * bfd-in2.h: Regenerated. + * simple.c: New file. + +2002-10-11 Alan Modra + + * coff-arm.c (record_arm_to_thumb_glue): Avoid type-punned pointers. + (record_thumb_to_arm_glue): Likewise. + * ecoff.c (ecoff_link_add_externals): Likewise. + * elf32-arm.h (record_arm_to_thumb_glue): Likewise. + (record_thumb_to_arm_glue): Likewise. + * elf32-m32r.c (m32r_elf_add_symbol_hook): Likewise. + * elf32-sh.c (sh_elf_create_dynamic_sections): Likewise. + * elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise. + * elf64-alpha.c (elf64_alpha_create_dynamic_sections): Likewise. + * elf64-ppc.c (func_desc_adjust): Likewise. + * elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise. + (sh64_elf64_create_dynamic_sections): Likewise. + * elflink.c (_bfd_elf_create_got_section): Likewise. + (_bfd_elf_create_dynamic_sections): Likewise. + (_bfd_elf_create_linker_section): Likewise. + * elflink.h (elf_add_default_symbol): Likewise. + (elf_link_create_dynamic_sections): Likewise. + (NAME(bfd_elf,size_dynamic_sections)): Likewise. + * elfxx-ia64.c (elfNN_ia64_aix_add_symbol_hook): Likewise. + * elfxx-mips.c (mips_elf_create_got_section): Likewise. + (_bfd_mips_elf_add_symbol_hook): Likewise. + (_bfd_mips_elf_create_dynamic_sections): Likewise. + * linker.c (generic_link_add_symbol_list): Likewise. + * xcofflink.c (xcoff_link_add_symbols): Likewise. + + * elfxx-ia64.c (oor_brl, oor_ip): Conditionally define. + + * elf64-ppc.c (edit_opd): Only zero opd syms when function is + completely removed. Correct local sym adjustment. + +2002-10-10 Stephen Clarke + + * elf32-sh.c (elf_sh_pic_plt_entry_be, elf_sh_pic_plt_entry_le): + Correct mistake in calculation of address of .got. + * elf64-sh64.c (elf_sh64_pic_plt_entry_be, + elf_sh64_pic_plt_entry_le): Likewise. + +2002-10-09 Richard Shann + Stephen Clarke + + * Makefile.am: Add entries for elf32-sh64-lin.c and + elf64-sh64-lin.c. Regenerate. + * Makefile.in: Regenerate. + * config.bfd: Change sh64eb-*-linux* and sh64-*-linux* + to use sh64 vectors rather than sh vectors. + * configure.in: Add bfd_elf32_sh64lin_vec, bfd_elf32_sh64blin_vec, + bfd_elf64_sh64lin_vec, bfd_elf64_sh64blin_vec. + * configure: Regenerate. + * elf32-sh64-lin.c: New file. + * elf64-sh64-lin.c: New file. + * targets.c: Add bfd_elf32_sh64lin_vec, bfd_elf32_sh64blin_vec, + bfd_elf64_sh64lin_vec, bfd_elf64_sh64blin_vec. + +2002-10-08 H.J. Lu + + * elf32-i386.c (elf_i386_relocate_section): Re-arrange the + IE->LE transition for R_386_TLS_IE. + +2002-10-08 Alan Modra + + * elf64-ppc.c (edit_opd): Correct test for discarded sections. + +2002-10-07 Mark Elbrecht + + * cofflink.c (mark_relocs): Don't mark relocations in excluded + sections. + +2002-10-07 Alan Modra + + * elflink.h (elf_link_input_bfd): Remove BFD_VERSION_DATE dependent + code. + + * elf64-ppc.c (ppc64_elf_build_stubs): Increment .glink indx. + +2002-10-06 Alan Modra + + * opncls.c: Formatting. + (_bfd_new_bfd): Use a smaller section hash table. + +2002-10-05 Alexandre Oliva + + * elfxx-mips.c (mips_elf_create_dynamic_relocation): Set the type + of the other two relocations packed with a REL32 to NONE. + +2002-10-02 Stephen Clarke + + * elf32-sh.c (elf_sh_link_hash_entry): Add gotplt_refcount. + (sh_elf_link_hash_newfunc): Initialize it. + (allocate_dynrelocs): Transfer gotplt refs from plt.refcount + to got.refcount for symbols that are forced local or when + we have direct got refs. + (sh_elf_gc_sweep_hook): Adjust gotplt_refcount. Use it + to correctly adjust got.refcount and plt.refcount. + (sh_elf_copy_indirect_symbol): Copy gotplt_refcount across. + (sh_elf_check_relocs): Increment gotplt_refcount. + +2002-10-01 Jakub Jelinek + + * elf32-i386.c (elf_i386_relocate_section): Fix + movl foo@indntpoff, %eax IE->LE transition. + +2002-10-01 Jakub Jelinek + + * elf64-x86-64.c (elf64_x86_64_relocate_section): Change TLSGD + sequence and its transitions. + +2002-10-01 Jakub Jelinek + + * elf32-i386.c (elf_i386_relocate_section): Resolve R_386_TLS_LDO_32 + to st_value + addend in non-code sections. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Resolve + R_X86_64_DTPOFF32 to st_value + addend in non-code sections. + +2002-09-30 Gavin Romig-Koch + Ken Raeburn + Aldy Hernandez + Eric Christopher + Richard Sandiford + + * archures.c (bfd_mach_mips4120, bfd_mach_mips5400): New. + (bfd_mach_mips5500): New. + * cpu-mips.c (I_mips4120, I_mips5400, I_mips5500): New. + (arch_info_struct): Add corresponding entries here. + * elfxx-mips.c (_bfd_elf_mips_mach): Handle E_MIPS_MACH_4120, + E_MIPS_MACH_5400 and E_MIPS_MACH_5500. + (_bfd_mips_elf_final_write_processing): Handle bfd_mach_mips4120, + bfd_mach_mips5400 and bfd_mach_mips5500. + (_bfd_mips_elf_mach_extends_p): New function. + (_bfd_mips_elf_merge_private_bfd_data): Use it to help merge + the EF_MIPS_MACH flags. + * bfd-in2.h: Regenerate. + +2002-09-28 Jason Thorpe + + * elf32-vax.c (elf_vax_size_dynamic_section): Don't strip + .got sections. + +2002-09-28 Alan Modra + + * elf.c (map_sections_to_segments): Correct test for start of + writable section in the same page as end of read-only section. + +2002-09-27 Matt Thomas + + * elf32-vax.c (elf_vax_check_relocs): Remove unused + local_got_refcounts usage. Remove allocation of got slot. + (elf_vax_gc_sweep_hook): Remove unused local_got_refcounts usage. + Remove de-allocation of got slot. + (elf_vax_size_dynamic_section): Fix some indentation. Add hash + traversal for elf_vax_instantiate_got_entries. Allow empty .got + sections to be GC'ed. + (elf_vax_instantiate_got_entries): New function. + (elf_vax_relocate_section): Simplify R_VAX_GOT32 handling. Remove + tests that are now handled by elf_vax_instantiate_got_entries. + Assert GOT entry falls within .got section size. Remove redundant + comparisions. Fix comments. + +2002-09-27 Jakub Jelinek + + * reloc.c: Add x86-64 TLS relocs. + * bfd-in2.h, libbfd.h: Rebuilt. + * elf64-x86-64.c (x86_64_elf_howto): Fix size fields for 32-bit + relocs. Add TLS relocs. + (x86_64_reloc_map): Add TLS relocs. + (elf64_x86_64_info_to_howto): Adjust for added TLS relocs. + (struct elf64_x86_64_link_hash_entry): Add tls_type field. + (GOT_UNKNOWN, GOT_NORMAL, GOT_TLS_GD, GOT_TLS_IE): Define. + (elf64_x86_64_hash_entry): Define. + (struct elf64_x86_64_obj_tdata): New. + (elf64_x86_64_tdata, elf64_x86_64_local_got_tls_type): Define. + (struct elf64_x86_64_link_hash_table): Add tls_ld_got. + (link_hash_newfunc): Initialize tls_type. + (elf64_x86_64_link_hash_table_create): Initialize tls_ld_got. + (elf64_x86_64_copy_indirect_symbol): Swap tls_type if necessary. + (elf64_x86_64_mkobject): New. + (elf64_x86_64_elf_object_p): Allocate struct elf64_x86_64_obj_tdata. + (elf64_x86_64_tls_transition): New. + (elf64_x86_64_check_relocs): Add r_type variable and use it. + Handle TLS relocs. + (elf64_x86_64_gc_sweep_hook): Handle TLS relocs. + (allocate_dynrelocs): Allocate GOT space for TLS relocs. + (elf64_x86_64_size_dynamic_sections): Likewise. + (dtpoff_base, tpoff): New. + (elf64_x86_64_relocate_section): Handle TLS relocs. + (elf64_x86_64_finish_dynamic_symbol): Only handle non-TLS GOT + entries. + (bfd_elf64_mkobject): Define. + + * elf32-i386.c (elf_i386_check_relocs) [R_386_TLS_LE]: Set + DF_STATIC_TLS if shared. + +2002-09-26 Thiemo Seufer + + * elfxx-mips.c (_bfd_mips_elf_fake_sections): Don't emit unneeded + empty relocation sections. + +2002-09-26 Alan Modra + + * elf64-ppc.c (ppc_build_one_stub): Don't build glink stubs here. + (ppc64_elf_build_stubs): Build them here instead. + +2002-09-24 Jakub Jelinek + + * elf32-sparc.c (elf32_sparc_relocate_section): Put R_SPARC_RELATIVE + addend into r_addend, not *r_offset. + (elf32_sparc_finish_dynamic_symbol): Likewise. + * elf64-sparc.c (sparc64_elf_finish_dynamic_symbol): Clear xword at + R_SPARC_RELATIVE's r_offset. + +2002-09-23 Nathan Tallent + + * dwarf2.c (decode_line_info): Update to correctly decode + the (non-standard DWARF2) out-of-order address sequences + generated by the Intel C++ 6.0 compiler for ia64-Linux. + +2002-09-23 Mark Elbrecht + + * config.bfd: For DJGPP targets, match with any cpu and any machine. + +2002-09-23 Alan Modra + + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Zero relocs + for discarded FDEs. Remove redundant assignment. + * elflink.h (elf_bfd_discard_info): Save edited relocs. + +2002-09-22 H.J. Lu + + * elf64-alpha.c (elf64_alpha_merge_ind_symbols): Don't merge + the relocation count between different .reloc sections. + +2002-09-21 Alan Modra + + * elf32-ppc.c (ppc_elf_relocate_section): Allow ".sbss.*" and + ".sdata.*" for R_PPC_SDAREL16, ".sbss2*" and ".sdata2*" for + R_PPC_EMB_SDA2REL. Similarly for R_PPC_EMB_SDA21 and + R_PPC_EMB_RELSDA. + + * elfcode.h (elf_slurp_reloc_table_from_section): Make "symcount" + unsigned. Move "symcount" assignment out of loop. + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + * configure: Regenerate. + * po/SRC-POTFILES.in: Regnerate. + +2002-09-19 Nathan Tallent + + * dwarf2.c (_bfd_dwarf2_find_nearest_line): If address length is + zero, set it to 8 for (non-standard) 64-bit DWARF2 formats + (e.g. IRIX64). + +2002-09-19 Jakub Jelinek + + * elf32-ppc.c (ppc_elf_finish_dynamic_symbol): Clear .got word + even if generating R_PPC_RELATIVE reloc. + (ppc_elf_relocate_section): Make sure relocation is performed + if skip == -2. Clear memory at r_offset when creating dynamic + relocation. + +2002-09-19 Jakub Jelinek + + * reloc.c (BFD_RELOC_386_TLS_TPOFF, BFD_RELOC_386_TLS_IE, + BFD_RELOC_386_TLS_GOTIE): Add. + * bfd-in2.h, libbfd.h: Rebuilt. + * elf32-i386.c (elf_howto_table): Add R_386_TLS_TPOFF, R_386_TLS_IE + and R_386_TLS_GOTIE. + (elf_i386_reloc_type_lookup): Handle it. + (struct elf_i386_link_hash_entry): Change tls_type type to unsigned + char instead of enum, change GOT_* into defines. + (GOT_TLS_IE_POS, GOT_TLS_IE_NEG, GOT_TLS_IE_BOTH): Define. + (elf_i386_tls_transition): Handle R_386_TLS_IE and R_386_TLS_GOTIE. + (elf_i386_check_relocs): Likewise. Avoid crash if local symbol is + accessed both as normal and TLS symbol. Move R_386_TLS_LDM and + R_386_PLT32 cases so that R_386_TLS_IE can fall through. + Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs. + (elf_i386_gc_sweep_hook): Handle R_386_TLS_IE and R_386_TLS_GOTIE. + Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs. + (allocate_dynrelocs): Allocate 2 .got and 2 .rel.got entries if + tls_type is GOT_TLS_IE_BOTH. + (elf_i386_size_dynamic_sections): Likewise. + (elf_i386_relocate_section): Handle R_386_TLS_IE and R_386_TLS_GOTIE. + Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs. + (elf_i386_finish_dynamic_symbol): Use tls_type & GOT_TLS_IE to catch + all 4 GOT_TLS_* TLS types. + +2002-09-19 Nick Clifton + + * elflink.h (elf_fix_symbol_flags): When examining weak symbols, + follow indirect links. + +2002-09-19 Nathan Tallent + + * ecoffswap.h (ecoff_swap_pdr_in) : Update to + correctly sign-extend 32-bit ECOFF null values (0xffffffff, -1) + on 64 bit machines. + (ecoff_swap_sym_in) : Likewise. + * ecoff.c (_bfd_ecoff_slurp_symbolic_info): Fix error reading + ECOFF information: 'ioptMax' refers to the actual *size* + of the optimization symtab, not the number of entries. + +2002-09-19 Daniel Jacobowitz + + * elf32-arm.h (elf32_arm_adjust_dynamic_symbol): Update + ELF_LINK_HASH_NEEDS_PLT logic. + +2002-09-18 Daniel Jacobowitz + + * elfcode.h (elf_slurp_reloc_table_from_section): Check + correct relocation count. + +2002-09-17 Daniel Jacobowitz + + * bfd-in.h (bfd_get_dynamic_symcount): Define. + * bfd.c (struct _bfd): Add dynsymcount. + * bfd-in2.h: Regenerated. + * elf.c (_bfd_elf_canonicalize_dynamic_symtab): Set + abfd->dynsymcount. + * elfcode.h (elf_slurp_reloc_table_from_section): Check + for overflow. + +2002-09-17 Stan Cox + + * elf64-mips.c (mips_elf64_be_swap_reloca_out): Handle type2 and type3. + (mips_elf64_final_gp): Don't make up gp value. + * elfn32-mips.c (mips_elf_final_gp): Likewise. + * elfxx-mips.c (_bfd_mips_elf_final_link): Always create + .MIPS.options/.options section. + +2002-09-17 David O'Brien + + * elf32-i386-fbsd.c: Always label using the EI_OSABI method. + It is benign for FreeBSD < 4.1. Minor reformatting. + * elf64-alpha-fbsd.c: Likewise. + +2002-09-17 Jakub Jelinek + + * elf32-i386.c (elf_i386_relocate_section) [R_386_TLS_TPOFF32]: Negate + addend. + +2002-09-17 Alan Modra + + * elf64-alpha.c (alpha_elf_size_info): Make static. + +2002-09-17 Svein E. Seldal + + * coff-tic4x.c: Add function declarations and ATTRIBUTE_UNUSED. + * cpu-tic4x.c: Ditto. + +2002-09-17 Thiemo Seufer + + * elf64-mips.c (define elf_backend_ignore_discarded_relocs): Remove + duplicate define. + +2002-09-16 Bruno Haible + + * elf32-i386.c: Don't defined ELF_ARCH etc. if this file is included + by a target variant implementation. + * elf64-alpha.c: Likewise. + * elf32-i386-fbsd.c: New file. + * elf64-alpha-fbsd.c: New file. + * targets.c: Support bfd_elf32_i386_freebsd_vec and + bfd_elf64_alpha_freebsd_vec. + * configure.in: Accept the vectors bfd_elf32_i386_freebsd_vec, + bfd_elf64_alpha_freebsd_vec. + * Makefile.am (BFD32_BACKENDS): Add elf32-i386-fbsd.lo. + (BFD32_BACKENDS_CFILES): Add elf32-i386-fbsd.c. + (BFD64_BACKENDS): Add elf64-alpha-fbsd.lo. + (BFD64_BACKENDS_CFILES): Add elf64-alpha-fbsd.c. + (elf32-i386-fbsd.lo, elf64-alpha-fbsd.lo): Add dependencies. + * config.bfd: For FreeBSD targets, set targ_defvec to a FreeBSD + specific targets. Define OLD_FREEBSD_ABI_LABEL if appropriate. + +2002-09-12 Jakub Jelinek + + * elf32-i386.c (dtpoff_base, tpoff): Don't crash if tls_segment is + NULL. + (elf_i386_relocate_section): Return false after printing error about + unresolvable relocation. + +2002-09-12 Nick Clifton + + * elf32-arm.h (elf32_arm_final_link_relocate): Fix handling of + R_ARM_THM_PC11. + +2002-09-11 Jeffrey Law + + * elf32-h8300.c (elf32_h8_relax_section): Fix typo. + +2002-09-11 Andrew Haley + + * elf.c (_bfd_elf_find_nearest_line): Check functionname_ptr and + line_ptr before deciding we've found a symbol. + +2002-09-11 Nick Clifton + + * po/da.po: New Danish translation file. + * configure.in (LINGUAS): Add 'da'. + * configure: Regenerate. + +2002-09-10 Michael Snyder + + * irix-core.c (do_sections, do_sections64): New functions. + (irix_core_core_file_p): Call new functions do_sections, + do_sections64, depending on corefile (32-bit or 64-bit). + +2002-09-09 Richard Henderson + + * elfxx-ia64.c (elfNN_ia64_relax_section): Handle PCREL21M + and PCREL21F like PCREL21B. + +2002-09-04 Kevin Buettner + + * config.bfd (mips*-*-irix6*): Add new ABI vectors. Make n32 default + vector. + +2002-09-02 Nick Clifton + + * elf32-v850.c (v850_elf_final_link_relocate): Use helpful + names instead of cryptically overloaded bfd_reloc error + codes. + (v850_elf_relocate_section): Likewise. + (v850_elf_relax_section): Replace caching of external symbols + with caching of internal symbols obtained from calling + bfd_elf_get_elf_syms(). + Fixup problems with freeing cached allocated memory blocks. + +2002-09-02 Alan Modra + + * cpu-pj.c (scan_mach, compatible, arch_info_struct): Remove. + (bfd_pj_arch): Use bfd_default_scan. + * cpu-v850.c (scan): Remove. + (N): Use bfd_default_scan. + * cpu-z8k.c (scan_mach): Remove. + (arch_info_struct, bfd_z8k_arch): Reorganize so that the default is + first. Use bfd_default_scan. + + * ecoff.c (_bfd_ecoff_set_arch_mach_hook): Don't use hard-coded + bfd_mach constants. + (ecoff_get_magic): Likewise. + * elf32-v850.c (v850_elf_object_p): Likewise. + (v850_elf_final_write_processing): Likewise. + * mipsbsd.c (MY(set_arch_mach)): Likewise. + (MY(write_object_contents)): Likewise. + * coff64-rs6000.c (xcoff64_write_object_contents): Likewise. + * coffcode.h (coff_write_object_contents): Likewise. + (coff_set_arch_mach_hook): Add comment describing machine == 0. + Remove unnecessary "machine" assignments. + (coff_write_relocs): Test for the absolute section sym by testing + section and flags. + + * aoutx.h (NAME(aout,machine_type)): Recognize bfd_mach_i386_i386 + and bfd_mach_i386_i386_intel_syntax. + * pdp11.c (NAME(aout,machine_type)): Likewise. + +2002-08-30 John David Anglin + + * bfd-in.h (align_power): Cast constants to bfd_vma type. + * bfd-in2.h (align_power): Likewise. + +2002-08-30 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + + * cpu-avr.c (compatible): Don't use hard-coded mach constants. + * cpu-powerpc.c (powerpc_compatible): Likewise. + * cpu-rs6000.c (rs6000_compatible): Likewise. + +2002-08-28 Catherine Moore + + * elf32-v850.c (v850_elf_reloc_map): Add new relocs. + (v850-elf-reloc): Don't resolve pc relative relocs. + (v850_elf_ignore_reloc): New routine. + (v850_elf_final_link_relocate): Handle new relocs. + (v850_elf_relax_delete_bytes ): New routine. + (v850_elf_relax_section): New routine. + (bfd_elf32_bfd_relax_section): Define. + (HOWTO): New entries for new relocs. + * reloc.c (BFD_RELOC_V850_LONGCALL): New reloc. + (BFD_RELOC_V850_LONGJUMP): New reloc. + (BFD_RELOC_V850_ALIGN): New reloc. + * archures.c: Remove redundant v850ea architecture. + * cpu-v850.c: Remove redundant v850ea support. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerated. + +2002-08-28 Svein E. Seldal + + * config.bfd: Add tic4x-*-*coff* and c4x-*-*coff* target. + * configure.in: Add tic4x_coff vector files. + * configure: Regenerate. + * Makefile.am: Add tic4x target. + * Makefile.in: Regenerate. + +2002-08-27 Michael Hayes + + * archures.c: Add the BFD arch type tic4x. + * bfd-in.h: Add BFD_IN_MEMORY flag. + * coff-tic4x.c: New file. + * coffswap.h (coff_swap_sym_out): Add preadjuster. + * cpu-tic4x.c: New file. + * targets.c: Added tic4x- in list of xvecs. + * ticoff.h: New file. + * bfd-in2.h: Regenerate. + +2002-08-27 Adam Nemet + + * elf32-arm.h (elf32_arm_finish_dynamic_sections): Set the last + bit of DT_INIT and DT_FINI for Thumb functions. + +2002-08-26 Alan Modra + + * coffcode.h (coff_set_arch_mach_hook): Handle W65MAGIC. + +2002-08-26 Alan Modra + + * aoutx.h (NAME(aout,reloc_type_lookup)): Handle BFD_RELOC_8. + +2002-08-24 Kaz Kojima + + * elf32-sh.c (sh_elf_copy_indirect_symbol): New. + (create_got_section, allocate_dynrelocs, readonly_dynrelocs): + Likewise. + (struct elf_sh_pcrel_relocs_copied): Removed. + (struct elf_sh_dyn_relocs): New. + (struct elf_sh_link_hash_entry): Replace pcrel_relocs_copied + field with dyn_relocs. + (struct elf_sh_link_hash_table): Add short-cuts to get dynamic + sections and sym_sec. + (sh_elf_link_hash_newfunc): Clear dyn_relocs. + (sh_elf_link_hash_table_create): Clear shorts-cuts and sym_sec. + (sh_elf_create_dynamic_sections): Use create_got_section instead + of _bfd_elf_create_got_section. + (sh_elf_check_relocs): Likewise. + (sh_elf_create_dynamic_sections): Use short-cuts to the dynamic + sections. + (sh_elf_adjust_dynamic_symbol, sh_elf_size_dynamic_sections, + sh_elf_relocate_section, sh_elf_check_relocs, + sh_elf_finish_dynamic_symbol, sh_elf_finish_dynamic_sections): + Likewise. + (sh_elf_adjust_dynamic_symbol): Handle nocopyreloc. Keep the + dynamic relocations and avoiding the copy relocation when we + didn't find any dynamic relocations in the section which has + contents or is read-only. + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New. + (sh_elf_size_dynamic_sections): Don't reset the size of + .rela.got section even if dynamic_sections_created flag is off. + Don't use sh_elf_discard_copies. Scan all input bfd and use + allocate_dynrelocs. Call readonly_dynrelocs to determine + whether we need DT_TEXTREL. + (sh_elf_adjust_dynamic_symbol): Use plt.refcount to determine + whether the symbol was never referred to. + (sh_elf_relocate_section): Use WILL_CALL_FINISH_DYNAMIC_SYMBOL. + (sh_elf_gc_sweep_hook): Fill with the real sweep function. + (sh_elf_check_relocs): Call create_got_section if the short-cut + to .got is null. Increment reference counters only instead of + allocating space on dynamic sections here. Don't conditionalize + uninitialized got.offset value when marking the symbol as a + global offset table entry. Keep relocations for symbols satisfied + by a dynamic library to avoid copy relocations for the symbol. + Set dynobj field of an elf hash table if needed. + (sh_elf_finish_dynamic_sections): Handle null section pointer + correctly. + (elf_backend_copy_indirect_symbol): Defined. + (elf_backend_can_refcount): Defined. + +2002-08-23 Nick Clifton + + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Undo + previous change. Add comment explaining why. + +2002-08-23 Stephen Clarke + + * elf32-sh.c (elf_sh_plt0_entry_be, elf_sh_plt0_entry_le): Copy + contents of .got.plt[2] to tr0, not address of .got.plt. + (sh_elf_finish_dynamic_symbol): Do not apply GOT_BIAS when + patching absolute plt entry. For shmedia plt entry, set bottom bit + of branch to plt0 as this is a branch to an shmedia instruction. + * elf64-sh64.c (elf_sh64_plt0_entry_be, elf_sh64_plt0_entry_le): + Copy contents of .got.plt[2] to tr0, not address of .got.plt. + (elf_sh64_plt_entry_be, elf_sh64_plt_entry_le): Use ptrel to + branch to plt0. + (sh64_elf64_finish_dynamic_symbol): Do not apply GOT_BIAS when + patching absolute plt entry. For shmedia plt entry, branch to + plt0 is now ptrel, so use relative offset. Set bottom bit of + branch target as it is a branch to an shmedia instruction. + +2002-08-23 Stephen Clarke , + Richard Shann + + * elf32-sh.c (sh_elf_finish_dynamic_sections): Set LSB of DT_INIT + value if .init is an SHmedia function. Similarly for DT_FINI. + * elf64-sh64.c (sh64_elf64_finish_dynamic_sections): Likewise. + +2002-08-23 Stephen Clarke + + * elf32-sh.c (sh_elf_size_dynamic_sections): Zero initialize + dynamic section. + * elf64-sh64.c (sh64_elf64_size_dynamic_sections): Likewise. + +2002-08-22 Kaz Kojima + + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Use a simple + byte read when reading the return address register column. + +2002-08-22 Nick Clifton + + * config.bfd: Add powepc64-*-*bsd* target. + +2002-08-22 Graeme Peterson + + * Makefile.am: Add entries for elf32-shqnx.c + * Makefile.in: Regenerate. + * config.bfd: Add support sh-*-nto* target. + * configure.in: Add support for bfd_elf32_sh{l}qnx_vec. + * configure: Regenerate. + * elf32-qnx.h: Changed typo "elf_i386qnx_*" to "elf_qnx_*" . + * elf32-sh.c: Do not include elf32-target.h if + ELF32_SH_C_INCLUDED is defined. + * elf32-shqnx.c: New file: Support for QNX. + * targets.c: Add bfd_elf32_sh{l}qnx_vec. + +2002-08-22 Nick Clifton + + * po/tr.po: Updated Turkish translation. + + * syms.c (_bfd_generic_read_minisymbols): Set bfd_error if the + symbols are not read. + +2002-08-22 Alan Modra + + * elf32-m68hc11.c: Formatting fixes. + (elf32_m68hc11_gc_mark_hook): Correct params. Remove unnecessary test. + * elf32-m68hc12.c: Formatting fixes. + (elf32_m68hc11_gc_mark_hook): Correct params. Remove unnecessary test. + +2002-08-22 Alan Modra + + * coff-rs6000.c (rs6000coff_vec ): Add SEC_CODE and + SEC_DATA. + (pmac_xcoff_vec): Likewise. + * coff64-rs6000.c (rs6000coff64_vec): Likewise. + (aix5coff64_vec): Likewise. + +2002-08-22 Alan Modra + + * elf-bfd.h (struct elf_backend_data): Add struct elf_backend_data + param to elf_backend_copy_indirect_symbol. + (_bfd_elf_link_hash_copy_indirect): Likewise. + * elflink.h (elf_add_default_symbol, elf_fix_symbol_flags): Adjust + calls to copy_indirect_symbol. + * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise. + * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. + * elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise. + * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. + * elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise. + * elf64-x86-64.c (elf64_x86_64_copy_indirect_symbol): Likewise. + * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. + * elfxx-mips.c (_bfd_mips_elf_copy_indirect_symbol): Likewise. + * elfxx-mips.h (_bfd_mips_elf_copy_indirect_symbol): Likewise. + * elf.c (_bfd_elf_link_hash_copy_indirect): Likewise. Properly + test refcounts for "used" values. + +2002-08-21 John David Anglin + + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Add PARAMS to + argument declaration. + +2002-08-19 Elena Zannoni + + * archures.c (bfd_mach_ppc_e500): Added. + * bfd-in2.h: Rebuilt. + * cpu-powerpc.c (bfd_powerpc_archs): Added e500. + +2002-08-19 Alan Modra + + * elf32-m68hc12.c (elf_backend_can_gc_sections): False. + +2002-08-17 Andrew Cagney + + * elf.c (bfd_elf_get_elf_syms): Change type of `esym' to + `bfd_byte'. + +2002-08-17 Stan Cox + + * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Use the + IRIX 6 segment layout for NEWABI. + +2002-08-16 Stephen Clarke + + * elf32-sh.c (sh_elf_gc_mark_hook): For sh64, skip indirect + symbols when looking for section referred to by a relocation. + * elf64-sh.c (sh_elf64_gc_mark_hook): Likewise. + +2002-08-15 Alan Modra + + * elf32-i370.c: Move reloc enum to include/elf/i370.h. + +2002-08-15 Hans-Peter Nilsson + + * elf32-cris.c (elf_cris_discard_excess_program_dynamics): Add + missing check for whether the symbol is referenced by DSO before + unexporting it as an unneeded dynamic symbol. + +2002-08-14 H.J. Lu + + * libbfd.h: Regenerate. + +2002-08-14 H.J. Lu + + * config.bfd: Always add 64bit vectors to 32bit Linux/mips. + +2002-08-14 Stephane Carrez + + * elf32-m68hc11.c (m68hc11_relax_group): New to relax group of + instructions. + (m68hc11_direct_relax): New to define table of relaxable instructions. + (find_relaxable_insn): New, find a relaxable insn. + (compare_reloc): New to compare two relocs. + (m68hc11_elf_relax_section): New, relax text sections. + (m68hc11_elf_relax_delete_bytes): New, delete bytes and adjust branchs. + (elf32_m68hc11_check_relocs): New function for GC support. + (elf32_m68hc11_relocate_section): New function for GC support. + (bfd_elf32_bfd_relax_section): Define to support linker relaxation. + (elf_backend_check_relocs): Likewise. + (elf_backend_relocate_section): Likewise. + +2002-08-13 H.J. Lu + + * elflink.h (NAME(bfd_elf,size_dynamic_sections): Don't count + definitions in shared objects when checking symbol with + undefined version. + +2002-08-13 Stephane Carrez + + * elf32-m68hc11.c (elf32_m68hc11_gc_mark_hook): New for section GC. + (elf32_m68hc11_gc_sweep_hook): Likewise. + (elf_backend_gc_mark_hook): Define for GC section support. + (elf_backend_gc_sweep_hook): Likewise. + (elf_backend_can_gc_sections): Likewise. + + * elf32-m68hc12.c: Likewise. + +2002-08-13 Stephane Carrez + + * elf32-m68hc11.c (_bfd_m68hc11_elf_print_private_bfd_data): New. + (_bfd_m68hc11_elf_merge_private_bfd_data): New function. + (_bfd_m68hc11_elf_set_private_flags): New function. + Use them to set/check/print ELF flags specific to 68HC11. + + * elf32-m68hc12.c (_bfd_m68hc12_elf_print_private_bfd_data): New. + (_bfd_m68hc12_elf_merge_private_bfd_data): New function. + (_bfd_m68hc12_elf_set_private_flags): New function. + Use them to set/check/print ELF flags specific to 68HC12. + +2002-08-13 Stephane Carrez + + * elf32-m68hc11.c (elf_m68hc11_howto_table): Add the new relocs; + fix masks for PC-rel relocs. + (m68hc11_elf_ignore_reloc): New function. + + * elf32-m68hc12.c (m68hc12_elf_special_reloc): New to handle specific + 68HC12 banked addressing relocs. + (m68hc12_phys_addr): New to compute physical address of banked memory. + (m68hc12_phys_page): Likewise for page. + (m68hc12_addr_is_banked): New to see if address is in banked area. + (elf_m68hc12_howto_table): Add new relocs and rename to xx12. + +2002-08-13 Stephane Carrez + + * reloc.c (BFD_RELOC_M68HC11_RL_JUMP, BFD_RELOC_M68HC11_RL_GROUP, + BFD_RELOC_M68HC11_LO16, BFD_RELOC_M68HC11_PAGE, + BFD_RELOC_M68HC11_24): New relocs for 68HC11/68HC12. + * bfd-in2.h: Regenerate. + +2002-08-12 H.J. Lu + + * elflink.h (elf_add_default_symbol): Preserve section across + elf_merge_symbol. + +2002-08-09 Graeme Peterson + + * Makefile.am: Add entries for elf32-ppcqnx.c, and add + elf32-qnx.h dependency to elfarmqnx-nabi.c and elf32-i386qnx.c. + * Makefile.in: Regenerate. + * config.bfd: Add support for powerpc{le}-*-nto targets. + * configure.in: Add support for bfd_elf32_powerpc{le}qnx_vec. + * configure: Regenerate. + * elf32-i386qnx.c: Moved backend functions into a QNX specific + common file "elf32-qnx.h", and now include that file. + * elf32-qnx.h: New file: QNX specific common elf backend. + * elf32-ppc.c: Do not include elf32-target.h if + ELF32_PPC_C_INCLUDED is defined. + * elf32-ppcqnx.c: New file: Support for QNX. + * elfarmqnx-nabi.c: Include elf32-qnx.h for qnx elf backend. + * targets.c: Add bfd_elf32_powerpc{le}qnx_vec. + +2002-08-09 Nick Clifton + + * po/sv.po: Updated Swedish translation. + +2002-08-09 Thiemo Seufer + + * elfxx-mips.c (mips_elf_global_got_index): Avoid segfault if + g->global_gotsym is NULL. + +2002-08-08 H.J. Lu + + * elflink.h (elf_add_default_symbol): Don't warn if a definition + overrides an indirect versioned symbol. + +2002-08-08 Jakub Jelinek + + * elf32-i386.c (elf_i386_relocate_section): Fill in proper addend + for R_386_TLS_TPOFF32 relocs against symndx 0. + +2002-08-07 H.J. Lu + + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Check symbol + with undefined version if needed. + (elf_link_assign_sym_version): Match a default symbol with a + version without definition. No need to hide the default + definition separately. + +2002-08-08 Alan Modra + + * elflink.h (elf_link_output_extsym): Don't output symbols from + SEC_EXCLUDE sections. + + * aoutx.h (aout_link_write_symbols): Correct handling of warning syms. + +2002-08-07 Alan Modra + + * elf64-ppc.c (edit_opd): Arrange to drop symbols for discarded .opd + entries. + +2002-08-07 Thiemo Seufer + + * elfxx-mips.c (mips_elf_create_dynamic_relocation): Cast signedness + mismatch. + +2002-08-07 Thiemo Seufer + + * elfxx-mips.c (ABI_64_P): Remove superfluous check. + +2002-08-07 Thiemo Seufer + + * elf32-mips.c (mips_reloc_map): Fix typo. + +2002-08-06 Alan Modra + + * xcofflink.c (xcoff_write_global_symbol): Set n_scnum for abs_section. + +2002-08-06 Alan Modra + + * elf64-ppc.c (ppc64_elf_howto_raw): Zero all src_mask entries. + +2002-08-06 Alan Modra + + * libxcoff.h: Use PARAMS on function declarations. + * coff-rs6000.c (xcoff_generate_rtinit): Simplify size calc. + * coff64-rs6000.c (xcoff64_generate_rtinit): Likewise. + + * coff-rs6000.c: (xcoff_rtype2howto): Don't place reloc address in + addend. + * coff64-rs6000.c: (xcoff64_rtype2howto): Likewise. + +2002-08-06 Alan Modra + + * coff-rs6000.c: Formatting fixes. + (xcoff_calculate_relocation): Use PARAMS in declaration. + (xcoff_complain_overflow): Likewise. + (xcoff_ppc_relocate_section): Use old-style function pointer call. + (bfd_xcoff_backend_data): Remove useless comments. + (rs6000coff_vec): Likewise. + (bfd_pmac_xcoff_backend_data): Likewise. + (pmac_xcoff_vec): Likewise. + + * coff64-rs6000.c: Formatting fixes. + (xcoff64_calculate_relocation): Use PARAMS in declaration. + (xcoff64_ppc_relocate_section): Use old-style function pointer call. + (bfd_xcoff_backend_data): Remove useless comments. + (rs6000coff64_vec): Likewise. + (bfd_xcoff_aix5_backend_data): Likewise. + (aix5coff64_vec): Likewise. + +2002-08-06 Alan Modra + + * coff-rs6000.c (xcoff_howto_table): Revert some of last change to + mask entries. Use complain_overflow_dont for R_REF. + (xcoff_reloc_type_ba): Revert last change. + (xcoff_reloc_type_br): Likewise. + (xcoff_reloc_type_crel): Likewise. + (xcoff_ppc_relocate_section): Likewise. + * coff64-rs6000.c (xcoff64_reloc_type_br): Likewise. + (xcoff64_ppc_relocate_section): Likewise. + (xcoff64_howto_table): Revert some of last change to mask entries. + Use complain_overflow_dont for R_REF. + + * coff-rs6000.c (xcoff_howto_table): Fix src_mask entries. Make all + relocs with bitsize == 16 have size = 1. + (xcoff_reloc_type_ba): Correct src_mask and dst_mask adjustment. + (xcoff_reloc_type_br): Likewise. + (xcoff_reloc_type_crel): Likewise. + (xcoff_ppc_relocate_section): Set up src_mask and dst_mask correctly. + * coff64-rs6000.c (xcoff64_reloc_type_br): Correct src_mask and + dst_mask adjustment. + (xcoff64_ppc_relocate_section): Set up src_mask and dst_mask correctly. + (xcoff64_howto_table): Fix src_mask entries. Make all relocs with + bitsize == 16 have size = 1. + +2002-08-01 Denis Chertykov + + * elf32-ip2k.c: Processor manufacturer changed to Ubicom. + (struct misc): New field isymbuf. All free_* fields removed. + (symbol_value): Pass in internal syms. No need to swap syms in. + (ip2k_elf_relax_section): Use bfd_elf_get_elf_syms. Properly free + possibly cached info. + (tidyup_after_error): Removed. + (ip2k_elf_relax_section_pass1): Don't use removed fields of struct + misc. Use new field. + (adjust_all_relocations): Use internal syms. No need to swap syms + in and out. + (add_page_insn): Don't use removed fields of struct misc. + +2002-08-01 Nick Clifton + + * elf32-arm.h: Revert previous delta. + +2002-08-01 Nick Clifton + + * configure.in (AM_INIT_AUTOMAKE): Bump version number. + * configure: Regenerate. + +2002-07-31 H.J. Lu + + * config.bfd: Add x86-64 vector to Linux/i386 if 64bit BFD is + selected. + +2002-07-31 H.J. Lu + + * config.bfd: Add n32 vectors to 32bit Linux/mips if 64bit BFD + is selected. + +2002-07-31 Jakub Jelinek + + * elf32-i386.c (elf_i386_copy_indirect_symbol): Swap tls_type + if _bfd_elf_link_hash_copy_indirect will swap got.refcount. + +2002-07-31 Ian Dall + + * cpu-ns32k.c (_bfd_ns32k_put_immdeiate, _bfd_ns32k_get_immediate): + There is no 8 byte relocation type for this architecture. + (do_ns32k_reloc): Use bfd_vma instead of native types. + (bfd_ns32k_put_immediate, _bfd_ns32k_relocate_contents) put_data + returns void. + (_bfd_ns32k_put_displacement): Don't check for overflow. We can + rely on generic code to do that. + * aout-ns32k.c (howto_table): Add appropriate overflow detection + to all table entries. + (_bfd_ns32k_relocate_contents): put_data returns void. + * ns32k.h: (_bfd_ns32k_put_displacement, _bfd_ns32k_put_immediate) + (_bfd_do_ns32k_reloc_contents): Fix prototypes. put data functions + return void. + +2002-07-31 Ian Dall + + * aoutx.h (aout_link_check_ar_symbols): Whether to include an + archive object is target dependant. + +2002-07-31 Adam Nemet + + * elf32-arm.h (ARM_PLT_ENTRY_SIZE): Rename PLT_ENTRY_SIZE. + (THUMB_PLT_ENTRY_SIZE): New macro. + (PLT_ENTRY_SIZE): Return the appropriate *_PLT_ENTRY_SIZE. + (elf32_arm_plt0_entry): Rename PLT_ENTRY_SIZE to + ARM_PLT_ENTRY_SIZE. + (elf32_arm_plt_entry): Likewise. + (elf_backend_plt_header_size): Likewise. + (elf32_thumb_plt0_entry): New global. + (elf32_arm_finish_dynamic_sections): Use it. Put Thumb entries + into .plt.thumb. + (elf32_thumb_plt_entry): New global. + (elf32_arm_finish_dynamic_symbol): Use it. Use .thumb.plt for + Thumb entries. Set the bottom bit of the corresponding GOT entry + for a Thumb PLT entry. + (struct elf32_arm_plt_entry_info): New structure. + (struct elf32_arm_link_hash_entry, plt_info): New member of this + type. + (elf32_arm_link_hash_newfunc): Initialize new member. + (elf32_arm_final_link_relocate, R_ARM_THM_PC22 case): Handle + relocations against the PLT. + (elf32_arm_check_relocs, case R_ARM_PLT32 case): Set + first_rel_type if this is the first time we encounter the symbol. + (elf32_arm_check_relocs, case R_ARM_THM_PC22 case): New case. + Determine if relocation needs a PLT entry. Set first_rel_type if + this is the first time we encounter the symbol + (elf32_arm_adjust_dynamic_symbol): Create PLT entries for Thumb + functions as well. + (elf32_arm_size_dynamic_sections): Handle .plt.thumb like .plt. + (elf32_arm_create_dynamic_sections): New function. Create the + .plt.thumb section. + (elf_backend_create_dynamic_sections): Call it. + +2002-07-31 Nick Clifton + + * bfd.c (bfd_alt_mach_code): Rename parameter 'index' to + 'alternative' in order to avoid shadowing global symbol of the + same name. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * libcoff.h: Regenerate. + +2002-07-31 Thiemo Seufer + + * Makefile.am: Add n32 ABI support. + * Makefile.in: Regenerate. + * config.bfd: Add n32 vectors to mips64*-*-linux* targets. Treat 64 + bit vectors for mips*-*-linux targets as optional. + * configure.in: Add n32 ABI vectors. + * configure: Regenerate. + * elf32-mips.c (mips_elf32_object_p): Reject n32 ABI files. + * elfn32-mips.c: New file, n32 ABI support. + * targets.c: Add n32 ABI vectors. + +2002-07-30 Graeme Peterson + + * elfarmqnx-nabi.c: New file: Support for QNX. + * config.bfd: Add support for arm-*-nto target. + * configure.in: Add support for bfd_elf32_{big|little}armqnx_vec. + * configure: Regenerate. + * Makefile.am: Add entries for elfarmqnx-nabi.c. + * Makefile.in: Regenerate. + * elf32-arm.h (ELF_MAXPAGESIZE): Do not define if already defined. + Do not define global function if ELFARM_NABI_C_INCLUDED is defined. + * elfarm-nabi.c: Do not include elf32-arm.h if + ELFARM_NABI_C_INCLUDED is defined. + * targets.c: Add bfd_elf32_{big|little}armqnx_vec. + +2002-07-30 Nick Clifton + + * po/sv.po: Updated Swedish translation. + +2002-07-30 Jakub Jelinek + + * elf.c (elf_fake_sections): Fix up .tbss sh_size and sh_type. + +2002-07-30 Alan Modra + + * aoutx.h (some_aout_object_p): Clean up tdata properly on error. + * archive.c (bfd_generic_archive_p): Likewise. + * coff-rs6000.c (_bfd_xcoff_archive_p): Likewise. + (_bfd_xcoff_archive_p): Use bfd_scan_vma in place of strtol. + * coff64-rs6000.c (xcoff64_slurp_armap): Likewise. + (xcoff64_archive_p): Likewise. + (xcoff64_openr_next_archived_file): Likewise. + (xcoff64_archive_p): Clean up tdata properly on error. + * coffgen.c (coff_real_object_p): Likewise. + (coff_object_p): Release filehdr and opthdr. + * ecoff.c (_bfd_ecoff_archive_p): Clean up tdata properly on error. + * ieee.c (ieee_archive_p): Likewise. + * ihex.c (ihex_object_p): Likewise. + (ihex_mkobject): Always allocate tdata. + * peicode.h (pe_ILF_object_p): Release bfd_alloc'd buffer on error. + * srec.c (srec_mkobject): Always allocate tdata. + (srec_object_p): Clean up tdata properly on error. + (symbolsrec_object_p): Likewise. + * versados.c (versados_object_p): Likewise. + * vms-misc.c (_bfd_vms_get_record): Use bfd_malloc instead of malloc, + and bfd_realloc instead of realloc. + (add_new_contents): Use bfd_alloc instead of bfd_malloc for sections. + * vms.c (vms_initialize): Always allocate tdata. Use bfd_alloc in + place of bfd_malloc, simplifying error freeing. Free hash table too. + (vms_object_p): Clean up tdata on error. + (vms_mkobject): Don't complain on stderr if vms_initialize fails. + (vms_close_and_cleanup): Adjust for bfd_alloc use. + +2002-07-30 Alan Modra + + * elfxx-ia64.c (elfNN_ia64_final_write_processing): Set e_flags. + +2002-07-26 Chris Demetriou + + * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Merge ASE + flags into resulting BFD. + +2002-07-26 Alan Modra + + From John Reiser + * elf32-i386.c (elf_i386_link_hash_table_create): Clear + tls_ldm_got.refcount. + +2002-07-25 Thiemo Seufer + + * elf64-mips.c: Update TODO comment. + (mips_elf64_higher_reloc,mips_elf64_highest_reloc, + mips_elf64_gprel16_reloca): Remove prototypes. + (mips16_jump_reloc,mips16_gprel_reloc): Add functions. + (UNUSED_RELOC): Replace by EMPTY_RELOC. + (mips_elf64_howto_table_rel): Use special R_MIPS_HI16 handling. Remove + wrong comments. Remove disfunctional support of R_MIPS_HIGHER and + R_MIPS_HIGHEST. + (mips_elf64_howto_table_rela): Fix handling of R_MIPS_GPREL16 and + R_MIPS_GOT16. Remove wrong comments. + (elf_mips16_jump_howto,elf_mips16_gprel_howto, + elf_mips_gnu_vtinherit_howto,elf_mips_gnu_vtentry_howto): New, code + from elf32-mips.c. + (mips_elf64_hi16_reloc): Fix formatting. + (mips_elf64_higher_reloc,mips_elf64_highest_reloc): Remove. + (mips_elf64_got16_reloc): Fix formatting. Remove superfluous code. + Better comment. Fall back to R_MIPS_GOT_DISP instead of abort(). + (mips_elf64_gprel16_reloc): Make static. Add check for + partial_inplace. + (mips_elf64_gprel16_reloca): Remove. + (mips_elf64_literal_reloc): New function. + (mips_elf64_gprel32_reloc): Fix formatting. + (mips_elf64_shift6_reloc): Fix comment. Make static. + (mips16_jump_reloc,mips16_gprel_reloc): New functions, code from + elf32-mips.c. + (elf_reloc_map,mips_reloc_map): New mapping table, similiar as in + elf32-mips.c + (bfd_elf64_bfd_reloc_type_lookup): Use the mapping table. Enable GNU + specific relocations. + (mips_elf64_rtype_to_howto): Enable GNU specific relocations. + (mips_elf64_object_p): Invert logic to check for SGI-ish ABI. + (ELF_MAXPAGESIZE): Add comment. + +2002-07-25 Nick Clifton + + * po/sv.po: Updated Swedish translation. + * po/es.po: Updated Spanish translation. + * po/fr.po: Updated French translation. + +2002-07-25 Alan Modra + + * elf-bfd.h (_bfd_elf32_link_record_local_dynamic_symbol): Define + as elf_link_record_local_dynamic_symbol. + (_bfd_elf64_link_record_local_dynamic_symbol): Likewise. + (elf_link_record_local_dynamic_symbol): Declare. Now returns int. + * elflink.h (elf_link_record_local_dynamic_symbol): Move to.. + * elflink.c: .. here. Use bfd_elf_get_elf_syms. Check whether an + attempt is made to record a symbol in a discarded section, and + return `2' in that case. + +2002-07-24 Nick Clifton + + * po/sv.po: Updated Swedish translation. + * po/es.po: Updated Spanish translation. + +2002-07-23 Alan Modra + + * po/SRC-POTFILES.in: Regenerate. + + * elf-hppa.h (elf_hppa_relocate_section): If relocatable, return + immediately. Remove code handling relocatable linking. + * elf32-avr.c (elf32_avr_relocate_section): Likewise. + * elf32-cris.c (cris_elf_relocate_section): Likewise. + * elf32-fr30.c (elf32_frv_relocate_section): Likewise. + * elf32-frv.c (elf32_frv_relocate_section): Likewise. + * elf32-h8300.c (elf32_h8_relocate_section): Likewise. + * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. + * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf32-v850.c (v850_elf_relocate_section): Likewise. + * elf32-vax.c (elf_vax_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf32-avr.c (elf_backend_rela_normal): Define. + * elf32-cris.c: Likewise. + * elf32-fr30.c: Likewise. + * elf32-frv.c: Likewise. + * elf32-h8300.c: Likewise. + * elf32-hppa.c: Likewise. + * elf32-ip2k.c: Likewise. + * elf32-sparc.c: Likewise. + * elf32-v850.c: Likewise. + * elf32-vax.c: Likewise. + * elf64-hppa.c: Likewise. + * elf64-sparc.c: Likewise. + * elf32-fr30.c (elf32_frv_relocate_section): Edit comment. + * elf32-frv.c (elf32_frv_relocate_section): Likewise. + * elf32-i860.c (elf32_i860_relocate_section): Likewise. + * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. + * elf32-m32r.c (m32r_elf_relocate_section): Likewise. + * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. + * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. + * elf-m10200.c (USE_RELA): Don't define. + * elf-m10300.c: Likewise. + * elfarm-oabi.c: Likewise. + * elf32-i370.c: Likewise. + * elf32-ip2k.c: Likewise. + * elf32-m68k.c: Likewise. + * elf32-mcore.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-s390.c: Likewise. + * elf32-vax.c: Likewise. + * elf64-ppc.c: Likewise. + * elf64-s390.c: Likewise. + * elf64-x86-64.c: Likewise. + * elfxx-ia64.c: Likewise. + * elf32-avr.c (USE_REL): Don't undef. + * elf32-ip2k.c: Likewise. + +2002-07-23 Nick Clifton + + * elf-bfd.h (struct elf_backend_data): Add new bitfield + 'want_p_paddr_set_to_zero'. + * elfxx-target.h: Set default value for want_p_paddr_set_to_zero + to false; + * elfxx-ia64.c: Set want_p_paddr_set_zero for HPUX target. + * elf.c (copy_private_bfd_data): Test want_p_paddr_set_zero. + +2002-07-23 Gabor Keresztfalvi + + * nlmcode.h (nlm_swap_auxiliary_headers_out): Swapped the order of + the MeSsAgEs and CoPyRiGhT tags to make >=NW4.x NLM loaders to + show the Copyright string. + Minor formatting tidy ups. + +2002-07-23 Nick Clifton + + * po/fr.po: Updated French translation. + * po/sv.po: Updated Swedish translation. + +2002-07-23 Alan Modra + + * elflink.h (elf_link_input_bfd): Don't change internal symbols + when outputting relocs. + +2002-07-20 Jason Thorpe + + * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Only insert + DT_PLTGOT into the dynamic section if there is a PLT. + +2002-07-19 Thiemo Seufer + + * elfxx-mips.c (_bfd_mips_elf_discard_info): New function, code from + elf32-mips.c. + (_bfd_mips_elf_write_section): Likewise. + * elfxx-mips.h (_bfd_mips_elf_discard_info): New prototype. + (_bfd_mips_elf_write_section): Likewise. + * elf32-mips.c (elf32_mips_discard_info): Move to elfxx-mips.c. + (elf32_mips_write_section): Likewise. + * elf64-mips.c (_bfd_mips_elf_ignore_discarded_relocs): Use it. + (_bfd_mips_elf_write_section): Likewise. + +2002-07-19 Alan Modra + + * elfxx-ia64.c: (elfNN_ia64_modify_segment_map): Properly scan + PT_IA_64_UNWIND segments for a given section. + +2002-07-17 H.J. Lu + + * Makefile.am: Fix a typo. + * Makefile.in: Regenerate. + +2002-07-15 Denis Chertykov + Frank Ch. Eigler + Ben Elliston + Alan Lehotsky + John Healy + Graham Stott + Jeff Johnston + + * Makefile.am: Add support for ip2k. + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + * archures.c: Add support for ip2k. + * config.bfd: Add support for ip2k. + * configure.in: Add support for ip2k. + * configure: Regenerate. + * reloc.c: Add support for ip2k. + * targets.c: Add support for ip2k. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * cpu-ip2k.c: New file. + * elf32-ip2k.c: New file. + +2002-07-17 Ian Rickards + + * dwarf2.c (concat_filename): If we can't establish the directory + just return the filename. + +2002-07-16 Moritz Jodeit + + * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Correct order of memset args. + +2002-07-16 Alan Modra + + * elflink.h: Formatting fixes, tidy prototypes. + (elf_link_assign_sym_version): Move common code out of loop. + +2002-07-16 Alan Modra + + * elflink.h (elf_link_input_bfd): Don't call reloc_emitter when + reloc section size is zero. Correct reloc output location. + +2002-07-16 John David Anglin + + * elf-hppa.h (elf_hppa_reloc_final_type): Use R_PARISC_PCREL16F as + the final type for the e_fsel selector when generating PA2.0W code. + (elf_hppa_relocate_insn): Provide support for PA2.0W 16-bit format 1 + relocations. + +2002-07-14 H.J. Lu + + * elflink.h (elf_link_assign_sym_version): Hide the default + definition if there is a hidden versioned definition. + +2002-07-12 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section): Drop nonsensical + dynamic reference test in assertion when initializing GOT with + static contents. Just assert that there are either no dynamic + sections, the symbol is defined in the regular objects or that the + symbol is undef weak. Tweak comment. + (elf_cris_finish_dynamic_symbol): Emit .got reloc for a program + only if the symbol isn't defined in the program and isn't undef + weak. + (elf_cris_adjust_dynamic_symbol): Simplify condition for getting + rid of PLT entry: only do it if the symbol isn't defined in a DSO. + When doing so, clear ELF_LINK_HASH_NEEDS_PLT. Tweak comments. + (elf_cris_discard_excess_program_dynamics): Don't consider + ELF_LINK_HASH_REF_DYNAMIC when omitting .got runtime relocs. + +2002-07-11 Alan Modra + + * elf32-i386.c (elf_i386_relocate_section): Don't complain about + unresolved debugging relocs in dynamic applications. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + +2002-07-10 Alan Modra + + * elf64-ppc.c (ONES): Define. + (ppc64_elf_howto_table): Use ONES here to avoid warnings. Fill in + missing src_mask fields. Tweak R_PPC64_NONE, R_PPC64_COPY. Fill + in missing dst_mask fields on R_PPC64_PLT32, R_PPC64_PLTREL32. + + * elf64-ppc.c (ppc64_elf_get_symbol_info): Delete. + (ppc64_elf_set_private_flags): Delete. + (ppc64_elf_section_from_shdr): Delete. + (ppc64_elf_merge_private_bfd_data): Remove flag checking/merging code. + (ppc64_elf_fake_sections): Delete. + (bfd_elf64_bfd_set_private_flags): Don't define. + (bfd_elf64_get_symbol_info): Likewise. + (elf_backend_section_from_shdr): Likewise. + (elf_backend_fake_sections): Likewise. + +2002-07-10 Marco Walther + + * elf.c: (assign_section_numbers) Set sh_entsize for .stab only + when not already set. + * elf64-sparc.c: (sparc64_elf_fake_sections): New function. + (elf_backend_fake_sections): Define. + +2002-07-10 Alan Modra + + * merge.c (_bfd_merge_section): Remove redundant output_section check. + Formatting. + (_bfd_merge_sections): Don't set SEC_EXCLUDE on unused sections. + +2002-07-09 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section): Move sanity-check for + NULL sym_hashes to just before use. + : In test for local symbol, accept also + symbol with non-default visibility. + : Ditto. + : + Ditto. + (cris_elf_gc_sweep_hook): Only decrease h->plt.refcount for + symbol with non-default visibility. + (cris_elf_check_relocs): At tests for local symbol before + increasing h->plt.refcount, also check for non-default + visibility. Ditto when checking for local symbol to eliminate + pc-relative runtime relocs. + +2002-07-08 Alan Modra + + * elf.c: Formatting. + (IS_SOLARIS_PT_INTERP): Add p_paddr and p_memsz checks. + (INCLUDE_SECTION_IN_SEGMENT): Remove IS_SOLARIS_PT_INTERP. + (copy_private_bfd_data): Set p_vaddr on broken Solaris PT_INTERP + segments. + +2002-07-07 Mark Mitchell + Alan Modra + + * cofflink.c (_bfd_coff_final_link): On PE COFF systems, take into + account the impact of relocation count overflow when computing + section offsets. + * coffcode.h (coff_write_relocs): Use obj_pe when deciding whether + or not to apply the PE COFF reloc overflow handling. Fix a + fencepost error in deciding whether or not to use that technique. + +2002-07-07 Alan Modra + + * elf-bfd.h (struct elf_reloc_cookie): Remove locsym_shndx, + change type of locsyms. + (bfd_elf_get_elf_syms): Declare. + * elf.c (bfd_elf_get_elf_syms): New function. + (group_signature): Use bfd_elf_get_elf_syms. + (bfd_section_from_r_symndx): Likewise. + * elfcode.h (elf_slurp_symbol_table): Likewise. + * elflink.h (elf_link_is_defined_archive_symbol): Likewise. + (elf_link_add_object_symbols): Likewise. Reorganise to increase + locality of various data structures. Properly free internal relocs. + (elf_bfd_final_link): Properly free internal relocs. + (elf_link_check_versioned_symbol): Use bfd_elf_get_elf_syms. + (elf_link_input_bfd): Likewise. + (elf_gc_mark): Likewise. Properly free internal relocs. + (elf_gc_sweep): Properly free internal relocs. + (elf_reloc_symbol_deleted_p): No need to swap syms in. + (elf_bfd_discard_info): Use bfd_elf_get_elf_syms. Properly free + internal relocs. + * elf-m10200.c (mn10200_elf_relax_section): Use bfd_elf_get_elf_syms. + Properly free possibly cached info. + (mn10200_elf_relax_delete_bytes): Remove symbol swapping code. + (mn10200_elf_symbol_address_p): Pass in internal syms. Remove + symbol swapping code. + (mn10200_elf_get_relocated_section_contents): Use bfd_elf_get_elf_syms. + Properly free possibly cached info. + * elf-m10300.c (mn10300_elf_relax_section): As above for elf-m10200.c. + (mn10300_elf_relax_delete_bytes): Likewise. + (mn10300_elf_symbol_address_p): Likewise. + (mn10300_elf_get_relocated_section_contents): Likewise. + * elf32-h8300.c (elf32_h8_relax_section): As above for elf-m10200.c. + (elf32_h8_relax_delete_bytes): Likewise. + (elf32_h8_symbol_address_p): Likewise. + (elf32_h8_get_relocated_section_contents): Likewise. + * elf32-m32r.c (m32r_elf_relax_section): As above for elf-m10200.c. + (m32r_elf_relax_delete_bytes): Likewise. + (m32r_elf_get_relocated_section_contents): Likewise. + * elf32-sh.c (sh_elf_reloc_loop): Free section contents using + elf_section_data to determine whether cached. + (sh_elf_relax_section): As above for elf-m10200.c. + (sh_elf_relax_delete_bytes): Likewise. + (sh_elf_get_relocated_section_contents): Likewise. + * elf32-xstormy16.c (xstormy16_elf_relax_section): As above. + * elf64-alpha.c (elf64_alpha_relax_section): As above. Also delay + reading of local syms. + * elf64-mmix.c (mmix_elf_relax_section): Likewise. + * elf64-sh64.c (sh_elf64_get_relocated_section_contents): As above. + * elfxx-ia64.c (elfNN_ia64_relax_section): As above. + * elfxx-mips.c (_bfd_mips_elf_check_relocs): Properly free internal + relocs. + * elf32-arm.h (bfd_elf32_arm_process_before_allocation): Properly + free internal relocs and section contents. Don't read symbols. + * elf32-hppa.c (get_local_syms): Use bfd_elf_get_elf_syms. + (elf32_hppa_size_stubs): Don't free local syms. + * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Delay + reading of local syms. Use bfd_elf_get_elf_syms. Properly free + possibly cached info. + * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise. + * elf64-hppa.c (elf64_hppa_check_relocs): Use bfd_elf_get_elf_syms. + * elf64-ppc.c (struct ppc_link_hash_table): Delete bfd_count and + all_local_syms. + (get_local_syms): Delete function. + (edit_opd): Use bfd_elf_get_elf_syms. Free on error exit. Cache + on exit. + (ppc64_elf_size_stubs): Use bfd_elf_get_elf_syms. Free/cache on exit. + +2002-07-05 Jim Wilson + + * syms.c (decode_section_type): New. + (bfd_decode_symclass): Call decode_section_type. + +2002-07-04 Jakub Jelinek + + * merge.c (_bfd_merged_section_offset): Avoid accessing byte before + section content start. + Reported by Michael Schumacher . + +2002-07-04 Alan Modra + + * section.c (_bfd_strip_section_from_output): Remove unnecessary + link order code. Don't actually remove the output section here; + Just set a flag for the linker to do so. + * elflink.c (_bfd_elf_link_renumber_dynsyms): Test for removed + sections when setting up output section dynsyms. + +2002-07-04 Alan Modra + + * elflink.h (elf_link_add_object_symbols): Revert 1999-09-02 hpux + fudge. + * elf.c (bfd_section_from_shdr): Work around broken hpux shared + libs here instead. + +2002-07-02 Martin Schwidefsky + + * elf64-s390.c (create_got_section): Set .got section alignment to + 8 bytes. + (elf_s390_check_relocs): Set .rela.dyn section alignment to 8 bytes. + +2002-07-02 Alan Modra + + * elf.c (_bfd_elf_reloc_type_class): Fix comment grammar. + +2002-07-01 Matt Thomas + + * elf32-vax.c (elf32_vax_print_private_bfd_data): Change EF_* + to EF_VAX_*. + +2002-07-01 Thiemo Seufer + + * elfxx-mips.c (ABI_64_P): Fix comment. + (MIPS_ELF_OPTIONS_SECTION_NAME,MIPS_ELF_STUB_SECTION_NAME): Use the + new section names for N64 ABI. + (mips_elf_output_extsym): No special _gp_disp handling for NewABI. + (mips_elf_calculate_relocation): Code formatting. + (mips_elf_create_dynamic_relocation): Likewise. + (_bfd_mips_elf_fake_sections): IRIX6 needs this hack, too. + (_bfd_mips_elf_size_dynamic_sections): Handle GOT_PAGE for any NewABI. + (_bfd_mips_elf_relocate_section): No special handling for R_MIPS_64 + in any NewABI. + (_bfd_mips_elf_finish_dynamic_symbol): No special _gp_disp handling + for NewABI. + (_bfd_mips_elf_modify_segment_map): Handle any N64 ABI. + (_bfd_mips_elf_gc_sweep_hook): NewABI GOT relocs should be handled + here, too. + +2002-07-01 Andreas Schwab + + * elf64-x86-64.c (elf64_x86_64_relocate_section): Only convert + R_X86_64_64 to R_X86_64_RELATIVE. + +2002-07-01 John David Anglin + + * vaxbsd.c: New BFD backend for VAX BSD and Ultrix. + * Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Add new backend. + Run "make dep-am". + * config.bfd (vax-*-bsd* | vax-*-ultrix*): Use vaxbsd_vec instead of + host_aout_vec. + * configure.in (vaxbsd_vec): Add. + * targets.c (vaxbsd_vec): Add. + * Makefile.in: Rebuild. + * configure: Rebuild. + * po/SRC-POTFILES.in: Rebuild. + +2002-07-01 Alan Modra + + * elflink.h (elf_gc_mark): Pass in the section whose relocs we are + examining to gc_mark_hook, rather than the bfd. + (elf_gc_sections): Adjust. + * elf-bfd.h (struct elf_backend_data ): Likewise. + * elf-m10300.c (mn10300_elf_gc_mark_hook): Likewise. + * elf32-arm.h (elf32_arm_gc_mark_hook): Likewise. + * elf32-avr.c (elf32_avr_gc_mark_hook): Likewise. + * elf32-cris.c (cris_elf_gc_mark_hook): Likewise. + * elf32-d10v.c (elf32_d10v_gc_mark_hook): Likewise. + * elf32-fr30.c (fr30_elf_gc_mark_hook): Likewise. + * elf32-hppa.c (elf32_hppa_gc_mark_hook): Likewise. + * elf32-i386.c (elf_i386_gc_mark_hook): Likewise. + * elf32-m32r.c (m32r_elf_gc_mark_hook): Likewise. + * elf32-m68k.c (elf_m68k_gc_mark_hook): Likewise. + * elf32-mcore.c (mcore_elf_gc_mark_hook): Likewise. + * elf32-openrisc.c (openrisc_elf_gc_mark_hook): Likewise. + * elf32-ppc.c (ppc_elf_gc_mark_hook): Likewise. + * elf32-s390.c (elf_s390_gc_mark_hook): Likewise. + * elf32-sh.c (sh_elf_gc_mark_hook): Likewise. + * elf32-sparc.c (elf32_sparc_gc_mark_hook): Likewise. + * elf32-v850.c (v850_elf_gc_mark_hook): Likewise. + * elf32-vax.c (elf_vax_gc_mark_hook): Likewise. + * elf32-xstormy16.c (xstormy16_elf_gc_mark_hook): Likewise. + * elf64-mmix.c (mmix_elf_gc_mark_hook): Likewise. + * elf64-ppc.c (ppc64_elf_gc_mark_hook): Likewise. + * elf64-s390.c (elf_s390_gc_mark_hook): Likewise. + * elf64-sh64.c (sh_elf64_gc_mark_hook): Likewise. + * elfxx-mips.c (_bfd_mips_elf_gc_mark_hook): Likewise. + * elfxx-mips.h (_bfd_mips_elf_gc_mark_hook): Likewise. + * elf64-x86-64.c (elf64_x86_64_gc_mark_hook): Likewise. + * elf32-frv.c (elf32_frv_gc_mark_hook): Likewise. Also remove + redundant local sym tests. + * elf64-ppc.c (struct ppc_link_hash_entry): Add is_entry. + (link_hash_newfunc): Init is_entry. + (ppc64_elf_copy_indirect_symbol): Copy is_entry. + (ppc64_elf_link_hash_table_create): Init all_local_syms. + (create_linkage_sections): Use bfd_make_section_anyway rather than + bfd_make_section. + (ppc64_elf_mark_entry_syms): New function. + (ppc64_elf_check_relocs): Don't bother testing elf_bad_symtab. Set + up opd entry to function section map. + (ppc64_elf_gc_mark_hook): Special case opd section relocs, and + relocs that reference the opd section. + (edit_opd): New function. + (ppc64_elf_size_dynamic_sections): Call get_local_syms and edit_opd. + (ppc64_elf_setup_section_lists): Don't calculate htab->bfd_count here. + (get_local_syms): Do so here. Exit if we already have local syms. + Remove bogus comment imported from elf32-hppa.c. Don't attempt to + read local syms on non-ELF input. + (ppc64_elf_size_stubs): Call _bfd_elf64_link_read_relocs rather + than duplicating it's function here. Adjust free of internal + relocs to suit. + (ppc64_elf_relocate_section): Adjust local syms in opd section. + * elf64-ppc.h (ppc64_elf_mark_entry_syms): Declare. + * elf32-hppa.c (elf32_hppa_size_stubs): Call + _bfd_elf32_link_read_relocs rather than duplicating it's function + here. Adjust free of internal relocs to suit. + +2002-07-01 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_check_relocs): Certain relocations + are not allowed in shared libs code, enforce -fPIC. + +2002-06-29 Hans-Peter Nilsson + + * mmo.c (mmo_write_loc_chunk): Don't eliminate leading and + trailing zero-sequences when there's previous left-over data. + +2002-06-27 John David Anglin + + * elf64-hppa.c (elf64_hppa_reloc_type_class): New function. + (elf64_hppa_finish_dynamic_sections): Check other_rel_sec, dlt_rel_sec + and opd_rel_sec in order for starting rela section. Check _raw_size. + (elf_backend_reloc_type_class): Define. + +2002-06-27 Kevin Buettner + + * dwarf2.c (decode_line_info): Handle older, non-standard, 64-bit + DWARF2 formats. + +2002-06-27 Alan Modra + + * cpu-powerpc.c: Comment on ordering of arch_info. + * elf32-ppc.c (ppc_elf_object_p): New function. + (elf_backend_object_p): Define. + * elf64-ppc.c (ppc64_elf_object_p): New function. + (elf_backend_object_p): Define. + +2002-06-26 Jason Thorpe + + * configure.in (vax-*-netbsd*): Set COREFILE to netbsd-core.lo. + * configure: Regenerate. + +2002-06-25 Jason Eckhardt + + * dwarf2.c (decode_line_info): Check unit->addr_size + to read in the proper number of prologue bytes. + +2002-06-25 Nick Clifton + + * config.bfd (powerpc-*-aix5*): Only create a selvecs for + aix5coff64_vec if 64-bit bfd support has been enabled. + (powerpc64-*-aix5*): Only define if 64-bit bfd support has + been enabled. + + * targets.c (_bfd_target_vector[]): Only include + aix5coff64_vec if 64-bit bfd support has been enabled. + +2002-06-25 Alan Modra + + * elf64-ppc.c (ppc_add_stub): Replace strcpy/strncpy with memcpy. + * elf32-hppa.c (hppa_add_stub): Likewise. + * elflink.c (_bfd_elf_link_record_dynamic_symbol): Likewise. + * elflink.h (elf_add_default_symbol): Fix comment typo. + (elf_add_default_symbol): Replace strcpy and strncpy with memcpy. + (elf_link_add_object_symbols): Likewise. + (elf_link_assign_sym_version): Likewise. + * hash.c (bfd_hash_lookup): Likewise. + * linker.c (_bfd_generic_link_add_one_symbol): Likewise. + * section.c (bfd_get_unique_section_name): Likewise. + * syms.c (_bfd_stab_section_find_nearest_line): Likewise. + * elf.c (_bfd_elf_make_section_from_phdr): Likewise. + (assign_section_numbers): Likewise. + (_bfd_elfcore_make_pseudosection): Likewise. + (elfcore_grok_lwpstatus): Likewise. + (elfcore_grok_win32pstatus): Likewise. + (elfcore_write_note): Constify input params. Use PTR instead of + void *. Include terminating NUL in namesz. Correct padding. + Support NULL "name" param. Use memcpy instead of strcpy. + (elfcore_write_prpsinfo): Constify input params. + (elfcore_write_prstatus): Likewise. Use PTR instead of void *. + (elfcore_write_lwpstatus): Likewise. + (elfcore_write_pstatus): Likewise. + (elfcore_write_prfpreg): Likewise. + (elfcore_write_prxfpreg): Likewise. + * elf-bfd.h (elfcore_write_note): Update declaration. + (elfcore_write_prpsinfo): Likewise. + (elfcore_write_prstatus): Likewise. + (elfcore_write_pstatus): Likewise. + (elfcore_write_prfpreg): Likewise. + (elfcore_write_prxfpreg): Likewise. + (elfcore_write_lwpstatus): Likewise. + +2002-06-25 Jason Eckhardt + + * ecoff.c (ecoff_set_symbol_info): Set BSF_FUNCTION for + symbols of type stProc and stStaticProc. + +2002-06-25 Nick Clifton + + * ecoff.c: VArious formatting fixes. + +2002-06-25 Alan Modra + + * coff-rs6000.c (xcoff_generate_rtinit): Fix typo. + +2002-06-25 Alan Modra + + * aout-adobe.c: Don't compare against "true" or "false. + * aout-target.h: Likewise. + * aoutx.h: Likewise. + * archive.c: Likewise. + * bout.c: Likewise. + * cache.c: Likewise. + * coff-a29k.c: Likewise. + * coff-alpha.c: Likewise. + * coff-i386.c: Likewise. + * coff-mips.c: Likewise. + * coff-or32.c: Likewise. + * coff64-rs6000.c: Likewise. + * coffcode.h: Likewise. + * coffgen.c: Likewise. + * cpu-ns32k.c: Likewise. + * ecoff.c: Likewise. + * ecofflink.c: Likewise. + * elf.c: Likewise. + * elf32-arm.h: Likewise. + * elf32-cris.c: Likewise. + * elf32-d30v.c: Likewise. + * elf32-i386.c: Likewise. + * elf32-mcore.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-sh.c: Likewise. + * elf32-sh64.c: Likewise. + * elf32-v850.c: Likewise. + * elf64-alpha.c: Likewise. + * elf64-sh64.c: Likewise. + * elfcode.h: Likewise. + * elfcore.h: Likewise. + * elflink.h: Likewise. + * elfxx-mips.c: Likewise. + * i386os9k.c: Likewise. + * ieee.c: Likewise. + * libbfd.c: Likewise. + * linker.c: Likewise. + * mmo.c: Likewise. + * nlm32-alpha.c: Likewise. + * nlm32-i386.c: Likewise. + * nlm32-ppc.c: Likewise. + * nlm32-sparc.c: Likewise. + * nlmcode.h: Likewise. + * oasys.c: Likewise. + * pdp11.c: Likewise. + * peicode.h: Likewise. + * reloc.c: Likewise. + * som.c: Likewise. + * srec.c: Likewise. + * tekhex.c: Likewise. + * vms.c: Likewise. + * xcofflink.c: Likewise. + * elf64-sparc.c: Edit comment to not use "== false". + + * aoutf1.h: Don't use "? true : false". + * ecoff.c: Likewise. + * format.c: Likewise. + * ieee.c: Likewise. + * linker.c: Likewise. + * mmo.c: Likewise. + * oasys.c: Likewise. + +2002-06-23 H.J. Lu + + * elflink.h (elf_link_add_archive_symbols): For the default + version, check references with only one `@' first. + +2002-06-23 John David Anglin + + * elf64-hppa.c (elf64_hppa_mark_milli_and_exported_functions): New + function. + (allocate_global_data_dlt): Don't add millicode symbols to dynamic + symbol table. + (allocate_global_data_opd, allocate_dynrel_entries): Likewise. + (elf64_hppa_size_dynamic_sections): Revise to use + elf64_hppa_mark_milli_and_exported_functions. + (elf64_hppa_finish_dynamic_symbol): Remove code to keep millicode + symbols out of dynamic symbol table. + +2002-06-23 Alan Modra + + * Makefile.in: Regenerate. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + * configure: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + + * elflink.h: Comment typo fixes. + +2002-06-23 H.J. Lu + + * elf-bfd.h (elf_link_loaded_list): New structure. + (elf_link_hash_table): Add "loaded". + * elf.c (_bfd_elf_link_hash_table_init): Initialize "loaded". + * elflink.h (elf_link_check_versioned_symbol): New function. + (elf_link_output_extsym): Call elf_link_check_versioned_symbol. + +2002-06-19 Nick Clifton + + * elflink.h (size_dynamic_sections): If the target does not + support an ELF style hash table, return true, indicating that + nothing needed to be done, rather than false, indicating that the + section's size could not be computed. + +2002-06-18 Dave Brolley + + From Catherine Moore, Michael Meissner, Dave Brolley: + * po/SRC-POTFILES.in: Add cpu-frv.c and elf32-frv.c + * targets.c: Support bfd_elf32_frv_vec. + * reloc.c: Add FRV relocs. + * configure.in: Add support for bfd-elf32-frv-vec. + * config.bfd (targ_cpu): Add support for frv-*-elf. + * archures.c: Add frv arch and machines. + * Makefile.am (ALL_MACHINES): Add cpu-frv.lo. + (ALL_MACHINES_CFILES): Add cpu-frv.c. + (BFD32_BACKENDS): Add elf32-frv.lo. + (BFD32_BACKENDS_CFILES): Add elf32-frv.c + (cpu-frv.lo): New target. + (elf32-frv.lo): New target. + * cpu-frv.c: New file. + * elf32-frv.c: New file. + +2002-06-18 Jakub Jelinek + + * elfcode.h (elf_object_p): Sanity check eh_shoff == 0 implies + e_shnum == 0. + Only read the first section header if e_shoff is non-zero. + Don't consider e_shstrndx if there are no sections. + +2002-06-17 Tom Rix + + * elf32-d10v.c (elf_d10v_howto_table): Change R_D10V_10_PCREL_R, + R_D10V_10_PCREL_L and R_D10V_18_PCREL to use + complain_overflow_bitfield. + +2002-06-17 Alan Modra + + * opncls.c (bfd_openr): Remove redundant bfd_set_error. + (bfd_fdopenr): Likewise. + (bfd_openstreamr): Likewise. + (bfd_openw): Likewise. + + * targets.c: Sort target vecs. + (_bfd_target_vector): Add aix5coff64_vec, bfd_elf32_sh64_vec, + bfd_elf32_sh64l_vec, bfd_elf32_sh64lnbsd_vec, + bfd_elf32_sh64nbsd_vec, bfd_elf64_sh64_vec, bfd_elf64_sh64l_vec, + bfd_elf64_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec. + * configure.in: Sort target vecs. Add m88kmach3_vec. + * configure: Regenerate. + +2002-06-16 Hans-Peter Nilsson + + * elf64-mmix.c (bpo_reloc_request_sort_fn): Use member + bpo_reloc_no to break sort order ties, not address of items. + +2002-06-16 John David Anglin + + * elf-hppa.h (elf_hppa_final_link): Fix formatting in comment. + Skip excluded sections in determing __gp value. + (elf_hppa_final_link_relocate): Use the symbol's address in + R_PARISC_FPTR64 relocations that don't need an opd entry. + * elf64-hppa.c (allocate_dynrel_entries): Simplify code. + (elf64_hppa_finalize_dynreloc): Likewise. + (elf64_hppa_size_dynamic_sections): Move comments and fix typo. + (elf64_hppa_finish_dynamic_symbol): Break up assert. + +2002-06-14 Sergey Grigoriev + + * pei-i386.c (COFF_SECTION_ALIGNMENT_ENTRIES): Enable 16 byte + alignment for .bss, .data and .text sections so that sse and sse2 + code will work. + * pe-i386.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise. + +2002-06013 J"orn Rennecke + + config.bfd: Add support for sh[1234]l*-*-elf* | sh3el*-*-elf*, + sh[1234]*-elf*. + +2002-06-12 John David Anglin + + * elflink.h (elf_bfd_final_link): Improve error handling for missing + dynamic sections. + + * elf64-hppa.c (allocate_global_data_opd): We don't need an opd entry + for a symbol that has no output section. + (allocate_dynrel_entries): Correct comment. + (elf64_hppa_finalize_dynreloc): Likewise. Don't create an opd entry + unless we want one. + (elf64_hppa_finalize_opd): Prevent segfault if dyn_h is NULL. + (elf64_hppa_finalize_dlt): Likewise. Prevent segfault for symbols + with no section. Remove unnecessary parentheses. + +2002-06-11 Tom Rix + + * coffcode.h (coff_compute_section_file_positions): Add data + section to AIX loader alignment check. + + * coff-rs6000.c (_bfd_xcoff_mkobject): Set default text section + alignment to 4 bytes. + (_bfd_xcoff_copy_private_bfd_data): Use text and data alignment + power accessor macro. + (do_shared_object_padding): Remove invalid assertion. + +2002-06-10 Richard Sandiford + + * section.c (_bfd_strip_section_from_output): Set SEC_EXCLUDE + for removed output sections. + +2002-06-10 Geoffrey Keating + + * merge.c (merge_strings): Use htab_create_alloc with calloc, not + htab_alloc. + * elf-strtab.c (_bfd_elf_strtab_finalize): Likewise. + +2002-06-08 H.J. Lu + + * elf.c (copy_private_bfd_data): Don't cast to bfd_size_type to + work around a long long bug in gcc 2.96 on mips. + +2002-06-08 Jason Thorpe + + * Makefile.am (BFD32_BACKENDS): Add vax1knetbsd.lo. + (BFD32_BACKENDS_CFILES): Add vax1knetbsd.c. + Regenerate dependency lists. + * Makefile.in: Regenerate. + * config.bfd (vax-*-netbsdelf*, vax-*-netbsdaout*): Add + vax1knetbsd_vec to targ_selvecs. + * configure.in: Add vax1knetbsd_vec. + * configure: Regenerate. + * targets.c (_bfd_target_vector): Add vax1knetbsd_vec. + * vax1knetbsd.c: New file. + * vaxnetbsd.c: Update copyright years. + (TARGET_PAGE_SIZE): Set to 0x1000. + (DEFAULT_MID): Set to M_VAX4K_NETBSD. + +2002-06-08 Matt Thomas + + * libaout.h (enum machine_type): Add M_VAX4K_NETBSD. + +2002-06-08 Alan Modra + + * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): Make static. + +2002-06-08 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + + * armnetbsd.c: Replace CONST with const. + * corefile.c: Likewise. + * elf32-dlx.c: Likewise. + * elf64-mips.c: Likewise. + * mmo.c: Likewise. + * ns32knetbsd.c: Likewise. + + * elf64-sparc.c (sparc64_elf_add_symbol_hook): Check the hash + table is elf64-sparc. + +2002-06-08 Thiemo Seufer + + * elfxx-mips.c (_bfd_mips_elf_relocate_section): Simplify code. + Fix RELA addends to get not shifted in the result. Don't do special + handling of R_MIPS_64 for NewABI. + +2002-06-07 Alan Modra + + * aoutx.h (NAME(aout,slurp_symbol_table)): Use bfd_zmalloc. + (NAME(aout,slurp_reloc_table)): Likewise. + * coff-mips.c (mips_relax_section): Use bfd_zalloc. + * coff-rs6000.c (xcoff_write_armap_big): Use bfd_zmalloc. + (xcoff_write_archive_contents_big): Likewise. + (xcoff_generate_rtinit): Likewise. + (xcoff_generate_rtinit): Likewise, and check error return. + * coff64-rs6000.c (xcoff64_generate_rtinit): Likewise. + * coffgen.c (coff_section_symbol): Use bfd_zalloc. + (coff_get_normalized_symtab): Likewise. + (coff_make_empty_symbol): Likewise. + (bfd_coff_set_symbol_class): Likewise. + * cofflink.c (coff_link_add_symbols): Likewise. + * ecoff.c (_bfd_ecoff_make_empty_symbol): Likewise. + * ecofflink.c (ecoff_write_shuffle): Use bfd_zmalloc. + (bfd_ecoff_write_accumulated_debug): Likewise. + * elf64-alpha.c (get_got_entry): Use bfd_zalloc. + * i386linux.c (bfd_i386linux_size_dynamic_sections): Likewise. + * i386lynx.c (NAME(lynx,slurp_reloc_table)): Use bfd_zmalloc. + * ieee.c (do_with_relocs): Use bfd_zalloc. + * m68klinux.c (bfd_m68klinux_size_dynamic_sections): Likewise. + * pdp11.c (NAME(aout,slurp_symbol_table)): Use bfd_zmalloc. + (NAME(aout,slurp_reloc_table)): Likewise. + (NAME(aout,squirt_out_relocs)): Don't memset when zalloc'd. + * reloc16.c (bfd_coff_reloc16_relax_section): Use bfd_zmalloc. + * som.c (som_build_and_write_symbol_table): Likewise. + (som_slurp_string_table): Likewise. + (som_slurp_symbol_table): Likewise. + (som_bfd_ar_write_symbol_stuff): Likewise. + * sparclinux.c (bfd_sparclinux_size_dynamic_sections): Use bfd_zalloc. + * sunos.c (bfd_sunos_size_dynamic_sections): Likewise. + * tekhex.c (find_chunk): Likewise. Get rid of unused "sname". + * vms-gsd.c (_bfd_vms_slurp_gsd): Use bfd_zmalloc. + * xcofflink.c (xcoff_link_add_symbols): Use bfd_zalloc/bfd_zmalloc. + +2002-06-07 Alan Modra + + * elf-bfd.h (struct bfd_elf_section_data ): Replace with + "group" union. + (elf_group_name): Update. + (elf_group_id): Define. + (bfd_elf_set_group_contents): Declare. + * elf.c (elf_fake_sections): Qualify use of elf_group_name. + (set_group_contents): Rename to bfd_elf_set_group_contents. Remove + ATTRIBUTE_UNUSED from failedptrarg. If elf_group_id is set, use + that sym for the signature. + (_bfd_elf_compute_section_file_positions): Don't call + set_group_contents for "ld -r" case. + (swap_out_syms): Use bfd_zalloc. + * elflink.h (elf_link_add_archive_symbols): Likewise. + (NAME(bfd_elf,size_dynamic_sections)): Likewise. + (elf_bfd_final_link): Call bfd_elf_set_group_contents. + +2002-06-07 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Allow unresolved + relocs in opd for non-shared too. + +2002-06-06 Jeffrey Law + + * elf32-h8300.c (elf32_h8_relax_section): Ignore uninteresting + relocations. + +2002-06-06 Nick Clifton + + * merge.c: Include libiberty.h. + * elf-strtab.c: Include libiberty.h. + +2002-06-06 Elias Athanasopoulos + + * peXXigen.c (pe_print_idata): Remove unused variable. + +2002-06-06 David Heine + + * elf.c (assign_file_positions_for_segments): Remove unallocated + sections from the section to segment mapping for PT_LOAD segments. + Update comment about empty loadable segments. + +2002-06-06 Richard Sandiford + + * stabs.c (_bfd_link_section_stabs): Check that the symbol offset + is within the .stabstr section. + +2002-06-06 Alan Modra + + * elf-bfd.h (struct elf_size_info ): Function args + are "const PTR", not "const PTR *". + (bfd_elf32_swap_symbol_in): Likewise. + (bfd_elf64_swap_symbol_in): Likewise. + * elfcode.h (elf_swap_symbol_in): Change input args to const PTR. + (elf_slurp_symbol_table): Adjust call to elf_swap_symbol_in. + * elflink.h (elf_link_is_defined_archive_symbol): Likewise. + (elf_link_add_object_symbols): Likewise. + (elf_link_record_local_dynamic_symbol): Likewise. + (elf_link_input_bfd): Likewise. + (elf_gc_mark): Likewise. + (elf_reloc_symbol_deleted_p): Likewise. + * elf-m10200.c (mn10200_elf_relax_section): Likewise. + (mn10200_elf_relax_delete_bytes): Likewise. + (mn10200_elf_symbol_address_p): Likewise. + (mn10200_elf_get_relocated_section_contents): Likewise. + * elf-m10300.c (mn10300_elf_relax_section): Likewise. + (mn10300_elf_relax_section): Likewise. + (mn10300_elf_relax_delete_bytes): Likewise. + (mn10300_elf_symbol_address_p): Likewise. + (mn10300_elf_get_relocated_section_contents): Likewise. + * elf32-h8300.c (elf32_h8_relax_section): Likewise. + (elf32_h8_relax_delete_bytes): Likewise. + (elf32_h8_symbol_address_p): Likewise. + (elf32_h8_get_relocated_section_contents): Likewise. + * elf32-hppa.c (get_local_syms): Likewise. + * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Likewise. + * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise. + * elf32-sh.c (sh_elf_relax_section): Likewise. + (sh_elf_relax_delete_bytes): Likewise. + (sh_elf_get_relocated_section_contents): Likewise. + * elf32-xstormy16.c (xstormy16_elf_relax_section): Likewise. + * elf64-alpha.c (elf64_alpha_relax_section): Likewise. + * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. + * elf64-mmix.c (mmix_elf_relax_section): Likewise. + * elf64-ppc.c (get_local_syms): Likewise. + * elf64-sh64.c (sh_elf64_get_relocated_section_contents): Likewise. + * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. + +2002-06-05 J"orn Rennecke + + * config.bfd (sh64l*-*-elf*, shl*-*-elf*): New configurations. + +2002-06-05 Alan Modra + + * elf.c (group_signature): Swap in the whole symbol, and handle + extracting section symbol names. + (setup_group): Add comment. + (set_group_contents): When called from objcopy or ld, arrange for + section contents to be written. Write group member output section + indices to allow objcopy to reorganize sections. + (_bfd_elf_copy_private_section_data): Copy group info. + + * elf-bfd.h (struct elf_size_info): Add swap_symbol_in field. + (bfd_elf32_swap_symbol_in): Update prototype. + (bfd_elf64_swap_symbol_in): Likewise. + * elfcode.h (elf_swap_symbol_in): Change input args to const PTR *. + (elf_slurp_symbol_table): Adjust call to elf_swap_symbol_in. + * elflink.h (elf_link_is_defined_archive_symbol): Likewise. + (elf_link_add_object_symbols): Likewise. + (elf_link_record_local_dynamic_symbol): Likewise. + (elf_link_input_bfd): Likewise. + (elf_gc_mark): Likewise. + (elf_reloc_symbol_deleted_p): Likewise. + * elf-m10200.c (mn10200_elf_relax_section): Likewise. + (mn10200_elf_relax_delete_bytes): Likewise. + (mn10200_elf_symbol_address_p): Likewise. + (mn10200_elf_get_relocated_section_contents): Likewise. + * elf-m10300.c (mn10300_elf_relax_section): Likewise. + (mn10300_elf_relax_section): Likewise. + (mn10300_elf_relax_delete_bytes): Likewise. + (mn10300_elf_symbol_address_p): Likewise. + (mn10300_elf_get_relocated_section_contents): Likewise. + * elf32-h8300.c (elf32_h8_relax_section): Likewise. + (elf32_h8_relax_delete_bytes): Likewise. + (elf32_h8_symbol_address_p): Likewise. + (elf32_h8_get_relocated_section_contents): Likewise. + * elf32-hppa.c (get_local_syms): Likewise. + * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Likewise. + * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise. + * elf32-sh.c (sh_elf_relax_section): Likewise. + (sh_elf_relax_delete_bytes): Likewise. + (sh_elf_get_relocated_section_contents): Likewise. + * elf32-xstormy16.c (xstormy16_elf_relax_section): Likewise. + * elf64-alpha.c (elf64_alpha_relax_section): Likewise. + * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. + * elf64-mmix.c (mmix_elf_relax_section): Likewise. + * elf64-ppc.c (get_local_syms): Likewise. + * elf64-sh64.c (sh_elf64_get_relocated_section_contents): Likewise. + * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. + * elfcode.h (NAME(_bfd_elf,size_info)): Update initialiser. + * elf64-alpha.c (alpha_elf_size_info): Likewise. + * elf64-hppa.c (hppa64_elf_size_info): Likewise. + * elf64-mips.c (mips_elf64_size_info): Likewise. + * elf64-s390.c (s390_elf64_size_info): Likewise. + * elf64-sparc.c (sparc64_elf_size_info): Likewise. + +2002-06-05 Maciej W. Rozycki + + * elf32-mips.c (elf32_mips_ignore_discarded_relocs): Move to... + elfxx-mips.c (_bfd_mips_elf_ignore_discarded_relocs): ... here. + elf64-mips.c (elf_backend_ignore_discarded_relocs): Use + _bfd_mips_elf_ignore_discarded_relocs. + elfxx-mips.h (_bfd_mips_elf_ignore_discarded_relocs): Declare. + +2002-06-05 H.J. Lu + + * elfxx-mips.c (mips_elf_calculate_relocation): Call + _bfd_elf_rel_local_sym for STT_SECTION relocations against + the SEC_MERGE section. + +2002-06-05 Alan Modra + + * coff-alpha.c: Update copyright date. + * coff-mips.c: Likewise. + * xcoff-target.h: Likewise. + + * bfd-in.h: Remove "taken from the source" comment. + * libbfd-in.h: Likewise. + * libcoff-in.h: Likewise. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * libcoff.h: Regenerate. + + * elf.c (bfd_elf_discard_group): Return true. + * elf-bfd.h (bfd_elf_discard_group): Declare. + * bfd-in.h (bfd_elf_discard_group): Don't declare here. + * section.c (bfd_discard_group): Rename to bfd_generic_discard_group. + * bfd.c (bfd_discard_group): Define. + * targets.c (struct bfd_target): Add _bfd_discard_group. + (BFD_JUMP_TABLE_LINK): Here too. + * libbfd-in.h (_bfd_nolink_bfd_discard_group): Define. + * aout-adobe.c (aout_32_bfd_discard_group): Define. + * aout-target.h (MY_bfd_discard_group): Define. + * aout-tic30.c (MY_bfd_discard_group): Define. + * binary.c (binary_bfd_discard_group): Define. + * bout.c (b_out_bfd_discard_group): Define. + * coff-alpha.c (_bfd_ecoff_bfd_discard_group): Define. + * coffcode.h (coff_bfd_discard_group): Define. + * coff-mips.c (_bfd_ecoff_bfd_discard_group): Define. + * elfxx-target.h (bfd_elfNN_bfd_discard_group): Define. + * i386msdos.c (msdos_bfd_discard_group): Define. + * i386os9k.c (os9k_bfd_discard_group): Define. + * ieee.c (ieee_bfd_discard_group): Define. + * ihex.c (ihex_bfd_discard_group): Define. + * mmo.c (mmo_bfd_discard_group): Define. + * nlm-target.h (nlm_bfd_discard_group): Define. + * oasys.c (oasys_bfd_discard_group): Define. + * ppcboot.c (ppcboot_bfd_discard_group): Define. + * som.c (som_bfd_discard_group): Define. + * srec.c (srec_bfd_discard_group): Define. + * tekhex.c (tekhex_bfd_discard_group): Define. + * versados.c (versados_bfd_discard_group): Define. + * vms.c (vms_bfd_discard_group): Define. + * xcoff-target.h (_bfd_xcoff_bfd_discard_group): Define. + * coff64-rs6000.c (rs6000coff64_vec): Update initialiser. + (aix5coff64_vec): Likewise. + * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Likewise. + +2002-06-04 Jason Thorpe + + * Makefile.am (BFD32_BACKENDS): Add elf32-sh64-com.lo. + (BFD32_BACKENDS_CFILES): Add elf32-sh64-com.c. + (elf32-sh64-com.lo): New dependency list. + * Makefile.in: Regenerate. + * configure.in (bfd_elf32_sh64_vec, bfd_elf32_sh64l_vec) + (bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec): Add + elf32-sh64-com.lo. + * configure: Regenerate. + * elf32-sh64.c (sh64_address_in_cranges) + (sh64_get_contents_type, sh64_address_is_shmedia): Move to... + (crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb): + (crange_bsearch_cmpl): Prepend _bfd_sh64_ to name and move to... + * elf32-sh64-com.c: ...here. New file. + +2002-06-04 Alan Modra + + * elf32-openrisc.c (openrisc_elf_gc_mark_hook): Remove + ATTRIBUTE_UNUSED on used params. + * elf32-vax.c (elf_vax_gc_mark_hook): Remove unnecessary checks + before calling bfd_section_from_elf_index on local syms. + * elf64-sh64.c (sh_elf64_gc_mark_hook): Likewise. + +2002-06-04 Jason Thorpe + + * Makefile.am (BFD32_BACKENDS): Add elf32-sh64-nbsd.lo. + (BFD32_BACKENDS_CFILES): Add elf32-sh64-nbsd.c. + (BFD64_BACKENDS): Add elf64-sh64-nbsd.lo. + (BFD64_BACKENDS_CFILES): Add elf64-sh64-nbsd.c. + (elf32-sh64-nbsd.lo, elf64-sh64-nbsd.lo): New rules. + * Makefile.in: Regenerate. + * config.bfd (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*) + (sh64-*-netbsd*): New targets. + * configure.in: Add bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec, + bfd_elf64_sh64nbsd_vec, and bfd_elf64_sh64lnbsd_vec. + * configure: Regenerate. + * elf32-sh64-nbsd.c: New file. + * elf64-sh64-nbsd.c: New file. + * targets.c: Add extern decls for bfd_elf32_sh64nbsd_vec, + bfd_elf32_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec, and + bfd_elf64_sh64lnbsd_vec. + +2002-06-04 Alan Modra + + * elf.c (setup_group): Set SEC_LINK_ONCE on GRP_COMDAT groups. + (bfd_section_from_shdr): Likewise. Set section name of group + sections from signature. + (group_signature): Split out from setup_group. Ensure symbol table + is available. + (bfd_elf_discard_group): New function. + (_bfd_elf_make_section_from_shdr): Don't set SEC_LINK_ONCE on + .gnu.linkonce* sections if they are members of a group. + (set_group_contents): Set GRP_COMDAT flag. + * section.c (bfd_discard_group): New function. + * bfd-in.h (bfd_elf_discard_group): Declare. + * bfd-in2.h: Regenerate. + * elf-bfd.h (struct bfd_elf_section_data): Add linkonce_p field. + (elf_linkonce_p): Define. + +2002-06-04 Alan Modra + + * elf.c (bfd_section_from_shdr): Make "name" const. + * elf-bfd.h (elf_backend_section_from_shdr): Likewise. + * elf32-i370.c (i370_elf_section_from_shdr): Likewise. + * elf32-ppc.c (ppc_elf_section_from_shdr): Likewise. + * elf32-sh64.c (sh64_backend_section_from_shdr): Likewise. + * elf32-v850.c (v850_elf_section_from_shdr): Likewise. + * elf64-alpha.c (elf64_alpha_section_from_shdr): Likewise. + * elf64-hppa.c (elf64_hppa_section_from_shdr): Likewise. + * elf64-ppc.c (ppc64_elf_section_from_shdr): Likewise. + * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Likewise. + * elfxx-mips.c (_bfd_mips_elf_section_from_shdr): Likewise. + * elfxx-mips.h (_bfd_mips_elf_section_from_shdr): Likewise. + +2002-06-03 Maciej W. Rozycki + + * elfxx-mips.c (ABI_64_P): Use backend's data to determine the + ABI. + +2002-06-02 Kazu Hirata + + * elf32-arc.c: Fix formatting. + * elf32-arm.h: Likewise. + * elf32-cris.c: Likewise. + * elf32-dlx.c: Likewise. + * elf32-hppa.c: Likewise. + * elf32-i386.c: Likewise. + * elf32-i386qnx.c: Likewise. + * elf32-or32.c: Likewise. + * elf32-s390.c: Likewise. + * elf32-sh64.c: Likewise. + * elf32-vax.c: Likewise. + * elf32-xstormy16.c: Likewise. + * elf64-alpha.c: Likewise. + * elf64-mmix.c: Likewise. + * elf64-ppc.c: Likewise. + * elf64-s390.c: Likewise. + * elf64-sh64.c: Likewise. + * elf64-x86-64.c: Likewise. + +2002-06-02 Richard Henderson + + * elf64-alpha.c (elf64_alpha_relocate_section): Don't dereference + null when there are no got entries for a symbol. + (elf64_alpha_relax_find_tls_segment): Rearrange to avoid + uninitialized variable warning. + +2002-06-01 Richard Henderson + + * elf64-alpha.c (elf64_alpha_relax_with_lituse): Don't test for + undefined symbols here. + (elf64_alpha_relax_section): Do it here. Also test for not + defined in the current module. + (elf64_alpha_relocate_section_r): Split out of ... + (elf64_alpha_relocate_section): ... here. Don't dereference + NULL when looking up local got entries. + +2002-06-01 Richard Henderson + + * elf64-alpha.c (elf64_alpha_relax_with_lituse): Reject undefined + symbols from JSR relaxation. + (elf64_alpha_size_plt_section_1): New. + (elf64_alpha_calc_dynrel_sizes): Split out .rela.got bits ... + (elf64_alpha_size_rela_got_1): ... here. + (elf64_alpha_size_dynamic_sections): Split out .rela.got bits ... + (elf64_alpha_size_rela_got_section): ... here. + (elf64_alpha_size_plt_section): New. + (elf64_alpha_relax_section): Call them. + (elf64_alpha_size_got_sections): Remove output_bfd arg. + (elf64_alpha_finish_dynamic_symbol): Check gotent use_count. + +2002-06-01 Richard Henderson + + * elf64-alpha.c (alpha_get_dtprel_base, alpha_get_tprel_base): New. + (elf64_alpha_relocate_section): Use them. Reject LE TLS relocs + in shared libraries. Fix DTPRELHI and TPRELHI value. + (INSN_ADDQ, INSN_RDUNIQ): New. + (struct alpha_relax_info): Add symtab_hdr, tls_segment, first_gotent. + (elf64_alpha_relax_with_lituse): Return boolean. Remove irelend + argument. Reject dynamic symbols. Use LITUSE symbolic constants. + (elf64_alpha_relax_got_load): Rename from relax_without_lituse. + Handle GOTDTPREL and GOTTPREL relocations. + (elf64_alpha_relax_gprelhilo): New. + (elf64_alpha_relax_tls_get_addr): New. + (elf64_alpha_relax_find_tls_segment): New. + (elf64_alpha_relax_section): Handle TLS relocations. + (ALPHA_ELF_LINK_HASH_TLS_IE): New. + (elf64_alpha_check_relocs): Set it. + +2002-06-01 Richard Henderson + + * elf64-alpha.c (elf64_alpha_relax_section): Don't store computed gp. + + * elf64-alpha.c (elf64_alpha_check_relocs): Fix typo on maybe_dynamic + check; don't suppress dynamic relocs for non-allocated sections. + + * elf64-alpha.c: Remove dead code. + +2002-05-31 Alan Modra + + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + + * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Don't allocate + space for bss .plt. + +2002-05-31 Graeme Peterson + + * Makefile.am (BFD32_BACKENDS): Add elf32-i386qnx.lo. + (BFD32_BACKENDS_CFILES): Add elf32-i386qnx.c. + Run "make dep-am". + * Makefile.in: Regenerate. + * config.bfd: Add i[3456]86-*-nto-qnx* support. + * configure.in: Add bfd_elf32_i386qnx_vec support. + * configure: Regenerate. + * elf-bfd.h (struct elf_backend_data): Add set_nonloadable_filepos, + is_contained_by_filepos, and copy_private_bfd_data_p. + * elf.c (assign_file_positions_for_segments): Call backend + set_nonloadable_filepos. Fix non-K&R call to _bfd_error_handler. + (IS_CONTAINED_BY_FILEPOS): Define. + (INCLUDE_SECTION_IN_SEGMENT): Also test IS_CONTAINED_BY_FILEPOS. + (copy_private_bfd_data): Use IS_CONTAINED_BY_FILEPOS. Typo fix. + Fix non-K&R call to _bfd_error_handler. + (_bfd_elf_copy_private_section_data): Use backend + copy_private_bfd_data_p. + * elf32-i386.c: Don't include elfxx-target.h when + ELF32_I386_C_INCLUDED is defined. + * elf32-i386qnx.c: New QNX elf backend file. + * elfxx-target.h: Add elf_backend_set_nonloadable_filepos, + elf_backend_is_contained_by_filepos, and + elf_backend_do_copy_private_bfd_data. + * targets.c: Add bfd_target bfd_elf32_i386qnx_vec. + +2002-05-31 Alan Modra + + * elfarm-oabi.c (bfd_elf32_arm_add_glue_sections_to_bfd): Define. + Move other similar defines to start of file. + +2002-05-30 Tom Rix + + * coff-rs6000.c (xcoff_rtype2howto): Handle 16 bit R_RBA. + * coff64-rs6000.c (xcoff64_rtype2howto): Same. + +2002-05-30 Richard Henderson + + * elf64-alpha.c (ALPHA_ELF_LINK_HASH_LU_TLSGD, + ALPHA_ELF_LINK_HASH_LU_TLSLDM, ALPHA_ELF_LINK_HASH_LU_FUNC): New. + (ALPHA_ELF_GOT_ENTRY_RELOCS_DONE): Remove. + (ALPHA_ELF_GOT_ENTRY_RELOCS_XLATED): Remove. + (struct alpha_elf_got_entry): Add reloc_type, reloc_done, reloc_xlated. + (struct alpha_elf_obj_tdata): Rename total_got_entries and + n_local_got_entries to total_got_size and local_got_size. + (elf64_alpha_howto, elf64_alpha_reloc_map): Update for TLS relocs. + (alpha_got_entry_size): New. + (elf64_alpha_relax_with_lituse): Use it. + (elf64_alpha_relax_without_lituse): Likewise. + (MAX_GOT_SIZE): Rename from MAX_GOT_ENTRIES. + (get_got_entry): New. + (elf64_alpha_check_relocs): Handle TLS relocs. Reorganize. + (elf64_alpha_adjust_dynamic_symbol): Test LU_FUNC as a mask. + (elf64_alpha_merge_ind_symbols): Check gotent->reloc_type. + (elf64_alpha_can_merge_gots, elf64_alpha_merge_gots): Likewise. + (elf64_alpha_calc_got_offsets_for_symbol): Use alpha_got_entry_size. + (elf64_alpha_calc_got_offsets): Likewise. + (alpha_dynamic_entries_for_reloc): New. + (elf64_alpha_calc_dynrel_sizes): Use it. + (elf64_alpha_size_dynamic_sections): Likewise. + (elf64_alpha_relocate_section): Handle TLS relocations. + * reloc.c: Add Alpha TLS relocations. + * bfd-in2.h, libbfd.h: Rebuild. + +2002-05-29 Ralf Habacker + + * peXXigen.c (pe_print_idata): Remove double printed + import table lines; add Bound-To comment. + +2002-05-29 Matt Thomas + + * Makefile.am (BFD32_BACKENDS): Add elf32-vax.lo. + (BFD32_BACKENDS_CFILES): Add elf32-vax.c. + (elf32-vax.lo): New rule. + * Makefile.in: Regenerate. + * configure.in (bfd_elf32_vax_vec) + (vaxnetbsd_vec): New vectors. + * configure: Regenerate. + * config.bfd (vax-*-netbsdelf*) + (vax-*-netbsdaout*) + (vax-*-netbsd*): New targets. + * elf32-vax.c: New file. + * reloc.c: Add VAX relocations. + * bfd-in2.h: Regenerate. + * targets.c (_bfd_target_vector): Add bfd_elf32_vax_vec. + +2002-05-29 Jason Thorpe + + * config.bfd (arm-*-netbsd*): Add bfd_elf32_littlearm_vec + and bfd_elf32_bigarm_vec to targ_selvecs. + +2002-05-29 Ralf Habacker + + * peXXigen.c (pe_print_idata): Fix seg faults on printing import tables + with auto-imported symbols. + +2002-05-29 Adam Nemet + + * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Don't add glue + sections only record bfd. + (bfd_elf32_arm_add_glue_sections_to_bfd): New function. + * bfd-in.h (bfd_elf32_arm_add_glue_sections_to_bfd): Declare it. + * bfd-in2.h: Regenerate. + +2002-05-28 Nick Clifton + + * syms.c (_bfd_stab_section_find_nearest_line): Move + declaration and initialisation of saw_line and saw_func out of + for loop. + +2002-05-29 Alan Modra + + * elf64-ppc.c (ppc64_elf_get_symbol_info): New function. + (bfd_elf64_get_symbol_info): Define. + * elfxx-target.h (bfd_elfNN_get_symbol_info): Only define if undef. + +2002-05-29 Andrey Volkov + + * cpu-h8300.c: Make default h8300 machine first in machine list. + +2002-05-28 Kuang Hwa Lin + + * config.bfd: Added DLX configuraton. + * Makefile.am: Added DLX configuraton. + * configure.in: Added DLX configuraton. + * archures.c: Add DLX architecture. + * reloc.c: Add DLX relocs. + * targets.c: Added DLX target vector. + * configure: Regenerate. + * Makefile.in: Regenreate. + * bfd-in2.h: Regenreate. + * elf32-dlx.c: New file: Support DLX target. + * cpu-dlx.c: New file: Support DLX target. + +2002-05-25 Alan Modra + + * elf32-m68k.c (elf32_m68k_print_private_bfd_data): Formatting. + + * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Revert last change. + (ppc64_elf_check_relocs): Don't set up function descriptor symbol + strings to point inside function code sym string. + (func_desc_adjust): Likewise. + (ppc64_elf_hide_symbol): Rewrite code to look up function code sym. + +2002-05-24 Michal Ludvig + + * elf64-x86-64.c (elf64_x86_64_grok_prstatus): Added. + (elf64_x86_64_grok_psinfo): Added. + +2002-05-24 TAMURA Kent + + * config.bfd: Add a target for i386-netbsdpe. + +2002-05-24 Alan Modra + + * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy is_func + and is_func_descriptor. + (func_desc_adjust): Hide function code sym in shared libs unless + there is a matching exported function descriptor sym. + +2002-05-23 Jakub Jelinek + + * elf.c (_bfd_elf_make_section_from_shdr): Set SEC_THREAD_LOCAL + for symbols from SHF_TLS section. + (_bfd_elf_print_private_bfd_data): Add PT_TLS. + (elf_fake_sections): Set SHF_TLS for SEC_THREAD_LOCAL sections. + (map_sections_to_segments): Build PT_TLS segment if necessary. + (assign_file_positions_for_segments): Likewise. + (get_program_header_size): Account for PT_TLS segment. + (swap_out_syms): Set type of BSF_THREAD_LOCAL symbols and symbols from + SEC_THREAD_LOCAL sections to STT_TLS. + * reloc.c: Add 386 and IA-64 TLS relocs. + * section.c (SEC_THREAD_LOCAL): Define. + (SEC_CONSTRUCTOR_TEXT, SEC_CONSTRUCTOR_DATA, SEC_CONSTRUCTOR_BSS): + Remove. + * elflink.h (elf_link_add_object_symbols): Support .tcommon. + (size_dynamic_sections): If DF_STATIC_TLS, set DF_FLAGS + unconditionally. + (struct elf_final_link_info): Add first_tls_sec. + (elf_bfd_final_link): Set first_tls_sec. + Compute elf_hash_table (info)->tls_segment. + (elf_link_output_extsym): Handle STT_TLS symbols. + (elf_link_input_bfd): Likewise. + * syms.c (BSF_THREAD_LOCAL): Define. + * bfd-in2.h: Rebuilt. + * libbfd.h: Rebuilt. + * elf32-i386.c (elf_i386_tls_transition, dtpoff_base, tpoff, + elf_i386_mkobject, elf_i386_object_p): New functions. + (elf_howto_table): Add TLS relocs. + (elf_i386_reloc_type_lookup): Support TLS relocs. + (elf_i386_info_to_howto_rel): Likewise. + (struct elf_i386_link_hash_entry): Add tls_type. + (struct elf_i386_obj_tdata): New. + (elf_i386_hash_entry, elf_i386_tdata, elf_i386_local_got_tls_type): + New macros. + (struct elf_i386_link_hash_table): Add tls_ldm_got. + (link_hash_newfunc): Clear tls_type. + (elf_i386_check_relocs): Support TLS relocs. + (elf_i386_gc_sweep_hook): Likewise. + (allocate_dynrelocs): Likewise. + (elf_i386_size_dynamic_sections): Likewise. + (elf_i386_relocate_section): Likewise. + (elf_i386_finish_dynamic_symbol): Likewise. + (bfd_elf32_mkobject, elf_backend_object_p): Define. + * elfxx-ia64.c (struct elfNN_ia64_dyn_sym_info): Add tprel_offset, + dtpmod_offset, dtprel_offset, tprel_done, dtpmod_done, dtprel_done, + want_tprel, want_dtpmod, want_dtprel. + (elfNN_ia64_tprel_base, elfNN_ia64_dtprel_base): New functions. + (ia64_howto_table): Add TLS relocs, rename R_IA64_LTOFF_TP22 to + R_IA64_LTOFF_TPREL22. + (elf_code_to_howto_index): Add TLS relocs. + (elfNN_ia64_check_relocs): Support TLS relocs. + (allocate_global_data_got): Account for TLS .got data. + (allocate_dynrel_entries): Account for TLS dynamic relocations. + (elfNN_ia64_install_value): Supprt TLS relocs. + (set_got_entry): Support TLS relocs. + (elfNN_ia64_relocate_section): Likewise. + +2002-05-23 Nick Clifton + + * elf32-arm.h (elf32_arm_final_link_relocate): For the Thumb + BLX reloc round the relocation up rather than down. + * coff-arm.c (coff_arm_relocate_section): Likewise. + +2002-05-21 H.J. Lu (hjl@gnu.org) + + * linker.c (_bfd_generic_link_add_one_symbol): Allow multiple + definition. + +2002-05-22 Alan Modra + + * elf64-ppc.c (ppc64_elf_size_stubs): Don't strip .branch_lt. + (ppc64_elf_relocate_section): Handle unresolved relocs in opd. + +2002-05-22 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Return false for + unresolved relocs. + (ppc64_elf_size_dynamic_sections): Check for splt NULL. + +2002-05-21 Thiemo Seufer + + * bfd.c (bfd_get_arch_size): Remove bfd_set_error call for + non-ELF targets. + +2002-05-21 Thiemo Seufer + + * elf-bfd.h (elf_backend_emit_relocs): Change prototype to return + an error value. + * elflink.h (elf_link_output_relocs): Likewise. Improve error message. + return with false on error. + (elf_link_input_bfd): Check reloc_emitter return value. + +2002-05-21 Jason Thorpe + + * config.bfd (armeb-*-netbsdelf*): New target. + +2002-05-20 Alan Modra + + * elf64-ppc.c (ppc_build_one_stub): Point undefined function syms + at the plt call stub. + +2002-05-19 Thiemo Seufer + + * cpu-mips.c (mips_compatible): Don't try to check machine + compatibility. + +2002-05-18 Tom Rix + + * coff64-rs6000.c (_bfd_xcoff64_swap_aux_out): Fix C_FILE auxent. + +2002-05-17 Alan Modra + + * elf64-ppc.c (ppc64_elf_info_to_howto): Formatting. + (ppc64_elf_relocate_section): Don't warn about reloc overflow when + we've already warned about an undefined symbol. Report more + detail on reloc errors. + +2002-05-17 Alan Modra + + * acinclude.m4 (AM_INSTALL_LIBBFD): New. + * configure.in: Invoke AM_INSTALL_LIBBFD. + * Makefile.am (install-data-local): Revert 2002-05-13. Move to.. + (install_libbfd): .. New target. + (uninstall_libbfd): Likewise. + (install-bfdlibLTLIBRARIES): Likewise. + (uninstall-bfdlibLTLIBRARIES): Likewise. + (bfdlibdir): New. + (bfdincludedir): New. + (lib_LTLIBRARIES): Rename to bfdlib_LTLIBRARIES. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * Makefile.in: Regenerate. + +2002-05-17 Stuart Balfour + + * hash.c (bfd_hash_lookup): Remove computation of len from inside + hash loop. + +2002-05-16 Nick Clifton + + * config.bfd: Add targets for sh64-linux (little endian and + big endian). + +2002-05-15 Laurent Pinchart + + * peXXigen.c (pe_print_idata): Do not assume that the first thunk + is located in the same section as the import table. Instead + check, and if necessary load the section containing the thunk. + +2002-05-15 Nick Clifton + + * aix5ppc-core.c (xcoff64_core_p): Replace bfd_read with + bfd_bread. + (xcoff64_core_file_matches_executable_p): Replace bfd_read + with bfd_bread. + +2002-05-15 Alan Modra + + * aix5ppc-core.c: Warning fixes. + * aout-adobe.c (aout_32_bfd_link_just_syms): Define. + * aout-target.h (MY_bfd_link_just_syms): Define. + * aout-tic30.c (MY_bfd_link_just_syms): Define. + * bfd.c (bfd_link_just_syms): Define. + * binary.c (binary_bfd_link_just_syms): Define. + * bout.c (b_out_bfd_link_just_syms): Define. + * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Update initializer. + * coff64-rs6000.c (rs6000coff64_vec, aix5coff64_vec): Likewise. + * coffcode.h (coff_bfd_link_just_syms): Define. + * elf-bfd.h (enum elf_link_info_type): Add ELF_INFO_TYPE_JUST_SYMS. + (elf_discarded_section): Check for ELF_INFO_TYPE_JUST_SYMS. + (_bfd_elf_link_just_syms): Declare. + * elf.c (_bfd_elf_link_just_syms): New function. + * elf-eh-frame.c (_bfd_elf_maybe_strip_eh_frame_hdr): Check that + sections haven't already been discarded by the linker. + * elflink.h (elf_link_add_object_symbols): Likewise for stab + sections and SEC_MERGE sections. + (elf_bfd_discard_info): Similarly here. + * elfxx-target.h (bfd_elfNN_bfd_link_just_syms): Define. + * i386msdos.c (msdos_bfd_link_just_syms): Define. + * i386os9k.c (os9k_bfd_link_just_syms): Define. + * ieee.c (ieee_bfd_link_just_syms): Define. + * ihex.c (ihex_bfd_link_just_syms): Define. + * libbfd-in.h (_bfd_nolink_bfd_link_just_syms): Define. + (_bfd_generic_link_just_syms): Declare. + * libecoff.h (_bfd_ecoff_bfd_link_just_syms): Define. + * linker.c (_bfd_generic_link_just_syms): New function. + * mmo.c (mmo_bfd_link_just_syms): Define. + * nlm-target.h (nlm_bfd_link_just_syms): Define. + * oasys.c (oasys_bfd_link_just_syms): Define. + * ppcboot.c (ppcboot_bfd_link_just_syms): Define. + * som.c (som_bfd_link_just_syms): Define. + * srec.c (srec_bfd_link_just_syms): Define. + * targets.c (struct bfd_target): Add _bfd_link_just_syms. + (BFD_JUMP_TABLE_LINK): And here. + * tekhex.c (tekhex_bfd_link_just_syms): Define. + * versados.c (versados_bfd_link_just_syms): Define. + * vms.c (vms_bfd_link_just_syms): Define. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + +2002-05-15 Thiemo Seufer + + * elf32-mips.c: Remove superfluous definitions copied from + elfxx-mips.c. + (bfd_elf32_bigmips_vec,bfd_elf32_littlemips_vec): Use the + SGIish vectors to check the special case. + (mips_elf_hi16_reloc): Fix comment. + (mips_elf_got16_reloc): Likewise. + (_bfd_mips_elf32_gprel16_reloc): Likewise. + (elf_reloc_map): Code cleanup. + (mips_reloc_map): Add comment. + (bfd_elf23_bfd_reloc_type_lookup): Code cleanup. + (mips_elf32_rtype_to_howto): Likewise. + (mips_elf32_discard_info): Likewise. + (elf32_mips_irix_compat): Invert logic: Only SGIish vectors + lead to IRIX compatibility now. + +2002-05-15 Thiemo Seufer + + * elfxx-mips.c: Call it IRIX, not Irix in comments. + +2002-05-13 Jason Thorpe + + * config.bfd (shle-*-netbsdelf*): Add target which includes + sh64 support. + +2002-05-13 David Edelsohn + + * configure.in: Revert 2002-04-07. Instead, auto-configure + HAVE_ST_C_IMPL. + * configure: Regenerate. + * config.in: Regenerate. + * rs6000-core.c (CNEW_IMPL): Guard use of c_impl with HAVE_ST_C_IMPL + or AIX_5_CORE. + +2002-05-11 Federico G. Schwindt + + * configure.in (sparc*-*-openbsd*): Support sparc64-openbsd + corefiles as well.2 + * configure: Regenerate. + +2002-05-13 Alan Modra + + * Makefile.am (install-data-local): Install headers to + $(exec_prefix)/include. + * Makefile.in: Regenerate. + +2002-05-11 Ralf Corsepius + Daniel Jacobowitz + + * coff-sh.c (sh_reloc_map): Map to R_SH_IMM32 for non-PE. Don't + map BFD_RELOC_RVA. + +2002-05-11 Federico G. Schwindt + + * config.bfd (alpha*-*-openbsd*, sparc64*-*-openbsd*, + hppa*-*-openbsd*): New targets. + * configure.in (alpha*-*-openbsd*): Set COREFILE. + * configure: Regenerate. + +2002-05-10 Tom Rix + + * coff64-rs6000.c (xcoff64_reloc_type_br): New function for + xcoff64_ppc_relocate_section. + * coff-rs6000.c : Extern common xcoff_reloc_type functions. + * libxcoff.h: Common xcoff_reloc_type function declaration. + +2002-05-10 Alan Modra + + * elf32-i386.c (elf_i386_relocate_section): Remove overflow checks + added in 2002-05-09 commit. + + * elf32-hppa.c (elf32_hppa_size_stubs): Revert part of 2002-05-04, + don't look for stubs on all undefined syms. + +2002-05-09 Alan Modra + + * elf64-ppc.c (RA_REGISTER_MASK, RA_REGISTER_SHIFT): Delete. + (ppc64_elf_howto_raw ): Not pc_relative or + pcrel_offset. + + * elf32-i386.c (elf_howto_table): Comments. + (elf_i386_relocate_section): Handle more relocs for relocatable + linking and against SEC_MERGE sections. + +2002-05-08 Alan Modra + + * elf32-ppc.c (ppc_elf_create_got): New function. + (ppc_elf_create_dynamic_sections): Call ppc_elf_create_got before + _bfd_elf_create_dynamic_sections. Correct .plt flags. + (ppc_elf_check_relocs): Use ppc_elf_create_got in place of + _bfd_elf_create_got_section. + +2002-05-07 Alan Modra + + * elf-bfd.h (struct elf_backend_data): Add rela_normal. + * elfxx-target.h (elf_backend_rela_normal): Define. + (elfNN_bed): Init rela_normal. + * elflink.h (elf_link_input_bfd ): Handle adjustment + for section symbols here if rela_normal. Simplify abs section test. + * elf-m10200.c (mn10200_elf_relocate_section): If relocatable, + return immediately. Remove code handling relocatable linking. + * elf-m10300.c (mn10300_elf_relocate_section): Likewise. + * elf32-fr30.c (fr30_elf_relocate_section): Likewise. + * elf32-i370.c (i370_elf_relocate_section): Likewise. + * elf32-i860.c (elf32_i860_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-mcore.c (mcore_elf_relocate_section): Likewise. + * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. + * elf32-arm.h (elf32_arm_relocate_section): Likewise #ifndef USE_REL. + * elf32-m32r.c (m32r_elf_relocate_section): Likewise. + * elf-m10200.c (elf_backend_rela_normal): Define. + * elf-m10300.c (elf_backend_rela_normal): Define. + * elf32-fr30.c (elf_backend_rela_normal): Define. + * elf32-i370.c (elf_backend_rela_normal): Define. + * elf32-i860.c (elf_backend_rela_normal): Define. + * elf32-m68k.c (elf_backend_rela_normal): Define. + * elf32-mcore.c (elf_backend_rela_normal): Define. + * elf32-openrisc.c (elf_backend_rela_normal): Define. + * elf32-ppc.c (elf_backend_rela_normal): Define. + * elf32-s390.c (elf_backend_rela_normal): Define. + * elf32-xstormy16.c (elf_backend_rela_normal): Define. + * elf64-ppc.c (elf_backend_rela_normal): Define. + * elf64-s390.c (elf_backend_rela_normal): Define. + * elf64-x86-64.c (elf_backend_rela_normal): Define. + * elfxx-ia64.c (elf_backend_rela_normal): Define. + * elf32-arm.h (elf_backend_rela_normal): Define #ifndef USE_REL. + * elf32-m32r.c (elf_backend_rela_normal): Likewise. + +2002-05-06 Nick Clifton + + * elf32-arm.h (elf32_arm_final_link_relocate): Convert + 'reloc_signed_max' and 'reloc_signed_min' into half-word offsets. + +2002-05-06 Alan Modra + + * elflink.h (elf_link_input_bfd ): Adjust r_offset + when not relocatable. Fix reloc_emitter call for K&R. + +2002-05-04 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Reinstate code + reloading local sym addend mistakenly removed in 2002-05-01 change. + + * dwarf2.c (struct line_head): Make prologue_length a bfd_vma. + (read_abbrevs): Change "offset" param to bfd_vma. + (parse_comp_unit): Change "version" and addr_size to unsigned ints. + Change "abbrev_offset" to bfd_vma. + (read_indirect_string): Use correct conversion chars in error + message format string, cast bfd_vma's to unsigned long. + (read_abbrevs): Likewise. + (read_attribute_value): Likewise. + (decode_line_info): Likewise. + (scan_unit_for_functions): Likewise. + (parse_comp_unit): Likewise. + +2002-05-04 Tom Rix + + * coffswap.h (coff_swap_reloc_in): Remove XCOFF support. + (coff_swap_reloc_out): Same. + * coff-rs6000.c: (xcoff_swap_reloc_in): Moved from coffswap.h. + (xcoff_swap_reloc_out): Same. + (xcoff_rtype2howto): Renamed from _bfd_xcoff_rtype2howto. Special + case some 16 bit relocs. Add reloc value to output. + (xcoff_howto_table): Remove 64 bit R_POS, add 16 bit + R_RBR. Improve names. + (_bfd_xcoff_reloc_type_lookup): Adjust for removal of 64 bit R_POS. + (bfd_xcoff_backend_data): Update with new reloc swap names. + (bfd_pmac_xcoff_backend_data) : Same. + * coff64-rs6000.c: (xcoff64_swap_reloc_in): Moved from coffswap.h. + (xcoff64_swap_reloc_out): Same. + (xcoff64_rtype2howto): Special case some 16 bit relocs and 32 bit + R_POS. Add reloc value to output. + (xcoff64_howto_table): Move 64 bit R_POS to first entry. Add 16 + bit R_RBR. Improve names, masks. + (xcoff64_reloc_type_lookup): Adjust for move of 64 bit R_POS. + (bfd_xcoff_backend_data): Update with new reloc swap names. + (bfd_xcoff_aix5_backend_data) : Same. + +2002-05-04 Alan Modra + + * elf32-hppa.c (struct elf32_hppa_link_hash_table): Add + bfd_count top_index, input_list, all_local_syms. + (elf32_hppa_setup_section_lists): New function, split from + elf32_hppa_size_stubs. + (elf32_hppa_next_input_section): Likewise. + (group_sections): Likewise. + (get_local_syms): Likewise. + (elf32_hppa_size_stubs): Adjust for split out functions. Look for + stubs on undefined syms too. + (elf32_hppa_set_gp): Use bfd_link_hash* instead of elf_link_hash*. + Only access htab elf fields when we have an elf hash table. + * elf32-hppa.h (elf32_hppa_setup_section_lists): Declare. + (elf32_hppa_next_input_section): Declare. + +2002-05-04 Bob Byrnes + + * opncls.c (_bfd_new_bfd_contained_in): Check return value of + _bfd_new_bfd. + +2002-05-03 H.J. Lu (hjl@gnu.org) + + * elfxx-mips.c (mips_elf_link_hash_entry): Add forced_local. + (mips_elf_link_hash_newfunc): Initialize forced_local to false. + (mips_elf_record_global_got_symbol): Call _bfd_mips_elf_hide_symbol + to hide a global symbol. + (_bfd_mips_elf_hide_symbol): Return if forced_local is true. Set + forced_local to true. + +2002-05-02 Richard Henderson + + * elf64-alpha.c (elf64_alpha_relocate_section): Force relative relocs + vs SHN_UNDEF to zero. + +2002-05-02 Alan Modra + + * elf64-ppc.c (ppc64_elf_howto_raw ): Change to a + 16 bit reloc. + : Likewise. + (ppc64_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to + SECTOFF reloc. + * elf32-ppc.c (ppc_elf_howto_raw ): Correct. + (ppc_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to + SECTOFF reloc. + + * elf64-ppc.c (ppc64_elf_addr16_ha_reloc): Delete. + (ppc64_elf_ha_reloc): New function. + (ppc64_elf_brtaken_reloc): New function. + (ppc64_elf_sectoff_reloc): New function. + (ppc64_elf_sectoff_ha_reloc): New function. + (ppc64_elf_toc_reloc): New function. + (ppc64_elf_toc_ha_reloc): New function. + (ppc64_elf_toc64_reloc): New function. + (ppc64_elf_unhandled_reloc): New function. + (ppc64_elf_howto_raw): Use the above. + : Mark pc_relative, pcrel_offset. + : Not pc_relative or pcrel_offset. Fix dst_mask. + : Likewise. + (IS_ABSOLUTE_RELOC): Update. + (struct ppc_link_hash_table): Add have_undefweak. + (ppc64_elf_link_hash_table_create): Init. + (func_desc_adjust): Set have_undefweak. + (ppc64_elf_func_desc_adjust): Call func_desc_adjust earlier. Only + add the .sfpr blr when have_undefweak. + (ppc64_elf_setup_section_lists): Check hash table flavour. + (ppc64_elf_next_input_section): Move output_section->owner test to + ppc64elf.em. + (ppc64_elf_set_toc): Rename to ppc64_elf_toc, remove info param + and relocatable test. Return TOCstart and don't set elf_gp. + (ppc64_elf_relocate_section): Correct BRTAKEN/BRNTAKEN branch + offset calculation. Add assert on weak sym branch tweaks. + * elf64-ppc.h (ppc64_elf_set_toc): Delete. + (ppc64_elf_toc): Declare. + (ppc64_elf_next_input_section): Update. + +2002-05-01 Alan Modra + + * syms.c (_bfd_stab_section_find_nearest_line): Don't bomb on NULL + file_name. + +2002-05-01 Alan Modra + + * elf64-ppc.c (CROR_151515, CROR_313131): Define. + (ppc64_elf_relocate_section): Use them. Don't look for plt calls + on R_PPC64_ADDR24 relocs. Require a nop or no link reg on plt + call branches. Correct undefined weak destination. + (ppc64_elf_func_desc_adjust): Always create at least one blr in + .sfpr, and correct case where either only savef* or restf* is + needed. + + Long branch stubs, multiple stub sections. + * elf64-ppc.h (ppc64_elf_setup_section_lists): Declare. + (ppc64_elf_next_input_section): Declare. + * elf64-ppc.c: Move linker-only prototypes. + (STUB_SUFFIX): Define. + (enum ppc_stub_type): New. + (struct ppc_stub_hash_entry): New. + (struct ppc_branch_hash_entry): New. + (struct ppc_link_hash_entry): Add stub_cache, oh. + (struct ppc_link_hash_table): Add stub_hash_table etc. Remove + sstub. Add sbrlt, srelbrlt, has_14bit_branch, stub_iteration. + Rename plt_overflow to stub_error. + (ppc_stub_hash_lookup): Define. + (ppc_branch_hash_lookup): Define. + (stub_hash_newfunc): New function. + (branch_hash_newfunc): New function. + (link_hash_newfunc): Init new fields. + (ppc64_elf_link_hash_table_create): Likewise. + (ppc64_elf_link_hash_table_free): New function. + (ppc_stub_name): New function. + (ppc_get_stub_entry): New function. + (ppc_add_stub): New function. + (create_linkage_sections): Use bfd_make_section_anyway. Create + .branch_lt and .rela.branch_lt sections. Don't create .stub. + (ppc64_elf_check_relocs): Set has_14bit_branch on R_PPC64_REL14*, + and set up for plt call stubs. Link func and func desc syms. + (ppc64_elf_gc_sweep_hook): Handle REL14* as per REL24. + (func_desc_adjust): Avoid hash lookup when func desc sym available + via shortcut, and set links when processing. + (ppc64_elf_hide_symbol): Likewise. + (allocate_dynrelocs): Don't allocate stub section here. + (ppc64_elf_size_dynamic_sections): Handle sbrlt and srelbrlt. + Remove sstub code. + (ppc_type_of_stub): New function. + (build_one_stub): Delete. + (ppc_build_one_stub): New function. + (ppc_size_one_stub): New function. + (ppc64_elf_setup_section_lists): New function. + (ppc64_elf_next_input_section): New function. + (group_sections): New function. + (get_local_syms): New function. + (ppc64_elf_size_stubs): Rewrite. + (ppc64_elf_build_stubs): Rewrite. + (ppc64_elf_relocate_section): Look up stub entry for REL24 + relocs. Don't propagate REL14* to dynamic objects. Look for long + branch stubs if REL14* or REL24 relocs won't reach. + (bfd_elf64_bfd_link_hash_table_free): Define. + +2002-04-30 Mark Mitchell + + * config.bfd: Add support for powerpc-*-windiss. + +2002-04-30 Tom Rix + + * xcofflink.c (xcoff_link_add_symbols): Always copy undef C_EXT + symbol names into the hash table. + +2002-04-28 Tom Rix + + * coff-rs6000.c (xcoff_calculate_relocation) : Function table for + calulating relocations. + (xcoff_complain_overflow) : Function table for relocation errors. + (xcoff_ppc_relocate_section): Use relocation and complain function + tables. + (xcoff_complain_overflow_unsigned_func): New complain function. + (xcoff_complain_overflow_signed_func): Same. + (xcoff_complain_overflow_bitfield_func): Same. + (xcoff_complain_overflow_dont_func): Same. + (xcoff_reloc_type_crel): New recot function. + (xcoff_reloc_type_br): Same. + (xcoff_reloc_type_ba): Same. + (xcoff_reloc_type_toc): Same. + (xcoff_reloc_type_rel): Same. + (xcoff_reloc_type_neg): Same. + (xcoff_reloc_type_pos): Same. + (xcoff_reloc_type_fail): Same. + (xcoff_reloc_type_noop): Same. + * libxcoff.h : Declare common parts for xcoff64. + * coff64-rs6000.c (xcoff64_ppc_relocate_section): Use relocation + and complain function tables. + +2002-04-28 Alan Modra + + * elf64-x86-64.c (struct elf64_x86_64_dyn_relocs): Comment typo. + * elf32-hppa.c (elf32_hppa_final_link): Formatting. + +2002-04-26 Alan Modra + + * opncls.c (bfd_make_readable): Call bfd_section_list_clear. + * xcofflink.c (xcoff_link_add_dynamic_symbols): Likewise. + + * elflink.h (elf_bfd_final_link): Ensure input bfd class is the + same as the output before calling elf_link_input_bfd. + + * coffcode.h (coff_compute_section_file_positions): Set + section_tail after shuffling section list. + +2002-04-24 Christian Groessler + + * coff-z8k.c (extra_case): Fix R_IMM32 relocations: The + addresses are 23bit with a special layout, not plain 32bit + values. Prevent relocation of immediate values. + +2002-04-24 Chris G. Demetriou + + * elfxx-mips.c (_bfd_mips_elf_print_private_bfd_data): If MDMX or + MIPS-16 ASE flags are set, print something to indicate that. + +2002-04-23 Alan Modra + + * elf32-hppa.c (hppa_type_of_stub): Correct and simplify condition + under which a plt call stub is used. + (final_link_relocate): Similarly. + (allocate_plt_static): Clear h-plabel except when plt entry is + exclusively used for a plabel. + (allocate_dynrelocs): Use the above to simplify plt sizing. + (struct elf32_hppa_link_hash_table): Add has_22bit_branch. + (elf32_hppa_link_hash_table_create): Init. + (BL22_RP): Define. + (hppa_build_one_stub): Use BL22_RP if has_22bit_branch. + (elf32_hppa_check_relocs): Set has_22bit_branch. + + * elf32-hppa.c (elf32_hppa_check_relocs): Remove debug message. + (final_link_relocate): Likewise. + +2002-04-22 Jakub Jelinek + + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't build + search table if some FDE is DW_EH_PE_aligned encoded either. + (_bfd_elf_write_section_eh_frame): Handle terminating FDE specially. + +2002-04-22 Richard Smith + Jakub Jelinek + + * elf-eh-frame.c (struct eh_cie_fde): Add per_encoding_relative. + (_bfd_elf_discard_section_eh_frame): Set it for CIEs with pcrel + encoded personality. + (_bfd_elf_write_section_eh_frame): Adjust pcrel encoded personality + for CIE/FDE removal. + +2002-04-20 Tom Rix + + * coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Fix C_FILE auxent. + +2002-04-20 Alan Modra + + * archures.c (bfd_lookup_arch): Move the list order comment.. + (struct bfd_arch_info): ..to where it belongs. + * bfd-in2.h: Regenerate. + + * archures.c (bfd_lookup_arch): Add comment on list order. + (bfd_default_set_arch_mach): Use bfd_lookup_arch. + * cpu-powerpc.c (bfd_powerpc_archs): Re-order so that the default + is always at head of list. + +2002-04-18 Nick Clifton + + * coff-arm.c (coff_thumb_pcrel_12, coff_thumb_pcrel_9, + insert_thumb_branch, record_thumb_to_arm_glue): Suppress + definition of these functions for ARM_WINCE builds as they are + not used. + (SWAP_IN_RELOC_OFFSET, SWAP_OUT_RELOC_OFFSET): Do not define + for ARM_WINCE builds. + +2002-04-18 Nick Clifton + + * coff-arm.c (bfd_arm_process_before_allocation): + +2002-04-17 J"orn Rennecke + + * cpu-sh.c (scan_mach): Delete. + (arch_info_struct): Replace scan_mach with bfd_default_scan. + (bfd_sh_arch): Likewise. + +2002-04-16 Nick Clifton + + * ihex.c (ihex_write_object_contents): Fix check for records + crossing 64K boundaries. + +2002-04-16 Alan Modra + + * elf32-m32r.c (m32r_elf_add_symbol_hook): Check the hash table + type rather than just assuming entries are ELF. + * elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise. + * elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise. + * elf64-sparc.c (sparc64_elf_add_symbol_hook): Likewise. + * elf64-mmix.c (mmix_elf_add_symbol_hook): Use bfd_link_hash_entry + rather than elf_link_hash_entry. + +2002-04-15 Richard Henderson + + * elf32-mips.c (mips_elf32_object_p): Revert 0404 fragment: allow + n32 binaries. + +2002-04-15 Michael Snyder + + * opncls.c (bfd_close): Write contents if writeable. + Minor formatting tidy-ups. + +2002-04-15 Alan Modra + + * elf32-ppc.c (ppc_elf_add_symbol_hook): Check the hash table type. + +2002-04-12 Michael Snyder + + * bfd-in.h (bfd_get_section_lma): New access macro. + Minor white-space fix-up. + +2002-04-12 Alan Modra + + * elf.c (prep_headers): Don't zero EI_OSABI, EI_ABIVERSION or + header pad. + +2002-04-09 DJ Delorie + + * elfarm-nabi.c (elf32_arm_howto_table): Fix ABS16 masks. + +2002-04-09 Casper S. Hornstrup + + * coffcode.h (coff_read_word): New. + (coff_compute_checksum): New. + (coff_apply_checksum): New. + (coff_write_object_contents): Call coff_apply_checksum () to + apply checksum to PE image. + +2002-04-08 Randolph Chung + + * elf32-hppa.c (hppa_unwind_entry_compare): Move to elf-hppa.h. + (elf32_hppa_final_link): Split out sorting logic to.. + * elf-hppa.h (elf_hppa_sort_unwind): ..here. + (elf_hppa_final_link): Call elf_hppa_sort_unwind. + +2002-04-07 Andrew Cagney + + * configure.in: Add missing ``|'' to powerpc-*-aix4.[4-9]* + pattern. + * configure: Re-generate. + +2002-04-07 Andrew Cagney + + * configure.in: Only define AIX_CORE_DUMPX_CORE when AIX version + is greater or equal to 4.3.3. + * configure: Regenerate. + Fix PR gdb/344. + +2002-04-05 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_howto_table) : Fix typo in name. + (cris_elf_check_relocs): Always create .rela.got here when + R_CRIS_16_GOTPLT or R_CRIS_32_GOTPLT is seen. + (elf_cris_adjust_gotplt_to_got): Don't create .rela.got here; + assume it's created. + +2002-04-04 Daniel Jacobowitz + + * aout-adobe.c (aout_32_bfd_link_hash_table_free): Define. + * aout-target.h (MY_bfd_link_hash_table_free): Conditionally + define. + * aout-tic30.c (MY_bfd_link_hash_table_free): Likewise. + * bfd.c (bfd_link_hash_table_free): Define. + * binary.c (binary_bfd_link_hash_table_free): Define. + * bout.c (b_out_bfd_link_hash_table_free): Define. + * coff-rs6000.c (rs6000coff_vec): Include + _bfd_generic_link_hash_table_free. + (pmac_xcoff_vec): Likewise. + * coff64-rs6000.c (rs6000coff64_vec): Likewise. + (aix5coff64_vec): Likewise. + * coffcode.h (coff_bfd_link_hash_table_free): Conditionally define. + * elf-m10300.c (elf32_mn10300_link_hash_table_free): New function. + (bfd_elf32_bfd_link_hash_table_free): Define. + * elf32-hppa.c (elf32_hppa_link_hash_table_free): New function. + (bfd_elf32_bfd_link_hash_table_free): Define. + * elfxx-target.h (bfd_elfNN_bfd_link_hash_table_free): Conditionally + define. + * i386msdos.c (msdos_bfd_link_hash_table_free): Define. + * i386os9k.c (os9k_bfd_link_hash_table_free): Define. + * ieee.c (ieee_bfd_link_hash_table_free): Define. + * ihex.c (ihex_bfd_link_hash_table_free): Define. + * libbfd-in.h (_bfd_nolink_bfd_link_hash_table_free): Define. + (_bfd_generic_link_hash_table_free): Add prototype. + * libcoff-in.h (_bfd_xcoff_bfd_link_hash_table_free): Add prototype. + * libecoff.h (_bfd_ecoff_bfd_link_hash_table_free): Define. + * linker.c (_bfd_generic_link_hash_table_free): New function. + * mmo.c (mmo_bfd_link_hash_table_free): Define. + * nlm-target.h (nlm_bfd_link_hash_table_free): Define. + * oasys.c (oasys_bfd_link_hash_table_free): Define. + * ppcboot.c (ppcboot_bfd_link_hash_table_free): Define. + * som.c (som_bfd_link_hash_table_free): Define. + * srec.c (srec_bfd_link_hash_table_free): Define. + * tekhex.c (tekhex_bfd_link_hash_table_free): Define. + * versados.c (versados_bfd_link_hash_table_free): Define. + * vms.c (vms_bfd_link_hash_table_free): New function. + * xcofflink.c (_bfd_xcoff_bfd_link_hash_table_free): New function. + + * coff-arm.c (coff_arm_link_hash_table_create): Use bfd_malloc + instead of bfd_alloc. + * coff-h8300.c (h8300_coff_link_hash_table_create): Likewise. + * coff-mcore.c (coff_mcore_link_hash_table_create): Likewise. + * coff-ppc.c (ppc_coff_link_hash_table_create): Likewise. + * cofflink.c (_bfd_coff_link_hash_table_create): Likewise. + * ecoff.c (_bfd_ecoff_bfd_link_hash_table_create): Likewise. + * elf-m10300.c (elf32_mn10300_link_hash_table_create): Likewise. + * elf.c (_bfd_elf_link_hash_table_create): Likewise. + * elf32-arm.h (elf32_arm_link_hash_table_create): Likewise. + * elf32-cris.c (elf_cris_link_hash_table_create): Likewise. + * elf32-hppa.c (elf32_hppa_link_hash_table_create): Likewise. + * elf32-i386.c (elf_i386_link_hash_table_create): Likewise. + * elf32-m68k.c (elf_m68k_link_hash_table_create): Likewise. + * elf32-s390.c (elf_s390_link_hash_table_create): Likewise. + * elf32-sh.c (sh_elf_link_hash_table_create): Likewise. + * elf64-alpha.c (elf64_alpha_bfd_link_hash_table_create): Likewise. + * elf64-ppc.c (ppc64_elf_link_hash_table_create): Likewise. + * elf64-s390.c (elf_s390_link_hash_table_create): Likewise. + * elf64-sh64.c (sh64_elf64_link_hash_table_create): Likewise. + * elf64-sparc.c (sparc64_elf_bfd_link_hash_table_create): Likewise. + * elf64-x86-64.c (elf64_x86_64_link_hash_table_create): Likewise. + * elfxx-mips.c (_bfd_mips_elf_link_hash_table_create): Likewise. + * linker.c (_bfd_generic_link_hash_table_create): Likewise. + * m68klinux.c (linux_link_hash_table_create): Likewise. + * sparclinux.c (linux_link_hash_table_create): Likewise. + * sunos.c (sunos_link_hash_table_create): Likewise. + * xcofflink.c (_bfd_xcoff_bfd_link_hash_table_create): Likewise. + + * targets.c: Add _bfd_link_hash_table_free to xvec. + + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * libcoff.h: Regenerate. + +2002-04-04 Alan Modra + + * dep-in.sed: Cope with absolute paths. + * Makefile.am (dep.sed): Subst TOPDIR, and not INCDIR. + Run "make dep-am". + * Makefile.in: Regenerate. + * coff-arm.c: Fix copyright date. + * cpu-h8300.c: Likewise. + * cpu-i370.c: Likewise. + * cpu-s390.c: Likewise. + * cpu-mips.c: Likewise. + * po/SRC-POTFILES.in: Regenerate. + +2002-04-04 Thiemo Seufer + + * Makefile.am: Add elfxx-mips.c to the known backends. + (elf32-mips.lo): remove dependency to coff/external.h. + * Makefile.in: Regenerate. + * configure.in: Add elfxx-mips.lo to all vectors using elf32-mips.lo + Remove elf32-mips.lo from 64 bit vectors. Update dependencies + accordingly. + * configure: Regenerate. + * elf-bfd.h: Move all MIPS ELF specific prototypes to elfxx-mips.h. + (irix_compat_t): IRIX compatibility level, moved from elf32-mips.c. + (elf_backend_mips_irix_compat, elf_backend_mips_rtype_to_howto): New + MIPS specific backend functions. + * elf32-mips.c: Moved most code to elfxx-mips.c. + (mips_elf_hi16_reloc): Rename from _bfd_mips_elf_hi16_reloc and make + static. + (mips_elf_lo16_reloc): Likewise, was _bfd_mips_elf_lo16_reloc. + (mips_elf_got16_reloc): Likewise, was _bfd_mips_elf_got16_reloc. + (mips_elf_gprel32_reloc): Likewise, was _bfd_mips_elf_gprel32_reloc. + (mips_elf32_rtype_to_howto): Rename from mips_rtype_to_howto. Changed + interface to allow selection of the right REL or RELA howto table. + (mips_elf32_object_p): Rename from _bfd_mips_elf_object_p and made + static. Let it refuse n32 objects. + (elf32_mips_grok_prstatus): Rename from _bfd_elf32_mips_grok_prstatus. + (elf32_mips_grok_psinfo): Rename from _bfd_elf32_mips_grok_psinfo. + (elf32_mips_discard_info): Rename from _bfd_elf32_mips_discard_info. + (elf32_mips_ignore_discarded_relocs): Rename from + _bfd_elf32_mips_ignore_discarded_relocs. + (elf32_mips_write_section): Rename from _bfd_elf32_mips_write_section. + (elf32_mips_irix_compat): New function, replaces IRIX_COMPAT. + (elf_mips_howto_table_rela): Remove. + * elf64-mips.c: Moved most code to elfxx-mips.c. + (bfd_elf64_bfd_reloc_type_lookup): Make static. + (mips_elf64_rtype_to_howto): New function. + (mips_elf64_object_p): Likewise. + (elf64_mips_irix_compat): Likewise. + * elfxx-mips.c: New file containing common code merged together from + elf32-mips.c and elf64-mips.c. + * elfxx-mips.h: New file containing MIPS specific prototypes from + elf-bfd.h. + * elfxx-target.h: Add handling for elf_backend_mips_irix_compat and + elf_backend_mips_rtype_to_howto. + +2002-04-04 Alan Modra + + * srec.c (MAXCHUNK, Chunk): Revise comments. + (srec_write_record): Correct buffer size. + (srec_write_header): Do without intermediate buffer. + (srec_write_section): Validate Chunk. + (srec_write_terminator): Pass NULL instead of dummy buffer. + (srec_write_symbols): Pass file and symbol names directly to + bfd_bwrite so sprintf won't overflow buffer. + +2002-04-03 Jakub Jelinek + + * elf32-sparc.c (elf32_sparc_relocate_section): Don't emit dynamic + PC relative relocs against hidden symbols. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + +2002-04-03 Alan Modra + + * elf.c (_bfd_elf_make_section_from_shdr): When setting section + LMAs, loop over segments until p_vaddr and p_memsz specify an + extent enclosing the section. + +2002-04-02 Nick Clifton + + * ihex.c (ihex_write_object_contents): Do not allow records to + cross a 64K boundary - wrap if necessary. + +2002-04-01 Nathan Williams + + * elf.c (elfcore_netbsd_get_lwpid): Fix off-by-one error + which caused the returned LWP ID to always be 0. + +2002-04-01 Richard Henderson + + * elf32-sparc.c (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New. + (elf32_sparc_relocate_section): Use it to figure out when to + initialize .got entries. + * elf64-sparc.c: Similarly. + +2002-03-28 Alan Modra + + * linker.c (link_action): Ignore duplicate warning syms. + (_bfd_generic_link_write_global_symbol): Follow warning symbol link. + * elflink.h (elf_adjust_dynstr_offsets): Likewise. + (elf_adjust_dynamic_symbol): Likewise. + (elf_export_symbol): Likewise. + (elf_link_find_version_dependencies): Likewise. + (elf_link_assign_sym_version): Likewise. + (elf_link_sec_merge_syms): Likewise. + (elf_link_output_extsym): Likewise. + (elf_gc_sweep_symbol): Likewise. + (elf_gc_propagate_vtable_entries_used): Likewise. + (elf_gc_smash_unused_vtentry_relocs): Likewise. + (elf_gc_allocate_got_offsets): Likewise. + (elf_collect_hash_codes): Likewise. + * elflink.c (elf_link_renumber_hash_table_dynsyms): Likewise. + * elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols): Likewise. + (elf_hppa_remark_useless_dynamic_symbols): Likewise. + * elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Likewise. + * elf32-arm.h (elf32_arm_discard_copies): Likewise. + * elf32-cris.c (elf_cris_adjust_gotplt_to_got): Likewise. + (elf_cris_discard_excess_dso_dynamics): Likewise. + * elf32-hppa.c (clobber_millicode_symbols): Likewise. + (mark_PIC_calls): Likewise. + (allocate_plt_static): Likewise. + (allocate_dynrelocs): Likewise. + (readonly_dynrelocs): Likewise. + * elf32-i386.c (allocate_dynrelocs): Likewise. + (readonly_dynrelocs): Likewise. + * elf32-i370.c (i370_elf_adjust_dynindx): Likewise. + * elf32-m68k.c (elf_m68k_discard_copies): Likewise. + * elf32-mips.c (mips_elf_output_extsym): Likewise. + (mips_elf_sort_hash_table_f): Likewise. + (mips_elf_check_mips16_stubs): Likewise. + * elf32-s390.c (allocate_dynrelocs): Likewise. + (readonly_dynrelocs): Likewise. + * elf32-sh.c (sh_elf_discard_copies): Likewise. + * elf32-xstormy16.c (xstormy16_relax_plt_check): Likewise. + (xstormy16_relax_plt_realloc): Likewise. + * elf64-alpha.c (elf64_alpha_calc_got_offsets_for_symbol): Likewise. + (elf64_alpha_output_extsym): Likewise. + * elf64-hppa.c (elf64_hppa_mark_exported_functions): Likewise. + * elf64-mips.c (mips_elf64_sort_hash_table_f): Likewise. + (mips_elf64_check_mips16_stubs): Likewise. + (mips_elf64_output_extsym): Likewise. + * elf64-ppc.c (func_desc_adjust): Likewise. + (allocate_dynrelocs): Likewise. + (readonly_dynrelocs): Likewise. + * elf64-s390.c (allocate_dynrelocs): Likewise. + (readonly_dynrelocs): Likewise. + * elf64-sh64.c (sh64_elf64_discard_copies): Likewise. + * elf64-x86-64.c (allocate_dynrelocs): Likewise. + (readonly_dynrelocs): Likewise. + * elfxx-ia64.c (elfNN_ia64_global_dyn_sym_thunk): Likewise. + * aoutx.h (aout_link_write_other_symbol): Likewise. + * cofflink.c (_bfd_coff_write_task_globals): Likewise. + (_bfd_coff_write_global_sym): Likewise. + * i386linux.c (linux_tally_symbols): Likewise. + * m68klinux.c (linux_tally_symbols): Likewise. + * sparclinux.c (linux_tally_symbols): Likewise. + * pdp11.c (aout_link_write_other_symbol): Likewise. + * sunos.c (sunos_scan_dynamic_symbol): Likewise. + * xcofflink.c (xcoff_build_ldsyms): Likewise. + (xcoff_write_global_symbol): Likewise. + + * cofflink.c (_bfd_coff_final_link): Formatting. + * cpu-mips.c (mips_compatible): Make static, prototype. + * elf32-i386.c (elf_i386_check_relocs): Formatting. + * elf32-sh.c (sh_elf_size_dynamic_sections): Likewise. + * elf64-alpha.c (elf64_alpha_output_extsym): Likewise. + * elf64-mips.c (mips_elf64_sort_hash_table): Likewise. + (mips_elf64_final_link): Likewise. + * elflink.h (elf_link_find_version_dependencies): Remove duplicate + prototype. + +2002-03-27 Nick Clifton + + * coff-arm.c (SWAP_IN_RELOC_OFFSET): Define. + (SWAP_OUT_RELOC_OFFSET): Define. + +2002-03-27 Gregory Steuck + + * elf.c (_bfd_elf_get_symtab_upper_bound): Leave space for + terminating NULL if empty symbol table. + (_bfd_elf_get_dynamic_symtab_upper_bound): Likewise. + +2002-03-26 H.J. Lu (hjl@gnu.org) + + * elflink.h (elf_link_input_bfd): Revert the last change since + the gcc exception handling isn't fixed yet. + +2002-03-26 H.J. Lu (hjl@gnu.org) + + * elflink.h (elf_link_input_bfd): Complain about relocations + against local symbols in discarded sections. + +2002-03-26 Alan Modra + + * elflink.h (elf_gc_mark): Don't recurse into non-ELF sections. + +2002-03-23 Alan Modra + + * elf.c (_bfd_elf_make_section_from_shdr): Don't set lma based on + section file offset for !SEC_LOAD sections. + +2002-03-21 Richard Earnshaw + + * elf32-arm.h (elf32_arm_final_link_relocate , + ): Handle relocations to Thumb functions. + +2002-03-21 Alan Modra + + * coff64-rs6000.c (_bfd_xcoff64_put_symbol_name): Prototype. + Whitespace changes. + * archive.c: Update copyright date. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * Makefile.am: Run "make dep-am" + * Makefile.in: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + +2002-03-20 Daniel Jacobowitz + + * dwarf2.c (struct funcinfo): Move up. + (lookup_address_in_function_table): New argument function_ptr. + Set it. + (lookup_address_in_line_table): New argument function. If function + is non-NULL, use it to handle ``addr'' before the first line note of + the function. + (comp_unit_find_nearest_line): Update and swap calls to + lookup_address_in_function_table and lookup_address_in_line_table. + * syms.c (_bfd_stab_section_find_nearest_line): Use the first + N_SLINE encountered if we see an N_FUN before any N_SLINE. + +2002-03-20 Tom Rix + + * coff-rs6000.c (_bfd_xcoff_stat_arch_elt): Renamed from + _bfd_xcoff_generic_stat_arch_elt. Fix format check. + * coff64-rs6000.c : Use _bfd_xcoff_stat_arch_elt. + +2002-03-19 Tom Rix + + * xcofflink.c (_bfd_xcoff_bfd_link_add_symbols): Look through all + dynamic objects in archives. + +2002-03-19 Hans-Peter Nilsson + + * elflink.h (NAME(bfd_elf,record_link_assignment)): Don't set + STT_NOTYPE symbols to STT_OBJECT. + +2002-03-18 Jan Hubicka + + * cpu-i386.c (bfd_x86_64_arch): Rename to "i386:x86-64" + +2002-03-18 Tom Rix + + * aix5ppc.core.c : New file for AIX 5 64 bit core support. + * bfd-in.h : Add bfd_xcoff_ar_archive_set_magic declaration. + * coff-rs6000 (do_pad) : New function for archive padding. + (do_copy) : New function for object file copying in archives. + (do_shared_object_padding) : New function for padding shared + objects to their text section alignment in archives. + (bfd_xcoff_ar_achive_set_magic) : Stub. + (xcoff_write_armap_big) : Use do_copy and do_pad. + (xcoff_write_archive_contents_big) : Use do_shared_object_padding, + do_copy and do_pad. + * coff64-rs6000.c (xcoff64_write_ojbect_contents) : Use + bfd_xcoff_magic_number. + (xcoff64_bad_format_hook) : New function for _bfd_bad_format_hook + fop. + (xcoff_backend_data_r) : Use xcoff64_bad_format_hook. + (bfd_xcoff_aix5_backend_data) : New Aix 5 backend data. + (aix5coff64_vec) : New Aix 5 target aix5coff64-rs6000. + * rs6000-core.c : Update copyright date. + * xcofflink.c (bfd_xcoff_size_dynamic_sections): Check for NULL + csectpp. + * coffcode.h (coff_new_section_hook) : Use new accessor macros. + (coff_set_arch_mach_hook) : Add Aix 5 U64_TOCMAGIC magic #. + (coff_set_flags) : Use bfd_xcoff_magic_number. + * libxcoff.h (bfd_xcoff_is_xcoff64): Add U64_TOCMAGIC. + * configure.in : Add powerpc-*-aix5 and rs6000-*-aix5 support. + * Makefile.am : Same. + * config.bfd : Same. + * targets.c : Same. + * configure : Regnerate. + * Makefile.in : Same. + * bfd-in2.h : Same. + +2002-03-18 Nick Clifton + + * po/fr.po: Updated version. + +2002-03-18 Alan Modra + + * libbfd.c (bfd_write_bigendian_4byte_int): Return true iff success. + * libbfd.h: Regenerate. + * archive.c (coff_write_armap): Pass on failures from + bfd_write_bigendian_4byte_int. + +2002-03-14 H.J. Lu + + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set the BFD + error to bfd_error_nonrepresentable_section for reinit_array + section in DSO. + +2002-03-14 Nick Clifton + + * coffcode.h (coff_slurp_symbol_table): When adding BSF_WEAK flag, + OR it in rather than replacing previously selected flags. + + * elfxx-target.h (TARGET_BIG_SYM): Set ar_max_namelen to 15. + (TARGET_LITTLE_SYM): Set ar_max_namelen to 15. + +2002-03-14 Alan Modra + + * cpu-mips.c (mips_compatible): New. Don't check bits_per_word. + (N): Use the above. + * elflink.h (elf_bfd_final_link): Revert last change. Instead, + ensure reloc size matches before calling elf_link_input_bfd. + Add an assert to check reloc size when counting output relocs. + +2002-03-14 Nick Clifton + + * mmo.c (mmo_get_loc): Return NULL rather than false. + +2002-03-13 Nick Clifton + + * po/fr.po: Updated version. + +2002-03-13 Alan Modra + + * archures.c (bfd_default_compatible): Test bits_per_word. + * cpu-i386.c (i386_compatible): Remove. Replace occurrences with + bfd_default_compatible. + * cpu-i370.c (i370_compatible): Likewise. + * cpu-sparc.c (sparc_compatible): Likewise. + * cpu-h8300.c (compatible): Test in->arch == out->arch. + + * elflink.h: Formatting fixes. + (elf_link_output_extsym): Merge undefined and undef weak cases. + + * elflink.h (elf_bfd_final_link): Only call elf_link_input_bfd + when word size of input matches output word size. + +2002-03-12 Andreas Jaeger + + * cpu-i386.c (i386_compatible): New. Use it instead of + bfd_default_compatible. + +2002-03-07 H.J. Lu (hjl@gnu.org) + + * coff-sh.c (shcoff_reloc_map): Use bfd_reloc_code_real_type + as the type for bfd_reloc_val. + +2002-03-05 John David Anglin + + * elf-hppa.h (elf_hppa_is_dynamic_loader_symbol): New function. + (elf_hppa_relocate_section): Ignore undefined dynamic loader symbols. + (elf_hppa_final_link_relocate): Correct relocations for indirect + references to local data through the DLT. Fix .opd creation for + local symbols using R_PARISC_LTOFF_FPTR32 and R_PARISC_FPTR64 + relocations. Use e_lsel selector for R_PARISC_DLTIND21L, + R_PARISC_LTOFF_FPTR21L and R_PARISC_LTOFF_TP21L as per + "Processor-Specific ELF for PA_RISC, Version 1.43" document. + Similarly, use e_rsel for DLT and LTOFF 'R' relocations. + * elf32-hppa.c (final_link_relocate): Revise relocation selectors + as per "Processor-Specific ELF for PA_RISC, Version 1.43" document. + +2002-03-05 Jakub Jelinek + + * merge.c (_bfd_merge_sections): Don't segfault if there + is nothing to merge due to GC. + +2002-03-05 Alan Modra + + * elf32-hppa.c (clobber_millicode_symbols): Remove hack to keep + symbols that have been forced local. + + * elflink.h (elf_bfd_final_link): Call elf_link_output_extsym + to output forced local syms for non-shared link. + (elf_link_output_extsym): Tweak condition for calling backend + adjust_dynamic_symbol so that previous behaviour is kept. + Whitespace changes throughout file. + +2002-03-04 H.J. Lu + + * elf.c (bfd_section_from_shdr): Handle special sections, + .init_array, .fini_array and .preinit_array. + (elf_fake_sections): Likewise. + + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Create the + DT entry only if the section is in output for .init_array, + .fini_array and .preinit_array. Complain about .preinit_array + section in DSO. + (elf_bfd_final_link): Warn zero size for .init_array, + .fini_array and .preinit_array sections. + + * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Remove + SHT_INIT_ARRAY, SHT_FINI_ARRAY and SHT_PREINIT_ARRAY. + (elfNN_ia64_fake_sections): Remove .init_array, .fini_array and + .preinit_array. + +2002-03-04 Alan Modra + + * configure.in (WIN32LIBADD): Don't eval PICFLAG assignment. + * configure: Regenerate. + +2002-03-02 Tom Rix + + * coff64-rs6000.c (xcoff64_howto_table): Replace howto types with + symbolic equiv. + * coff-rs6000.c (xcoff_howto_table): Same. + +2002-03-01 David Mosberger + + * elflink.h (size_dynamic_sections): If section named + ".preinit_array" exists, create DT_PREINIT_ARRAY and + DT_PREINIT_ARRAYSZ entries in dynamic table. Analogously for + ".init_array" and ".fini_array". + (elf_bfd_final_link): Handle DT_PREINIT_ARRAYSZ, DT_INIT_ARRAYSZ, + DT_FINI_ARRAYSZ, DT_PREINIT_ARRAY, DT_INIT_ARRAY, and + DT_FINI_ARRAY. + +2002-02-26 Andrew Macleod + + * elflink.h (elf_bfd_final_link): Don't crash on SHN_UNDEF local + dynsyms. + +2002-02-25 Alan Modra + + * elf64-hppa.h: Update copyright date. + + * elf64-ppc.c (ppc64_elf_check_relocs): Warning fix. + (ppc64_elf_relocate_section): Don't generate power4 style branch + hints for *_BRTAKEN and *_BRNTAKEN relocs. + +2002-02-22 Jakub Jelinek + + * elf64-sh64.c (sh_elf64_relocate_section): Fix a typo from my + last patch. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + +2002-02-21 Andreas Jaeger + + * elf64-x86-64.c: Major rework that introduces all recent changes + to the x86-64 backend. Get a closer match to elf32-i386. + (struct elf64_x86_64_dyn_relocs): Rename from + elf64_x86_64_pcrel_relocs_copied, add additional fields. Change + all users. + (struct elf64_x86_64_link_hash_table): Add short cuts to some + sections. + (link_hash_newfunc): Rename from elf64_x86_64_link_hash_newfunc, + remove casts, initialize new hash members. + (create_got_section): New. + (elf64_x86_64_create_dynamic_sections): New. + (elf64_x86_64_copy_indirect_symbol): New. + (elf64_x86_64_check_relocs): Don't allocate space for dynamic + relocs, .got or .relgot here but do it in allocate_dynrelocs. + Reference count possible .plt and .got entries. Don't test input + section SEC_READONLY here to try to avoid copy relocs, and keep + dyn_relocs regardless of ELF_LINK_NON_GOT_REF. Don't set + DF_TEXTREL here. Delay setting of variables until needed. Cache + pointer to "sreloc" section in elf_section_data. Tweak condition + under which .got created. Report files with bad relocation + section names. + (elf64_x86_64_gc_sweep_hook): Sweep dyn_relocs and local_dynrel. + Reference count possible .plt entries. Don't deallocate .got and + .relgot space here. + (elf64_x86_64_adjust_dynamic_symbol): Handle nocopyreloc. Don't + do copy reloc processing for weakdefs. Remove redundant casts and + aborts. Delay setting of vars until needed. Move creation of + dynamic symbols and allocation of .plt and .rela.plt to + allocate_dynrelocs. Replace BFD_ASSERT with abort. + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New. + (allocate_dynrelocs): New. + (readonly_dynrelocs): New. + (elf64_x86_64_size_dynamic_sections): Call readonly_dynrelocs. + Allocate space for dyn relocs. Replace BFD_ASSERT with abort. + Zero out the dynamic allocated content space. + (elf64_x86_64_discard_copies): Removed. + (elf64_x86_64_relocate_section): Make use of dynamic section + short-cuts. Localise vars, and delay setting. Better error + reporting, replace BFD_ASSERT with abort. Check + ELF_LINK_HASH_DEF_DYNAMIC to see if a symbol is not defined in the + regular object file and tread the weak definition as the normal + one. Don't discard relocs for undefweak or undefined symbols and + check !DEF_REGULAR as well as DEF_DYNAMIC in test for avoided copy + relocs. + (elf64_x86_64_finish_dynamic_symbol): Don't copy relocs for + symbols that have been forced local. Use same test to decide if + we can use a relative reloc for got as relocate_section. Expand + SHN_UNDEF comment. Move expressions out of function calls. + Replace BFD_ASSERT with abort. + (bfd_elf64_bfd_final_link): Removed. + (elf_backend_copy_indirect_symbol): Define. + +2002-02-20 Tom Rix + + * coff-rs6000.c (xcoff_howto_table): Add 16 bit R_BA. + (_bfd_xcoff_reloc_type_lookup): Use it. + * coff64-rs6000.c (xcoff64_howto_table): Same. + (xcoff64_reloc_type_lookup): Same. + +2002-02-20 Peter Schauer + + * osf-core.c (osf_core_vec): OSF/1 (Digital Unix) core files are + little endian. + +2002-02-19 Martin Schwidefsky + + * archures.c (bfd_mach_s390_esa): Rename to bfd_mach_s390_31. + (bfd_mach_s390_esame): Rename to bfd_mach_s390_64. + * bfd-in2.h: Regenerate. + * cpu-s390.c (arch_info_struct): Use renamed architecture defines. + Replace architecture name "s390" with "s390:31-bit" and "s390:esame" + with "s390:64-bit". + * elf32-s390.c (elf_howto_table): Add 32 bit pc relative relocations. + (elf_s390_reloc_type_lookup): Likewise. + (elf_s390_check_relocs): Likewise. + (elf_s390_gc_sweep_hook): Likewise. + (elf_s390_relocate_section): Likewise. + (elf_s390_object_p): Use renamed architecture define. + * elf64-s390.c (elf_s390_object_p): Use renamed architecture define. + +2002-02-19 Frank Ch. Eigler + + * syms.c (stt[]): Sorted. Added .init/.fini -> "t" mapping. + +2002-02-19 Jakub Jelinek + + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Enable + absptr -> pcrel optimization for shared libs. + Only create minimal .eh_frame_hdr if absptr FDE encoding in shared + library cannot be converted to pcrel. + (_bfd_elf_eh_frame_section_offset): Return -2 if making absptr + relative. + * elf32-i386.c (elf_i386_relocate_section): If + _bfd_elf_section_offset returned -2, skip, but make sure the + relocation is installed. + * elf32-arm.h (elf32_arm_final_link_relocate): Likewise. + * elf32-cris.c (cris_elf_relocate_section): Likewise. + * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. + * elf32-i370.c (i370_elf_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf32-sh.c (sh_elf_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-sh64.c (sh_elf64_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Handle + _bfd_elf_section_offset returning -2 the same way as -1. + * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Likewise. + * elf32-mips.c (mips_elf_create_dynamic_relocation): Add FIXME + and BFD_ASSERT. + * elf64-mips.c (mips_elf64_create_dynamic_relocation): Likewise. + +2002-02-18 Tom Rix + + * xcofflink.c (bfd_xcoff_link_gernate_rtinit): Add -brtl support. + (bfd_xcoff_size_dynamic_sections): Same. + * bfd-in.h (bfd_xcoff_link_generate_rtinit): Same. + (bfd_xcoff_size_dynamic_sections): Same. + * coff-rs6000.c (xcoff_generate_rtinit): Same. + * coff-rs646000.c (xcoff64_generate_rtinit): Same. + * libxcoff.h (struct xcoff_backend_data_rec): Same. + * xcofflink.c (xcoff_build_ldsyms, xcoff_link_add_symbols): Clean. + * bfd-in2.h: Regenerate. + +2002-02-18 Alan Modra + + * elf64-ppc.c (STFD_FR0_0R1, LFD_FR0_0R1, BLR): Define. + (struct ppc_link_hash_table): Add sfpr. + (ppc64_elf_link_hash_table_create): Init it. + (ppc64_elf_create_dynamic_sections): Split creation of .stub and + .glink out to.. + (create_linkage_sections): ..here. Make .sfpr too. + (ppc64_elf_check_relocs): Call create_linkage_sections, and set + dynobj early. + (MIN_SAVE_FPR, MAX_SAVE_FPR): Define. + (ppc64_elf_func_desc_adjust): Look for missing ._savef* and + ._restf* functions, and create as needed. + (func_desc_adjust): Only force_local for shared libs. + +2002-02-18 David O'Brien + + * configure.in: Bump version number post 2.12 branching. + * configure: Regenerate. + +2002-02-17 Hans-Peter Nilsson + + * mmo.c: Correct and improve comments. + (mmo_write_chunk): Store trailing byte in bfd buffer; don't + zero-pad. Use input to fill up non-empty bfd buffer. + (mmo_flush_chunk): New function. + (mmo_write_loc_chunk): Add parameter last_vmap, all callers + changed. Don't emit location specifier if VMA is same as + *LAST_VMAP after omitting leading zero contents. Call + mmo_flush_chunk before emitting location specifier. + (mmo_write_loc_chunk_list): Call mmo_flush_chunk when finished + with mmo_write_loc_chunk calls. + (mmo_internal_write_section): Call mmo_flush_chunk after + mmo_write_chunk. + (mmo_write_symbols_and_terminator): Move :Main to first position + in symbol array. Add faked one if it does not exist if there are + other symbols. Don't add it if there are no symbols at all. Move + out test for value of :Main from symbol loop. Rename table + fakemain to maintable and variable mainsym to fakemain. + +2002-02-15 Richard Henderson + + * elf64-alpha.c (elf64_alpha_relocate_section) [BRSGP]: A target + section with no got matches any got. Simplify error generaion. + +2002-02-15 Alan Modra + + Support arbitrary length fill patterns. + * linker.c (bfd_new_link_order): Zero all fields with bfd_zalloc. + (_bfd_default_link_order): Remove bfd_fill_link_order code. + Call default_data_link_order. + (default_fill_link_order): Delete. + (default_data_link_order): New function. + * elf32-mips.c (_bfd_mips_elf_final_link): Replace occurrences + of bfd_fill_link_order with bfd_data_link_order. + * elf64-alpha.c (elf64_alpha_final_link): Likewise. + * elf64-mips.c (mips_elf64_final_link): Likewise. + + * bfd.c (bfd_scan_vma): Clamp overflows to max bfd_vma value. + Correct value returned in "end" for "0x". + +2002-02-14 Nick Clifton + + * cpu-arm.c (processors): Replace 'arch' field with 'mach'. + (scan): Test against 'mach' field in info structure. + +2002-02-14 Alan Modra + + * elf.c (elf_fake_sections): Use SHT_NOBITS when SEC_NEVER_LOAD. + +2002-02-14 Matt Fredette + + * elf32-m68k.c (elf32_m68k_print_private_bfd_data): Recognize + EF_M68000. + +2002-02-13 Nick Clifton + + * elf.c (_bfd_elf_make_section_from_shdr): Do not insist on + non-zero physical addresses when adjusting the LMAs of new + sections. + +2002-02-12 John David Anglin + + * elf-hppa.h (elf_hppa_reloc_final_type): New function stripped + from _bfd_elf_hppa_gen_reloc_type. + (_bfd_elf_hppa_gen_reloc_type): Remove duplicate prototype. + * elf32-hppa.h (elf32_hppa_reloc_final_type): Add protptype. + * elf32-hppa.c: Include elf32-hppa.h before elf-hppa.h. + * elf64-hppa.h (elf64_hppa_reloc_final_type): Add protptype. + +2002-02-12 Alexandre Oliva + + * elf-m10300.c (mn10300_elf_relax_section): Skip section before + loading its contents if there's nothing to do in it. + +2002-02-12 Alan Modra + + * elf64-ppc.c (ppc64_elf_size_stubs): Correct test for crossing + 64k boundary. + + * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Add dynamic + DT_PPC64_OPD and DT_PPC64_OPDSZ tags. + (ppc64_elf_finish_dynamic_sections): Set values for them. + +2002-02-11 Michael Snyder + + * elf-bfd.h (elfcore_write_lwpstatus): Add prototype. + * elf.c (elfcore_grok_pstatus): Add prototype. + (elfcore_grok_lwpstatus): Add prototype. + (elfcore_write_lwpstatus): New function. + (elfcore_write_pstatus): Fix typo, eliminate unnecessary memcpy. + +2002-02-11 Alexandre Oliva + + * elf32-sh.c: Added missing prototypes. + * elf32-sh64.c: Likewise. + (sh_elf_align_loads): Mark unused args as such. + * elf64-sh64.c: Added missing prototypes. + (struct elf_sh64_link_hash_entry): Fix typo. + (sh_elf64_relocate_section): Fix info argument passed to + _bfd_elf_section_offset. + +2002-02-11 Alan Modra + + * Makefile.am: "make dep-am". + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * config.in: Regenerate. + * configure: Regenerate. + +2002-02-10 Daniel Jacobowitz + + * coff-rs6000.c (xcoff_generate_rtinit): Silence uninitialized + variable warnings. + * elf32-sh.c (sh_elf_relax_section): Silence signed/unsigned + comparison warning. + * trad-core.c (trad_unix_core_file_p): Silence pointer/integer + cast warnings for the common case. + +2002-02-10 Hans-Peter Nilsson + + * config.bfd (sh-*-linux*, sh-*-elf* | sh-*-rtemself*): Add sh64 + vectors. + (sh-*-netbsdelf*): New, to trump sh*-*-netbsdelf* and add sh64 + vectors. + +2002-02-09 Richard Henderson + + * elf64-alpha.c (elf64_alpha_howto): Add R_ALPHA_BRSGP. + (elf64_alpha_reloc_map, elf64_alpha_check_relocs): Likewise. + (elf64_alpha_relocate_section): Likewise. + * reloc.c (BFD_RELOC_ALPHA_BRSGP): New. + * bfd-in2.h, libbfd.h: Rebuild. + +2002-02-09 Hans-Peter Nilsson + + * elf64-mmix.c (_bfd_mmix_finalize_linker_allocated_gregs): Check + that base-plus-offset reloc accounting is consistent. + (mmix_elf_relax_section): Keep base-plus-offset reloc accounting + up to date for undefined symbols. + +2002-02-08 Eric Christopher + + From Rainer Orth + + * elf32-mips.c (_bfd_mips_elf_fake_sections): Don't create .rela + sections for the O32 ABI. + +2002-02-08 Chris Demetriou + + * elf32-arm.h: Fix formatting of _("..."). + * elf32-d10v.c: Likewise. + * elf32-m68k.c: Likewise. + * elf32-mips.c: Likewise. + +2002-02-08 Ivan Guzvinec + + * coff-or32.c: Fix compile time warning messages. + +2002-02-08 Alexandre Oliva + + Contribute sh64-elf. + 2002-01-23 Alexandre Oliva + * reloc.c (R_SH_GOTPLT32, R_SH_GOT_LOW16, R_SH_GOT_MEDLOW16, + R_SH_GOT_MEDHI16, R_SH_GOT_HI16, R_SH_GOTPLT_LOW16, + R_SH_GOTPLT_MEDLOW16, R_SH_GOTPLT_MEDHI16, R_SH_GOTPLT_HI16, + R_SH_PLT_LOW16, R_SH_PLT_MEDLOW16, R_SH_PLT_MEDHI16, + R_SH_PLT_HI16, R_SH_GOTOFF_LOW16, R_SH_GOTOFF_MEDLOW16, + R_SH_GOTOFF_MEDHI16, R_SH_GOTOFF_HI16, R_SH_GOTPC_LOW16, + R_SH_GOTPC_MEDLOW16, R_SH_GOTPC_MEDHI16, R_SH_GOTPC_HI16, + R_SH_GOT10BY4, R_SH_GOTPLT10BY4, R_SH_GOT10BY8, R_SH_GOTPLT10BY8, + R_SH_COPY64, R_SH_GLOB_DAT64, R_SH_JMP_SLOT64, R_SH_RELATIVE64): + New relocs. + * libbfd.h, bfd-in2.h: Rebuilt. + * elf32-sh.c (sh_elf_howto_table): Define new relocs. + (sh_reloc_map): Map them. + (PLT_ENTRY_SIZE, elf_sh_plt0_entry_be, elf_sh_plt0_entry_le, + elf_sh_plt_entry_be, elf_sh_plt_entry_le, elf_sh_pic_plt_entry_be, + elf_sh_pic_plt_entry_le, elf_sh_plt0_entry, elf_sh_plt_entry, + elf_sh_pic_plt_entry, elf_sh_sizeof_plt, elf_sh_plt_plt0_offset, + elf_sh_plt0_gotplt_offset, elf_sh_plt_temp_offset, + elf_sh_plt_symbol_offset, elf_sh_plt_reloc_offset, + movi_shori_putval) [INCLUDE_SHMEDIA]: New. + (elf_sh_link_hash_entry) [INCLUDE_SHMEDIA]: Add + datalabel_got_offset. + (sh_elf_link_hash_newfunc): Initialize it. + (sh_elf_relocate_section): Augment the scope of + seen_stt_datalabel. Introduce GOTPLT support. Extend GOTPC, PLT, + GOT and GOTOFF handling to new SHmedia relocation types. Support + GOT_BIAS. + (sh_elf_check_relocs): Likewise. + (sh_elf_finish_dynamic_symbol) [TARGET_SHMEDIA]: Set up values in + PLT entries using movi_shori_putval. Support GOT_BIAS. + (sh_elf_finish_dynamic_sections): Likewise. + * elf32-sh64.c (shmedia_prepare_reloc): Do not add addend to + relocation, it's now done by the caller. + (GOT_BIAS): New. + * elf64-sh64.c (GOT_BIAS, PLT_ENTRY_SIZE, elf_sh64_sizeof_plt, + elf_sh64_plt_plt0_offset, elf_sh64_plt0_gotplt_offset, + elf_sh64_plt_temp_offset, elf_sh64_plt_symbol_offset, + elf_sh64_plt_reloc_offset, ELF_DYNAMIC_INTERPRETER, + elf_sh64_pcrel_relocs_copied, elf_sh64_link_hash_entry, + elf_sh64_link_hash_table, sh64_elf64_link_hash_traverse, + sh64_elf64_hash_table): New. + (sh_elf64_howto_table): Introduce new relocs. + (sh_elf64_info_to_howto): Accept new PIC relocs. + (sh_elf64_relocate_section): Augment the scope of + seen_stt_datalabel. Support new PIC relocs. + (sh_elf64_check_relocs): Support new PIC relocs. + (elf_sh64_plt0_entry_be, elf_sh64_plt0_entry_le, + elf_sh64_plt_entry_be, elf_sh64_plt_entry_le, + elf_sh64_pic_plt_entry_be, elf_sh64_pic_plt_entry_le, + elf_sh64_plt0_entry, elf_sh64_plt_entry, elf_sh64_pic_plt_entry, + sh64_elf64_link_hash_newfunc, sh64_elf64_link_hash_table_create, + movi_shori_putval, movi_3shori_putval, + sh64_elf64_create_dynamic_sections, + sh64_elf64_adjust_dynamic_symbol, sh64_elf64_discard_copies, + sh64_elf64_size_dynamic_sections, + sh64_elf64_finish_dynamic_symbol, + sh64_elf64_finish_dynamic_sections): New. + (elf_backend_create_dynamic-sections, + bfd_elf64_bfd_link_hash_table_create, + elf_backend_adjust_dynamic_symbol, + elf_backend_size_dynamic_sections, + elf_backend_finish_dynamic_symbol, + elf_backend_finish_dynamic_sections, elf_backend_want_got_plt, + elf_backend_plt_readonly, elf_backend_want_plt_sym, + elf_backend_got_header_size, elf_backend_plt_header_size): + Define. + 2001-05-16 Alexandre Oliva + * elf32-sh.c: Renumbered and renamed some SH5 relocations to + match official numbers and names; moved unmaching ones to the + range 0xf2-0xff. + * elf32-sh64.c, elf64-sh64.c: Likewise. + 2001-03-12 DJ Delorie + * elf32-sh.c (sh_elf_relax_section): Don't relax SHmedia + sections. + 2001-03-12 DJ Delorie + * elf32-sh64.c (shmedia_prepare_reloc): Validate relocs that must + be aligned. + * elf64-sh64.c (sh_elf64_relocate_section): Ditto. + 2001-01-14 Hans-Peter Nilsson + * elf32-sh64.c (bfd_elf32_bfd_copy_private_section_data): Define. + (sh64_elf_fake_sections): Set type to SHT_SH5_CR_SORTED for a + .cranges section with SEC_SORT_ENTRIES set. + (sh64_backend_section_from_shdr): Set SEC_SORT_ENTRIES on an + incoming sorted .cranges section. + (sh64_bfd_elf_copy_private_section_data): New. + (sh64_elf_final_write_processing): Only sort .cranges and modify + start address if called by linker. + 2001-01-08 Ben Elliston + * elf32-sh64.c (sh64_elf_final_write_processing): Activate + Hans-Peter Nilsson's set bit 0 patch from 2001-01-06. + * elf64-sh64.c (sh64_elf64_final_write_processing): Ditto. + 2001-01-06 Hans-Peter Nilsson + * elf64-sh64.c (sh_elf64_howto_table): No open brace at start of + line. Add comments before all entries. + : Correct and clarify describing + comment. + (sh_elf64_reloc): Correct head comment. + (sh_elf64_relocate_section): Correct spacing. + : Do not honour STO_SH5_ISA32; + instead call reloc_dangerous callback. + : New case. + (sh_elf64_gc_mark_hook): Correct spacing. + (sh_elf64_check_relocs): Ditto. + * elf32-sh64.c (shmedia_prepare_reloc) : + New case. + * elf32-sh.c: Correct #endif comments for #ifndef-wrapped + functions. + (sh_elf_howto_table) : Correct, + clarify describing comment. Add comments before all entries. + (sh_elf_relocate_section) : Do not + honour STO_SH5_ISA32; instead call reloc_dangerous callback. + 2001-01-06 Hans-Peter Nilsson + Sort .cranges section in final link. Prepare to set bit 0 on + entry address. + * elf32-sh64.c (struct sh64_find_section_vma_data): New. + (sh64_elf_link_output_symbol_hook): Fix typo in prototype. + (sh64_elf_set_mach_from_flags): Set SEC_DEBUGGING on incoming + .cranges section. + (sh64_backend_section_from_shdr): New, to recognize + SHT_SH5_CR_SORTED on incoming .cranges section. + (elf_backend_section_from_shdr): Define. + (sh64_elf_final_write_processing): Sort outgoing .cranges + section. (New, temporarily disabled:) Set bit 0 on entry address + according to ISA type. + (sh64_find_section_for_address): New. + (crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb, + crange_bsearch_cmpl): Move here from opcodes/sh64-dis.c. + (sh64_address_in_cranges): Move here from opcodes/sh64-dis.c. Use + bfd_malloc, not xmalloc. + (sh64_get_contents_type): Move here from opcodes/sh64-dis.c. Make + global. + * elf32-sh64.c (sh64_elf64_final_write_processing): New, (but + temporarily disabled) setting bit 0 on entry address. + (elf_backend_final_write_processing): Define. + 2001-01-05 Hans-Peter Nilsson + * elf32-sh.c (sh_elf_howto_table) : Adjust fields to + be a proper relocation for PTA and PTB rather than a marker. + : + Zero src_mask. + * elf64-sh64.c: Ditto. + (sh_elf64_relocate_section) : New case. + * elf32-sh64.c: Include opcodes/sh64-opc.h + (shmedia_prepare_reloc): Take a bfd_link_info pointer as first + argument. Drop const qualifiers from "bfd *" and "bfd_byte *" + parameters. No unused parameters. Caller changed. + : New case. + * Makefile.am (elf32-sh64.lo): Add dependency on sh64-opc.h. + * Makefile.in: Regenerate. + 2000-12-30 Hans-Peter Nilsson + * elf64-sh64.c (sh64_elf64_fake_sections): Set SHF_SH5_ISA32 for + all code sections. + (sh_elf64_set_mach_from_flags): Change from EF_SH64 to EF_SH5. + (sh64_elf_merge_private_data): Ditto. + * elf32-sh64.c (sh64_elf_fake_sections): Use sh64_elf_section_data + to access stored section flags. + (sh64_elf_final_write_processing): Return immediately unless + called by linker. Use sh64_elf_section_data (cranges) to get size + of linker-generated cranges entries. + (sh64_elf_copy_private_data): Add missing "return true". + (sh64_elf_set_mach_from_flags): Change from EF_SH64 to EF_SH5. + (sh_elf64_merge_private_data): Ditto. + 2000-12-19 Hans-Peter Nilsson + * elf64-sh64.c (sh64_elf64_fake_sections): New, copy of + elf64-sh64.c:sh64_elf_fake_sections. + (elf_backend_fake_sections): Define as sh64_elf64_fake_sections. + 2000-12-18 Hans-Peter Nilsson + * elf32-sh64.c (sh64_elf_copy_private_data_internal): Delete. + (sh64_elf_final_write_processing): New. + (elf_backend_final_write_processing): Define. + (sh64_elf_fake_sections): Get header flags from tdata field. + (sh64_elf_copy_private_data): Do not call + sh64_elf_copy_private_data_internal, just copy e_flags field. + (sh64_elf_merge_private_data): Do not call + sh64_elf_copy_private_data_internal. + 2000-12-12 Hans-Peter Nilsson + Remove EF_SH64_ABI64, let ELF size make difference. + Remove SH64-specific BFD section flag. + * elf32-sh64.c (sh64_elf_fake_sections): Recognize section as + containing SHmedia through elf_section_data (asect)->tdata + non-zero, not using a BFD section flag. + (sh64_elf_set_mach_from_flags): Don't recognize EF_SH64_ABI64. + (sh64_elf_merge_private_data): Similar. + (elf_backend_section_flags): Don't define. + (sh64_elf_backend_section_flags): Delete. + * elf64-sh64.c (sh_elf64_set_mach_from_flags): Recognize EF_SH64, + not EF_SH64_ABI64. + (sh_elf64_merge_private_data): Similar. + * section.c (Section flags definitions): Don't define + SEC_SH_ISA_SHMEDIA. + (bfd-in2.h): Regenerate. + 2000-12-09 Hans-Peter Nilsson + Make DataLabel references work with partial linking. + * elf32-sh64.c: Fix formatting. + (sh64_elf_link_output_symbol_hook): New. + (elf_backend_link_output_symbol_hook): Define to + sh64_elf_link_output_symbol_hook. + (sh64_elf_add_symbol_hook): Make DataLabel symbol just global + undefined if partial linking. Adjust sanity check. + * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): New. + (elf_backend_link_output_symbol_hook): Define to + sh64_elf64_link_output_symbol_hook. + (sh64_elf64_add_symbol_hook): Make DataLabel symbol just global + undefined if partial linking. Adjust sanity check. + 2000-12-07 Hans-Peter Nilsson + Implement semantics for inter-file DataLabel references. + * elf64-sh64.c (DATALABEL_SUFFIX): Define. + (sh64_elf64_add_symbol_hook): New. + (sh_elf64_relocate_section): If passing an indirect symbol with + st_type STT_DATALABEL on the way to a symbol with st_other + STO_SH5_ISA32, do not bitor 1 to the relocation. + (elf_backend_add_symbol_hook): Define to + sh64_elf64_add_symbol_hook. + * elf64-sh32.c: Tweak comments. + (DATALABEL_SUFFIX): Define. + (sh64_elf_add_symbol_hook): New. + (elf_backend_add_symbol_hook): Define to sh64_elf_add_symbol_hook. + * elf32-sh.c (sh_elf_relocate_section): If passing an indirect + symbol with st_type STT_DATALABEL on the way to a symbol with + st_other STO_SH5_ISA32, do not bitor 1 to the relocation. + 2000-12-05 Hans-Peter Nilsson + Pass through STT_DATALABEL. + * elf32-sh64.c (sh64_elf_get_symbol_type): New. + (elf_backend_get_symbol_type): Define. + * elf64-sh64.c (sh64_elf64_get_symbol_type): New. + (elf_backend_get_symbol_type): Define. + 2000-11-30 Hans-Peter Nilsson + * elf32-sh64.c: Tweak comments. + (sh64_elf_copy_private_data_internal): Add prototype. + (bfd_elf32_bfd_set_private_flags): Define. + (sh64_elf_copy_private_data_internal): Compare machine name, not + textual BFD target name, to check whether to copy section flag + SHF_SH5_ISA32. + (sh64_elf_merge_private_data): Validize bfd_get_arch_size. + Tweak section-contents-type-mismatch message. + (shmedia_prepare_reloc): Add ATTRIBUTE_UNUSED markers. + Validize reloc-types. + * elf64-sh64.c: New file. + * targets.c (bfd_elf64_sh64_vec, bfd_elf64_sh64l_vec): Declare. + * Makefile.am (BFD64_BACKENDS): Add elf64-sh64.lo. + (BFD64_BACKENDS_CFILES): Add elf64-sh64.c. + Regenerate dependencies. + * Makefile.in: Regenerate. + * config.bfd (sh64-*-elf*): Add bfd_elf64_sh64_vec and + bfd_elf64_sh64l_vec. + * configure.in: Handle bfd_elf64_sh64_vec and + bfd_elf64_sh64l_vec. + * configure: Regenerate. + * po/POTFILES.in: Regenerate. + * po/bfd.pot: Regenerate. + 2000-11-29 Hans-Peter Nilsson + * elf32-sh64.c (sh64_elf_set_mach_from_flags): Do not recognize + anything else but EF_SH64 and EF_SH64_ABI64. + (sh64_elf_merge_private_data): Emit error for anything else but + EF_SH64 and EF_SH64_ABI64. + * config.bfd: Remove bfd_elf32_shblin_vec and bfd_elf32_shlin_vec + from targ_selvecs. + * configure.in: Add cofflink.lo to bfd_elf32_sh64_vec and + bfd_elf32_sh64l_vec as a temporary measure. + * configure: Regenerate. + 2000-11-27 Hans-Peter Nilsson + * cpu-sh.c (arch_info_struct): Include sh5 item + unconditionalized. + * config.bfd (sh64-*-elf*): Do not set targ_cflags. + Add targ_selvecs bfd_elf32_sh_vec, bfd_elf32_shl_vec, + bfd_elf32_shblin_vec and bfd_elf32_shlin_vec. + * elf32-sh64.c: Tweak comments. + (sh64_elf_set_mach_from_flags): Recognize all machine flags that + are proper subsets of SH64 as bfd_mach_sh5. Add EF_SH64_ABI64. + (sh64_elf_copy_private_data_internal): Wrap long line. + (sh64_elf_merge_private_data): Rewrite to allow objects from + SH64 subsets to be linked together. + (INCLUDE_SHMEDIA): Define. + * elf32-sh.c (sh_elf_relocate_section) : + Parenthesize plus-expression inside or-expression. + : Ditto. + (sh_elf_set_mach_from_flags): Remove code refusing + deleted EF_SH64_32BIT_ABI flag. + 2000-11-26 Hans-Peter Nilsson + * elf32-sh.c (sh_elf_howto_table) : Set pcrel_offset to true. + (sh_elf_relocate_section) : Or 1 in + calculation of relocation if sym->st_other & STO_SH5_ISA32. + : Ditto if h->other & STO_SH5_ISA32. + * elf32-sh64.c (shmedia_prepare_reloc): Add rel->r_addend to + relocation. + 2000-11-24 Hans-Peter Nilsson + * Makefile.am (BFD32_BACKENDS): Add elf32-sh64.lo. + (BFD32_BACKENDS_CFILES): Add elf32-sh64.c. + Regenerate dependencies. + * Makefile.in: Regenerate. + * archures.c: Add bfd_mach_sh5. + * config.bfd: Map targ_cpu sh* to bfd_sh_arch. + Handle sh64-*-elf*. Set targ_cflags to -DINCLUDE_SHMEDIA. + * configure.in: Handle bfd_elf32_sh64_vec and bfd_elf32_sh64l_vec. + * configure: Regenerate. + * reloc.c (BFD_RELOC_SH_SHMEDIA_CODE, BFD_RELOC_SH_IMMU5, + BFD_RELOC_SH_IMMS6, BFD_RELOC_SH_IMMS6BY32, BFD_RELOC_SH_IMMU6, + BFD_RELOC_SH_IMMS10, BFD_RELOC_SH_IMMS10BY2, + BFD_RELOC_SH_IMMS10BY4, BFD_RELOC_SH_IMMS10BY8, + BFD_RELOC_SH_IMMS16, BFD_RELOC_SH_IMMU16, BFD_RELOC_SH_IMM_LOW16, + BFD_RELOC_SH_IMM_LOW16_PCREL, BFD_RELOC_SH_IMM_MEDLOW16, + BFD_RELOC_SH_IMM_MEDLOW16_PCREL, BFD_RELOC_SH_IMM_MEDHI16, + BFD_RELOC_SH_IMM_MEDHI16_PCREL, BFD_RELOC_SH_IMM_HI16, + BFD_RELOC_SH_IMM_HI16_PCREL, BFD_RELOC_SH_PT_16): New relocations. + * cpu-sh.c [INCLUDE_SHMEDIA] (arch_info_struct): Define and link + in item for SH5. + * elf32-sh.c [INCLUDE_SHMEDIA] (sh_elf_howto_table): Add howto items + for SHmedia relocs. + [INCLUDE_SHMEDIA] (sh_rel): Add mappings for SHmedia relocs. + [INCLUDE_SHMEDIA] (sh_elf_relocate_section) [default]: Call + shmedia_prepare_reloc, goto final_link_relocate if it returns + non-zero, else fail as before. + (sh_elf_set_mach_from_flags): Provide function only if not defined + as macro. Do not recognize objects with EF_SH64_32BIT_ABI set. + (sh_elf_set_private_flags): Provide function only if not defined + as a macro. + (sh_elf_copy_private_data): Similar. + (sh_elf_merge_private_data): Similar. + * section.c (SEC_SH_ISA_SHMEDIA): New. + * targets.c (bfd_elf32_sh64_vec, bfd_elf32_sh64l_vec): Declare. + * elf32-sh64.c: New file. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + * po/POTFILES.in: Regenerate. + * po/bfd.pot: Regenerate. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + +2002-02-07 Daniel Jacobowitz + + * bfd-in.h: Update check to only see if has + been included, not drag it in. + * bfd-in2.h: Regenerate. + +2002-02-06 H.J. Lu (hjl@gnu.org) + + * elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data): Update + the mach and ISA fields if necessary. + +2002-02-06 Nick Clifton + + * coffcode.h (coff_set_arch_mach_hook): Select the highest known + ARM architecture when an F_ARM_5 flag is detected, since we cannot + be sure exactly which architecture this represents. + +2002-02-05 Nick Clifton + + * po/tr.po: Updated translation. + +2002-02-05 Alan Modra + + From Jimi X + * archures (bfd_mach_ppc64): Define. + (bfd_powerpc_arch): Rename to bfd_powerpc_archs. + (bfd_powerpc_arch): Define. + * bfd-in2.h: Regenerate. + * cpu-powerpc.c (arch_info_struct): Rename to bfd_powerpc_archs. + (bfd_powerpc_arch): Move to tail of bfd_powerpc_archs. + (bfd_powerpc_archs): Add default powerpc64 arch. + +2002-02-05 Alan Modra + + * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Check for relocs + against section syms in readonly sections. Don't do the global + sym check if we find one. + * elf64-s390.c (elf_s390_size_dynamic_sections): Likewise. + * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Likewise. + * elf32-i386.c (elf_i386_size_dynamic_sections): Likewise. + * elf32-s390.c (elf_s390_size_dynamic_sections): Likewise. + (elf_s390_grok_prstatus): Add missing prototype. + +2002-02-04 Hans-Peter Nilsson + + * elf64-mmix.c (mmix_dump_bpo_gregs): New function. + (mmix_elf_check_common_relocs) : + Call bfd_get_section_by_name only once. Initialize + bpodata->n_bpo_relocs_this_section. + (_bfd_mmix_prepare_linker_allocated_gregs): Remove comment + referring to DSOs. + (bpo_reloc_request_sort_fn): Don't use difference of values as + return-value. + +2002-02-02 David O'Brien + + * configure.in: Tweak the FreeBSD 4.x recognition more. Only treat + version 4.5 and later the same as 5-CURRENT. + * configure: Re-generate. + +2002-02-02 Jason Thorpe + + * config.bfd (hppa*-*-netbsd*): New target. + +2002-01-31 Philipp Thomas + + * coff-arm.c (coff_arm_merge_private_bfd_data): Move ERROR + to front of message. Unify messages with elf32-arm.h. Use + commas where neccessary. + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Use all upcase + ERROR in messages. Unify messages with coff-arm.c. Correct + VFP/FPA error message. + (elf32_arm_print_private_bfd_data): Don't mark APCS-26 and + APCS-32 for translation. + +2002-02-01 Hans-Peter Nilsson + + Perform on-demand global register allocation from + R_MMIX_BASE_PLUS_OFFSET relocs. + * elf64-mmix.c (struct bpo_reloc_section_info, struct + bpo_reloc_request, struct bpo_greg_section_info): New. + (mmix_elf_check_common_relocs, mmix_elf_gc_sweep_hook, + bpo_reloc_request_sort_fn, mmix_elf_relax_section, + _bfd_mmix_check_all_relocs, + _bfd_mmix_prepare_linker_allocated_gregs, + _bfd_mmix_finalize_linker_allocated_gregs): New functions. + (elf_mmix_howto_table): Correct src_mask for most relocs. + (mmix_elf_perform_relocation) : New + case. + (mmix_final_link_relocate) : New + case. Fix typo in comment. New label do_mmix_reloc. + (mmix_elf_check_relocs): Abuse bfd_link_info member base_file to + store first object file with a base-plus-offset reloc. Call + mmix_elf_check_common_relocs for the part common with mmo. + (mmix_elf_final_link): Write out linker-allocated register + contents section. + (elf_backend_gc_sweep_hook): Define. + (bfd_elf64_bfd_relax_section): Define. + + * mmo.c: Don't include + (mmo_init): Correct init-once logic. + +2002-02-01 Tom Rix + + * config.bfd: Conditionally support for pre AIX 4.3. + +2002-02-01 Alan Modra + + * Makefile.am: Run "make dep-am" + * Makefile.in: Regenerate. + +2002-01-31 David O'Brien + + * configure.in: Recognize the differences in core files from FreeBSD + 4.{0,1} and later versions of 4.x. This treats 4.2+ the same as + 5-CURRENT. + * configure: Regenerate. + +2002-01-31 Ivan Guzvinec + + * coff-or32.c: New file. + * cpu-or32.c: New file. + * elf32-or32.c: New file. + * archures.c: Add support for or32. + * targets.c: Add support for or32. + * bfd-in2.h: Regenerate. + * coffcode.h (coff_set_arch_mach_hook, coff_set_flags, + coff_write_object_contents): Add support for or32. + * config.bfd: Add target. + * configure.in: Add support for or32. + * configure: Regenerate. + * Makefile.am: Add support for or32. + * Makefile.in: Regenerate. + * po/SRC-POTFILES.in: Add or32 files. + * po/bfd.pot: Regenerate. + +2002-01-31 Nick Clifton + Don Lindsay + + * elf32-mips.c (mips_elf_calculate_relocation): Replace 'return + false' with a return of a bfd_reloc_ error code. + +2002-01-31 Hans-Peter Nilsson + + * elf32-cris.c (elf_cris_discard_excess_program_dynamics): Don't + unexport unreferenced symbols when --export-dynamic. Call + _bfd_elf_strtab_delref when unexporting. + +2002-01-30 Daniel Jacobowitz + + * bfd-in.h: Include if it is available. + * bfd-in2.h: Regenerated. + +2002-01-31 Alan Modra + + * elf64-ppc.c (func_desc_adjust): STV_PROTECTED functions should + not go via the plt. + +2002-01-30 Nick Clifton + + * archures.c: Tidy up formatting of embedded comments. + * bfd.c: Tidy up formatting of embedded comments. + * bfd-in.h: Fix formatting of comments. + * reloc.c: Tidy up formatting of ordinary & embedded comments. + * section.c: Tidy up formatting of embedded comments. + * syms.c: Tidy up formatting of embedded comments. + * targets.c: Tidy up formatting of embedded comments. + + * bfd-in2.h: Regenerate. + +2002-01-30 Nick Clifton + + * vms-tir.c (cmd_name): New function. + (tir_cmd_name): New function. + (etir_sta, etir_sto, etir_opr, etir_stc): Use cmd_name(). + (tir_opr, tir_ctl, tir_cmd): use tir_cmd_name(). + Fix formatting. + + * peXXigen.c (pe_print_idata): Rearrange message to aid in + translation. + (pe_print_pdata): Rearrange message to aid in translation. + + * libbfd.c (warn_deprecated): Rearrange error message to aid in + translation. + + * ihex.c (ihex_write_object_contents): Fix spelling typo. + + * ieee.c (ieee_slurp_external_symbols): Remove spurious space. + + * elf64-sparc.c (sparc64_elf_add_symbol_hook): Rearrange error + message to aid in translation. + + * elf64-mmix.c (mmix_final_link_relocate): Rearrange error message + to aid in translation. + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Fix typo. + +2002-01-30 Philipp Thomas + + * coff-arm.c, elf32-elf.h: Unify messages. + +2002-01-30 Nick Clifton + + * po/sv.po: Updated translation. + +2002-01-30 Philipp Thomas + + * dwarf2.c (read_abbrev): Use full section name in error message. + (decode_line_info): Likewise. + + * elf.c (_bfd_elf_symbol_from_bfd_symbol): Don't translate debugging + message. + +2002-01-30 Alan Modra + + * elf64-ppc.c (func_desc_adjust): Only provide missing function + descriptor symbols for undefined function code syms. Clear + ELF_LINK_NON_ELF so that they can stay weak. + +2002-01-29 Chris Demetriou + Mitch Lichtenberg + + * bfd-in.h (bfd_mips_elf32_create_embedded_relocs): New prototype. + * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): New function + to handle 32-bit ELF embedded reloc (ld --embedded-relocs) + generation. + * bfd-in2.h: Regenerate. + +2002-01-29 Chris Demetriou + + * elf32-mips.c: Add additional comments about HI16 relocation + processing. + (_bfd_mips_elf_hi16_reloc): Don't subtract address here for + pc-relative relocations. (Reverts change made on 2001-10-31.) + (_bfd_mips_elf_lo16_reloc): Subtract address of LO16 part here + for pc-relative relocations. + (mips_elf_calculate_relocation): Add a comment about a kludge + in the R_MIPS_GNU_REL_HI16 handling. + (_bfd_mips_elf_relocate_section): Implement that kludge; + adjust pc-relative HI16 relocation for difference in HI16 and + LO16 addresses, since it can't easily be done in + mips_elf_calculate_relocation. + +2002-01-29 Martin Schwidefsky + + * elf32-i386 (elf_i386_adjust_dynamic_symbol): Do not replace PLT32 + relocations with PC32 relocations for undefined or weak symbols. + * elf32-s390 (elf_i386_adjust_dynamic_symbol): Likewise. + * elf64-s390x (elf_i386_adjust_dynamic_symbol): Likewise. + +2002-01-28 Jason Thorpe + + * elfcore.h (elf_core_file_p): Improve comment for last change. + +2002-01-27 Daniel Jacobowitz + + * configure: Regenerated. + +2002-01-27 Jason Thorpe + + * elfcore.h (elf_core_file_p): Set the machine architecture + before processing the program headers. + +2002-01-26 Hans-Peter Nilsson + + * configure.in <64-bit configuration>: If using gcc, check and + emit error for egcs-1.1.2. + * configure: Regenerate. + +2002-01-26 Egor Duda + + * elf.c (elfcore_grok_win32pstatus): Copy only as much information + as possible to avoid stack corruption. + +2002-01-26 Richard Henderson + + * elf64-alpha.c (elf64_alpha_check_relocs): Don't set reltext + for non-allocated sections. + +2002-01-25 Mark Kettenis + + * elf.c (elfcore_write_prstatus): Make sure we pass the address of + prstat.pr_reg even if it is a struct. + +2002-01-25 Steve Ellcey + + * elfxx-ia64.c: Reset AIX vector function overrides for HP-UX. + +2002-01-25 Philipp Thomas + + * coffgen.c (coff_print_symbol): Don't mark info message + for translation. + +2002-01-25 Nick Clifton + + * po/fr.po: Updated translation. + * po/es.po: Updated translation. + +2002-01-25 Philipp Thomas + + * coff-alpha.c (alpha_relocate_section): Unify warning message + for GP relative relocations without GP defined. + * coff-mips.c (mips_relocate_section): Likewise. + +2002-01-25 Alan Modra + + * elf-eh-frame.c (_bfd_elf_eh_frame_section_offset): Avoid + unsigned overflow when new_offset < old_offset. + +2002-01-24 Philipp Thomas + + * bfd.c (_bfd_abort): Fix typo. + +2002-01-23 Richard Henderson + + * elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't suppress + plt entries for undefweak symbols. + +2002-01-23 Steve Ellcey + + * targets.c (bfd_elf32_ia64_hpux_big_vec): Add to DEFAULT_VECTOR. + (bfd_elf64_ia64_hpux_big_vec): Ditto. + (bfd_elf32_h8300_vec): Ditto. + +2002-01-23 Alan Modra + + * elf64-ppc.c: Remove stale part of ABI comment. + (NO_OPD_RELOCS): Define. + (ppc64_elf_check_relocs): Use it. + (ppc64_elf_relocate_section): Here too. + (build_one_stub): Don't point function syms at the stub. Instead, + hijack plt.offset. + (ppc64_elf_relocate_section): Check whether REL24 relocs should + really go to the stub. Make all dynamic relocs in opd against + locals. + (ppc64_elf_finish_dynamic_symbol): Allow for non-standard use of + plt.offset. + +2002-01-22 Richard Henderson + + * elf64-alpha.c (INSN_UNOP): Encode with RB as $sp. + +2002-01-22 Alan Modra + + * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Correct sign of + TOC_BASE_OFF adjustment. + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + +2002-01-22 John David Anglin + + * configure.host (hppa*64*-*-hpux*, hppa*64*-*-linux*): Add new + host defines. + +2002-01-21 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section) : + Check for and emit error if sgot is NULL at this point. + +2002-01-21 Jason Thorpe + + * config.bfd (ia64*-*-netbsd*): New target. + +2002-01-21 Thomas Klausner + + * som.c (som_write_space_strings): Comment typo fix. + +2002-01-21 Alan Modra + + * elf64-ppc.c (struct ppc_link_hash_entry): Add is_func and + is_func_descriptor fields. + (link_hash_newfunc): Init them. + (ppc64_elf_check_relocs): Only R_PPC24_REL24 syms starting with a + dot are candidates for plt entries. When processing .opd relocs, + set function descriptor strings to point inside function code + string, and set new ppc_link_hash_entry fields. + (ppc64_elf_gc_sweep_hook): Don't sweep R_PPC64_REL24 relocs. + (ppc64_elf_adjust_dynamic_symbol): Remove most code dealing with + function descriptors. It's now done in.. + (func_desc_adjust): New. + (ppc64_elf_func_desc_adjust): New. + (define elf_backend_always_size_sections): Define. + (ppc64_elf_hide_symbol): New. + (define elf_backend_hide_symbol): Define. + (allocate_dynrelocs): Remove code looking up function descriptors + as that has been done earlier. + (ppc64_elf_size_dynamic_sections): Use htab shortcut to elf hash + table. + (ppc64_elf_finish_dynamic_symbol): Likewise. Remove code looking + up function descriptor. + (build_one_stub): Look up the function code sym. Check for + invalid plt offsets. + (ppc64_elf_relocate_section): Tweak calls to undefined weak syms. + Convert R_PPC64_TOC relocs to R_PPC64_RELATIVE in shared libs. + + * elf-bfd.h (elf_backend_data ): Add + boolean param. + (_bfd_elf_link_hash_hide_symbol): Likewise. + * elflink.h (elf_link_add_object_symbols): Adjust call to + elf_backend_hide_symbol. + (elf_fix_symbol_flags): Likewise. + (elf_link_assign_sym_version): Likewise. Use bfd_malloc rather + than bfd_alloc. + * elf.c (_bfd_elf_link_hash_hide_symbol): Add "force_local" param. + Set ELF_LINK_FORCED_LOCAL and call _bfd_elf_strtab_delref. + * elf32-hppa.c (elf32_hppa_hide_symbol): Likewise. + (clobber_millicode_symbols): Adjust to suit new hide_symbol. + * elf32-cris.c (elf_cris_hide_symbol): Add "force_local" param + and adjust to suit. + * elf32-mips.c (_bfd_mips_elf_hide_symbol): Likewise, and call + _bfd_elf_link_hash_hide_symbol rather than duplicating code. + * elfxx-ia64.c (elfNN_ia64_hash_hide_symbol): Likewise. + +2002-01-18 Alan Modra + + * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Test for a + dynamic function descriptor symbol, not the associated function + symbol. + +2002-01-17 Eric Christopher + + * elf32-mips.c (mips_elf_calculate_relocation): Fix typo. + +2002-01-17 Nick Clifton + + * po/bfd.pot: Regenerate. + * po/fr.po: Regenerate. + +2002-01-17 Alan Modra + + * elf-bfd.h (elf_backend_data ): + Remove "Elf_Internal_Shdr *" param. + (_bfd_mips_elf_section_from_bfd_section): Ditto. + * elf32-mips.c (_bfd_mips_elf_section_from_bfd_section): Ditto. + * elf32-m32r.c (_bfd_m32r_elf_section_from_bfd_section): Ditto. + * elf32-v850.c (v850_elf_section_from_bfd_section): Ditto. + * elf64-mmix.c (mmix_elf_section_from_bfd_section): Ditto. + * elfxx-ia64.c (elfNN_hpux_backend_section_from_bfd_section): Ditto. + * elf.c (_bfd_elf_section_from_bfd_section): Allow backend + function to override special sections. Remove hdr arg from + backend call, and don't loop. + +2002-01-16 Eric Christopher + + * elf32-mips.c (mips_elf_calculate_relocation): Set require_jalxp + on R_MIPS_26 and target is 16bit. Add R_MIPS16_GPREL to list of + relocations requiring gp0 and gp. + +2002-01-16 Richard Earnshaw + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Handle + EF_ARM_VFP_FLOAT. + (elf32_arm_print_private_bfd_data): Likewise. + +2002-01-16 Nick Clifton + + * po/tr.po: Import new version. + +2002-01-16 Alan Modra + + * elf64-ppc.c (ppc64_elf_howto_raw): Remove stale FIXMEs. + (ppc64_elf_reloc_type_lookup): Use proper CTOR reloc. + (ORI_R0_R0_0): Correct. + +2002-01-16 Alan Modra + + * elflink.c (_bfd_elf_create_dynamic_sections): Don't set SEC_CODE + when plt_not_loaded. + * elf64-ppc.c (ppc64_elf_create_dynamic_sections): No need to + clear .plt SEC_CODE here. Create .stub and correct .glink flags. + (PLT_INITIAL_ENTRY_SIZE): Set to 24. + (ppc64_elf_glink_code): Delete. + (PPC64_ELF_GLINK_SIZE): Delete. + (ADDIS_R12_R2, STD_R2_40R1, LD_R11_0R12, LD_R2_0R12, MTCTR_R11, + BCTR, ADDIS_R12_R12_1, LD_R2_40R1, NOP, LI_R0_0, B_DOT, LIS_R0_0, + ORI_R0_R0_0): Define. + (PLT_CALL_STUB_SIZE, GLINK_CALL_STUB_SIZE): Define. + (struct ppc_link_hash_table): Add sstub and plt_overflow. + (ppc64_elf_link_hash_table_create): Init them. + (ppc64_elf_check_relocs ): Refcount .plt entry. + Don't copy to shared lib. + (ppc64_elf_check_relocs): Call bfd_set_error on errors. + (ppc64_elf_gc_sweep_hook ): Sweep plt refcount. + (allocate_dynrelocs ): Don't change function sym here. Make + room for .stub and .glink code. + (ppc64_elf_size_dynamic_sections): Handle .stub. Make entry for + DT_PPC64_GLINK. + (ppc64_elf_final_link): Rename to ppc64_elf_set_toc. Don't call + bfd_elf64_bfd_final_link. + (bfd_elf64_bfd_final_link): Don't define. + (ppc64_elf_size_stubs): New. + (build_plt_stub): New. + (build_one_stub): New. + (ppc64_elf_build_stubs): New. + (ppc64_elf_relocate_section ): Remove assert. + (ppc64_elf_relocate_section): Don't copy R_PPC64_REL24 relocs. + (ppc64_elf_finish_dynamic_symbol): Don't build stubs here. Set + DT_PPC64_GLINK entry. Tweak DT_PLTGOT, DT_JMPREL, DT_PLTRELSZ in + case output sections not separate. Adjust DT_RELASZ to not + include plt relocs. Set reserved got entry. Set got and plt + entry size. + (elf_backend_got_header_size): Set to 8. + * elf64-ppc.h: New file. + +2002-01-16 Alan Modra + + * elf32-arm.h (elf32_arm_size_dynamic_sections): When removing + sections, use bfd_section_list_remove. + * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise. + * elflink.h (elf_link_add_object_symbols): When removing all + sections, use bfd_section_list_clear. + +2002-01-15 Nick Clifton + + * po/sv.po: New file: Swedish translation. + * configure.in (ALL_LINGUAS): Add sv. + * configure: Regenerate. + +2002-01-15 Jakub Jelinek + + * elflink.h (elf_link_input_bfd): Back out 2002-01-07 change. + * elf.c (merge_sections_remove_hook): New function. + (_bfd_elf_merge_sections): Pass it as 3rd argument to + _bfd_merge_sections. + * libbfd-in.h (_bfd_merge_sections): Add 3rd argument. + * libbfd.h: Rebuilt. + * merge.c (_bfd_merge_sections): Add remove_hook argument. + Call remove_hook if a SEC_EXCLUDE section is encountered. + +2002-01-15 Nick Clifton + + * elf32-xstormy16.c (xstormy16_reloc_map): Add new field 'table'. + (xstormy16_reloc_map): Initialise new field with correct howto + table. + (xstormy16_reloc_type_lookup): Use 'table' field to locate correct + howto entry. + +2002-01-10 Michael Snyder + + * elf.c (elfcore_write_prstatus): Use long instead of pid_t; + (elfcore_write_pstatus): Use long instead of pid_t; + * elf-bfd.h: Change prototypes to use long instead of pid_t; + +2002-01-09 Jason Thorpe + + * elf.c: Update copyright years. + (elfcore_grok_netbsd_note): Use NT_NETBSDCORE_PROCINFO + and NT_NETBSDCORE_FIRSTMACH. Improve a comment. + +2002-01-08 Michael Snyder + + Add capability to write corefile note sections, for gdb. + * elf.c (elfcore_write_note): New function. + (elfcore_write_prpsinfo): New function. + (elfcore_write_prstatus): New function. + (elfcore_write_pstatus): New function. + (elfcore_write_prfpreg): New function. + (elfcore_write_prxfpreg): New function. + * elf-bfd.h: Add prototypes for above functions. + +2002-01-08 Alexandre Oliva + + * elf.c (elf_fake_sections): Propagate errors from + elf_backend_fake_section. + +2002-01-07 Jason Thorpe + + * Makefile.am (BFD32_BACKENDS): Add elf32-sh-nbsd.lo. + (BFD32_BACKENDS_CFILES): Add elf32-sh-nbsd.c. + (elf32-sh-nbsd.lo): New rule. + * Makefile.in: Regenerate. + * config.bfd (sh*le-*-netbsdelf*): New target. + (sh*-*-netbsdelf*): New target. + * configure.in: Include netbsd-core.lo for native sh*-*-netbsd*. + (bfd_elf32_shnbsd_vec): New vector. + (bfd_elf32_shlnbsd_vec): New vector. + * configure: Regenerate. + * elf32-sh-nbsd.c: New file. + * targets.c: Update copyright years. + (_bfd_target_vector): Add bfd_elf32_shlnbsd_vec and + bfd_elf32_shnbsd_vec. + +2002-01-07 Aldy Hernandez + + * coff-rs6000.c (READ20): Use bfd_scan_vma. + +2002-01-07 Geoffrey Keating + + * elflink.h (elf_link_input_bfd): Don't ask for the merged offset + of a symbol in a section that will be deleted. + +2002-01-07 Nick Clifton + + * po/es.po: New file: Spanish translation. + * configure.in (ALL_LINGUAS): Add es. + * configure: Regenerate. + +2002-01-06 Steve Ellcey + + * elfxx-ia64.c (is_unwind_section_name): Add target vector as + argument so we can handle HP-UX specially. + (elfNN_ia64_hpux_vec): New for use in is_unwind_section_name. + (elfNN_hpux_backend_section_from_bfd_section): New for support + of SHN_IA_64_ANSI_COMMON. + (elfNN_ia64_relax_section): Add support for SHN_IA_64_ANSI_COMMON. + (is_unwind_section_name): Add special HP-UX support. + (elfNN_ia64_section_from_shdr): Add support for more sections. + (elfNN_ia64_fake_sections): Modify is_unwind_section_name call and + add support for more sections. + (elfNN_ia64_additional_program_headers): Modify + is_unwind_section_name call. + (elfNN_ia64_modify_segment_map): Remove assumption that there is + only one unwind section in segment. + +2002-01-06 Alan Modra + + * syms.c (_bfd_generic_make_empty_symbol): New function. + * libbfd-in.h (_bfd_nosymbols_make_empty_symbol): Define as + _bfd_generic_make_empty_symbol. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + * hppabsd-core.c (hppabsd_core_make_empty_symbol): Delete function. + (hppabsd_core_get_symtab_upper_bound): Don't define. + (hppabsd_core_get_symtab): Likewise. + (hppabsd_core_print_symbol): Likewise. + (hppabsd_core_get_symbol_info): Likewise. + (hppabsd_core_bfd_is_local_label_name): Likewise. + (hppabsd_core_get_lineno): Likewise. + (hppabsd_core_find_nearest_line): Likewise. + (hppabsd_core_bfd_make_debug_symbol): Likewise. + (hppabsd_core_read_minisymbols): Likewise. + (hppabsd_core_minisymbol_to_symbol): Likewise. + (hppabsd_core_vec): Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). + Formatting fixes. + * hpux-core.c: Similarly. + * irix-core.c: Similarly. + * osf-core.c: Similarly. + * sco5-core.c: Similarly. + * binary.c (binary_make_empty_symbol): Remove function, define as + _bfd_generic_make_empty_symbol. + * ihex.c (ihex_make_empty_symbol): Likewise. + * mmo.c (mmo_make_empty_symbol): Likewise. + * ppcboot.c (ppcboot_make_empty_symbol): Likewise. + * srec.c (srec_make_empty_symbol): Likewise. + * versados.c (versados_make_empty_symbol): Likewise. + * vms.c (_bfd_vms_make_empty_symbol): Remove. + (vms_make_empty_symbol): Define as _bfd_generic_make_empty_symbol. + * vms-gsd.c (_bfd_vms_slurp_gsd): Call bfd_make_empty_symbol + rather than _bfd_vms_make_empty_symbol. + * vms-misc.c (new_symbol): Likewise. + +2002-01-05 Alan Modra + + * section.c (bfd_section_init): Remove unnecessary initialisations. + (bfd_section_list_clear): New function. + (bfd_section_list_remove, bfd_section_list_insert): New macros. + (_bfd_strip_section_from_output): Use them. + * coffcode.h (coff_set_alignment_hook): Likewise. + * elf32-mips.c (_bfd_mips_elf_final_link): Likewise. + * elf64-mips.c (mips_elf64_final_link): Likewise. + * elf64-mmix.c (mmix_elf_final_link): Likewise. + * sunos.c (sunos_add_dynamic_symbols): Likewise. + * xcofflink.c (_bfd_xcoff_bfd_final_link): Likewise. + * bfd-in2.h: Regenerate. + + * netbsd-core.c (netbsd_core_file_p): Use bfd_make_section_anyway + rather than doing our own section handling. Clean up after errors + with bfd_release and bfd_section_list_clear. Handle unexpected + flags. + * aoutf1.h (sunos4_core_file_p): Likewise. + * aix386-core.c (aix386_core_file_p): Likewise. + * cisco-core.c (cisco_core_file_validate): Likewise. + * ptrace-core.c (ptrace_unix_core_file_p): Likewise. + * trad-core.c (trad_unix_core_file_p): Likewise. + + * hppabsd-core.c (hppabsd_core_core_file_p): Clean up after errors + with bfd_release and bfd_section_list_clear. + * hpux-core.c (hpux_core_core_file_p): Likewise. + * irix-core.c (irix_core_core_file_p): Likewise. + * lynx-core.c (lynx_core_file_p): Likewise. + * osf-core.c (osf_core_core_file_p): Likewise. + * rs6000-core.c (rs6000coff_core_p): Likewise. + * sco5-core.c (sco5_core_file_p): Likewise. + + * elf32-mips.c (_bfd_mips_elf_lo16_reloc): Simplify, and perform + sign extension adjustments without conditionals. + +2002-01-04 Jakub Jelinek + + * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Don't crash if + CIE at .eh_frame start is removed due to no FDEs referencing it. + +2002-01-04 Jason Thorpe + + * config.bfd (x86_64-*-netbsd*): New target. + * configure.in (x86_64-*-netbsd*): Set COREFILE + to netbsd-core.lo. + * configure: Regenerated. + +2002-01-03 Tom Rix + + * xcofflink.c (_bfd_xcoff_bfd_final_link): Update .pad section ordering + for recent bfd_make_section_anyway change. + +2002-01-03 Nick Clifton + + * elf32-arm.h (elf32_arm_final_link_relocate): Handle + R_ARM_THM_PC11 reloc. + +2002-01-02 Nick Clifton + + * configure.in (LINGUAS): Add ja. + * configure: Regenerate. + * po/ja.po: Import from translation project's web site. + +2002-01-02 Nick Clifton + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Reformat error + messages to ease translation into other languages. + +For older changes see ChangeLog-0001 + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff -uprN binutils-2.14.90.0.7/bfd/Makefile.am binutils-2.14.90.0.8/bfd/Makefile.am --- binutils-2.14.90.0.7/bfd/Makefile.am 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/Makefile.am 2004-01-14 13:07:42.000000000 -0800 @@ -1616,11 +1616,13 @@ cisco-core.lo: cisco-core.c $(INCDIR)/fi elf32-ia64.lo: elf32-ia64.c $(INCDIR)/filenames.h elf-bfd.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \ - $(INCDIR)/elf/reloc-macros.h elf32-target.h + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/objalloc.h $(INCDIR)/hashtab.h \ + elf32-target.h elf64-ia64.lo: elf64-ia64.c $(INCDIR)/filenames.h elf-bfd.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \ - $(INCDIR)/elf/reloc-macros.h elf64-target.h + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/objalloc.h $(INCDIR)/hashtab.h \ + elf64-target.h peigen.lo: peigen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(INCDIR)/coff/pe.h \ libcoff.h $(INCDIR)/bfdlink.h libpei.h diff -uprN binutils-2.14.90.0.7/bfd/Makefile.in binutils-2.14.90.0.8/bfd/Makefile.in --- binutils-2.14.90.0.7/bfd/Makefile.in 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/Makefile.in 2004-01-14 13:07:42.000000000 -0800 @@ -812,7 +812,7 @@ configure.in version.h DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = gtar +TAR = tar GZIP_ENV = --best SOURCES = $(libbfd_a_SOURCES) $(libbfd_la_SOURCES) OBJECTS = $(libbfd_a_OBJECTS) $(libbfd_la_OBJECTS) @@ -2151,11 +2151,13 @@ cisco-core.lo: cisco-core.c $(INCDIR)/fi elf32-ia64.lo: elf32-ia64.c $(INCDIR)/filenames.h elf-bfd.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \ - $(INCDIR)/elf/reloc-macros.h elf32-target.h + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/objalloc.h $(INCDIR)/hashtab.h \ + elf32-target.h elf64-ia64.lo: elf64-ia64.c $(INCDIR)/filenames.h elf-bfd.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \ - $(INCDIR)/elf/reloc-macros.h elf64-target.h + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/objalloc.h $(INCDIR)/hashtab.h \ + elf64-target.h peigen.lo: peigen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(INCDIR)/coff/pe.h \ libcoff.h $(INCDIR)/bfdlink.h libpei.h diff -uprN binutils-2.14.90.0.7/bfd/aix5ppc-core.c binutils-2.14.90.0.8/bfd/aix5ppc-core.c --- binutils-2.14.90.0.7/bfd/aix5ppc-core.c 2002-12-16 12:22:51.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/aix5ppc-core.c 2004-01-14 13:07:42.000000000 -0800 @@ -102,7 +102,7 @@ xcoff64_core_p (abfd) || (! (core.c_flag & LE_VALID))) goto xcoff64_core_p_error; - /* Check for trucated stack or general truncating. */ + /* Check for truncated stack or general truncating. */ if ((! (core.c_flag & USTACK_VALID)) || (core.c_flag & CORE_TRUNC)) { diff -uprN binutils-2.14.90.0.7/bfd/aout-adobe.c binutils-2.14.90.0.8/bfd/aout-adobe.c --- binutils-2.14.90.0.7/bfd/aout-adobe.c 2002-12-16 12:22:51.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/aout-adobe.c 2004-01-14 13:07:42.000000000 -0800 @@ -1,6 +1,6 @@ /* BFD back-end for a.out.adobe binaries. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, - 2002 + 2002, 2003 Free Software Foundation, Inc. Written by Cygnus Support. Based on bout.c. @@ -47,7 +47,7 @@ static bfd_boolean aout_adobe_mkobject static bfd_boolean aout_adobe_write_object_contents PARAMS ((bfd *)); static bfd_boolean aout_adobe_set_section_contents - PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, file_ptr, bfd_size_type)); static bfd_boolean aout_adobe_set_arch_mach PARAMS ((bfd *, enum bfd_architecture, unsigned long)); static int aout_adobe_sizeof_headers @@ -415,7 +415,7 @@ static bfd_boolean aout_adobe_set_section_contents (abfd, section, location, offset, count) bfd *abfd; asection *section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { diff -uprN binutils-2.14.90.0.7/bfd/aout-arm.c binutils-2.14.90.0.8/bfd/aout-arm.c --- binutils-2.14.90.0.7/bfd/aout-arm.c 2002-12-16 12:22:51.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/aout-arm.c 2004-01-14 13:07:42.000000000 -0800 @@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suit #include "bfd.h" #include "sysdep.h" -/* Avoid multiple defininitions from aoutx if supporting standarad a.out +/* Avoid multiple definitions from aoutx if supporting standard a.out as well as our own. */ /* Do not "beautify" the CONCAT* macro args. Traditional C will not remove whitespace added here, and thus will fail to concatenate diff -uprN binutils-2.14.90.0.7/bfd/aout-ns32k.c binutils-2.14.90.0.8/bfd/aout-ns32k.c --- binutils-2.14.90.0.7/bfd/aout-ns32k.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/aout-ns32k.c 2004-01-14 13:07:42.000000000 -0800 @@ -70,7 +70,7 @@ MY(put_reloc) PARAMS ((bfd *, int, int, data. Of these, only the last fits into the standard relocation scheme. Immediate operands are stored huffman encoded and immediate operands are stored big endian (where as the natural byte - order is little endian for this achitecture). + order is little endian for this architecture). Note that the ns32k displacement storage method is orthogonal to whether the relocation is pc relative or not. The "displacement" diff -uprN binutils-2.14.90.0.7/bfd/aout-target.h binutils-2.14.90.0.8/bfd/aout-target.h --- binutils-2.14.90.0.7/bfd/aout-target.h 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/aout-target.h 2004-01-14 13:07:42.000000000 -0800 @@ -1,6 +1,6 @@ /* Define a target vector and some small routines for a variant of a.out. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002 + 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/aoutf1.h binutils-2.14.90.0.8/bfd/aoutf1.h --- binutils-2.14.90.0.7/bfd/aoutf1.h 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/aoutf1.h 2004-01-14 13:07:42.000000000 -0800 @@ -1,6 +1,6 @@ /* A.out "format 1" file handling code for BFD. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, - 2001, 2002 + 2001, 2002, 2003 Free Software Foundation, Inc. Written by Cygnus Support. diff -uprN binutils-2.14.90.0.7/bfd/aoutx.h binutils-2.14.90.0.8/bfd/aoutx.h --- binutils-2.14.90.0.7/bfd/aoutx.h 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/aoutx.h 2004-01-14 13:07:42.000000000 -0800 @@ -1265,7 +1265,7 @@ bfd_boolean NAME(aout,set_section_contents) (abfd, section, location, offset, count) bfd *abfd; sec_ptr section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { @@ -3254,7 +3254,7 @@ aout_link_check_ar_symbols (abfd, info, and this object file from the archive includes: int a = 5; In such a case, whether to include this object is target - dependant for backward compatability. + dependant for backward compatibility. FIXME: The SunOS 4.1.3 linker will pull in the archive element if the symbol is defined in the .data section, diff -uprN binutils-2.14.90.0.7/bfd/archures.c binutils-2.14.90.0.8/bfd/archures.c --- binutils-2.14.90.0.7/bfd/archures.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/archures.c 2004-01-14 13:07:42.000000000 -0800 @@ -272,6 +272,7 @@ DESCRIPTION . bfd_arch_m32r, {* Renesas M32R (formerly Mitsubishi M32R/D) *} .#define bfd_mach_m32r 1 {* For backwards compatibility. *} .#define bfd_mach_m32rx 'x' +.#define bfd_mach_m32r2 '2' . bfd_arch_mn10200, {* Matsushita MN10200 *} . bfd_arch_mn10300, {* Matsushita MN10300 *} .#define bfd_mach_mn10300 300 @@ -865,7 +866,7 @@ bfd_default_scan (const bfd_arch_info_ty } /* Given that PRINTABLE_NAME has the form: ":" ; Do not - attempt to match just , it could be ambigious. This test + attempt to match just , it could be ambiguous. This test is left until later. */ /* NOTE: The below is retained for compatibility only. Please do @@ -1046,7 +1047,7 @@ SYNOPSIS (enum bfd_architecture arch, unsigned long machine); DESCRIPTION - Look for the architecure info structure which matches the + Look for the architecture info structure which matches the arguments @var{arch} and @var{machine}. A machine of 0 matches the machine/architecture structure which marks itself as the default. diff -uprN binutils-2.14.90.0.7/bfd/bfd-in.h binutils-2.14.90.0.8/bfd/bfd-in.h --- binutils-2.14.90.0.7/bfd/bfd-in.h 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/bfd-in.h 2004-01-14 13:07:42.000000000 -0800 @@ -185,7 +185,7 @@ typedef unsigned char bfd_byte; typedef enum bfd_format { bfd_unknown = 0, /* File format is unknown. */ - bfd_object, /* Linker/assember/compiler output. */ + bfd_object, /* Linker/assembler/compiler output. */ bfd_archive, /* Object archive file. */ bfd_core, /* Core dump. */ bfd_type_end /* Marks the end; don't use it! */ @@ -303,7 +303,7 @@ typedef struct lineno_cache_entry unsigned int line_number; /* Linenumber from start of function. */ union { - struct symbol_cache_entry *sym; /* Function name. */ + struct bfd_symbol *sym; /* Function name. */ bfd_vma offset; /* Offset into section. */ } u; } @@ -554,7 +554,7 @@ void bfd_put_bits (bfd_vma, bfd_byte *, struct ecoff_debug_info; struct ecoff_debug_swap; struct ecoff_extr; -struct symbol_cache_entry; +struct bfd_symbol; struct bfd_link_info; struct bfd_link_hash_entry; struct bfd_elf_version_tree; @@ -584,8 +584,8 @@ extern bfd_boolean bfd_ecoff_debug_accum extern bfd_boolean bfd_ecoff_debug_externals (bfd *abfd, struct ecoff_debug_info *debug, const struct ecoff_debug_swap *swap, bfd_boolean relocatable, - bfd_boolean (*get_extr) (struct symbol_cache_entry *, struct ecoff_extr *), - void (*set_index) (struct symbol_cache_entry *, bfd_size_type)); + bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *), + void (*set_index) (struct bfd_symbol *, bfd_size_type)); extern bfd_boolean bfd_ecoff_debug_one_external (bfd *abfd, struct ecoff_debug_info *debug, const struct ecoff_debug_swap *swap, const char *name, @@ -677,6 +677,9 @@ extern int bfd_get_arch_size extern int bfd_get_sign_extend_vma (bfd *); +extern struct bfd_section *_bfd_elf_tls_setup + (bfd *, struct bfd_link_info *); + extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **); extern bfd_boolean bfd_mips_elf32_create_embedded_relocs @@ -759,13 +762,13 @@ union internal_auxent; #endif extern bfd_boolean bfd_coff_get_syment - (bfd *, struct symbol_cache_entry *, struct internal_syment *); + (bfd *, struct bfd_symbol *, struct internal_syment *); extern bfd_boolean bfd_coff_get_auxent - (bfd *, struct symbol_cache_entry *, int, union internal_auxent *); + (bfd *, struct bfd_symbol *, int, union internal_auxent *); extern bfd_boolean bfd_coff_set_symbol_class - (bfd *, struct symbol_cache_entry *, unsigned int); + (bfd *, struct bfd_symbol *, unsigned int); extern bfd_boolean bfd_m68k_coff_create_embedded_relocs (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **); diff -uprN binutils-2.14.90.0.7/bfd/bfd-in2.h binutils-2.14.90.0.8/bfd/bfd-in2.h --- binutils-2.14.90.0.7/bfd/bfd-in2.h 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/bfd-in2.h 2004-01-14 13:07:42.000000000 -0800 @@ -192,7 +192,7 @@ typedef unsigned char bfd_byte; typedef enum bfd_format { bfd_unknown = 0, /* File format is unknown. */ - bfd_object, /* Linker/assember/compiler output. */ + bfd_object, /* Linker/assembler/compiler output. */ bfd_archive, /* Object archive file. */ bfd_core, /* Core dump. */ bfd_type_end /* Marks the end; don't use it! */ @@ -310,7 +310,7 @@ typedef struct lineno_cache_entry unsigned int line_number; /* Linenumber from start of function. */ union { - struct symbol_cache_entry *sym; /* Function name. */ + struct bfd_symbol *sym; /* Function name. */ bfd_vma offset; /* Offset into section. */ } u; } @@ -561,7 +561,7 @@ void bfd_put_bits (bfd_vma, bfd_byte *, struct ecoff_debug_info; struct ecoff_debug_swap; struct ecoff_extr; -struct symbol_cache_entry; +struct bfd_symbol; struct bfd_link_info; struct bfd_link_hash_entry; struct bfd_elf_version_tree; @@ -591,8 +591,8 @@ extern bfd_boolean bfd_ecoff_debug_accum extern bfd_boolean bfd_ecoff_debug_externals (bfd *abfd, struct ecoff_debug_info *debug, const struct ecoff_debug_swap *swap, bfd_boolean relocatable, - bfd_boolean (*get_extr) (struct symbol_cache_entry *, struct ecoff_extr *), - void (*set_index) (struct symbol_cache_entry *, bfd_size_type)); + bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *), + void (*set_index) (struct bfd_symbol *, bfd_size_type)); extern bfd_boolean bfd_ecoff_debug_one_external (bfd *abfd, struct ecoff_debug_info *debug, const struct ecoff_debug_swap *swap, const char *name, @@ -684,6 +684,9 @@ extern int bfd_get_arch_size extern int bfd_get_sign_extend_vma (bfd *); +extern struct bfd_section *_bfd_elf_tls_setup + (bfd *, struct bfd_link_info *); + extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **); extern bfd_boolean bfd_mips_elf32_create_embedded_relocs @@ -766,13 +769,13 @@ union internal_auxent; #endif extern bfd_boolean bfd_coff_get_syment - (bfd *, struct symbol_cache_entry *, struct internal_syment *); + (bfd *, struct bfd_symbol *, struct internal_syment *); extern bfd_boolean bfd_coff_get_auxent - (bfd *, struct symbol_cache_entry *, int, union internal_auxent *); + (bfd *, struct bfd_symbol *, int, union internal_auxent *); extern bfd_boolean bfd_coff_set_symbol_class - (bfd *, struct symbol_cache_entry *, unsigned int); + (bfd *, struct bfd_symbol *, unsigned int); extern bfd_boolean bfd_m68k_coff_create_embedded_relocs (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **); @@ -1272,7 +1275,7 @@ typedef struct bfd_section /* Nonzero if this section has a gp reloc. */ unsigned int has_gp_reloc:1; - /* Usused bits. */ + /* Unused bits. */ unsigned int flag13:1; unsigned int flag14:1; unsigned int flag15:1; @@ -1384,8 +1387,8 @@ typedef struct bfd_section bfd *owner; /* A symbol which points at this section only. */ - struct symbol_cache_entry *symbol; - struct symbol_cache_entry **symbol_ptr_ptr; + struct bfd_symbol *symbol; + struct bfd_symbol **symbol_ptr_ptr; struct bfd_link_order *link_order_head; struct bfd_link_order *link_order_tail; @@ -1423,10 +1426,10 @@ extern asection bfd_ind_section; || ((SEC) == bfd_com_section_ptr) \ || ((SEC) == bfd_ind_section_ptr)) -extern const struct symbol_cache_entry * const bfd_abs_symbol; -extern const struct symbol_cache_entry * const bfd_com_symbol; -extern const struct symbol_cache_entry * const bfd_und_symbol; -extern const struct symbol_cache_entry * const bfd_ind_symbol; +extern const struct bfd_symbol * const bfd_abs_symbol; +extern const struct bfd_symbol * const bfd_com_symbol; +extern const struct bfd_symbol * const bfd_und_symbol; +extern const struct bfd_symbol * const bfd_ind_symbol; #define bfd_get_section_size_before_reloc(section) \ ((section)->_raw_size) #define bfd_get_section_size_after_reloc(section) \ @@ -1483,8 +1486,8 @@ bfd_boolean bfd_set_section_size (bfd *abfd, asection *sec, bfd_size_type val); bfd_boolean bfd_set_section_contents - (bfd *abfd, asection *section, void *data, file_ptr offset, - bfd_size_type count); + (bfd *abfd, asection *section, const void *data, + file_ptr offset, bfd_size_type count); bfd_boolean bfd_get_section_contents (bfd *abfd, asection *section, void *location, file_ptr offset, @@ -1707,6 +1710,7 @@ enum bfd_architecture bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */ #define bfd_mach_m32r 1 /* For backwards compatibility. */ #define bfd_mach_m32rx 'x' +#define bfd_mach_m32r2 '2' bfd_arch_mn10200, /* Matsushita MN10200 */ bfd_arch_mn10300, /* Matsushita MN10300 */ #define bfd_mach_mn10300 300 @@ -1858,7 +1862,7 @@ typedef enum bfd_reloc_status typedef struct reloc_cache_entry { /* A pointer into the canonical table of pointers. */ - struct symbol_cache_entry **sym_ptr_ptr; + struct bfd_symbol **sym_ptr_ptr; /* offset in section. */ bfd_size_type address; @@ -1929,10 +1933,10 @@ struct reloc_howto_struct /* If this field is non null, then the supplied function is called rather than the normal function. This allows really - strange relocation methods to be accomodated (e.g., i960 callj + strange relocation methods to be accommodated (e.g., i960 callj instructions). */ bfd_reloc_status_type (*special_function) - (bfd *, arelent *, struct symbol_cache_entry *, void *, asection *, + (bfd *, arelent *, struct bfd_symbol *, void *, asection *, bfd *, char **); /* The textual name of the relocation type. */ @@ -2352,6 +2356,20 @@ to compensate for the borrow when the lo BFD_RELOC_FRV_GPREL32, BFD_RELOC_FRV_GPRELHI, BFD_RELOC_FRV_GPRELLO, + BFD_RELOC_FRV_GOT12, + BFD_RELOC_FRV_GOTHI, + BFD_RELOC_FRV_GOTLO, + BFD_RELOC_FRV_FUNCDESC, + BFD_RELOC_FRV_FUNCDESC_GOT12, + BFD_RELOC_FRV_FUNCDESC_GOTHI, + BFD_RELOC_FRV_FUNCDESC_GOTLO, + BFD_RELOC_FRV_FUNCDESC_VALUE, + BFD_RELOC_FRV_FUNCDESC_GOTOFF12, + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI, + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO, + BFD_RELOC_FRV_GOTOFF12, + BFD_RELOC_FRV_GOTOFFHI, + BFD_RELOC_FRV_GOTOFFLO, /* This is a 24bit GOT-relative reloc for the mn10300. */ @@ -2548,7 +2566,7 @@ in the instruction. */ /* IBM 370/390 relocations */ BFD_RELOC_I370_D12, -/* The type of reloc used to build a contructor table - at the moment +/* The type of reloc used to build a constructor table - at the moment probably a 32 bit wide absolute relocation, but the target can choose. It generally does map to one of the other relocation types. */ BFD_RELOC_CTOR, @@ -2803,6 +2821,22 @@ used when the lower 16 bits are treated add3, load, and store instructions. */ BFD_RELOC_M32R_SDA16, +/* For PIC. */ + BFD_RELOC_M32R_GOT24, + BFD_RELOC_M32R_26_PLTREL, + BFD_RELOC_M32R_COPY, + BFD_RELOC_M32R_GLOB_DAT, + BFD_RELOC_M32R_JMP_SLOT, + BFD_RELOC_M32R_RELATIVE, + BFD_RELOC_M32R_GOTOFF, + BFD_RELOC_M32R_GOTPC24, + BFD_RELOC_M32R_GOT16_HI_ULO, + BFD_RELOC_M32R_GOT16_HI_SLO, + BFD_RELOC_M32R_GOT16_LO, + BFD_RELOC_M32R_GOTPC_HI_ULO, + BFD_RELOC_M32R_GOTPC_HI_SLO, + BFD_RELOC_M32R_GOTPC_LO, + /* This is a 9-bit reloc */ BFD_RELOC_V850_9_PCREL, @@ -2845,11 +2879,11 @@ data area pointer. */ BFD_RELOC_V850_TDA_4_4_OFFSET, /* This is a 16 bit offset from the short data area pointer, with the -bits placed non-contigously in the instruction. */ +bits placed non-contiguously in the instruction. */ BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET, /* This is a 16 bit offset from the zero data area pointer, with the -bits placed non-contigously in the instruction. */ +bits placed non-contiguously in the instruction. */ BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET, /* This is a 6 bit offset from the call table base pointer. */ @@ -3206,7 +3240,7 @@ that are not used, so that the code for included in the output. VTABLE_INHERIT is a zero-space relocation used to describe to the -linker the inheritence tree of a C++ virtual function table. The +linker the inheritance tree of a C++ virtual function table. The relocation's symbol should be the parent class' vtable, and the relocation should be located at the child vtable. @@ -3315,7 +3349,7 @@ This is the 3 bit of a value. */ /* Motorola 68HC11 reloc. This reloc marks the beginning of a jump/call instruction. It is used for linker relaxation to correctly identify beginning -of instruction and change some branchs to use PC-relative +of instruction and change some branches to use PC-relative addressing mode. */ BFD_RELOC_M68HC11_RL_JUMP, @@ -3486,7 +3520,7 @@ const char *bfd_get_reloc_code_name (bfd /* Extracted from syms.c. */ -typedef struct symbol_cache_entry +typedef struct bfd_symbol { /* A pointer to the BFD which owns the symbol. This information is necessary so that a back end can work out what additional @@ -3527,7 +3561,7 @@ typedef struct symbol_cache_entry <>, <>, <> or <>. */ - /* The symbol is a debugging record. The value has an arbitary + /* The symbol is a debugging record. The value has an arbitrary meaning, unless BSF_DEBUGGING_RELOC is also set. */ #define BSF_DEBUGGING 0x08 @@ -3745,7 +3779,7 @@ struct bfd unsigned int symcount; /* Symbol table for output BFD (with symcount entries). */ - struct symbol_cache_entry **outsymbols; + struct bfd_symbol **outsymbols; /* Used for slurped dynamic symbol tables. */ unsigned int dynsymcount; @@ -4232,20 +4266,20 @@ typedef struct bfd_target long (*_bfd_get_symtab_upper_bound) (bfd *); long (*_bfd_canonicalize_symtab) - (bfd *, struct symbol_cache_entry **); - struct symbol_cache_entry * + (bfd *, struct bfd_symbol **); + struct bfd_symbol * (*_bfd_make_empty_symbol) (bfd *); void (*_bfd_print_symbol) - (bfd *, void *, struct symbol_cache_entry *, bfd_print_symbol_type); + (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type); #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e)) void (*_bfd_get_symbol_info) - (bfd *, struct symbol_cache_entry *, symbol_info *); + (bfd *, struct bfd_symbol *, symbol_info *); #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e)) bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *); - alent * (*_get_lineno) (bfd *, struct symbol_cache_entry *); + alent * (*_get_lineno) (bfd *, struct bfd_symbol *); bfd_boolean (*_bfd_find_nearest_line) - (bfd *, struct bfd_section *, struct symbol_cache_entry **, bfd_vma, + (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma, const char **, const char **, unsigned int *); /* Back-door to allow format-aware applications to create debug symbols while using BFD for everything else. Currently used by the assembler @@ -4269,7 +4303,7 @@ typedef struct bfd_target long (*_get_reloc_upper_bound) (bfd *, sec_ptr); long (*_bfd_canonicalize_reloc) - (bfd *, sec_ptr, arelent **, struct symbol_cache_entry **); + (bfd *, sec_ptr, arelent **, struct bfd_symbol **); /* See documentation on reloc types. */ reloc_howto_type * (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type); @@ -4282,7 +4316,7 @@ typedef struct bfd_target bfd_boolean (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture, unsigned long); bfd_boolean (*_bfd_set_section_contents) - (bfd *, sec_ptr, void *, file_ptr, bfd_size_type); + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type); /* Routines used by the linker. */ #define BFD_JUMP_TABLE_LINK(NAME) \ @@ -4302,7 +4336,7 @@ typedef struct bfd_target int (*_bfd_sizeof_headers) (bfd *, bfd_boolean); bfd_byte * (*_bfd_get_relocated_section_contents) (bfd *, struct bfd_link_info *, struct bfd_link_order *, - bfd_byte *, bfd_boolean, struct symbol_cache_entry **); + bfd_byte *, bfd_boolean, struct bfd_symbol **); bfd_boolean (*_bfd_relax_section) (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *); @@ -4348,12 +4382,12 @@ typedef struct bfd_target long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *); /* Read in the dynamic symbols. */ long (*_bfd_canonicalize_dynamic_symtab) - (bfd *, struct symbol_cache_entry **); + (bfd *, struct bfd_symbol **); /* Get the amount of memory required to hold the dynamic relocs. */ long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *); /* Read in the dynamic relocs. */ long (*_bfd_canonicalize_dynamic_reloc) - (bfd *, arelent **, struct symbol_cache_entry **); + (bfd *, arelent **, struct bfd_symbol **); /* Opposite endian version of this target. */ const struct bfd_target * alternative_target; diff -uprN binutils-2.14.90.0.7/bfd/bfd.c binutils-2.14.90.0.8/bfd/bfd.c --- binutils-2.14.90.0.7/bfd/bfd.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/bfd.c 2004-01-14 13:07:42.000000000 -0800 @@ -129,7 +129,7 @@ CODE_FRAGMENT . unsigned int symcount; . . {* Symbol table for output BFD (with symcount entries). *} -. struct symbol_cache_entry **outsymbols; +. struct bfd_symbol **outsymbols; . . {* Used for slurped dynamic symbol tables. *} . unsigned int dynsymcount; @@ -396,7 +396,7 @@ SUBSECTION Some BFD functions want to print messages describing the problem. They call a BFD error handler function. This - function may be overriden by the program. + function may be overridden by the program. The BFD error handler acts like printf. diff -uprN binutils-2.14.90.0.7/bfd/bfdio.c binutils-2.14.90.0.8/bfd/bfdio.c --- binutils-2.14.90.0.7/bfd/bfdio.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/bfdio.c 2004-01-14 13:07:42.000000000 -0800 @@ -1,6 +1,6 @@ /* Low-level I/O routines for BFDs. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002 Free Software Foundation, Inc. + 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -395,7 +395,7 @@ DESCRIPTION error when it tries to read the table, or a "virtual memory exhausted" error when it tries to allocate 15 bazillon bytes of space for the 15 bazillon byte table it is about to read. - This function at least allows us to answer the quesion, "is the + This function at least allows us to answer the question, "is the size reasonable?". */ diff -uprN binutils-2.14.90.0.7/bfd/bfdwin.c binutils-2.14.90.0.8/bfd/bfdwin.c --- binutils-2.14.90.0.7/bfd/bfdwin.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/bfdwin.c 2004-01-14 13:07:42.000000000 -0800 @@ -1,5 +1,5 @@ /* Support for memory-mapped windows into a BFD. - Copyright 1995, 1996, 2001, 2002 Free Software Foundation, Inc. + Copyright 1995, 1996, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/binary.c binutils-2.14.90.0.8/bfd/binary.c --- binutils-2.14.90.0.7/bfd/binary.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/binary.c 2004-01-14 13:07:42.000000000 -0800 @@ -1,6 +1,5 @@ /* BFD back-end for binary objects. - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support, @@ -51,7 +50,7 @@ static char *mangle_name PARAMS ((bfd *, static long binary_canonicalize_symtab PARAMS ((bfd *, asymbol **)); static void binary_get_symbol_info PARAMS ((bfd *, asymbol *, symbol_info *)); static bfd_boolean binary_set_section_contents - PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, file_ptr, bfd_size_type)); static int binary_sizeof_headers PARAMS ((bfd *, bfd_boolean)); /* Set by external programs - specifies the BFD architecture and @@ -257,7 +256,7 @@ static bfd_boolean binary_set_section_contents (abfd, sec, data, offset, size) bfd *abfd; asection *sec; - PTR data; + const PTR data; file_ptr offset; bfd_size_type size; { diff -uprN binutils-2.14.90.0.7/bfd/bout.c binutils-2.14.90.0.8/bfd/bout.c --- binutils-2.14.90.0.7/bfd/bout.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/bout.c 2004-01-14 13:07:42.000000000 -0800 @@ -61,7 +61,7 @@ static int b_out_sizeof_headers static bfd_boolean b_out_set_arch_mach PARAMS ((bfd *, enum bfd_architecture, unsigned long)); static bfd_boolean b_out_set_section_contents - PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, file_ptr, bfd_size_type)); static long b_out_get_reloc_upper_bound PARAMS ((bfd *, sec_ptr)); static long b_out_canonicalize_reloc @@ -983,7 +983,7 @@ static bfd_boolean b_out_set_section_contents (abfd, section, location, offset, count) bfd *abfd; asection *section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { diff -uprN binutils-2.14.90.0.7/bfd/coff-apollo.c binutils-2.14.90.0.8/bfd/coff-apollo.c --- binutils-2.14.90.0.7/bfd/coff-apollo.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/coff-apollo.c 2004-01-14 13:07:42.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD back-end for Apollo 68000 COFF binaries. - Copyright 1990, 1991, 1992, 1993, 1994, 1999, 2000, 2001, 2002 + Copyright 1990, 1991, 1992, 1993, 1994, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. By Troy Rollo (troy@cbme.unsw.edu.au) Based on m68k standard COFF version Written by Cygnus Support. diff -uprN binutils-2.14.90.0.7/bfd/coff-arm.c binutils-2.14.90.0.8/bfd/coff-arm.c --- binutils-2.14.90.0.7/bfd/coff-arm.c 2003-08-21 08:28:47.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/coff-arm.c 2004-01-14 13:07:42.000000000 -0800 @@ -4,21 +4,21 @@ Free Software Foundation, Inc. Written by Cygnus Support. -This file is part of BFD, the Binary File Descriptor library. + 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" #include "sysdep.h" @@ -252,11 +252,11 @@ coff_arm_reloc (abfd, reloc_entry, symbo #undef ARM_THUMB12 #undef ARM_26D +#define ARM_26D 0 #define ARM_32 1 #define ARM_RVA32 2 #define ARM_26 3 #define ARM_THUMB12 4 -#define ARM_26D 5 #define ARM_SECTION 14 #define ARM_SECREL 15 #endif @@ -264,7 +264,19 @@ coff_arm_reloc (abfd, reloc_entry, symbo static reloc_howto_type aoutarm_std_reloc_howto[] = { #ifdef ARM_WINCE - EMPTY_HOWTO (-1), + HOWTO (ARM_26D, + 2, + 2, + 24, + TRUE, + 0, + complain_overflow_dont, + aoutarm_fix_pcrel_26_done, + "ARM_26D", + FALSE, + 0x00ffffff, + 0x0, + PCRELOFFSET), HOWTO (ARM_32, 0, 2, @@ -274,7 +286,7 @@ static reloc_howto_type aoutarm_std_relo complain_overflow_bitfield, coff_arm_reloc, "ARM_32", - TRUE, + FALSE, 0xffffffff, 0xffffffff, PCRELOFFSET), @@ -287,7 +299,7 @@ static reloc_howto_type aoutarm_std_relo complain_overflow_bitfield, coff_arm_reloc, "ARM_RVA32", - TRUE, + FALSE, 0xffffffff, 0xffffffff, PCRELOFFSET), @@ -317,19 +329,7 @@ static reloc_howto_type aoutarm_std_relo 0x000007ff, 0x000007ff, PCRELOFFSET), - HOWTO (ARM_26D, - 2, - 2, - 24, - FALSE, - 0, - complain_overflow_dont, - aoutarm_fix_pcrel_26_done, - "ARM_26D", - TRUE, - 0x00ffffff, - 0x0, - FALSE), + EMPTY_HOWTO (-1), EMPTY_HOWTO (-1), EMPTY_HOWTO (-1), EMPTY_HOWTO (-1), @@ -346,8 +346,8 @@ static reloc_howto_type aoutarm_std_relo 0, complain_overflow_bitfield, coff_arm_reloc, - "ARM_16", - TRUE, + "ARM_SECTION", + FALSE, 0x0000ffff, 0x0000ffff, PCRELOFFSET), @@ -359,8 +359,8 @@ static reloc_howto_type aoutarm_std_relo 0, complain_overflow_bitfield, coff_arm_reloc, - "ARM_32", - TRUE, + "ARM_SECREL", + FALSE, 0xffffffff, 0xffffffff, PCRELOFFSET), @@ -921,13 +921,13 @@ struct coff_arm_link_hash_table /* The original coff_link_hash_table structure. MUST be first field. */ struct coff_link_hash_table root; - /* The size in bytes of the section containg the Thumb-to-ARM glue. */ + /* The size in bytes of the section containing the Thumb-to-ARM glue. */ bfd_size_type thumb_glue_size; - /* The size in bytes of the section containg the ARM-to-Thumb glue. */ + /* The size in bytes of the section containing the ARM-to-Thumb glue. */ bfd_size_type arm_glue_size; - /* An arbitary input BFD chosen to hold the glue sections. */ + /* An arbitrary input BFD chosen to hold the glue sections. */ bfd * bfd_of_glue_owner; /* Support interworking with old, non-interworking aware ARM code. */ @@ -991,7 +991,7 @@ arm_emit_base_file_entry (info, output_b instruction. It takes two thumb instructions to encode the target address. Each has - 11 bits to invest. The upper 11 bits are stored in one (identifed by + 11 bits to invest. The upper 11 bits are stored in one (identified by H-0.. see below), the lower 11 bits are stored in the other (identified by H-1). @@ -1248,9 +1248,10 @@ coff_arm_relocate_section (output_bfd, i /* The relocation_section function will skip pcrel_offset relocs when doing a relocatable link. However, we want to convert - ARM26 to ARM26D relocs if possible. We return a fake howto in + ARM_26 to ARM_26D relocs if possible. We return a fake howto in this case without pcrel_offset set, and adjust the addend to - compensate. */ + compensate. 'partial_inplace' is also set, since we want 'done' + relocations to be reflected in section's data. */ if (rel->r_type == ARM_26 && h != NULL && info->relocatable @@ -1269,12 +1270,17 @@ coff_arm_relocate_section (output_bfd, i complain_overflow_signed, aoutarm_fix_pcrel_26 , "ARM_26", - FALSE, + TRUE, 0x00ffffff, 0x00ffffff, FALSE); addend -= rel->r_vaddr - input_section->vma; +#ifdef ARM_WINCE + /* FIXME: I don't know why, but the hack is necessary for correct + generation of bl's instruction offset. */ + addend -= 8; +#endif howto = &fake_arm26_reloc; } @@ -1299,7 +1305,7 @@ coff_arm_relocate_section (output_bfd, i /* FIXME - it is not clear which targets need this next test and which do not. It is known that it is needed for the VxWorks and EPOC-PE targets, but it is also known that it - was supressed for other ARM targets. This ought to be + was suppressed for other ARM targets. This ought to be sorted out one day. */ #ifdef ARM_COFF_BUGFIX /* We must not ignore the symbol value. If the symbol is @@ -1734,10 +1740,13 @@ coff_arm_relocate_section (output_bfd, i #endif else #endif /* THUMBEXTENSION */ - rstat = _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, - rel->r_vaddr - input_section->vma, - val, addend); + if (info->relocatable && ! howto->partial_inplace) + rstat = bfd_reloc_ok; + else + rstat = _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, + rel->r_vaddr - input_section->vma, + val, addend); #if 1 /* THUMBEXTENSION */ /* FIXME: Is this the best way to fix up thumb addresses? krk@cygnus.com @@ -2198,8 +2207,8 @@ bfd_arm_process_before_allocation (abfd, #define coff_bfd_copy_private_bfd_data coff_arm_copy_private_bfd_data #define coff_bfd_link_hash_table_create coff_arm_link_hash_table_create -/* When doing a relocatable link, we want to convert ARM26 relocs - into ARM26D relocs. */ +/* When doing a relocatable link, we want to convert ARM_26 relocs + into ARM_26D relocs. */ static bfd_boolean coff_arm_adjust_symndx (obfd, info, ibfd, sec, irel, adjustedp) @@ -2210,7 +2219,7 @@ coff_arm_adjust_symndx (obfd, info, ibfd struct internal_reloc *irel; bfd_boolean *adjustedp; { - if (irel->r_type == 3) + if (irel->r_type == ARM_26) { struct coff_link_hash_entry *h; @@ -2219,7 +2228,7 @@ coff_arm_adjust_symndx (obfd, info, ibfd && (h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) && h->root.u.def.section->output_section == sec->output_section) - irel->r_type = 7; + irel->r_type = ARM_26D; } *adjustedp = FALSE; return TRUE; @@ -2228,7 +2237,7 @@ coff_arm_adjust_symndx (obfd, info, ibfd /* Called when merging the private data areas of two BFDs. This is important as it allows us to detect if we are attempting to merge binaries compiled for different ARM - targets, eg different CPUs or differents APCS's. */ + targets, eg different CPUs or different APCS's. */ static bfd_boolean coff_arm_merge_private_bfd_data (ibfd, obfd) @@ -2361,7 +2370,7 @@ coff_arm_print_private_bfd_data (abfd, p if (APCS_SET (abfd)) { - /* xgettext: APCS is ARM Prodecure Call Standard, it should not be translated. */ + /* xgettext: APCS is ARM Procedure Call Standard, it should not be translated. */ fprintf (file, " [APCS-%d]", APCS_26_FLAG (abfd) ? 26 : 32); if (APCS_FLOAT_FLAG (abfd)) diff -uprN binutils-2.14.90.0.7/bfd/coff-h8300.c binutils-2.14.90.0.8/bfd/coff-h8300.c --- binutils-2.14.90.0.7/bfd/coff-h8300.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/coff-h8300.c 2004-01-14 13:07:42.000000000 -0800 @@ -1,6 +1,6 @@ /* BFD back-end for Renesas H8/300 COFF binaries. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003 + 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Written by Steve Chamberlain, . @@ -666,6 +666,7 @@ h8300_reloc16_extra_cases (bfd *abfd, st bfd_vma value; bfd_vma dot; int gap, tmp; + unsigned char temp_code; switch (reloc->howto->type) { @@ -775,7 +776,7 @@ h8300_reloc16_extra_cases (bfd *abfd, st src_address += 4; break; - /* A 16bit abolute relocation that was formerlly a 24/32bit + /* A 16bit absolute relocation that was formerly a 24/32bit absolute relocation. */ case R_MOVL2: value = bfd_coff_reloc16_get_value (reloc, link_info, input_section); @@ -947,8 +948,12 @@ h8300_reloc16_extra_cases (bfd *abfd, st if (data[dst_address - 2] != 0x6a) abort (); + temp_code = data[src_address - 1]; + if ((temp_code & 0x10) != 0x10) + temp_code &= 0xf0; + /* Fix up the opcode. */ - switch (data[src_address - 1] & 0xf0) + switch (temp_code) { case 0x00: data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x20; @@ -956,6 +961,12 @@ h8300_reloc16_extra_cases (bfd *abfd, st case 0x80: data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x30; break; + case 0x18: + data[dst_address - 2] = 0x7f; + break; + case 0x10: + data[dst_address - 2] = 0x7e; + break; default: abort (); } @@ -972,8 +983,12 @@ h8300_reloc16_extra_cases (bfd *abfd, st if (data[dst_address - 2] != 0x6a) abort (); + temp_code = data[src_address - 1]; + if ((temp_code & 0x30) != 0x30) + temp_code &= 0xf0; + /* Fix up the opcode. */ - switch (data[src_address - 1] & 0xf0) + switch (temp_code) { case 0x20: data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x20; @@ -981,6 +996,12 @@ h8300_reloc16_extra_cases (bfd *abfd, st case 0xa0: data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x30; break; + case 0x38: + data[dst_address - 2] = 0x7f; + break; + case 0x30: + data[dst_address - 2] = 0x7e; + break; default: abort (); } diff -uprN binutils-2.14.90.0.7/bfd/coff-i860.c binutils-2.14.90.0.8/bfd/coff-i860.c --- binutils-2.14.90.0.7/bfd/coff-i860.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/coff-i860.c 2004-01-14 13:07:42.000000000 -0800 @@ -140,6 +140,7 @@ coff_i860_reloc_nyi (bfd *abfd ATTRIBUTE { reloc_howto_type *howto = reloc_entry->howto; fprintf (stderr, _("Relocation `%s' not yet implemented\n"), howto->name); + return bfd_reloc_notsupported; } #ifndef PCRELOFFSET @@ -524,7 +525,7 @@ coff_i860_rtype_to_howto (bfd *abfd ATTR BFD_ASSERT (h != NULL); /* I think we *do* want to bypass this. If we don't, I have seen some data - parameters get the wrong relcation address. If I link two versions + parameters get the wrong relocation address. If I link two versions with and without this section bypassed and then do a binary comparison, the addresses which are different can be looked up in the map. The case in which this section has been bypassed has addresses which correspond diff -uprN binutils-2.14.90.0.7/bfd/coff-m88k.c binutils-2.14.90.0.8/bfd/coff-m88k.c --- binutils-2.14.90.0.7/bfd/coff-m88k.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/coff-m88k.c 2004-01-14 13:07:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* BFD back-end for Motorola 88000 COFF "Binary Compatability Standard" files. +/* BFD back-end for Motorola 88000 COFF "Binary Compatibility Standard" files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. @@ -85,7 +85,7 @@ m88k_special_reloc (abfd, reloc_entry, s asection *reloc_target_output_section; long relocation = 0; - /* Work out which section the relocation is targetted at and the + /* Work out which section the relocation is targeted at and the initial relocation command value. */ /* Get symbol value. (Common symbols are special.) */ diff -uprN binutils-2.14.90.0.7/bfd/coff-mcore.c binutils-2.14.90.0.8/bfd/coff-mcore.c --- binutils-2.14.90.0.7/bfd/coff-mcore.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/coff-mcore.c 2004-01-14 13:07:42.000000000 -0800 @@ -587,7 +587,7 @@ coff_mcore_relocate_section (output_bfd, #include "coffcode.h" -/* Forward declaration to initialise alterbative_target field. */ +/* Forward declaration to initialise alternative_target field. */ extern const bfd_target TARGET_LITTLE_SYM; /* The transfer vectors that lead the outside world to all of the above. */ diff -uprN binutils-2.14.90.0.7/bfd/coff-ppc.c binutils-2.14.90.0.8/bfd/coff-ppc.c --- binutils-2.14.90.0.7/bfd/coff-ppc.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/coff-ppc.c 2004-01-14 13:07:43.000000000 -0800 @@ -929,7 +929,7 @@ ppc_record_toc_entry(abfd, info, sec, sy local_syms[sym] = global_toc_size; global_toc_size += 4; - /* The size must fit in a 16bit displacment. */ + /* The size must fit in a 16-bit displacement. */ if (global_toc_size > 65535) { (*_bfd_error_handler) (_("TOC overflow")); @@ -949,7 +949,7 @@ ppc_record_toc_entry(abfd, info, sec, sy h->toc_offset = global_toc_size; global_toc_size += 4; - /* The size must fit in a 16bit displacment. */ + /* The size must fit in a 16-bit displacement. */ if (global_toc_size >= 65535) { (*_bfd_error_handler) (_("TOC overflow")); @@ -1274,7 +1274,7 @@ coff_ppc_relocate_section (output_bfd, i our_toc_offset = val - (toc_section->output_section->vma + toc_section->output_offset); - /* The size must still fit in a 16bit displacment. */ + /* The size must still fit in a 16-bit displacement. */ if ((bfd_vma) our_toc_offset >= 65535) { (*_bfd_error_handler) @@ -1931,7 +1931,7 @@ ppc_imglue_reloc (abfd, reloc_entry, sym #define MAX_RELOC_INDEX \ (sizeof (ppc_coff_howto_table) / sizeof (ppc_coff_howto_table[0]) - 1) -/* FIXME: There is a possiblity that when we read in a reloc from a file, +/* FIXME: There is a possibility that when we read in a reloc from a file, that there are some bits encoded in the upper portion of the type field. Not yet implemented. */ static void ppc_coff_rtype2howto PARAMS ((arelent *, struct internal_reloc *)); diff -uprN binutils-2.14.90.0.7/bfd/coff-rs6000.c binutils-2.14.90.0.8/bfd/coff-rs6000.c --- binutils-2.14.90.0.7/bfd/coff-rs6000.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/coff-rs6000.c 2004-01-14 13:07:43.000000000 -0800 @@ -1006,7 +1006,7 @@ xcoff_rtype2howto (relent, internal) /* Default howto layout works most of the time */ relent->howto = &xcoff_howto_table[internal->r_type]; - /* Special case some 16 bit reoloc */ + /* Special case some 16 bit reloc */ if (15 == (internal->r_size & 0x1f)) { if (R_BA == internal->r_type) @@ -1575,7 +1575,6 @@ normalize_filename (abfd) /* Write out an XCOFF armap. */ -/*ARGSUSED*/ static bfd_boolean xcoff_write_armap_old (abfd, elength, map, orl_count, stridx) bfd *abfd; diff -uprN binutils-2.14.90.0.7/bfd/coff-sparc.c binutils-2.14.90.0.8/bfd/coff-sparc.c --- binutils-2.14.90.0.7/bfd/coff-sparc.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/coff-sparc.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,6 +1,6 @@ /* BFD back-end for Sparc COFF files. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001, 2002 - Free Software Foundation, Inc. + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001, + 2002, 2003 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/coff-tic54x.c binutils-2.14.90.0.8/bfd/coff-tic54x.c --- binutils-2.14.90.0.7/bfd/coff-tic54x.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/coff-tic54x.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD back-end for TMS320C54X coff binaries. - Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Contributed by Timothy Wall (twall@cygnus.com) This file is part of BFD, the Binary File Descriptor library. @@ -35,7 +35,7 @@ static void tic54x_reloc_processing static bfd_reloc_status_type tic54x_relocation PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); static bfd_boolean tic54x_set_section_contents - PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, sec_ptr, const PTR, file_ptr, bfd_size_type)); static reloc_howto_type *coff_tic54x_rtype_to_howto PARAMS ((bfd *, asection *, struct internal_reloc *, struct coff_link_hash_entry *, struct internal_syment *, bfd_vma *)); static bfd_vma tic54x_getl32 @@ -345,7 +345,7 @@ static bfd_boolean tic54x_set_section_contents (abfd, section, location, offset, bytes_to_do) bfd *abfd; sec_ptr section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type bytes_to_do; { diff -uprN binutils-2.14.90.0.7/bfd/coff-w65.c binutils-2.14.90.0.8/bfd/coff-w65.c --- binutils-2.14.90.0.7/bfd/coff-w65.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/coff-w65.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD back-end for WDC 65816 COFF binaries. - Copyright 1995, 1996, 1997, 1999, 2000, 2001, 2002 + Copyright 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Steve Chamberlain, . diff -uprN binutils-2.14.90.0.7/bfd/coff-we32k.c binutils-2.14.90.0.8/bfd/coff-we32k.c --- binutils-2.14.90.0.7/bfd/coff-we32k.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/coff-we32k.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD back-end for we32k COFF files. - Copyright 1992, 1993, 1994, 1999, 2000, 2002 + Copyright 1992, 1993, 1994, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. Contributed by Brendan Kehoe (brendan@cs.widener.edu). diff -uprN binutils-2.14.90.0.7/bfd/coff-z8k.c binutils-2.14.90.0.8/bfd/coff-z8k.c --- binutils-2.14.90.0.7/bfd/coff-z8k.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/coff-z8k.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD back-end for Zilog Z800n COFF binaries. - Copyright 1992, 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002 + Copyright 1992, 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Contributed by Cygnus Support. Written by Steve Chamberlain, . @@ -28,11 +28,6 @@ Foundation, Inc., 59 Temple Place - Suit #include "coff/internal.h" #include "libcoff.h" -static void extra_case PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *, bfd_byte *, unsigned int *, unsigned int *)); -static void reloc_processing PARAMS ((arelent *, struct internal_reloc *, asymbol **, bfd *, asection *)); -static void rtype2howto PARAMS ((arelent *, struct internal_reloc *)); -static int coff_z8k_select_reloc PARAMS ((reloc_howto_type *)); - #define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (1) static reloc_howto_type r_imm32 = @@ -74,8 +69,7 @@ HOWTO (R_CALLR, 0, 1, 12, TRUE, 0, compl /* Turn a howto into a reloc number */ static int -coff_z8k_select_reloc (howto) - reloc_howto_type *howto; +coff_z8k_select_reloc (reloc_howto_type *howto) { return howto->type; } @@ -96,9 +90,7 @@ coff_z8k_select_reloc (howto) /* Code to turn a r_type into a howto ptr, uses the above howto table. */ static void -rtype2howto (internal, dst) - arelent * internal; - struct internal_reloc *dst; +rtype2howto (arelent *internal, struct internal_reloc *dst) { switch (dst->r_type) { @@ -143,12 +135,11 @@ rtype2howto (internal, dst) reloc_processing(relent, reloc, symbols, abfd, section) static void -reloc_processing (relent, reloc, symbols, abfd, section) - arelent * relent; - struct internal_reloc * reloc; - asymbol ** symbols; - bfd * abfd; - asection * section; +reloc_processing (arelent *relent, + struct internal_reloc *reloc, + asymbol **symbols, + bfd *abfd, + asection *section) { relent->address = reloc->r_vaddr; rtype2howto (relent, reloc); @@ -163,14 +154,13 @@ reloc_processing (relent, reloc, symbols } static void -extra_case (in_abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr) - bfd * in_abfd; - struct bfd_link_info * link_info; - struct bfd_link_order * link_order; - arelent * reloc; - bfd_byte * data; - unsigned int * src_ptr; - unsigned int * dst_ptr; +extra_case (bfd *in_abfd, + struct bfd_link_info *link_info, + struct bfd_link_order *link_order, + arelent *reloc, + bfd_byte *data, + unsigned int *src_ptr, + unsigned int *dst_ptr) { asection * input_section = link_order->u.indirect.section; @@ -197,7 +187,7 @@ extra_case (in_abfd, link_info, link_ord { bfd_vma dst = bfd_coff_reloc16_get_value (reloc, link_info, input_section); - /* Adresses are 23 bit, and the layout of those in a 32-bit + /* Addresses are 23 bit, and the layout of those in a 32-bit value is as follows: 1AAAAAAA xxxxxxxx AAAAAAAA AAAAAAAA (A - address bits, x - ignore). */ diff -uprN binutils-2.14.90.0.7/bfd/coff64-rs6000.c binutils-2.14.90.0.8/bfd/coff64-rs6000.c --- binutils-2.14.90.0.7/bfd/coff64-rs6000.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/coff64-rs6000.c 2004-01-14 13:07:43.000000000 -0800 @@ -1791,7 +1791,7 @@ xcoff64_rtype2howto (relent, internal) /* Default howto layout works most of the time */ relent->howto = &xcoff64_howto_table[internal->r_type]; - /* Special case some 16 bit reoloc */ + /* Special case some 16 bit reloc */ if (15 == (internal->r_size & 0x3f)) { if (R_BA == internal->r_type) @@ -2054,7 +2054,6 @@ xcoff64_openr_next_archived_file (archiv /* We can't use the usual coff_sizeof_headers routine, because AIX always uses an a.out header. */ -/*ARGSUSED*/ static int xcoff64_sizeof_headers (abfd, reloc) bfd *abfd; diff -uprN binutils-2.14.90.0.7/bfd/coffcode.h binutils-2.14.90.0.8/bfd/coffcode.h --- binutils-2.14.90.0.7/bfd/coffcode.h 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/coffcode.h 2004-01-14 13:07:43.000000000 -0800 @@ -333,7 +333,7 @@ static bfd_boolean coff_compute_section_ static bfd_boolean coff_write_object_contents PARAMS ((bfd *)) ATTRIBUTE_UNUSED; static bfd_boolean coff_set_section_contents - PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, file_ptr, bfd_size_type)); static PTR buy_and_read PARAMS ((bfd *, file_ptr, bfd_size_type)); static bfd_boolean coff_slurp_line_table @@ -1064,7 +1064,11 @@ styp_to_sec_flags (abfd, hdr, name, sect sec_flags &= ~ SEC_READONLY; break; case IMAGE_SCN_MEM_DISCARDABLE: - sec_flags |= SEC_DEBUGGING; + /* The MS PE spec sets the DISCARDABLE flag on .reloc sections + but we do not want them to be labelled as debug section, since + then strip would remove them. */ + if (strncmp (name, ".reloc", sizeof ".reloc" - 1) != 0) + sec_flags |= SEC_DEBUGGING; break; case IMAGE_SCN_MEM_SHARED: sec_flags |= SEC_SHARED; @@ -1572,7 +1576,7 @@ coff_new_section_hook (abfd, section) return FALSE; /* We don't need to set up n_name, n_value, or n_scnum in the native - symbol information, since they'll be overriden by the BFD symbol + symbol information, since they'll be overridden by the BFD symbol anyhow. However, we do need to set the type and storage class, in case this symbol winds up getting written out. The value 0 for n_numaux is already correct. */ @@ -3014,6 +3018,11 @@ coff_compute_section_file_positions (abf if (coff_data (abfd)->link_info) { page_size = pe_data (abfd)->pe_opthdr.FileAlignment; + + /* If no file alignment has been set, default to one. + This repairs 'ld -r' for arm-wince-pe target. */ + if (page_size == 0) + page_size = 1; } else page_size = PE_DEF_FILE_ALIGNMENT; @@ -4271,7 +4280,7 @@ static bfd_boolean coff_set_section_contents (abfd, section, location, offset, count) bfd * abfd; sec_ptr section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { @@ -4681,7 +4690,7 @@ coff_slurp_symbol_table (abfd) #endif case C_REGPARM: /* Register parameter. */ case C_REG: /* register variable. */ - /* C_AUTOARG conflictes with TI COFF C_UEXT. */ + /* C_AUTOARG conflicts with TI COFF C_UEXT. */ #if !defined (TIC80COFF) && !defined (TICOFF) #ifdef C_AUTOARG case C_AUTOARG: /* 960-specific storage class. */ @@ -5122,7 +5131,6 @@ static reloc_howto_type *coff_rtype_to_h struct coff_link_hash_entry *, struct internal_syment *, bfd_vma *)); -/*ARGSUSED*/ static reloc_howto_type * coff_rtype_to_howto (abfd, sec, rel, h, sym, addendp) bfd *abfd ATTRIBUTE_UNUSED; diff -uprN binutils-2.14.90.0.7/bfd/coffgen.c binutils-2.14.90.0.8/bfd/coffgen.c --- binutils-2.14.90.0.7/bfd/coffgen.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/coffgen.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,6 +1,6 @@ /* Support for the generic parts of COFF, for BFD. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002 + 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Cygnus Support. diff -uprN binutils-2.14.90.0.7/bfd/cofflink.c binutils-2.14.90.0.8/bfd/cofflink.c --- binutils-2.14.90.0.7/bfd/cofflink.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/cofflink.c 2004-01-14 13:07:43.000000000 -0800 @@ -2565,7 +2565,7 @@ _bfd_coff_write_global_sym (struct coff_ isym.n_sclass = C_STAT; } - /* When a weak symbol is not overriden by a strong one, + /* When a weak symbol is not overridden by a strong one, turn it into an external symbol when not building a shared or relocatable object. */ if (! finfo->info->shared diff -uprN binutils-2.14.90.0.7/bfd/config.bfd binutils-2.14.90.0.8/bfd/config.bfd --- binutils-2.14.90.0.7/bfd/config.bfd 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/config.bfd 2004-01-14 13:07:43.000000000 -0800 @@ -199,12 +199,6 @@ case "${targ}" in targ_defvec=aout_arm_big_vec targ_selvecs=aout_arm_little_vec ;; - arm-*-vxworks*) - targ_defvec=armcoff_little_vec - targ_selvecs=armcoff_big_vec - targ_underscore=yes - targ_cflags=-DARM_COFF_BUGFIX - ;; arm-*-coff) targ_defvec=armcoff_little_vec targ_selvecs=armcoff_big_vec @@ -222,7 +216,8 @@ case "${targ}" in targ_defvec=bfd_elf32_littlearm_vec targ_selvecs=bfd_elf32_bigarm_vec ;; - arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | arm*-*-uclinux* | arm-*-kfreebsd*-gnu) + arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \ + arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks) targ_defvec=bfd_elf32_littlearm_vec targ_selvecs=bfd_elf32_bigarm_vec ;; @@ -334,7 +329,7 @@ case "${targ}" in targ_defvec=bfd_elf32_fr30_vec ;; - frv-*-elf) + frv-*-elf | frv-*-*linux*) targ_defvec=bfd_elf32_frv_vec ;; @@ -554,8 +549,8 @@ case "${targ}" in i[3-7]86-*-aout* | i[3-7]86*-*-vsta*) targ_defvec=i386aout_vec ;; - i[3-7]86-*-vxworks*) - targ_defvec=i386aout_vec + i[3-7]86-*-vxworks) + targ_defvec=bfd_elf32_i386_vec targ_underscore=yes ;; i[3-7]86-*-chaos) @@ -602,6 +597,21 @@ case "${targ}" in targ_defvec=bfd_elf32_iq2000_vec ;; + m32r*le-*-linux*) + targ_defvec=bfd_elf32_m32rlelin_vec + targ_selvecs="bfd_elf32_m32rlin_vec bfd_elf32_m32rlelin_vec" + ;; + + m32r*-*-linux*) + targ_defvec=bfd_elf32_m32rlin_vec + targ_selvecs="bfd_elf32_m32rlin_vec bfd_elf32_m32rlelin_vec" + ;; + + m32r*le-*-*) + targ_defvec=bfd_elf32_m32rle_vec + targ_selvecs="bfd_elf32_m32r_vec bfd_elf32_m32rle_vec" + ;; + m32r-*-*) targ_defvec=bfd_elf32_m32r_vec ;; @@ -641,7 +651,7 @@ case "${targ}" in targ_defvec=m68kcoff_vec targ_selvecs="m68kcoff_vec versados_vec ieee_vec aout0_big_vec" ;; - m68*-*-elf* | m68*-*-sysv4*) + m68*-*-elf* | m68*-*-sysv4* | m68*-*-uclinux*) targ_defvec=bfd_elf32_m68k_vec targ_selvecs="m68kcoff_vec ieee_vec" ;; @@ -797,7 +807,7 @@ case "${targ}" in targ_defvec=bfd_elf32_littlemips_vec targ_selvecs="bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec" ;; - mips*-*-elf* | mips*-*-rtems* | mips*-*-vxworks*) + mips*-*-elf* | mips*-*-rtems* | mips*-*-vxworks | mips*-*-windiss) targ_defvec=bfd_elf32_bigmips_vec targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec" ;; @@ -889,13 +899,27 @@ case "${targ}" in targ_selvecs="bfd_elf32_pjl_vec bfd_elf32_pj_vec bfd_elf32_i386_vec" ;; + powerpc-*-aix5.[01]) + targ_defvec=rs6000coff_vec + targ_selvecs="aix5coff64_vec" + want64=true + ;; +#ifdef BFD64 + powerpc64-*-aix5.[01]) + targ_defvec=aix5coff64_vec + targ_selvecs="rs6000coff_vec" + want64=true + ;; +#endif powerpc-*-aix5*) + targ_cflags=-DAIX_WEAK_SUPPORT targ_defvec=rs6000coff_vec targ_selvecs="aix5coff64_vec" want64=true ;; #ifdef BFD64 powerpc64-*-aix5*) + targ_cflags=-DAIX_WEAK_SUPPORT targ_defvec=aix5coff64_vec targ_selvecs="rs6000coff_vec" want64=true @@ -908,7 +932,6 @@ case "${targ}" in case "${targ}" in *-*-aix4.[3456789]* | *-*-aix[56789]*) want64=true;; - *) targ_cflags=-DSMALL_ARCHIVE;; esac @@ -1084,6 +1107,14 @@ case "${targ}" in targ_selvecs="shlpe_vec shlpei_vec" targ_underscore=yes ;; + sh-*-vxworks) + targ_defvec=bfd_elf32_sh_vec + targ_selvecs="bfd_elf32_shl_vec" + # FIXME None of the following are actually used on this target, but + # they're necessary for coff-sh.c (which is unconditionally used) to be + # compiled correctly. + targ_selvecs="$targ_selvecs shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec" + ;; sh-*-* | sh-*-rtems*) targ_defvec=shcoff_vec targ_selvecs="shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec" @@ -1226,6 +1257,10 @@ case "${targ}" in targ_underscore=yes ;; + vax-*-linux-gnu*) + targ_defvec=bfd_elf32_vax_vec + ;; + vax*-*-*vms*) targ_defvec=vms_vax_vec ;; diff -uprN binutils-2.14.90.0.7/bfd/configure binutils-2.14.90.0.8/bfd/configure --- binutils-2.14.90.0.7/bfd/configure 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/configure 2004-01-14 13:07:43.000000000 -0800 @@ -919,7 +919,7 @@ fi PACKAGE=bfd -VERSION=2.14.90.0.7 +VERSION=2.14.90.0.8 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } @@ -2697,7 +2697,7 @@ else fi -ALL_LINGUAS="fr tr ja es sv da zh_CN" +ALL_LINGUAS="fr tr ja es sv da zh_CN ro" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 echo "configure:2703: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. @@ -5489,6 +5489,10 @@ rm -f conftest* COREFILE=trad-core.lo TRAD_HEADER='"hosts/vaxult2.h"' ;; + vax-*-linux-gnu*) + COREFILE=trad-core.lo + TRAD_HEADER='"hosts/vaxlinux.h"' + ;; vax-*-*) COREFILE=trad-core.lo TRAD_HEADER='"hosts/vaxbsd.h"' @@ -5516,17 +5520,17 @@ rm -f conftest* do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5520: checking for $ac_hdr" >&5 +echo "configure:5524: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5530: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5554,12 +5558,12 @@ done if test "$ac_cv_header_sys_procfs_h" = yes; then echo $ac_n "checking for prstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5558: checking for prstatus_t in sys/procfs.h" >&5 +echo "configure:5562: checking for prstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5576: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prstatus_t=yes else @@ -5590,12 +5594,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prstatus_t" 1>&6 echo $ac_n "checking for prstatus32_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5594: checking for prstatus32_t in sys/procfs.h" >&5 +echo "configure:5598: checking for prstatus32_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prstatus32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prstatus32_t=yes else @@ -5626,12 +5630,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prstatus32_t" 1>&6 echo $ac_n "checking for prstatus_t.pr_who in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5630: checking for prstatus_t.pr_who in sys/procfs.h" >&5 +echo "configure:5634: checking for prstatus_t.pr_who in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5648: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who=yes else @@ -5662,12 +5666,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" 1>&6 echo $ac_n "checking for prstatus32_t.pr_who in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5666: checking for prstatus32_t.pr_who in sys/procfs.h" >&5 +echo "configure:5670: checking for prstatus32_t.pr_who in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who=yes else @@ -5698,12 +5702,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" 1>&6 echo $ac_n "checking for pstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5702: checking for pstatus_t in sys/procfs.h" >&5 +echo "configure:5706: checking for pstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5720: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pstatus_t=yes else @@ -5734,12 +5738,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus_t" 1>&6 echo $ac_n "checking for pxstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5738: checking for pxstatus_t in sys/procfs.h" >&5 +echo "configure:5742: checking for pxstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pxstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5756: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pxstatus_t=yes else @@ -5770,12 +5774,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_pxstatus_t" 1>&6 echo $ac_n "checking for pstatus32_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5774: checking for pstatus32_t in sys/procfs.h" >&5 +echo "configure:5778: checking for pstatus32_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pstatus32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5792: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pstatus32_t=yes else @@ -5806,12 +5810,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus32_t" 1>&6 echo $ac_n "checking for prpsinfo_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5810: checking for prpsinfo_t in sys/procfs.h" >&5 +echo "configure:5814: checking for prpsinfo_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prpsinfo_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prpsinfo_t=yes else @@ -5842,12 +5846,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prpsinfo_t" 1>&6 echo $ac_n "checking for prpsinfo32_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5846: checking for prpsinfo32_t in sys/procfs.h" >&5 +echo "configure:5850: checking for prpsinfo32_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prpsinfo32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5864: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prpsinfo32_t=yes else @@ -5878,12 +5882,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prpsinfo32_t" 1>&6 echo $ac_n "checking for psinfo_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5882: checking for psinfo_t in sys/procfs.h" >&5 +echo "configure:5886: checking for psinfo_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psinfo_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_psinfo_t=yes else @@ -5914,12 +5918,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_psinfo_t" 1>&6 echo $ac_n "checking for psinfo32_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5918: checking for psinfo32_t in sys/procfs.h" >&5 +echo "configure:5922: checking for psinfo32_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psinfo32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5936: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_psinfo32_t=yes else @@ -5950,12 +5954,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_psinfo32_t" 1>&6 echo $ac_n "checking for lwpstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5954: checking for lwpstatus_t in sys/procfs.h" >&5 +echo "configure:5958: checking for lwpstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_lwpstatus_t=yes else @@ -5986,12 +5990,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpstatus_t" 1>&6 echo $ac_n "checking for lwpxstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:5990: checking for lwpxstatus_t in sys/procfs.h" >&5 +echo "configure:5994: checking for lwpxstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpxstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6008: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_lwpxstatus_t=yes else @@ -6022,12 +6026,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpxstatus_t" 1>&6 echo $ac_n "checking for lwpstatus_t.pr_context in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:6026: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5 +echo "configure:6030: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6044: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context=yes else @@ -6058,12 +6062,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" 1>&6 echo $ac_n "checking for lwpstatus_t.pr_reg in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:6062: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5 +echo "configure:6066: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6080: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg=yes else @@ -6094,12 +6098,12 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" 1>&6 echo $ac_n "checking for win32_pstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:6098: checking for win32_pstatus_t in sys/procfs.h" >&5 +echo "configure:6102: checking for win32_pstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_win32_pstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_win32_pstatus_t=yes else @@ -6318,6 +6322,9 @@ do bfd_elf32_littlearm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;; bfd_elf32_littlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;; bfd_elf32_m32r_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; + bfd_elf32_m32rle_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; + bfd_elf32_m32rlin_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; + bfd_elf32_m32rlelin_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; bfd_elf32_m68hc11_vec) tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;; bfd_elf32_m68hc12_vec) tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;; bfd_elf32_m68k_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;; @@ -6577,10 +6584,10 @@ case ${host64}-${target64}-${want64} in if test -n "$GCC" ; then bad_64bit_gcc=no; echo $ac_n "checking for gcc version with buggy 64-bit support""... $ac_c" 1>&6 -echo "configure:6581: checking for gcc version with buggy 64-bit support" >&5 +echo "configure:6588: checking for gcc version with buggy 64-bit support" >&5 # Add more tests for gcc versions with non-working 64-bit support here. cat > conftest.$ac_ext <&6 -echo "configure:6630: checking for $ac_hdr" >&5 +echo "configure:6637: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6640: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6665,12 +6672,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6669: checking for $ac_func" >&5 +echo "configure:6676: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6718,7 +6725,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:6722: checking for working mmap" >&5 +echo "configure:6729: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6726,7 +6733,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -6904,12 +6911,12 @@ fi for ac_func in madvise mprotect do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6908: checking for $ac_func" >&5 +echo "configure:6915: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6943: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else diff -uprN binutils-2.14.90.0.7/bfd/configure.in binutils-2.14.90.0.8/bfd/configure.in --- binutils-2.14.90.0.7/bfd/configure.in 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/configure.in 2004-01-14 13:07:43.000000000 -0800 @@ -7,7 +7,7 @@ AC_INIT(libbfd.c) AC_CANONICAL_SYSTEM AC_ISC_POSIX -AM_INIT_AUTOMAKE(bfd, 2.14.90.0.7) +AM_INIT_AUTOMAKE(bfd, 2.14.90.0.8) # Uncomment the next line to remove the date from the reported bfd version #is_release=y @@ -103,7 +103,7 @@ bfd_default_target_size=32 AC_PROG_CC -ALL_LINGUAS="fr tr ja es sv da zh_CN" +ALL_LINGUAS="fr tr ja es sv da zh_CN ro" CY_GNU_GETTEXT # Permit host specific settings. @@ -397,6 +397,10 @@ changequote([,])dnl COREFILE=trad-core.lo TRAD_HEADER='"hosts/vaxult2.h"' ;; + vax-*-linux-gnu*) + COREFILE=trad-core.lo + TRAD_HEADER='"hosts/vaxlinux.h"' + ;; vax-*-*) COREFILE=trad-core.lo TRAD_HEADER='"hosts/vaxbsd.h"' @@ -627,6 +631,9 @@ do bfd_elf32_littlearm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;; bfd_elf32_littlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;; bfd_elf32_m32r_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; + bfd_elf32_m32rle_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; + bfd_elf32_m32rlin_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; + bfd_elf32_m32rlelin_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; bfd_elf32_m68hc11_vec) tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;; bfd_elf32_m68hc12_vec) tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;; bfd_elf32_m68k_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;; diff -uprN binutils-2.14.90.0.7/bfd/cpu-alpha.c binutils-2.14.90.0.8/bfd/cpu-alpha.c --- binutils-2.14.90.0.7/bfd/cpu-alpha.c 2002-12-16 12:22:51.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/cpu-alpha.c 2004-01-14 13:07:43.000000000 -0800 @@ -39,7 +39,7 @@ Foundation, Inc., 59 Temple Place - Suit #define NN(index) (&arch_info_struct[index]) -/* These exist only so that we can resonably disassemble PALcode. */ +/* These exist only so that we can reasonably disassemble PALcode. */ static const bfd_arch_info_type arch_info_struct[] = { N (64, 64, bfd_mach_alpha_ev4, "alpha:ev4", FALSE, NN(1)), diff -uprN binutils-2.14.90.0.7/bfd/cpu-arm.c binutils-2.14.90.0.8/bfd/cpu-arm.c --- binutils-2.14.90.0.7/bfd/cpu-arm.c 2003-05-15 13:42:24.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/cpu-arm.c 2004-01-14 13:07:43.000000000 -0800 @@ -155,7 +155,7 @@ const bfd_arch_info_type bfd_arm_arch = /* Support functions used by both the COFF and ELF versions of the ARM port. */ -/* Handle the mergeing of the 'machine' settings of input file IBFD +/* Handle the merging of the 'machine' settings of input file IBFD and an output file OBFD. These values actually represent the different possible ARM architecture variants. Returns TRUE if they were merged successfully or FALSE otherwise. */ @@ -172,7 +172,7 @@ bfd_arm_merge_machines (ibfd, obfd) if (out == bfd_mach_arm_unknown) bfd_set_arch_mach (obfd, bfd_arch_arm, in); - /* If the input architecure is unknown, + /* If the input architecture is unknown, then so must be the output architecture. */ else if (in == bfd_mach_arm_unknown) /* FIXME: We ought to have some way to @@ -184,7 +184,7 @@ bfd_arm_merge_machines (ibfd, obfd) ; /* Otherwise the general principle that a earlier architecture can be - linked with a later architecure to produce a binary that will execute + linked with a later architecture to produce a binary that will execute on the later architecture. We fail however if we attempt to link a Cirrus EP9312 binary with an diff -uprN binutils-2.14.90.0.7/bfd/cpu-frv.c binutils-2.14.90.0.8/bfd/cpu-frv.c --- binutils-2.14.90.0.7/bfd/cpu-frv.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/cpu-frv.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD support for the FRV processor. - Copyright 2002 Free Software Foundation, Inc. + Copyright 2002, 2003 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/cpu-h8500.c binutils-2.14.90.0.8/bfd/cpu-h8500.c --- binutils-2.14.90.0.7/bfd/cpu-h8500.c 2002-12-16 12:22:51.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/cpu-h8500.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,6 @@ /* BFD library support routines for the H8/500 architecture. - Copyright 1993, 1995, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright 1993, 1995, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. Hacked by Steve Chamberlain of Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -35,7 +36,7 @@ howto16_callback (abfd, reloc_entry, sym ignore_input_section, ignore_bfd) bfd *abfd; arelent *reloc_entry; - struct symbol_cache_entry *symbol_in; + struct bfd_symbol *symbol_in; PTR data; asection *ignore_input_section; bfd *ignore_bfd; @@ -57,7 +58,7 @@ howto8_callback (abfd, reloc_entry, symb ignore_input_section, ignore_bfd) bfd *abfd; arelent *reloc_entry; - struct symbol_cache_entry *symbol_in; + struct bfd_symbol *symbol_in; PTR data; asection *ignore_input_section; bfd *ignore_bfd; @@ -79,7 +80,7 @@ howto8_FFnn_callback (abfd, reloc_entry, ignore_input_section, ignore_bfd) bfd *abfd; arelent *reloc_entry; - struct symbol_cache_entry *symbol_in; + struct bfd_symbol *symbol_in; PTR data; asection *ignore_input_section; bfd *ignore_bfd; @@ -102,7 +103,7 @@ howto8_pcrel_callback (abfd, reloc_entry ignore_input_section, ignore_bfd) bfd *abfd; arelent *reloc_entry; - struct symbol_cache_entry *symbol_in; + struct bfd_symbol *symbol_in; PTR data; asection *ignore_input_section; bfd *ignore_bfd; diff -uprN binutils-2.14.90.0.7/bfd/cpu-hppa.c binutils-2.14.90.0.8/bfd/cpu-hppa.c --- binutils-2.14.90.0.7/bfd/cpu-hppa.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/cpu-hppa.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD support for the HP Precision Architecture architecture. - Copyright 1992, 1995, 1998, 1999, 2000, 2002 + Copyright 1992, 1995, 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/cpu-ia64-opc.c binutils-2.14.90.0.8/bfd/cpu-ia64-opc.c --- binutils-2.14.90.0.7/bfd/cpu-ia64-opc.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/cpu-ia64-opc.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,4 +1,5 @@ -/* Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +/* Copyright 1998, 1999, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. Contributed by David Mosberger-Tang This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/cpu-iq2000.c binutils-2.14.90.0.8/bfd/cpu-iq2000.c --- binutils-2.14.90.0.7/bfd/cpu-iq2000.c 2003-01-21 10:21:32.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/cpu-iq2000.c 2004-01-14 13:07:43.000000000 -0800 @@ -23,18 +23,20 @@ Foundation, Inc., 59 Temple Place - Suit static const bfd_arch_info_type arch_info_struct[] = { - 32, /* bits per word */ - 32, /* bits per address */ - 8, /* bits per byte */ - bfd_arch_iq2000, /* architecture */ - bfd_mach_iq10, /* machine */ - "iq2000", /* architecture name */ - "iq10", /* printable name */ - 3, /* section align power */ - FALSE, /* the default ? */ - bfd_default_compatible, /* architecture comparison fn */ - bfd_default_scan, /* string to architecture convert fn */ - NULL /* next in list */ + { + 32, /* bits per word */ + 32, /* bits per address */ + 8, /* bits per byte */ + bfd_arch_iq2000, /* architecture */ + bfd_mach_iq10, /* machine */ + "iq2000", /* architecture name */ + "iq10", /* printable name */ + 3, /* section align power */ + FALSE, /* the default ? */ + bfd_default_compatible, /* architecture comparison fn */ + bfd_default_scan, /* string to architecture convert fn */ + NULL /* next in list */ + } }; const bfd_arch_info_type bfd_iq2000_arch = @@ -52,6 +54,3 @@ const bfd_arch_info_type bfd_iq2000_arch bfd_default_scan, /* string to architecture convert fn */ &arch_info_struct[0], /* next in list */ }; - - - diff -uprN binutils-2.14.90.0.7/bfd/cpu-m10300.c binutils-2.14.90.0.8/bfd/cpu-m10300.c --- binutils-2.14.90.0.7/bfd/cpu-m10300.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/cpu-m10300.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD support for the Matsushita 10300 processor - Copyright 1996, 1997, 1999, 2002 Free Software Foundation, Inc. + Copyright 1996, 1997, 1999, 2002, 2003 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/cpu-m32r.c binutils-2.14.90.0.8/bfd/cpu-m32r.c --- binutils-2.14.90.0.7/bfd/cpu-m32r.c 2002-12-16 12:22:51.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/cpu-m32r.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,21 +1,21 @@ /* BFD support for the M32R processor. - Copyright 1996, 1999, 2000, 2002 Free Software Foundation, Inc. + Copyright 1996, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. -This file is part of BFD, the Binary File Descriptor library. + 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" #include "sysdep.h" @@ -25,15 +25,14 @@ Foundation, Inc., 59 Temple Place - Suit { 32, 32, 8, bfd_arch_m32r, number, "m32r", print, 4, default, \ bfd_default_compatible, bfd_default_scan, next } -#define NEXT NULL +#define M32R2_NEXT & arch_info_struct [1] +#define NEXT & arch_info_struct [0] static const bfd_arch_info_type arch_info_struct[] = { - N (bfd_mach_m32rx, "m32rx", FALSE, NULL) + N (bfd_mach_m32rx, "m32rx", FALSE, M32R2_NEXT) , + N (bfd_mach_m32r2, "m32r2", FALSE, NULL) }; -#undef NEXT -#define NEXT &arch_info_struct[0] - const bfd_arch_info_type bfd_m32r_arch = N (bfd_mach_m32r, "m32r", TRUE, NEXT); diff -uprN binutils-2.14.90.0.7/bfd/cpu-mips.c binutils-2.14.90.0.8/bfd/cpu-mips.c --- binutils-2.14.90.0.7/bfd/cpu-mips.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/cpu-mips.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,6 +1,6 @@ /* bfd back-end for mips support - Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2002 - Free Software Foundation, Inc. + Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, + 2002, 2003 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -24,15 +24,13 @@ Foundation, Inc., 59 Temple Place - Suit #include "libbfd.h" static const bfd_arch_info_type *mips_compatible - PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *)); + (const bfd_arch_info_type *, const bfd_arch_info_type *); /* The default routine tests bits_per_word, which is wrong on mips as mips word size doesn't correlate with reloc size. */ static const bfd_arch_info_type * -mips_compatible (a, b) - const bfd_arch_info_type *a; - const bfd_arch_info_type *b; +mips_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b) { if (a->arch != b->arch) return NULL; diff -uprN binutils-2.14.90.0.7/bfd/cpu-msp430.c binutils-2.14.90.0.8/bfd/cpu-msp430.c --- binutils-2.14.90.0.7/bfd/cpu-msp430.c 2003-08-21 08:28:47.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/cpu-msp430.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD library support routines for the MSP architecture. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. Contributed by Dmitry Diky This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/cpu-ns32k.c binutils-2.14.90.0.8/bfd/cpu-ns32k.c --- binutils-2.14.90.0.7/bfd/cpu-ns32k.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/cpu-ns32k.c 2004-01-14 13:07:43.000000000 -0800 @@ -37,7 +37,7 @@ const bfd_arch_info_type bfd_ns32k_arch N(32032,"ns32k:32032",FALSE, &arch_info_struct[0]); static bfd_reloc_status_type do_ns32k_reloc - PARAMS ((bfd *, arelent *, struct symbol_cache_entry *, PTR, asection *, + PARAMS ((bfd *, arelent *, struct bfd_symbol *, PTR, asection *, bfd *, char **, bfd_vma (*) (bfd_byte *, int), void (*) (bfd_vma, bfd_byte *, int))); @@ -158,7 +158,7 @@ do_ns32k_reloc (abfd, reloc_entry, symbo error_message, get_data, put_data) bfd *abfd; arelent *reloc_entry; - struct symbol_cache_entry *symbol; + struct bfd_symbol *symbol; PTR data; asection *input_section; bfd *output_bfd; @@ -194,7 +194,7 @@ do_ns32k_reloc (abfd, reloc_entry, symbo if (reloc_entry->address > input_section->_cooked_size) return bfd_reloc_outofrange; - /* Work out which section the relocation is targetted at and the + /* Work out which section the relocation is targeted at and the initial relocation command value. */ /* Get symbol value. (Common symbols are special.) */ @@ -678,7 +678,7 @@ _bfd_do_ns32k_reloc_contents (howto, inp /* For the signed case we use ADD, rather than SIGNED_ADD, to avoid warnings from SVR4 cc. This is OK since we - explictly handle the sign bits. */ + explicitly handle the sign bits. */ if (signed_add >= 0) signed_check += add >> howto->bitpos; else @@ -762,7 +762,7 @@ _bfd_ns32k_reloc_disp (abfd, reloc_entry output_bfd, error_message) bfd *abfd; arelent *reloc_entry; - struct symbol_cache_entry *symbol; + struct bfd_symbol *symbol; PTR data; asection *input_section; bfd *output_bfd; @@ -779,7 +779,7 @@ _bfd_ns32k_reloc_imm (abfd, reloc_entry, output_bfd, error_message) bfd *abfd; arelent *reloc_entry; - struct symbol_cache_entry *symbol; + struct bfd_symbol *symbol; PTR data; asection *input_section; bfd *output_bfd; diff -uprN binutils-2.14.90.0.7/bfd/cpu-powerpc.c binutils-2.14.90.0.8/bfd/cpu-powerpc.c --- binutils-2.14.90.0.7/bfd/cpu-powerpc.c 2002-12-16 12:22:51.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/cpu-powerpc.c 2004-01-14 13:07:43.000000000 -0800 @@ -41,7 +41,7 @@ powerpc_compatible (a,b) case bfd_arch_powerpc: return bfd_default_compatible (a, b); case bfd_arch_rs6000: - if (a->mach == bfd_mach_ppc) + if (b->mach == bfd_mach_rs6k) return a; return NULL; } diff -uprN binutils-2.14.90.0.7/bfd/cpu-rs6000.c binutils-2.14.90.0.8/bfd/cpu-rs6000.c --- binutils-2.14.90.0.7/bfd/cpu-rs6000.c 2002-12-16 12:22:51.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/cpu-rs6000.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD back-end for rs6000 support - Copyright 1990, 1991, 1993, 1995, 2000, 2002 + Copyright 1990, 1991, 1993, 1995, 2000, 2002, 2003 Free Software Foundation, Inc. FIXME: Can someone provide a transliteration of this name into ASCII? Using the following chars caused a compiler warning on HIUX (so I replaced @@ -47,7 +47,7 @@ rs6000_compatible (a,b) case bfd_arch_rs6000: return bfd_default_compatible (a, b); case bfd_arch_powerpc: - if (b->mach == bfd_mach_rs6k) + if (a->mach == bfd_mach_rs6k) return b; return NULL; } diff -uprN binutils-2.14.90.0.7/bfd/cpu-z8k.c binutils-2.14.90.0.8/bfd/cpu-z8k.c --- binutils-2.14.90.0.7/bfd/cpu-z8k.c 2002-12-16 12:22:51.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/cpu-z8k.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD library support routines for the Z800n architecture. - Copyright 1992, 1993, 1994, 2000, 2001, 2002 + Copyright 1992, 1993, 1994, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Hacked by Steve Chamberlain of Cygnus Support. @@ -23,142 +23,11 @@ Foundation, Inc., 59 Temple Place - Suit #include "sysdep.h" #include "libbfd.h" -static const bfd_arch_info_type *compatible - PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *)); - -#if 0 /* not used currently */ -/* -Relocations for the Z8K - -*/ -static bfd_reloc_status_type -howto16_callback (abfd, reloc_entry, symbol_in, data, - ignore_input_section, ignore_bfd) - bfd *abfd; - arelent *reloc_entry; - struct symbol_cache_entry *symbol_in; - PTR data; - asection *ignore_input_section; - bfd *ignore_bfd; -{ - long relocation = 0; - bfd_vma addr = reloc_entry->address; - long x = bfd_get_16 (abfd, (bfd_byte *) data + addr); - - HOWTO_PREPARE (relocation, symbol_in); - - x = (x + relocation + reloc_entry->addend); - - bfd_put_16 (abfd, x, (bfd_byte *) data + addr); - return bfd_reloc_ok; -} - -static bfd_reloc_status_type -howto8_callback (abfd, reloc_entry, symbol_in, data, - ignore_input_section, ignore_bfd) - bfd *abfd; - arelent *reloc_entry; - struct symbol_cache_entry *symbol_in; - PTR data; - asection *ignore_input_section; - bfd *ignore_bfd; -{ - long relocation = 0; - bfd_vma addr = reloc_entry->address; - long x = bfd_get_8 (abfd, (bfd_byte *) data + addr); - - HOWTO_PREPARE (relocation, symbol_in); - - x = (x + relocation + reloc_entry->addend); - - bfd_put_8 (abfd, x, (bfd_byte *) data + addr); - return bfd_reloc_ok; -} - -static bfd_reloc_status_type -howto8_FFnn_callback (abfd, reloc_entry, symbol_in, data, - ignore_input_section, ignore_bfd) - bfd *abfd; - arelent *reloc_entry; - struct symbol_cache_entry *symbol_in; - PTR data; - asection *ignore_input_section; - bfd *ignore_bfd; -{ - long relocation = 0; - bfd_vma addr = reloc_entry->address; - - long x = bfd_get_8 (abfd, (bfd_byte *) data + addr); - abort (); - HOWTO_PREPARE (relocation, symbol_in); - - x = (x + relocation + reloc_entry->addend); - - bfd_put_8 (abfd, x, (bfd_byte *) data + addr); - return bfd_reloc_ok; -} - -static bfd_reloc_status_type -howto8_pcrel_callback (abfd, reloc_entry, symbol_in, data, - ignore_input_section, ignore_bfd) - bfd *abfd; - arelent *reloc_entry; - struct symbol_cache_entry *symbol_in; - PTR data; - asection *ignore_input_section; - bfd *ignore_bfd; -{ - long relocation = 0; - bfd_vma addr = reloc_entry->address; - long x = bfd_get_8 (abfd, (bfd_byte *) data + addr); - abort (); - HOWTO_PREPARE (relocation, symbol_in); - - x = (x + relocation + reloc_entry->addend); - - bfd_put_8 (abfd, x, (bfd_byte *) data + addr); - return bfd_reloc_ok; -} - -static reloc_howto_type howto_16 -= NEWHOWTO (howto16_callback, "abs16", 1, FALSE, FALSE); -static reloc_howto_type howto_8 -= NEWHOWTO (howto8_callback, "abs8", 0, FALSE, FALSE); - -static reloc_howto_type howto_8_FFnn -= NEWHOWTO (howto8_FFnn_callback, "ff00+abs8", 0, FALSE, FALSE); - -static reloc_howto_type howto_8_pcrel -= NEWHOWTO (howto8_pcrel_callback, "pcrel8", 0, FALSE, TRUE); - -static reloc_howto_type * -local_bfd_reloc_type_lookup (arch, code) - const struct bfd_arch_info *arch; - bfd_reloc_code_real_type code; -{ - switch (code) - { - case BFD_RELOC_16: - return &howto_16; - case BFD_RELOC_8_FFnn: - return &howto_8_FFnn; - case BFD_RELOC_8: - return &howto_8; - case BFD_RELOC_8_PCREL: - return &howto_8_pcrel; - default: - return (reloc_howto_type *) NULL; - } -} -#endif - /* This routine is provided two arch_infos and returns whether they'd be compatible */ static const bfd_arch_info_type * -compatible (a, b) - const bfd_arch_info_type *a; - const bfd_arch_info_type *b; +compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b) { if (a->arch != b->arch || a->mach != b->mach) return NULL; diff -uprN binutils-2.14.90.0.7/bfd/doc/ChangeLog binutils-2.14.90.0.8/bfd/doc/ChangeLog --- binutils-2.14.90.0.7/bfd/doc/ChangeLog 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/doc/ChangeLog 2004-01-14 13:07:44.000000000 -0800 @@ -1,594 +1,9 @@ -2003-10-15 Andrew Cagney - - * bfdint.texi (BFD target vector symbols): Rename _get_symtab to - _canonicalize_symtab. - -2003-10-08 David Taylor - - * bfd.texinfo: Remove spurious backslash. - -2003-07-04 Josh Baratz - - * Makefile.am (MKDOC rule): Add $(CFLAGS) in case it contains - CC_FOR_BUILD specific switches. - * Makefile.in: Regenerate. - -2003-06-29 Alan Modra - - * chew.c (paramstuff): Don't emit PARAMS. - -2003-02-12 Bob Wilson - - * bfd.texinfo: Fix quotes for texinfo. Make section title - capitalization more consistent. Use @example instead of @lisp. - Replace FDL appendix with include of fdl.texi. - * fdl.texi: New file. - -2002-11-18 Klee Dienes - - * Makefile.am (DOCFILES): Add bfdwin.texi, bfdio.texi. - (PROTOS): Add bfdio.p, bfdwin.p. - (SRCDOC): Add bfdio.c, bfdwin.c. - (SRCPROT): Add bfdio.c, bfdwin.c. - (SRCIPROT): Add bfdio.c, bfdwin.c. - (LIBBFD_H_DEP): Add bfdio.c, bfdwin.c. - (BFD_H_DEP): Add bfdio.c, bfdwin.c. - Add rules for bfdio.texi, bfdwin.text. - * bfd.texinfo: Include bfdio.texi. - -2002-10-14 Alan Modra - - * Makefile.in: Regenerate. - -2002-10-11 Daniel Jacobowitz - - * Makefile.in: Regenerated. - -2002-08-29 John David Anglin - - * chew.c (paramstuff, outputdots, perform, bang and usage): Remove - void from function definitions. - -2002-08-13 Alan Modra - - * header.sed: Strip tabs. - -2002-06-08 Alan Modra - - * Makefile.am: Fix quote style in last change. - * Makefile.in: Regenerate. - -2002-06-07 Alan Modra - - * Makefile.am (libbfd.h): Don't use "echo -n". - (libcoff.h, bfd.h): Likewise. - * Makefile.in: Regenerate. - -2002-06-06 Lars Brinkhoff - - * bfdint.texi: Change registry@sco.com to registry@caldera.com. - -2002-06-05 Alan Modra - - * Makefile.am (libbfd.h): Add "Extracted from.." comment. - (libcoff.h, bfd.h): Likewise. - * Makefile.in: Regenerate. - -2002-05-25 Alan Modra - - * chew.c: Use #include "" instead of <> for local header files. - -2002-04-20 Alan Modra - - * Makefile.in: Regenerate. - -2002-02-11 Alan Modra - - * Makefile.in: Regenerate. - -2002-02-01 Alan Modra - - * chew.c (WORD): Eliminate. - -2002-01-31 Ivan Guzvinec - - * Makefile.in: Regenerate. - -2002-01-31 Alan Modra - - * chew.c (courierize): Don't modify @command params. - -2002-01-30 Nick Clifton - - * proto.str (ENUMDOC): Place two spaces between the end of - the text and the closing comment marker. - -2001-10-30 Hans-Peter Nilsson - - * bfdint.texi (BFD target vector miscellaneous): Add - bfd_target_mmo_flavour. - * bfd.texinfo (BFD back ends): Add entry for mmo. - * Makefile.am (DOCFILES): Add mmo.texi. - (SRCDOC): Add mmo.c. - (s-mmo, mmo.texi): New rules. - -2001-10-29 Kazu Hirata - - * bfdsumm.texi: Fix a typo. - -2001-10-26 Nick Clifton - - * bfd.texinfo: Change footer to refer to FSF. Change subtitle - to refer to original creation date. - -2002-01-26 Hans-Peter Nilsson - - * Makefile.am (install): Depend on install-info. - * Makefile.in: Regenerate. - -2001-10-03 Alan Modra - - * Makefile.am (BFD_H_DEP): Add ../version.h. - * Makefile.in: Regenerate. - -2001-10-02 Alan Modra - - * Makefile.in: Regenerate. - -2001-10-01 Alan Modra - - * header.sed: New file, adds header to generated files. - * Makefile.am: Rewrite rules generating libbfd.h, libcoff.h and - bfd.h, using above. Add missing elf.c dependecy for libbfd.h. - * Makefile.in: Regenerate. - -2001-09-21 Alan Modra - - * Makefile.in: Regenerate. - -2001-09-18 Alan Modra - - * bfdint.texi: Replace reference to bfd_read with bfd_bread. - Likewise for bfd_write. - -2001-07-24 Alan Modra - - * Makefile.in: Regenerate. - -2001-06-21 Hans-Peter Nilsson - - * bfdint.texi (BFD relocation functions) : - Mention that the GNU linker is aware of input-output format - restrictions when generating relocatable output. Make new - paragraph for final-link case. - (BFD target vector swap): Fix typo. - -2001-01-25 Kazu Hirata - - * chew.c: Do not output trailing whitespaces in type and - functionname. Update copyright. - -2001-01-24 Kazu Hirata - - * chew.c: Do not output a trailing whitespace. - -2000-11-06 Nick Clifton - - * bfd.texinfo: Add GNU Free Documentation License. - -2000-07-09 Alan Modra - - * Makefile.in: Regenerate. - -2000-07-08 Alan Modra - - * chew.c (outputdots): Don't add a space before `/*'. - (courierize): Likewise. - -Wed May 24 12:03:25 2000 Hans-Peter Nilsson - - * bfdint.texi (BFD ELF processor required): Add paragraph about - target necessities for readelf. - -2000-04-30 Ben Elliston - - * bfdint.texi (BFD generated files): Fix another typo. - -2000-04-17 Ben Elliston - - * bfdint.texi (BFD_JUMP_TABLE macros): Fix typo. - -2000-04-07 Andrew Cagney - - * Makefile.in: Rebuild with current autoconf/automake. - -1999-02-04 Ian Lance Taylor - - * Makefile.in: Rebuild with current autoconf/automake. - -1998-07-23 Nick Clifton - - * bfdint.texi (BFD ELF processor required): Add paragraph - describing the necessity to create "include/elf/CPU.h". - -1998-05-07 Ian Lance Taylor - - * Makefile.am (chew.o): Add -I options for intl srcdir and - objdir. - * Makefile.in: Rebuild. - -1998-04-27 Ian Lance Taylor - - * bfdint.texi: New file. - * Makefile.am (noinst_TEXINFOS): New variable. - * Makefile.in: Rebuild. - -1998-04-13 Ian Lance Taylor - - * Makefile.in: Rebuild. - -1998-04-06 Ian Lance Taylor - - * Makefile.am (STAGESTUFF): Remove variable. - (CLEANFILES): Don't remove $(STAGESTUFF). - (DISTCLEANFILES, MAINTAINERCLEANFILES): New variables. - * Makefile.in: Rebuild. - -1998-03-27 Ian Lance Taylor - - * chew.c (skip_white_and_starts): Remove unused declaration. - (skip_white_and_stars): Add casts to avoid warnings. - (skip_trailing_newlines, paramstuff, courierize): Likewise. - (bulletize, do_fancy_stuff, iscommand): Likewise. - (kill_bogus_lines, nextword, main): Likewise. - (manglecomments): Comment out. - (outputdots, kill_bogus_lines): Remove unused local variables. - (perform, compile): Likewise. - (courierize): Fully parenthesize expression. - (copy_past_newline): Declare return value. - (print): Change printf format string. - (main): Call usage for an unrecognized option. - -1998-02-13 Ian Lance Taylor - - * Makefile.am (AUTOMAKE_OPTIONS): Define. - * Makefile.in: Rebuild. - -1998-01-26 Andreas Schwab - - * doc.str (bodytext): Don't output @* at the end. - * chew.c (kill_bogus_lines): Make sure that a period at the - beginning is recognized. - (indent): Don't put indentation at the end. - (copy_past_newline): Expand tabs. - * Makefile.am (s-reloc, s-syms): Depend on doc.str. - * Makefile.in: Rebuild. - -1997-10-01 Ian Lance Taylor - - * Makefile.am (libbfd.h): Don't use cpu-h8300.c, cpu-i960.c, or - elfcode.h as input files; they don't contribute anything. - * Makefile.in: Rebuild. - -1997-08-15 Doug Evans - - * Makefile.am (libbfd.h, libcoff.h): Invoke $(MKDOC) as ./$(MKDOC). - * Makefile.in: Rebuild. - -1997-08-01 Ian Lance Taylor - - * Makefile.am (CC_FOR_BUILD): Don't set explicitly. - * Makefile.in: Rebuild. - -1997-07-31 Ian Lance Taylor - - * Makefile.am: New file, based on old Makefile.in. - * Makefile.in: Now built with automake. - -1997-07-22 Robert Hoehne - - * Makefile.in: Change stamp-* files to s-* files. Use bfdt.texi - rather than bfd.texi. - (DOCFILES): Change bfd.texi to bfdt.texi. - * bfd.texinfo: Include bfdt.texi, not bfd.texi. - -1997-06-16 Ian Lance Taylor - - * Makefile.in (CC, CFLAGS): Substitute from configure script. - From Jeff Makey . - -1997-04-15 Ian Lance Taylor - - * Makefile.in (install-info): Use mkinstalldirs to build - $(infodir). - -1997-04-08 Ian Lance Taylor - - * Makefile.in (install-info): Permit info files to be in srcdir. - (stamp-*): Add a stamp-X target for each X.texi target. - (*.texi): Just depend upon stamp-X. - (clean): Remove stamp-*. - (distclean): Depend upon mostlyclean. Remove stamp-*. Don't - remove $(DOCFILES). - -1997-04-07 Ian Lance Taylor - - * Makefile.in (distclean): Don't remove *.info files. - -1997-02-13 Klaus Kaempf (kkaempf@progis.de) - - * makefile.vms: New file. - -1996-06-18 Ian Lance Taylor - - * chew.c (kill_bogus_lines): Reset sl when not at the start of a - line. From Uwe Ohse . - -1996-01-30 Ian Lance Taylor - - From Ronald F. Guilmette : - * Makefile.in (libbfd.h): Depend upon proto.str. - (libcoff.h, bfd.h): Likewise. - -1995-11-03 Fred Fish - - * Makefile.in (SRCDOC, SRCPROT, core.texi, bfd.h): Use corefile.c, - renamed from core.c. - -1995-11-01 Manfred Hollstein KS/EF4A 60/1F/110 #40283 - - * chew.c: Include . - -1995-10-06 Ken Raeburn - - Mon Sep 25 22:49:32 1995 Andreas Schwab - - * Makefile.in (Makefile): Only remake this Makefile. - -1995-10-04 Ken Raeburn - - * chew.c: Include . - -1995-09-12 Ian Lance Taylor - - * Makefile.in (maintainer-clean): New target. - -1995-08-31 Ian Lance Taylor - - * Makefile.in (bfd.h): Add additional #endif at end of bfd.h if - __cplusplus is defined. - -1994-11-29 Doug Evans - - * chew.c (write_buffer): New argument `f', all callers changed. - (stdout, stderr, print, drop, idrop): New forth words. - * proto.str (COMMENT): New command. - * doc.str (COMMENT): Likewise. - -1994-09-12 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * Makefile.in (DOCFILES): Remove ctor.texi. - (IPROTOS): Remove ctor.ip. - (SRCIPROT): Remove $(srcdir)/../ctor.c. - (ctor.texi): Remove target. - (libbfd.h): Remove dependency on $(srcdir)/../ctor.c. Remove - $(MKDOC) run on $(srcdir)/../ctor.c. - * bfd.texinfo (Constructors): Remove section. - -1994-09-02 Ken Raeburn (raeburn@cujo.cygnus.com) - - * chew.c: Include assert.h. Added prototypes for most functions. - Changed most uses of int to long. Do bounds checking on the - stacks. Added comment at the beginning documenting most of the - intrinsics. Lots of whitespace changes. Re-ordered some - functions. - (die, check_range, icheck_range): New functions. - (strip_trailing_newlines, print_stack_level): New functions. - (translatecomments): Don't insert tab before "/*". - (iscommand): Minimum command length is now 4. - (nextword): Handle some \-sequences. - (push_addr): Deleted. - (main): Add new intrinsics strip_trailing_newlines and - print_stack_level. Complain at end if stack contains more than - one element, or less. - (remchar): Make sure the string is not empty before chopping off a - character. - - * doc.str, proto.str: Handle new commands SENUM, ENUM, ENUMX, - ENUMEQ, ENUMEQX, ENUMDOC. - -1994-01-12 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfd.texinfo: Added Linker Functions node. - * Makefile.in (DOCFILES): Added linker.texi. - (SRCDOC): Added linker.c. - (linker.texi): New target. - -1994-01-04 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * chew.c: Don't rely on a correct declaration of exit. - (chew_exit): New function which just calls exit. - (main): Use it. - -1994-01-03 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * bfd.texinfo: Added Hash Tables node. - * Makefile.in (DOCFILES): Added hash.texi. - (SRCDOC): Added hash.c. - (hash.texi): New target. - -1993-12-30 Ken Raeburn (raeburn@cujo.cygnus.com) - - * Makefile.in: Delete all references to seclet.c, since it's just - been deleted. Don't mention hash.c, linker.c, or genlink.h yet, - since they don't contain documentation yet (hint, hint!). - -1993-11-05 David J. Mackenzie (djm@thepub.cygnus.com) - - * bfd.texinfo: Small cleanups. - -1993-11-19 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * Makefile.in (archures.texi): Depends on $(MKDOC). - -1993-08-10 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * bfd.texinfo (BFD back end): Don't include elfcode.texi, since - it's empty now and that triggers a makeinfo bug. - -1993-08-09 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * bfd.texinfo (BFD back end): New section on ELF, includes - elf.texi and elfcode.texi. - * Makefile.in (DOCFILES): Include elf.texi, elfcode.texi. - (SRCDOC): Include elfcode.h, elf.c. - (elf.texi, elfcode.texi): New intermediate targets. - -1993-06-24 David J. Mackenzie (djm@thepub.cygnus.com) - - * Makefile.in (.c.o, chew.o): Put CFLAGS last. - * bfdsumm.texi: New file, broken out of bfd.texinfo, to share - with ld.texinfo. - -1993-06-14 david d `zoo' zuhn (zoo at rtl.cygnus.com) - - * Makefile.in (install-info): remove parentdir cruft, - -1993-06-09 Jim Kingdon (kingdon@cygnus.com) - - * Makefile.in (mostlyclean): Remove chew.o. - -1993-05-25 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * Makefile.in (libbfd.h): Use elfcode.h, not elf32.c. - -1993-05-24 Ken Raeburn (raeburn@cygnus.com) - - * chew.c (compile): Add a couple of missing casts. - -1993-05-12 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in (CC_FOR_BUILD): New variable, define to be $(CC). - (chew.o, $(MKDOC)): Build using CC_FOR_BUILD rather than CC, since - it must run on the build machine. - -1993-04-07 John Gilmore (gnu@cygnus.com) - - * Makefile.in (chew): Don't compile from .c to executable in a - single step; it puts a temporary .o filename into the executable, - which makes multi-stage comparisons fail. Compile chew.c to - chew.o, and link that, which makes identical executables every time. - -1993-03-24 david d `zoo' zuhn (zoo at poseidon.cygnus.com) - - * Makefile.in: fix typo (bfd.texinfo not bfd.texino) - -1993-03-19 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * bfd.texinfo: Since BFD version number has been bumped, do same - to "version number" on title page, and elsewhere. Should be - fixed to extract real version number. - -1993-03-16 Per Bothner (bothner@rtl.cygnus.com) - - * Makefile.in: Add *clean rules. - -1993-01-11 Ian Lance Taylor (ian@tweedledumb.cygnus.com) - - * Makefile.in (libbfd.h): Removed duplicate init.c and libbfd.c. - Added seclet.c. - (bfd.h): Added dependency on bfd.c and seclet.c. Added seclet.c - to build. - -1992-12-17 david d `zoo' zuhn (zoo at cirdan.cygnus.com) - - * Makefile.in: added dvi target, define and use $(TEXI2DVI) - -1992-12-03 Ken Raeburn (raeburn@cambridge.cygnus.com) - - * Makefile.in (TEXIDIR): New variable. - (bfd.dvi): Look for bfd.texinfo in $(srcdir). Generate index. - - * bfd.texinfo: Minor doc fixes. - -1992-11-05 John Gilmore (gnu@cygnus.com) - - Cleanup: Replace all uses of EXFUN in the BFD sources, with PARAMS. - - * chew.c (exfunstuff): Eliminate. - (paramstuff): Replace exfunstuff with function to generate PARAMS. - * proto.str: Use paramstuff rather than exfunstuff. - -1992-08-17 Steve Chamberlain (sac@thepub.cygnus.com) - - * chew.c: various patches provided by Howard Chu. - -1992-06-19 John Gilmore (gnu at cygnus.com) - - * Makefile.in (libbfd.h): Add elf.c as a source of prototypes. - -1992-05-11 John Gilmore (gnu at cygnus.com) - - * chew.c: exit() should be declared by config files, not by - portable source code. Its type could be int or void function. - -1992-05-04 K. Richard Pixley (rich@rtl.cygnus.com) - - * Makefile.in: another CFLAGS correction. - -1992-04-28 K. Richard Pixley (rich@rtl.cygnus.com) - - * Makefile.in: Do the CFLAGS thing. - -1992-04-11 Fred Fish (fnf@cygnus.com) - - * Makefile.in (MINUS_G): Add macro and default to -g. - -1992-03-06 Steve Chamberlain (sac@thepub.cygnus.com) - - * chew.c: now has -w switch turn on warnings - -1992-02-26 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in, configure.in: removed traces of namesubdir, - -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced - copyrights to '92, changed some from Cygnus to FSF. - -1991-12-10 K. Richard Pixley (rich at rtl.cygnus.com) - - * Makefile.in: build chew into the current directory. Complete - the MKDOC macro transition. - -1991-12-10 Steve Chamberlain (sac at rtl.cygnus.com) - - * chew.c: don't core dump when can't open file - * Makefile.in: get proto.str from the right place when built in - odd directories - -1991-12-10 K. Richard Pixley (rich at rtl.cygnus.com) - - * Makefile.in: infodir belongs in datadir. - -1991-12-07 Steve Chamberlain (sac at rtl.cygnus.com) - - * chew.c: Much modified - * proto.str, doc.str: New files for extracting to product - prototypes and documents respectively. - - -1991-12-06 K. Richard Pixley (rich at rtl.cygnus.com) - - * Makefile.in: added standards.text support, host/site/target - inclusion hooks, install using INSTALL_DATA rather than cp, - don't echo on install. - -1991-12-05 K. Richard Pixley (rich at rtl.cygnus.com) - - * Makefile.in: idestdir and ddestdir go away. Added copyrights - and shift gpl to v2. Added ChangeLog if it didn't exist. docdir - and mandir now keyed off datadir by default. +For older changes see ChangeLog-9103 Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 version-control: never End: diff -uprN binutils-2.14.90.0.7/bfd/doc/ChangeLog-9103 binutils-2.14.90.0.8/bfd/doc/ChangeLog-9103 --- binutils-2.14.90.0.7/bfd/doc/ChangeLog-9103 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/doc/ChangeLog-9103 2004-01-14 13:07:44.000000000 -0800 @@ -0,0 +1,594 @@ +2003-10-15 Andrew Cagney + + * bfdint.texi (BFD target vector symbols): Rename _get_symtab to + _canonicalize_symtab. + +2003-10-08 David Taylor + + * bfd.texinfo: Remove spurious backslash. + +2003-07-04 Josh Baratz + + * Makefile.am (MKDOC rule): Add $(CFLAGS) in case it contains + CC_FOR_BUILD specific switches. + * Makefile.in: Regenerate. + +2003-06-29 Alan Modra + + * chew.c (paramstuff): Don't emit PARAMS. + +2003-02-12 Bob Wilson + + * bfd.texinfo: Fix quotes for texinfo. Make section title + capitalization more consistent. Use @example instead of @lisp. + Replace FDL appendix with include of fdl.texi. + * fdl.texi: New file. + +2002-11-18 Klee Dienes + + * Makefile.am (DOCFILES): Add bfdwin.texi, bfdio.texi. + (PROTOS): Add bfdio.p, bfdwin.p. + (SRCDOC): Add bfdio.c, bfdwin.c. + (SRCPROT): Add bfdio.c, bfdwin.c. + (SRCIPROT): Add bfdio.c, bfdwin.c. + (LIBBFD_H_DEP): Add bfdio.c, bfdwin.c. + (BFD_H_DEP): Add bfdio.c, bfdwin.c. + Add rules for bfdio.texi, bfdwin.text. + * bfd.texinfo: Include bfdio.texi. + +2002-10-14 Alan Modra + + * Makefile.in: Regenerate. + +2002-10-11 Daniel Jacobowitz + + * Makefile.in: Regenerated. + +2002-08-29 John David Anglin + + * chew.c (paramstuff, outputdots, perform, bang and usage): Remove + void from function definitions. + +2002-08-13 Alan Modra + + * header.sed: Strip tabs. + +2002-06-08 Alan Modra + + * Makefile.am: Fix quote style in last change. + * Makefile.in: Regenerate. + +2002-06-07 Alan Modra + + * Makefile.am (libbfd.h): Don't use "echo -n". + (libcoff.h, bfd.h): Likewise. + * Makefile.in: Regenerate. + +2002-06-06 Lars Brinkhoff + + * bfdint.texi: Change registry@sco.com to registry@caldera.com. + +2002-06-05 Alan Modra + + * Makefile.am (libbfd.h): Add "Extracted from.." comment. + (libcoff.h, bfd.h): Likewise. + * Makefile.in: Regenerate. + +2002-05-25 Alan Modra + + * chew.c: Use #include "" instead of <> for local header files. + +2002-04-20 Alan Modra + + * Makefile.in: Regenerate. + +2002-02-11 Alan Modra + + * Makefile.in: Regenerate. + +2002-02-01 Alan Modra + + * chew.c (WORD): Eliminate. + +2002-01-31 Ivan Guzvinec + + * Makefile.in: Regenerate. + +2002-01-31 Alan Modra + + * chew.c (courierize): Don't modify @command params. + +2002-01-30 Nick Clifton + + * proto.str (ENUMDOC): Place two spaces between the end of + the text and the closing comment marker. + +2001-10-30 Hans-Peter Nilsson + + * bfdint.texi (BFD target vector miscellaneous): Add + bfd_target_mmo_flavour. + * bfd.texinfo (BFD back ends): Add entry for mmo. + * Makefile.am (DOCFILES): Add mmo.texi. + (SRCDOC): Add mmo.c. + (s-mmo, mmo.texi): New rules. + +2001-10-29 Kazu Hirata + + * bfdsumm.texi: Fix a typo. + +2001-10-26 Nick Clifton + + * bfd.texinfo: Change footer to refer to FSF. Change subtitle + to refer to original creation date. + +2002-01-26 Hans-Peter Nilsson + + * Makefile.am (install): Depend on install-info. + * Makefile.in: Regenerate. + +2001-10-03 Alan Modra + + * Makefile.am (BFD_H_DEP): Add ../version.h. + * Makefile.in: Regenerate. + +2001-10-02 Alan Modra + + * Makefile.in: Regenerate. + +2001-10-01 Alan Modra + + * header.sed: New file, adds header to generated files. + * Makefile.am: Rewrite rules generating libbfd.h, libcoff.h and + bfd.h, using above. Add missing elf.c dependecy for libbfd.h. + * Makefile.in: Regenerate. + +2001-09-21 Alan Modra + + * Makefile.in: Regenerate. + +2001-09-18 Alan Modra + + * bfdint.texi: Replace reference to bfd_read with bfd_bread. + Likewise for bfd_write. + +2001-07-24 Alan Modra + + * Makefile.in: Regenerate. + +2001-06-21 Hans-Peter Nilsson + + * bfdint.texi (BFD relocation functions) : + Mention that the GNU linker is aware of input-output format + restrictions when generating relocatable output. Make new + paragraph for final-link case. + (BFD target vector swap): Fix typo. + +2001-01-25 Kazu Hirata + + * chew.c: Do not output trailing whitespaces in type and + functionname. Update copyright. + +2001-01-24 Kazu Hirata + + * chew.c: Do not output a trailing whitespace. + +2000-11-06 Nick Clifton + + * bfd.texinfo: Add GNU Free Documentation License. + +2000-07-09 Alan Modra + + * Makefile.in: Regenerate. + +2000-07-08 Alan Modra + + * chew.c (outputdots): Don't add a space before `/*'. + (courierize): Likewise. + +Wed May 24 12:03:25 2000 Hans-Peter Nilsson + + * bfdint.texi (BFD ELF processor required): Add paragraph about + target necessities for readelf. + +2000-04-30 Ben Elliston + + * bfdint.texi (BFD generated files): Fix another typo. + +2000-04-17 Ben Elliston + + * bfdint.texi (BFD_JUMP_TABLE macros): Fix typo. + +2000-04-07 Andrew Cagney + + * Makefile.in: Rebuild with current autoconf/automake. + +1999-02-04 Ian Lance Taylor + + * Makefile.in: Rebuild with current autoconf/automake. + +1998-07-23 Nick Clifton + + * bfdint.texi (BFD ELF processor required): Add paragraph + describing the necessity to create "include/elf/CPU.h". + +1998-05-07 Ian Lance Taylor + + * Makefile.am (chew.o): Add -I options for intl srcdir and + objdir. + * Makefile.in: Rebuild. + +1998-04-27 Ian Lance Taylor + + * bfdint.texi: New file. + * Makefile.am (noinst_TEXINFOS): New variable. + * Makefile.in: Rebuild. + +1998-04-13 Ian Lance Taylor + + * Makefile.in: Rebuild. + +1998-04-06 Ian Lance Taylor + + * Makefile.am (STAGESTUFF): Remove variable. + (CLEANFILES): Don't remove $(STAGESTUFF). + (DISTCLEANFILES, MAINTAINERCLEANFILES): New variables. + * Makefile.in: Rebuild. + +1998-03-27 Ian Lance Taylor + + * chew.c (skip_white_and_starts): Remove unused declaration. + (skip_white_and_stars): Add casts to avoid warnings. + (skip_trailing_newlines, paramstuff, courierize): Likewise. + (bulletize, do_fancy_stuff, iscommand): Likewise. + (kill_bogus_lines, nextword, main): Likewise. + (manglecomments): Comment out. + (outputdots, kill_bogus_lines): Remove unused local variables. + (perform, compile): Likewise. + (courierize): Fully parenthesize expression. + (copy_past_newline): Declare return value. + (print): Change printf format string. + (main): Call usage for an unrecognized option. + +1998-02-13 Ian Lance Taylor + + * Makefile.am (AUTOMAKE_OPTIONS): Define. + * Makefile.in: Rebuild. + +1998-01-26 Andreas Schwab + + * doc.str (bodytext): Don't output @* at the end. + * chew.c (kill_bogus_lines): Make sure that a period at the + beginning is recognized. + (indent): Don't put indentation at the end. + (copy_past_newline): Expand tabs. + * Makefile.am (s-reloc, s-syms): Depend on doc.str. + * Makefile.in: Rebuild. + +1997-10-01 Ian Lance Taylor + + * Makefile.am (libbfd.h): Don't use cpu-h8300.c, cpu-i960.c, or + elfcode.h as input files; they don't contribute anything. + * Makefile.in: Rebuild. + +1997-08-15 Doug Evans + + * Makefile.am (libbfd.h, libcoff.h): Invoke $(MKDOC) as ./$(MKDOC). + * Makefile.in: Rebuild. + +1997-08-01 Ian Lance Taylor + + * Makefile.am (CC_FOR_BUILD): Don't set explicitly. + * Makefile.in: Rebuild. + +1997-07-31 Ian Lance Taylor + + * Makefile.am: New file, based on old Makefile.in. + * Makefile.in: Now built with automake. + +1997-07-22 Robert Hoehne + + * Makefile.in: Change stamp-* files to s-* files. Use bfdt.texi + rather than bfd.texi. + (DOCFILES): Change bfd.texi to bfdt.texi. + * bfd.texinfo: Include bfdt.texi, not bfd.texi. + +1997-06-16 Ian Lance Taylor + + * Makefile.in (CC, CFLAGS): Substitute from configure script. + From Jeff Makey . + +1997-04-15 Ian Lance Taylor + + * Makefile.in (install-info): Use mkinstalldirs to build + $(infodir). + +1997-04-08 Ian Lance Taylor + + * Makefile.in (install-info): Permit info files to be in srcdir. + (stamp-*): Add a stamp-X target for each X.texi target. + (*.texi): Just depend upon stamp-X. + (clean): Remove stamp-*. + (distclean): Depend upon mostlyclean. Remove stamp-*. Don't + remove $(DOCFILES). + +1997-04-07 Ian Lance Taylor + + * Makefile.in (distclean): Don't remove *.info files. + +1997-02-13 Klaus Kaempf (kkaempf@progis.de) + + * makefile.vms: New file. + +1996-06-18 Ian Lance Taylor + + * chew.c (kill_bogus_lines): Reset sl when not at the start of a + line. From Uwe Ohse . + +1996-01-30 Ian Lance Taylor + + From Ronald F. Guilmette : + * Makefile.in (libbfd.h): Depend upon proto.str. + (libcoff.h, bfd.h): Likewise. + +1995-11-03 Fred Fish + + * Makefile.in (SRCDOC, SRCPROT, core.texi, bfd.h): Use corefile.c, + renamed from core.c. + +1995-11-01 Manfred Hollstein KS/EF4A 60/1F/110 #40283 + + * chew.c: Include . + +1995-10-06 Ken Raeburn + + Mon Sep 25 22:49:32 1995 Andreas Schwab + + * Makefile.in (Makefile): Only remake this Makefile. + +1995-10-04 Ken Raeburn + + * chew.c: Include . + +1995-09-12 Ian Lance Taylor + + * Makefile.in (maintainer-clean): New target. + +1995-08-31 Ian Lance Taylor + + * Makefile.in (bfd.h): Add additional #endif at end of bfd.h if + __cplusplus is defined. + +1994-11-29 Doug Evans + + * chew.c (write_buffer): New argument `f', all callers changed. + (stdout, stderr, print, drop, idrop): New forth words. + * proto.str (COMMENT): New command. + * doc.str (COMMENT): Likewise. + +1994-09-12 Ian Lance Taylor (ian@sanguine.cygnus.com) + + * Makefile.in (DOCFILES): Remove ctor.texi. + (IPROTOS): Remove ctor.ip. + (SRCIPROT): Remove $(srcdir)/../ctor.c. + (ctor.texi): Remove target. + (libbfd.h): Remove dependency on $(srcdir)/../ctor.c. Remove + $(MKDOC) run on $(srcdir)/../ctor.c. + * bfd.texinfo (Constructors): Remove section. + +1994-09-02 Ken Raeburn (raeburn@cujo.cygnus.com) + + * chew.c: Include assert.h. Added prototypes for most functions. + Changed most uses of int to long. Do bounds checking on the + stacks. Added comment at the beginning documenting most of the + intrinsics. Lots of whitespace changes. Re-ordered some + functions. + (die, check_range, icheck_range): New functions. + (strip_trailing_newlines, print_stack_level): New functions. + (translatecomments): Don't insert tab before "/*". + (iscommand): Minimum command length is now 4. + (nextword): Handle some \-sequences. + (push_addr): Deleted. + (main): Add new intrinsics strip_trailing_newlines and + print_stack_level. Complain at end if stack contains more than + one element, or less. + (remchar): Make sure the string is not empty before chopping off a + character. + + * doc.str, proto.str: Handle new commands SENUM, ENUM, ENUMX, + ENUMEQ, ENUMEQX, ENUMDOC. + +1994-01-12 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * bfd.texinfo: Added Linker Functions node. + * Makefile.in (DOCFILES): Added linker.texi. + (SRCDOC): Added linker.c. + (linker.texi): New target. + +1994-01-04 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * chew.c: Don't rely on a correct declaration of exit. + (chew_exit): New function which just calls exit. + (main): Use it. + +1994-01-03 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * bfd.texinfo: Added Hash Tables node. + * Makefile.in (DOCFILES): Added hash.texi. + (SRCDOC): Added hash.c. + (hash.texi): New target. + +1993-12-30 Ken Raeburn (raeburn@cujo.cygnus.com) + + * Makefile.in: Delete all references to seclet.c, since it's just + been deleted. Don't mention hash.c, linker.c, or genlink.h yet, + since they don't contain documentation yet (hint, hint!). + +1993-11-05 David J. Mackenzie (djm@thepub.cygnus.com) + + * bfd.texinfo: Small cleanups. + +1993-11-19 Ken Raeburn (raeburn@cambridge.cygnus.com) + + * Makefile.in (archures.texi): Depends on $(MKDOC). + +1993-08-10 Ken Raeburn (raeburn@cambridge.cygnus.com) + + * bfd.texinfo (BFD back end): Don't include elfcode.texi, since + it's empty now and that triggers a makeinfo bug. + +1993-08-09 Ken Raeburn (raeburn@cambridge.cygnus.com) + + * bfd.texinfo (BFD back end): New section on ELF, includes + elf.texi and elfcode.texi. + * Makefile.in (DOCFILES): Include elf.texi, elfcode.texi. + (SRCDOC): Include elfcode.h, elf.c. + (elf.texi, elfcode.texi): New intermediate targets. + +1993-06-24 David J. Mackenzie (djm@thepub.cygnus.com) + + * Makefile.in (.c.o, chew.o): Put CFLAGS last. + * bfdsumm.texi: New file, broken out of bfd.texinfo, to share + with ld.texinfo. + +1993-06-14 david d `zoo' zuhn (zoo at rtl.cygnus.com) + + * Makefile.in (install-info): remove parentdir cruft, + +1993-06-09 Jim Kingdon (kingdon@cygnus.com) + + * Makefile.in (mostlyclean): Remove chew.o. + +1993-05-25 Ken Raeburn (raeburn@cambridge.cygnus.com) + + * Makefile.in (libbfd.h): Use elfcode.h, not elf32.c. + +1993-05-24 Ken Raeburn (raeburn@cygnus.com) + + * chew.c (compile): Add a couple of missing casts. + +1993-05-12 Ian Lance Taylor (ian@cygnus.com) + + * Makefile.in (CC_FOR_BUILD): New variable, define to be $(CC). + (chew.o, $(MKDOC)): Build using CC_FOR_BUILD rather than CC, since + it must run on the build machine. + +1993-04-07 John Gilmore (gnu@cygnus.com) + + * Makefile.in (chew): Don't compile from .c to executable in a + single step; it puts a temporary .o filename into the executable, + which makes multi-stage comparisons fail. Compile chew.c to + chew.o, and link that, which makes identical executables every time. + +1993-03-24 david d `zoo' zuhn (zoo at poseidon.cygnus.com) + + * Makefile.in: fix typo (bfd.texinfo not bfd.texino) + +1993-03-19 Ken Raeburn (raeburn@kr-pc.cygnus.com) + + * bfd.texinfo: Since BFD version number has been bumped, do same + to "version number" on title page, and elsewhere. Should be + fixed to extract real version number. + +1993-03-16 Per Bothner (bothner@rtl.cygnus.com) + + * Makefile.in: Add *clean rules. + +1993-01-11 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * Makefile.in (libbfd.h): Removed duplicate init.c and libbfd.c. + Added seclet.c. + (bfd.h): Added dependency on bfd.c and seclet.c. Added seclet.c + to build. + +1992-12-17 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * Makefile.in: added dvi target, define and use $(TEXI2DVI) + +1992-12-03 Ken Raeburn (raeburn@cambridge.cygnus.com) + + * Makefile.in (TEXIDIR): New variable. + (bfd.dvi): Look for bfd.texinfo in $(srcdir). Generate index. + + * bfd.texinfo: Minor doc fixes. + +1992-11-05 John Gilmore (gnu@cygnus.com) + + Cleanup: Replace all uses of EXFUN in the BFD sources, with PARAMS. + + * chew.c (exfunstuff): Eliminate. + (paramstuff): Replace exfunstuff with function to generate PARAMS. + * proto.str: Use paramstuff rather than exfunstuff. + +1992-08-17 Steve Chamberlain (sac@thepub.cygnus.com) + + * chew.c: various patches provided by Howard Chu. + +1992-06-19 John Gilmore (gnu at cygnus.com) + + * Makefile.in (libbfd.h): Add elf.c as a source of prototypes. + +1992-05-11 John Gilmore (gnu at cygnus.com) + + * chew.c: exit() should be declared by config files, not by + portable source code. Its type could be int or void function. + +1992-05-04 K. Richard Pixley (rich@rtl.cygnus.com) + + * Makefile.in: another CFLAGS correction. + +1992-04-28 K. Richard Pixley (rich@rtl.cygnus.com) + + * Makefile.in: Do the CFLAGS thing. + +1992-04-11 Fred Fish (fnf@cygnus.com) + + * Makefile.in (MINUS_G): Add macro and default to -g. + +1992-03-06 Steve Chamberlain (sac@thepub.cygnus.com) + + * chew.c: now has -w switch turn on warnings + +1992-02-26 K. Richard Pixley (rich@cygnus.com) + + * Makefile.in, configure.in: removed traces of namesubdir, + -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced + copyrights to '92, changed some from Cygnus to FSF. + +1991-12-10 K. Richard Pixley (rich at rtl.cygnus.com) + + * Makefile.in: build chew into the current directory. Complete + the MKDOC macro transition. + +1991-12-10 Steve Chamberlain (sac at rtl.cygnus.com) + + * chew.c: don't core dump when can't open file + * Makefile.in: get proto.str from the right place when built in + odd directories + +1991-12-10 K. Richard Pixley (rich at rtl.cygnus.com) + + * Makefile.in: infodir belongs in datadir. + +1991-12-07 Steve Chamberlain (sac at rtl.cygnus.com) + + * chew.c: Much modified + * proto.str, doc.str: New files for extracting to product + prototypes and documents respectively. + + +1991-12-06 K. Richard Pixley (rich at rtl.cygnus.com) + + * Makefile.in: added standards.text support, host/site/target + inclusion hooks, install using INSTALL_DATA rather than cp, + don't echo on install. + +1991-12-05 K. Richard Pixley (rich at rtl.cygnus.com) + + * Makefile.in: idestdir and ddestdir go away. Added copyrights + and shift gpl to v2. Added ChangeLog if it didn't exist. docdir + and mandir now keyed off datadir by default. + + +Local Variables: +version-control: never +End: diff -uprN binutils-2.14.90.0.7/bfd/dwarf2.c binutils-2.14.90.0.8/bfd/dwarf2.c --- binutils-2.14.90.0.7/bfd/dwarf2.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/dwarf2.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,6 +1,6 @@ /* DWARF 2 support. - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - Free Software Foundation, Inc. + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, + 2004 Free Software Foundation, Inc. Adapted from gdb/dwarf2read.c by Gavin Koch of Cygnus Solutions (gavin@cygnus.com). @@ -61,21 +61,12 @@ struct attribute { char *str; struct dwarf_block *blk; - unsigned int unsnd; - int snd; - bfd_vma addr; + bfd_vma val; + bfd_signed_vma sval; } u; }; -/* Get at parts of an attribute structure. */ - -#define DW_STRING(attr) ((attr)->u.str) -#define DW_UNSND(attr) ((attr)->u.unsnd) -#define DW_BLOCK(attr) ((attr)->u.blk) -#define DW_SND(attr) ((attr)->u.snd) -#define DW_ADDR(attr) ((attr)->u.addr) - /* Blocks are a bunch of untyped bytes. */ struct dwarf_block { @@ -209,51 +200,6 @@ struct attr_abbrev #define ATTR_ALLOC_CHUNK 4 #endif -static unsigned int read_1_byte PARAMS ((bfd *, char *)); -static int read_1_signed_byte PARAMS ((bfd *, char *)); -static unsigned int read_2_bytes PARAMS ((bfd *, char *)); -static unsigned int read_4_bytes PARAMS ((bfd *, char *)); -static bfd_vma read_8_bytes PARAMS ((bfd *, char *)); -static char *read_n_bytes PARAMS ((bfd *, char *, unsigned int)); -static char *read_string PARAMS ((bfd *, char *, unsigned int *)); -static char *read_indirect_string PARAMS ((struct comp_unit *, char *, unsigned int *)); -static unsigned int read_unsigned_leb128 - PARAMS ((bfd *, char *, unsigned int *)); -static int read_signed_leb128 - PARAMS ((bfd *, char *, unsigned int *)); -static bfd_vma read_address PARAMS ((struct comp_unit *, char *)); -static struct abbrev_info *lookup_abbrev - PARAMS ((unsigned int, struct abbrev_info **)); -static struct abbrev_info **read_abbrevs - PARAMS ((bfd *, bfd_vma, struct dwarf2_debug *)); -static char *read_attribute - PARAMS ((struct attribute *, struct attr_abbrev *, - struct comp_unit *, char *)); -static char *read_attribute_value - PARAMS ((struct attribute *, unsigned, - struct comp_unit *, char *)); -static void add_line_info - PARAMS ((struct line_info_table *, bfd_vma, char *, - unsigned int, unsigned int, int)); -static char *concat_filename PARAMS ((struct line_info_table *, unsigned int)); -static void arange_add PARAMS ((struct comp_unit *, bfd_vma, bfd_vma)); -static struct line_info_table *decode_line_info - PARAMS ((struct comp_unit *, struct dwarf2_debug *)); -static bfd_boolean lookup_address_in_line_info_table - PARAMS ((struct line_info_table *, bfd_vma, struct funcinfo *, - const char **, unsigned int *)); -static bfd_boolean lookup_address_in_function_table - PARAMS ((struct funcinfo *, bfd_vma, struct funcinfo **, const char **)); -static bfd_boolean scan_unit_for_functions PARAMS ((struct comp_unit *)); -static struct comp_unit *parse_comp_unit - PARAMS ((bfd *, struct dwarf2_debug *, bfd_vma, unsigned int)); -static bfd_boolean comp_unit_contains_address - PARAMS ((struct comp_unit *, bfd_vma)); -static bfd_boolean comp_unit_find_nearest_line - PARAMS ((struct comp_unit *, bfd_vma, const char **, const char **, - unsigned int *, struct dwarf2_debug *)); -static asection *find_debug_info PARAMS ((bfd *, asection *)); - /* VERBATIM The following function up to the END VERBATIM mark are copied directly from dwarf2read.c. */ @@ -261,74 +207,39 @@ static asection *find_debug_info PARAMS /* Read dwarf information from a buffer. */ static unsigned int -read_1_byte (abfd, buf) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; +read_1_byte (bfd *abfd ATTRIBUTE_UNUSED, char *buf) { - return bfd_get_8 (abfd, (bfd_byte *) buf); + return bfd_get_8 (abfd, buf); } static int -read_1_signed_byte (abfd, buf) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; +read_1_signed_byte (bfd *abfd ATTRIBUTE_UNUSED, char *buf) { - return bfd_get_signed_8 (abfd, (bfd_byte *) buf); + return bfd_get_signed_8 (abfd, buf); } static unsigned int -read_2_bytes (abfd, buf) - bfd *abfd; - char *buf; +read_2_bytes (bfd *abfd, char *buf) { - return bfd_get_16 (abfd, (bfd_byte *) buf); + return bfd_get_16 (abfd, buf); } -#if 0 /* This is not used. */ - -static int -read_2_signed_bytes (abfd, buf) - bfd *abfd; - char *buf; -{ - return bfd_get_signed_16 (abfd, (bfd_byte *) buf); -} - -#endif - static unsigned int -read_4_bytes (abfd, buf) - bfd *abfd; - char *buf; -{ - return bfd_get_32 (abfd, (bfd_byte *) buf); -} - -#if 0 /* This is not used. */ - -static int -read_4_signed_bytes (abfd, buf) - bfd *abfd; - char *buf; +read_4_bytes (bfd *abfd, char *buf) { - return bfd_get_signed_32 (abfd, (bfd_byte *) buf); + return bfd_get_32 (abfd, buf); } -#endif - static bfd_vma -read_8_bytes (abfd, buf) - bfd *abfd; - char *buf; +read_8_bytes (bfd *abfd, char *buf) { - return bfd_get_64 (abfd, (bfd_byte *) buf); + return bfd_get_64 (abfd, buf); } static char * -read_n_bytes (abfd, buf, size) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; - unsigned int size ATTRIBUTE_UNUSED; +read_n_bytes (bfd *abfd ATTRIBUTE_UNUSED, + char *buf, + unsigned int size ATTRIBUTE_UNUSED) { /* If the size of a host char is 8 bits, we can return a pointer to the buffer, otherwise we have to copy the data to a buffer @@ -337,10 +248,9 @@ read_n_bytes (abfd, buf, size) } static char * -read_string (abfd, buf, bytes_read_ptr) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; - unsigned int *bytes_read_ptr; +read_string (bfd *abfd ATTRIBUTE_UNUSED, + char *buf, + unsigned int *bytes_read_ptr) { /* Return a pointer to the embedded string. */ if (*buf == '\0') @@ -354,10 +264,9 @@ read_string (abfd, buf, bytes_read_ptr) } static char * -read_indirect_string (unit, buf, bytes_read_ptr) - struct comp_unit* unit; - char *buf; - unsigned int *bytes_read_ptr; +read_indirect_string (struct comp_unit* unit, + char *buf, + unsigned int *bytes_read_ptr) { bfd_vma offset; struct dwarf2_debug *stash = unit->stash; @@ -383,12 +292,12 @@ read_indirect_string (unit, buf, bytes_r } stash->dwarf_str_size = msec->_raw_size; - stash->dwarf_str_buffer = (char*) bfd_alloc (abfd, msec->_raw_size); + stash->dwarf_str_buffer = bfd_alloc (abfd, msec->_raw_size); if (! stash->dwarf_abbrev_buffer) return NULL; if (! bfd_get_section_contents (abfd, msec, stash->dwarf_str_buffer, - (bfd_vma) 0, msec->_raw_size)) + 0, msec->_raw_size)) return NULL; } @@ -407,10 +316,9 @@ read_indirect_string (unit, buf, bytes_r } static unsigned int -read_unsigned_leb128 (abfd, buf, bytes_read_ptr) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; - unsigned int *bytes_read_ptr; +read_unsigned_leb128 (bfd *abfd ATTRIBUTE_UNUSED, + char *buf, + unsigned int *bytes_read_ptr) { unsigned int result; unsigned int num_read; @@ -423,7 +331,7 @@ read_unsigned_leb128 (abfd, buf, bytes_r do { - byte = bfd_get_8 (abfd, (bfd_byte *) buf); + byte = bfd_get_8 (abfd, buf); buf ++; num_read ++; result |= ((byte & 0x7f) << shift); @@ -437,10 +345,9 @@ read_unsigned_leb128 (abfd, buf, bytes_r } static int -read_signed_leb128 (abfd, buf, bytes_read_ptr) - bfd *abfd ATTRIBUTE_UNUSED; - char *buf; - unsigned int * bytes_read_ptr; +read_signed_leb128 (bfd *abfd ATTRIBUTE_UNUSED, + char *buf, + unsigned int * bytes_read_ptr) { int result; int shift; @@ -453,7 +360,7 @@ read_signed_leb128 (abfd, buf, bytes_rea do { - byte = bfd_get_8 (abfd, (bfd_byte *) buf); + byte = bfd_get_8 (abfd, buf); buf ++; num_read ++; result |= ((byte & 0x7f) << shift); @@ -472,18 +379,16 @@ read_signed_leb128 (abfd, buf, bytes_rea /* END VERBATIM */ static bfd_vma -read_address (unit, buf) - struct comp_unit* unit; - char *buf; +read_address (struct comp_unit *unit, char *buf) { switch (unit->addr_size) { case 8: - return bfd_get_64 (unit->abfd, (bfd_byte *) buf); + return bfd_get_64 (unit->abfd, buf); case 4: - return bfd_get_32 (unit->abfd, (bfd_byte *) buf); + return bfd_get_32 (unit->abfd, buf); case 2: - return bfd_get_16 (unit->abfd, (bfd_byte *) buf); + return bfd_get_16 (unit->abfd, buf); default: abort (); } @@ -492,9 +397,7 @@ read_address (unit, buf) /* Lookup an abbrev_info structure in the abbrev hash table. */ static struct abbrev_info * -lookup_abbrev (number,abbrevs) - unsigned int number; - struct abbrev_info **abbrevs; +lookup_abbrev (unsigned int number, struct abbrev_info **abbrevs) { unsigned int hash_number; struct abbrev_info *abbrev; @@ -519,10 +422,7 @@ lookup_abbrev (number,abbrevs) in a hash table. */ static struct abbrev_info** -read_abbrevs (abfd, offset, stash) - bfd * abfd; - bfd_vma offset; - struct dwarf2_debug *stash; +read_abbrevs (bfd *abfd, bfd_vma offset, struct dwarf2_debug *stash) { struct abbrev_info **abbrevs; char *abbrev_ptr; @@ -560,7 +460,7 @@ read_abbrevs (abfd, offset, stash) } amt = sizeof (struct abbrev_info*) * ABBREV_HASH_SIZE; - abbrevs = (struct abbrev_info**) bfd_zalloc (abfd, amt); + abbrevs = bfd_zalloc (abfd, amt); abbrev_ptr = stash->dwarf_abbrev_buffer + offset; abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); @@ -570,7 +470,7 @@ read_abbrevs (abfd, offset, stash) while (abbrev_number) { amt = sizeof (struct abbrev_info); - cur_abbrev = (struct abbrev_info *) bfd_zalloc (abfd, amt); + cur_abbrev = bfd_zalloc (abfd, amt); /* Read in abbrev header. */ cur_abbrev->number = abbrev_number; @@ -592,8 +492,7 @@ read_abbrevs (abfd, offset, stash) { amt = cur_abbrev->num_attrs + ATTR_ALLOC_CHUNK; amt *= sizeof (struct attr_abbrev); - cur_abbrev->attrs = ((struct attr_abbrev *) - bfd_realloc (cur_abbrev->attrs, amt)); + cur_abbrev->attrs = bfd_realloc (cur_abbrev->attrs, amt); if (! cur_abbrev->attrs) return 0; } @@ -634,11 +533,10 @@ read_abbrevs (abfd, offset, stash) /* Read an attribute value described by an attribute form. */ static char * -read_attribute_value (attr, form, unit, info_ptr) - struct attribute *attr; - unsigned form; - struct comp_unit *unit; - char *info_ptr; +read_attribute_value (struct attribute *attr, + unsigned form, + struct comp_unit *unit, + char *info_ptr) { bfd *abfd = unit->abfd; unsigned int bytes_read; @@ -652,99 +550,99 @@ read_attribute_value (attr, form, unit, case DW_FORM_addr: /* FIXME: DWARF3 draft says DW_FORM_ref_addr is offset_size. */ case DW_FORM_ref_addr: - DW_ADDR (attr) = read_address (unit, info_ptr); + attr->u.val = read_address (unit, info_ptr); info_ptr += unit->addr_size; break; case DW_FORM_block2: amt = sizeof (struct dwarf_block); - blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + blk = bfd_alloc (abfd, amt); blk->size = read_2_bytes (abfd, info_ptr); info_ptr += 2; blk->data = read_n_bytes (abfd, info_ptr, blk->size); info_ptr += blk->size; - DW_BLOCK (attr) = blk; + attr->u.blk = blk; break; case DW_FORM_block4: amt = sizeof (struct dwarf_block); - blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + blk = bfd_alloc (abfd, amt); blk->size = read_4_bytes (abfd, info_ptr); info_ptr += 4; blk->data = read_n_bytes (abfd, info_ptr, blk->size); info_ptr += blk->size; - DW_BLOCK (attr) = blk; + attr->u.blk = blk; break; case DW_FORM_data2: - DW_UNSND (attr) = read_2_bytes (abfd, info_ptr); + attr->u.val = read_2_bytes (abfd, info_ptr); info_ptr += 2; break; case DW_FORM_data4: - DW_UNSND (attr) = read_4_bytes (abfd, info_ptr); + attr->u.val = read_4_bytes (abfd, info_ptr); info_ptr += 4; break; case DW_FORM_data8: - DW_UNSND (attr) = read_8_bytes (abfd, info_ptr); + attr->u.val = read_8_bytes (abfd, info_ptr); info_ptr += 8; break; case DW_FORM_string: - DW_STRING (attr) = read_string (abfd, info_ptr, &bytes_read); + attr->u.str = read_string (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; break; case DW_FORM_strp: - DW_STRING (attr) = read_indirect_string (unit, info_ptr, &bytes_read); + attr->u.str = read_indirect_string (unit, info_ptr, &bytes_read); info_ptr += bytes_read; break; case DW_FORM_block: amt = sizeof (struct dwarf_block); - blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + blk = bfd_alloc (abfd, amt); blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; blk->data = read_n_bytes (abfd, info_ptr, blk->size); info_ptr += blk->size; - DW_BLOCK (attr) = blk; + attr->u.blk = blk; break; case DW_FORM_block1: amt = sizeof (struct dwarf_block); - blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + blk = bfd_alloc (abfd, amt); blk->size = read_1_byte (abfd, info_ptr); info_ptr += 1; blk->data = read_n_bytes (abfd, info_ptr, blk->size); info_ptr += blk->size; - DW_BLOCK (attr) = blk; + attr->u.blk = blk; break; case DW_FORM_data1: - DW_UNSND (attr) = read_1_byte (abfd, info_ptr); + attr->u.val = read_1_byte (abfd, info_ptr); info_ptr += 1; break; case DW_FORM_flag: - DW_UNSND (attr) = read_1_byte (abfd, info_ptr); + attr->u.val = read_1_byte (abfd, info_ptr); info_ptr += 1; break; case DW_FORM_sdata: - DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read); + attr->u.sval = read_signed_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; break; case DW_FORM_udata: - DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); + attr->u.val = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; break; case DW_FORM_ref1: - DW_UNSND (attr) = read_1_byte (abfd, info_ptr); + attr->u.val = read_1_byte (abfd, info_ptr); info_ptr += 1; break; case DW_FORM_ref2: - DW_UNSND (attr) = read_2_bytes (abfd, info_ptr); + attr->u.val = read_2_bytes (abfd, info_ptr); info_ptr += 2; break; case DW_FORM_ref4: - DW_UNSND (attr) = read_4_bytes (abfd, info_ptr); + attr->u.val = read_4_bytes (abfd, info_ptr); info_ptr += 4; break; case DW_FORM_ref8: - DW_UNSND (attr) = read_8_bytes (abfd, info_ptr); + attr->u.val = read_8_bytes (abfd, info_ptr); info_ptr += 8; break; case DW_FORM_ref_udata: - DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); + attr->u.val = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; break; case DW_FORM_indirect: @@ -763,11 +661,10 @@ read_attribute_value (attr, form, unit, /* Read an attribute described by an abbreviated attribute. */ static char * -read_attribute (attr, abbrev, unit, info_ptr) - struct attribute *attr; - struct attr_abbrev *abbrev; - struct comp_unit *unit; - char *info_ptr; +read_attribute (struct attribute *attr, + struct attr_abbrev *abbrev, + struct comp_unit *unit, + char *info_ptr) { attr->name = abbrev->name; info_ptr = read_attribute_value (attr, abbrev->form, unit, info_ptr); @@ -823,16 +720,15 @@ struct funcinfo line_info->prev_line always accesses an equal or smaller VMA. */ static void -add_line_info (table, address, filename, line, column, end_sequence) - struct line_info_table* table; - bfd_vma address; - char* filename; - unsigned int line; - unsigned int column; - int end_sequence; +add_line_info (struct line_info_table *table, + bfd_vma address, + char *filename, + unsigned int line, + unsigned int column, + int end_sequence) { bfd_size_type amt = sizeof (struct line_info); - struct line_info* info = (struct line_info*) bfd_alloc (table->abfd, amt); + struct line_info* info = bfd_alloc (table->abfd, amt); /* Find the correct location for 'info'. Normally we will receive new line_info data 1) in order and 2) with increasing VMAs. @@ -921,9 +817,7 @@ add_line_info (table, address, filename, responsibility to free it. */ static char * -concat_filename (table, file) - struct line_info_table* table; - unsigned int file; +concat_filename (struct line_info_table *table, unsigned int file) { char* filename; @@ -960,10 +854,7 @@ concat_filename (table, file) } static void -arange_add (unit, low_pc, high_pc) - struct comp_unit *unit; - bfd_vma low_pc; - bfd_vma high_pc; +arange_add (struct comp_unit *unit, bfd_vma low_pc, bfd_vma high_pc) { struct arange *arange; @@ -996,8 +887,7 @@ arange_add (unit, low_pc, high_pc) } /* Need to allocate a new arange and insert it into the arange list. */ - arange = (struct arange *) - bfd_zalloc (unit->abfd, (bfd_size_type) sizeof (*arange)); + arange = bfd_zalloc (unit->abfd, sizeof (*arange)); arange->low = low_pc; arange->high = high_pc; @@ -1008,9 +898,7 @@ arange_add (unit, low_pc, high_pc) /* Decode the line number information for UNIT. */ static struct line_info_table* -decode_line_info (unit, stash) - struct comp_unit *unit; - struct dwarf2_debug *stash; +decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) { bfd *abfd = unit->abfd; struct line_info_table* table; @@ -1053,7 +941,7 @@ decode_line_info (unit, stash) } amt = sizeof (struct line_info_table); - table = (struct line_info_table*) bfd_alloc (abfd, amt); + table = bfd_alloc (abfd, amt); table->abfd = abfd; table->comp_dir = unit->comp_dir; @@ -1105,7 +993,7 @@ decode_line_info (unit, stash) lh.opcode_base = read_1_byte (abfd, line_ptr); line_ptr += 1; amt = lh.opcode_base * sizeof (unsigned char); - lh.standard_opcode_lengths = (unsigned char *) bfd_alloc (abfd, amt); + lh.standard_opcode_lengths = bfd_alloc (abfd, amt); lh.standard_opcode_lengths[0] = 1; @@ -1124,7 +1012,7 @@ decode_line_info (unit, stash) { amt = table->num_dirs + DIR_ALLOC_CHUNK; amt *= sizeof (char *); - table->dirs = (char **) bfd_realloc (table->dirs, amt); + table->dirs = bfd_realloc (table->dirs, amt); if (! table->dirs) return 0; } @@ -1143,7 +1031,7 @@ decode_line_info (unit, stash) { amt = table->num_files + FILE_ALLOC_CHUNK; amt *= sizeof (struct fileinfo); - table->files = (struct fileinfo *) bfd_realloc (table->files, amt); + table->files = bfd_realloc (table->files, amt); if (! table->files) return 0; } @@ -1234,8 +1122,7 @@ decode_line_info (unit, stash) { amt = table->num_files + FILE_ALLOC_CHUNK; amt *= sizeof (struct fileinfo); - table->files = - (struct fileinfo *) bfd_realloc (table->files, amt); + table->files = bfd_realloc (table->files, amt); if (! table->files) return 0; } @@ -1331,13 +1218,11 @@ decode_line_info (unit, stash) LINENUMBER_PTR, are pointers to the objects to be filled in. */ static bfd_boolean -lookup_address_in_line_info_table (table, addr, function, filename_ptr, - linenumber_ptr) - struct line_info_table* table; - bfd_vma addr; - struct funcinfo *function; - const char **filename_ptr; - unsigned int *linenumber_ptr; +lookup_address_in_line_info_table (struct line_info_table *table, + bfd_vma addr, + struct funcinfo *function, + const char **filename_ptr, + unsigned int *linenumber_ptr) { /* Note: table->last_line should be a descendingly sorted list. */ struct line_info* next_line = table->last_line; @@ -1410,12 +1295,10 @@ lookup_address_in_line_info_table (table /* If ADDR is within TABLE, set FUNCTIONNAME_PTR, and return TRUE. */ static bfd_boolean -lookup_address_in_function_table (table, addr, function_ptr, - functionname_ptr) - struct funcinfo* table; - bfd_vma addr; - struct funcinfo** function_ptr; - const char **functionname_ptr; +lookup_address_in_function_table (struct funcinfo *table, + bfd_vma addr, + struct funcinfo **function_ptr, + const char **functionname_ptr) { struct funcinfo* each_func; @@ -1440,8 +1323,7 @@ lookup_address_in_function_table (table, to the function table. */ static bfd_boolean -scan_unit_for_functions (unit) - struct comp_unit *unit; +scan_unit_for_functions (struct comp_unit *unit) { bfd *abfd = unit->abfd; char *info_ptr = unit->first_child_die_ptr; @@ -1476,7 +1358,7 @@ scan_unit_for_functions (unit) if (abbrev->tag == DW_TAG_subprogram) { bfd_size_type amt = sizeof (struct funcinfo); - func = (struct funcinfo *) bfd_zalloc (abfd, amt); + func = bfd_zalloc (abfd, amt); func->prev_func = unit->function_table; unit->function_table = func; } @@ -1493,23 +1375,23 @@ scan_unit_for_functions (unit) { case DW_AT_name: - name = DW_STRING (&attr); + name = attr.u.str; /* Prefer DW_AT_MIPS_linkage_name over DW_AT_name. */ if (func->name == NULL) - func->name = DW_STRING (&attr); + func->name = attr.u.str; break; case DW_AT_MIPS_linkage_name: - func->name = DW_STRING (&attr); + func->name = attr.u.str; break; case DW_AT_low_pc: - func->low = DW_ADDR (&attr); + func->low = attr.u.val; break; case DW_AT_high_pc: - func->high = DW_ADDR (&attr); + func->high = attr.u.val; break; default: @@ -1521,7 +1403,7 @@ scan_unit_for_functions (unit) switch (attr.name) { case DW_AT_name: - name = DW_STRING (&attr); + name = attr.u.str; break; default: @@ -1539,7 +1421,7 @@ scan_unit_for_functions (unit) /* Parse a DWARF2 compilation unit starting at INFO_PTR. This includes the compilation unit header that proceeds the DIE's, but - does not include the length field that preceeds each compilation + does not include the length field that precedes each compilation unit header. END_PTR points one past the end of this comp unit. OFFSET_SIZE is the size of DWARF2 offsets (either 4 or 8 bytes). @@ -1547,11 +1429,10 @@ scan_unit_for_functions (unit) to get to the line number information for the compilation unit. */ static struct comp_unit * -parse_comp_unit (abfd, stash, unit_length, offset_size) - bfd* abfd; - struct dwarf2_debug *stash; - bfd_vma unit_length; - unsigned int offset_size; +parse_comp_unit (bfd *abfd, + struct dwarf2_debug *stash, + bfd_vma unit_length, + unsigned int offset_size) { struct comp_unit* unit; unsigned int version; @@ -1624,7 +1505,7 @@ parse_comp_unit (abfd, stash, unit_lengt } amt = sizeof (struct comp_unit); - unit = (struct comp_unit*) bfd_zalloc (abfd, amt); + unit = bfd_zalloc (abfd, amt); unit->abfd = abfd; unit->addr_size = addr_size; unit->offset_size = offset_size; @@ -1642,29 +1523,29 @@ parse_comp_unit (abfd, stash, unit_lengt { case DW_AT_stmt_list: unit->stmtlist = 1; - unit->line_offset = DW_UNSND (&attr); + unit->line_offset = attr.u.val; break; case DW_AT_name: - unit->name = DW_STRING (&attr); + unit->name = attr.u.str; break; case DW_AT_low_pc: - unit->arange.low = DW_ADDR (&attr); + unit->arange.low = attr.u.val; break; case DW_AT_high_pc: - unit->arange.high = DW_ADDR (&attr); + unit->arange.high = attr.u.val; break; case DW_AT_comp_dir: { - char* comp_dir = DW_STRING (&attr); + char* comp_dir = attr.u.str; if (comp_dir) { /* Irix 6.2 native cc prepends .: to the compilation directory, get rid of it. */ - char *cp = (char*) strchr (comp_dir, ':'); + char *cp = strchr (comp_dir, ':'); if (cp && cp != comp_dir && cp[-1] == '.' && cp[1] == '/') comp_dir = cp + 1; @@ -1685,9 +1566,7 @@ parse_comp_unit (abfd, stash, unit_lengt /* Return TRUE if UNIT contains the address given by ADDR. */ static bfd_boolean -comp_unit_contains_address (unit, addr) - struct comp_unit* unit; - bfd_vma addr; +comp_unit_contains_address (struct comp_unit *unit, bfd_vma addr) { struct arange *arange; @@ -1715,14 +1594,12 @@ comp_unit_contains_address (unit, addr) FALSE otherwise. */ static bfd_boolean -comp_unit_find_nearest_line (unit, addr, filename_ptr, functionname_ptr, - linenumber_ptr, stash) - struct comp_unit* unit; - bfd_vma addr; - const char **filename_ptr; - const char **functionname_ptr; - unsigned int *linenumber_ptr; - struct dwarf2_debug *stash; +comp_unit_find_nearest_line (struct comp_unit *unit, + bfd_vma addr, + const char **filename_ptr, + const char **functionname_ptr, + unsigned int *linenumber_ptr, + struct dwarf2_debug *stash) { bfd_boolean line_p; bfd_boolean func_p; @@ -1777,9 +1654,7 @@ comp_unit_find_nearest_line (unit, addr, #define GNU_LINKONCE_INFO ".gnu.linkonce.wi." static asection * -find_debug_info (abfd, after_sec) - bfd * abfd; - asection * after_sec; +find_debug_info (bfd *abfd, asection *after_sec) { asection * msec; @@ -1809,18 +1684,15 @@ find_debug_info (abfd, after_sec) used. */ bfd_boolean -_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset, - filename_ptr, functionname_ptr, - linenumber_ptr, addr_size, pinfo) - bfd *abfd; - asection *section; - asymbol **symbols; - bfd_vma offset; - const char **filename_ptr; - const char **functionname_ptr; - unsigned int *linenumber_ptr; - unsigned int addr_size; - PTR *pinfo; +_bfd_dwarf2_find_nearest_line (bfd *abfd, + asection *section, + asymbol **symbols, + bfd_vma offset, + const char **filename_ptr, + const char **functionname_ptr, + unsigned int *linenumber_ptr, + unsigned int addr_size, + void **pinfo) { /* Read each compilation unit from the section .debug_info, and check to see if it contains the address we are searching for. If yes, @@ -1830,7 +1702,7 @@ _bfd_dwarf2_find_nearest_line (abfd, sec We keep a list of all the previously read compilation units, and a pointer to the next un-read compilation unit. Check the previously read units before reading more. */ - struct dwarf2_debug *stash = (struct dwarf2_debug *) *pinfo; + struct dwarf2_debug *stash = *pinfo; /* What address are we looking for? */ bfd_vma addr = offset + section->vma; @@ -1854,11 +1726,11 @@ _bfd_dwarf2_find_nearest_line (abfd, sec asection *msec; bfd_size_type amt = sizeof (struct dwarf2_debug); - stash = (struct dwarf2_debug*) bfd_zalloc (abfd, amt); + stash = bfd_zalloc (abfd, amt); if (! stash) return FALSE; - *pinfo = (PTR) stash; + *pinfo = stash; msec = find_debug_info (abfd, NULL); if (! msec) @@ -1875,7 +1747,7 @@ _bfd_dwarf2_find_nearest_line (abfd, sec for (total_size = 0; msec; msec = find_debug_info (abfd, msec)) total_size += msec->_raw_size; - stash->info_ptr = (char *) bfd_alloc (abfd, total_size); + stash->info_ptr = bfd_alloc (abfd, total_size); if (stash->info_ptr == NULL) return FALSE; diff -uprN binutils-2.14.90.0.7/bfd/ecoff.c binutils-2.14.90.0.8/bfd/ecoff.c --- binutils-2.14.90.0.7/bfd/ecoff.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/ecoff.c 2004-01-14 13:07:43.000000000 -0800 @@ -100,9 +100,9 @@ static asection bfd_debug_section = /* target_index, used_by_bfd, constructor_chain, owner, */ 0, NULL, NULL, NULL, /* symbol, */ - (struct symbol_cache_entry *) NULL, + (struct bfd_symbol *) NULL, /* symbol_ptr_ptr, */ - (struct symbol_cache_entry **) NULL, + (struct bfd_symbol **) NULL, /* link_order_head, link_order_tail */ NULL, NULL }; @@ -2262,7 +2262,7 @@ bfd_boolean _bfd_ecoff_set_section_contents (abfd, section, location, offset, count) bfd *abfd; asection *section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { @@ -3566,9 +3566,9 @@ ecoff_link_add_archive_symbols (abfd, in entry if it is the tail, because that would lose any entries we add to the list later on. */ if (*pundef != info->hash->undefs_tail) - *pundef = (*pundef)->next; + *pundef = (*pundef)->und_next; else - pundef = &(*pundef)->next; + pundef = &(*pundef)->und_next; continue; } @@ -3578,7 +3578,7 @@ ecoff_link_add_archive_symbols (abfd, in other object format. */ if (h->type != bfd_link_hash_undefined) { - pundef = &(*pundef)->next; + pundef = &(*pundef)->und_next; continue; } @@ -3590,7 +3590,7 @@ ecoff_link_add_archive_symbols (abfd, in if (file_offset == 0) { /* Nothing in this slot. */ - pundef = &(*pundef)->next; + pundef = &(*pundef)->und_next; continue; } @@ -3621,7 +3621,7 @@ ecoff_link_add_archive_symbols (abfd, in if (! found) { - pundef = &(*pundef)->next; + pundef = &(*pundef)->und_next; continue; } @@ -3643,7 +3643,7 @@ ecoff_link_add_archive_symbols (abfd, in if (! ecoff_link_add_object_symbols (element, info)) return FALSE; - pundef = &(*pundef)->next; + pundef = &(*pundef)->und_next; } return TRUE; @@ -4129,7 +4129,7 @@ _bfd_ecoff_bfd_final_link (abfd, info) if (bfd_get_flavour (input_bfd) == bfd_target_ecoff_flavour) { - /* Abitrarily set the symbolic header vstamp to the vstamp + /* Arbitrarily set the symbolic header vstamp to the vstamp of the first object file in the link. */ if (symhdr->vstamp == 0) symhdr->vstamp diff -uprN binutils-2.14.90.0.7/bfd/ecofflink.c binutils-2.14.90.0.8/bfd/ecofflink.c --- binutils-2.14.90.0.7/bfd/ecofflink.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/ecofflink.c 2004-01-14 13:07:43.000000000 -0800 @@ -2007,7 +2007,7 @@ lookup_line (abfd, debug_info, debug_swa /* eraxxon: 'fdrtab_lookup' doesn't give what we want, at least for Compaq's C++ compiler 6.2. Consider three FDRs with starting addresses of x, y, and z, respectively, such that x < y < z. Assume further that - y < 'offset' < z. It is possble at times that the PDR for 'offset' is + y < 'offset' < z. It is possible at times that the PDR for 'offset' is associated with FDR x and *not* with FDR y. Erg!! From a binary dump of my C++ test case 'moo' using Compaq's coffobjanl @@ -2030,7 +2030,7 @@ lookup_line (abfd, debug_info, debug_swa Since the FDRs that are causing so much havok (in this case) 1) do not describe actual files (fdr.rss == -1), and 2) contain only compiler - genarated routines, I thought a simple fix would be to exclude them from + generated routines, I thought a simple fix would be to exclude them from the FDR table in 'mk_fdrtab'. But, besides not knowing for certain whether this would be correct, it creates an additional problem. If we happen to ask for source file info on a compiler generated (procedure) diff -uprN binutils-2.14.90.0.7/bfd/efi-app-ia32.c binutils-2.14.90.0.8/bfd/efi-app-ia32.c --- binutils-2.14.90.0.7/bfd/efi-app-ia32.c 2002-12-16 12:22:51.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/efi-app-ia32.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD back-end for Intel IA-32 EFI application files. - Copyright 1999, 2000, 2002 Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by David Mosberger This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/elf-bfd.h binutils-2.14.90.0.8/bfd/elf-bfd.h --- binutils-2.14.90.0.7/bfd/elf-bfd.h 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf-bfd.h 2004-01-14 13:07:43.000000000 -0800 @@ -200,6 +200,9 @@ struct elf_link_hash_entry #define ELF_LINK_DYNAMIC_DEF 020000 /* Symbol is weak in all shared objects. */ #define ELF_LINK_DYNAMIC_WEAK 040000 + /* Symbol is referenced with a relocation where C/C++ pointer equality + matters. */ +#define ELF_LINK_POINTER_EQUALITY_NEEDED 0100000 }; /* Will references to this symbol always reference the symbol @@ -309,14 +312,6 @@ struct eh_frame_hdr_info bfd_boolean table; }; -/* Cached start, size and alignment of PT_TLS segment. */ -struct elf_link_tls_segment -{ - bfd_vma start; - bfd_size_type size; - unsigned int align; -}; - /* ELF linker hash table. */ struct elf_link_hash_table @@ -377,8 +372,9 @@ struct elf_link_hash_table objects included in the link. */ struct bfd_link_needed_list *runpath; - /* Cached start, size and alignment of PT_TLS segment. */ - struct elf_link_tls_segment *tls_segment; + /* Cached first output tls section and size of PT_TLS segment. */ + asection *tls_sec; + bfd_size_type tls_size; /* A linked list of BFD's loaded in the link. */ struct elf_link_loaded_list *loaded; @@ -404,8 +400,8 @@ struct elf_link_hash_table #define elf_hash_table(p) ((struct elf_link_hash_table *) ((p)->hash)) /* Returns TRUE if the hash table is a struct elf_link_hash_table. */ -#define is_elf_hash_table(p) \ - ((p)->hash->type == bfd_link_elf_hash_table) +#define is_elf_hash_table(htab) \ + (((struct bfd_link_hash_table *) (htab))->type == bfd_link_elf_hash_table) /* Used by bfd_section_from_r_symndx to cache a small number of local symbol to section mappings. */ @@ -630,8 +626,8 @@ struct elf_backend_data /* If this field is not NULL, it is called by the elf_link_output_sym phase of a link for each symbol which will appear in the object file. */ bfd_boolean (*elf_backend_link_output_symbol_hook) - (bfd *, struct bfd_link_info *info, const char *, Elf_Internal_Sym *, - asection *); + (struct bfd_link_info *info, const char *, Elf_Internal_Sym *, + asection *, struct elf_link_hash_entry *); /* The CREATE_DYNAMIC_SECTIONS function is called by the ELF backend linker the first time it encounters a dynamic object in the link. @@ -764,7 +760,7 @@ struct elf_backend_data /* This function is called to modify an existing segment map in a backend specific fashion. */ bfd_boolean (*elf_backend_modify_segment_map) - (bfd *); + (bfd *, struct bfd_link_info *); /* This function is called during section gc to discover the section a particular relocation refers to. */ @@ -792,12 +788,13 @@ struct elf_backend_data (bfd *, void *, asymbol *); /* This function, if defined, is called after all local symbols and - global symbols converted to locals are emited into the symtab + global symbols converted to locals are emitted into the symtab section. It allows the backend to emit special global symbols not handled in the hash table. */ bfd_boolean (*elf_backend_output_arch_syms) (bfd *, struct bfd_link_info *, void *, - bfd_boolean (*) (void *, const char *, Elf_Internal_Sym *, asection *)); + bfd_boolean (*) (void *, const char *, Elf_Internal_Sym *, asection *, + struct elf_link_hash_entry *)); /* Copy any information related to dynamic linking from a pre-existing symbol to a newly created symbol. Also called to copy flags and @@ -894,10 +891,9 @@ struct elf_backend_data .got section */ bfd_vma got_symbol_offset; - /* The size in bytes of the headers for the GOT and PLT. This includes - the so-called reserved entries on some systems. */ + /* The size in bytes of the header for the GOT. This includes the + so-called reserved entries on some systems. */ bfd_vma got_header_size; - bfd_vma plt_header_size; /* This is TRUE if the linker should act like collect and gather global constructors and destructors by name. This is TRUE for @@ -1013,7 +1009,7 @@ struct bfd_elf_section_data const char *name; /* Group signature sym, if this is the SHT_GROUP section. */ - struct symbol_cache_entry *id; + struct bfd_symbol *id; } group; /* A linked list of sections in the group. Circular when used by @@ -1303,7 +1299,7 @@ extern void _bfd_elf_fprintf_vma extern enum elf_reloc_type_class _bfd_elf_reloc_type_class (const Elf_Internal_Rela *); extern bfd_vma _bfd_elf_rela_local_sym - (bfd *, Elf_Internal_Sym *, asection *, Elf_Internal_Rela *); + (bfd *, Elf_Internal_Sym *, asection **, Elf_Internal_Rela *); extern bfd_vma _bfd_elf_rel_local_sym (bfd *, Elf_Internal_Sym *, asection **, bfd_vma); extern bfd_vma _bfd_elf_section_offset @@ -1356,7 +1352,7 @@ extern bfd_boolean _bfd_elf_write_object extern bfd_boolean _bfd_elf_write_corefile_contents (bfd *); extern bfd_boolean _bfd_elf_set_section_contents - (bfd *, sec_ptr, void *, file_ptr, bfd_size_type); + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type); extern long _bfd_elf_get_symtab_upper_bound (bfd *); extern long _bfd_elf_canonicalize_symtab @@ -1634,7 +1630,7 @@ extern int elf_link_record_local_dynamic extern bfd_boolean _bfd_elf_close_and_cleanup (bfd *); extern bfd_reloc_status_type _bfd_elf_rel_vtable_reloc_fn - (bfd *, arelent *, struct symbol_cache_entry *, void *, + (bfd *, arelent *, struct bfd_symbol *, void *, asection *, bfd *, char **); extern bfd_boolean _bfd_elf32_gc_sections diff -uprN binutils-2.14.90.0.7/bfd/elf-hppa.h binutils-2.14.90.0.8/bfd/elf-hppa.h --- binutils-2.14.90.0.7/bfd/elf-hppa.h 2003-08-21 08:28:47.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf-hppa.h 2004-01-14 13:07:43.000000000 -0800 @@ -1123,7 +1123,7 @@ elf_hppa_remark_useless_dynamic_symbols the generic code will warn that it is undefined. This behavior is undesirable on HPs since the standard shared - libraries contain reerences to undefined symbols. + libraries contain references to undefined symbols. So we twiddle the flags associated with such symbols so that they will not trigger the warning. ?!? FIXME. This is horribly fragile. @@ -1261,7 +1261,7 @@ elf_hppa_final_link (bfd *abfd, struct b hppa_info->data_segment_base = (bfd_vma)-1; /* HP's shared libraries have references to symbols that are not - defined anywhere. The generic ELF BFD linker code will complaim + defined anywhere. The generic ELF BFD linker code will complain about such symbols. So we detect the losing case and arrange for the flags on the symbol @@ -1346,7 +1346,7 @@ elf_hppa_relocate_section (bfd *output_b /* This is a local symbol. */ sym = local_syms + r_symndx; sym_sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sym_sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sym_sec, rel); /* If this symbol has an entry in the PA64 dynamic hash table, then get it. */ diff -uprN binutils-2.14.90.0.7/bfd/elf-m10200.c binutils-2.14.90.0.8/bfd/elf-m10200.c --- binutils-2.14.90.0.7/bfd/elf-m10200.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf-m10200.c 2004-01-14 13:07:43.000000000 -0800 @@ -373,7 +373,7 @@ mn10200_elf_relocate_section (output_bfd { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -469,7 +469,7 @@ mn10200_elf_relocate_section (output_bfd /* This function handles relaxing for the mn10200. - There's quite a few relaxing opportunites available on the mn10200: + There are quite a few relaxing opportunities available on the mn10200: * jsr:24 -> jsr:16 2 bytes @@ -918,7 +918,7 @@ mn10200_elf_relax_section (abfd, sec, li if (value & 0x8000) continue; - /* Note that we've changed the reldection contents, etc. */ + /* Note that we've changed the relocation contents, etc. */ elf_section_data (sec)->relocs = internal_relocs; elf_section_data (sec)->this_hdr.contents = contents; symtab_hdr->contents = (unsigned char *) isymbuf; @@ -957,7 +957,7 @@ mn10200_elf_relax_section (abfd, sec, li case 0x40: case 0x44: case 0xc8: - /* Note that we've changed the reldection contents, etc. */ + /* Note that we've changed the relocation contents, etc. */ elf_section_data (sec)->relocs = internal_relocs; elf_section_data (sec)->this_hdr.contents = contents; symtab_hdr->contents = (unsigned char *) isymbuf; @@ -1040,7 +1040,7 @@ mn10200_elf_relax_section (abfd, sec, li && (value & 0x8000) != 0) continue; - /* Note that we've changed the reldection contents, etc. */ + /* Note that we've changed the relocation contents, etc. */ elf_section_data (sec)->relocs = internal_relocs; elf_section_data (sec)->this_hdr.contents = contents; symtab_hdr->contents = (unsigned char *) isymbuf; diff -uprN binutils-2.14.90.0.7/bfd/elf-m10300.c binutils-2.14.90.0.8/bfd/elf-m10300.c --- binutils-2.14.90.0.7/bfd/elf-m10300.c 2003-08-21 08:28:47.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf-m10300.c 2004-01-14 13:07:43.000000000 -0800 @@ -85,7 +85,7 @@ struct elf32_mn10300_link_hash_entry { to the target when it's valid and profitable to do so. */ unsigned char movm_args; - /* For funtion symbols, the amount of stack space that would be allocated + /* For function symbols, the amount of stack space that would be allocated by the movm instruction. This is redundant with movm_args, but we add it to the hash table to avoid computing it over and over. */ unsigned char movm_stack_size; @@ -561,6 +561,7 @@ _bfd_mn10300_elf_create_got_section (abf flagword flags; flagword pltflags; asection * s; + struct bfd_link_hash_entry * bh; struct elf_link_hash_entry * h; const struct elf_backend_data * bed = get_elf_backend_data (abfd); int ptralign; @@ -604,13 +605,13 @@ _bfd_mn10300_elf_create_got_section (abf { /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the .plt section. */ - struct elf_link_hash_entry *h = NULL; + bh = NULL; if (! (_bfd_generic_link_add_one_symbol (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, (bfd_vma) 0, (const char *) NULL, FALSE, - get_elf_backend_data (abfd)->collect, - (struct bfd_link_hash_entry **) &h))) + get_elf_backend_data (abfd)->collect, &bh))) return FALSE; + h = (struct elf_link_hash_entry *) bh; h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; h->type = STT_OBJECT; @@ -638,12 +639,13 @@ _bfd_mn10300_elf_create_got_section (abf (or .got.plt) section. We don't do this in the linker script because we don't want to define the symbol if we are not creating a global offset table. */ - h = NULL; + bh = NULL; if (!(_bfd_generic_link_add_one_symbol (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s, bed->got_symbol_offset, (const char *) NULL, FALSE, - bed->collect, (struct bfd_link_hash_entry **) &h))) + bed->collect, &bh))) return FALSE; + h = (struct elf_link_hash_entry *) bh; h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; h->type = STT_OBJECT; @@ -1574,7 +1576,7 @@ mn10300_elf_relocate_section (output_bfd { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -1741,13 +1743,16 @@ elf32_mn10300_finish_hash_table_entry (g byte_count += 2; /* Count the insn to allocate stack space too. */ - if (entry->stack_size > 0 && entry->stack_size <= 128) - byte_count += 3; - else if (entry->stack_size > 0 && entry->stack_size < 256) - byte_count += 4; + if (entry->stack_size > 0) + { + if (entry->stack_size <= 128) + byte_count += 3; + else + byte_count += 4; + } /* If using "call" will result in larger code, then turn all - the associated "call" instructions into "calls" instrutions. */ + the associated "call" instructions into "calls" instructions. */ if (byte_count < entry->direct_calls) entry->flags |= MN10300_CONVERT_CALL_TO_CALLS; @@ -1757,7 +1762,7 @@ elf32_mn10300_finish_hash_table_entry (g /* This function handles relaxing for the mn10300. - There's quite a few relaxing opportunites available on the mn10300: + There are quite a few relaxing opportunities available on the mn10300: * calls:32 -> calls:16 2 bytes * call:32 -> call:16 2 bytes @@ -2236,11 +2241,13 @@ mn10300_elf_relax_section (abfd, sec, li if (sym_hash->movm_args) bytes += 2; - if (sym_hash->stack_size && sym_hash->stack_size <= 128) - bytes += 3; - else if (sym_hash->stack_size - && sym_hash->stack_size < 256) - bytes += 4; + if (sym_hash->stack_size > 0) + { + if (sym_hash->stack_size <= 128) + bytes += 3; + else + bytes += 4; + } /* Note that we've deleted prologue bytes for this function. */ @@ -2288,11 +2295,13 @@ mn10300_elf_relax_section (abfd, sec, li if (sym_hash->movm_args) bytes += 2; - if (sym_hash->stack_size && sym_hash->stack_size <= 128) - bytes += 3; - else if (sym_hash->stack_size - && sym_hash->stack_size < 256) - bytes += 4; + if (sym_hash->stack_size > 0) + { + if (sym_hash->stack_size <= 128) + bytes += 3; + else + bytes += 4; + } /* Note that we've deleted prologue bytes for this function. */ @@ -3485,7 +3494,7 @@ compute_function_info (abfd, hash, addr, } /* Now figure out how much stack space will be allocated by the movm - instruction. We need this kept separate from the funtion's normal + instruction. We need this kept separate from the function's normal stack space. */ if (hash->movm_args) { @@ -4006,7 +4015,7 @@ static const bfd_byte elf_mn10300_pic_pl /* Return offset of the GOT id in PLT0 entry. */ #define elf_mn10300_plt0_gotid_offset(info) 9 -/* Return offset of the tempoline in PLT entry */ +/* Return offset of the temporary in PLT entry */ #define elf_mn10300_plt_temp_offset(info) 8 /* Return offset of the symbol in PLT entry. */ @@ -4349,7 +4358,7 @@ _bfd_mn10300_elf_size_dynamic_sections ( if (elf_hash_table (info)->dynamic_sections_created) { /* Set the contents of the .interp section to the interpreter. */ - if (! info->shared) + if (info->executable) { s = bfd_get_section_by_name (dynobj, ".interp"); BFD_ASSERT (s != NULL); @@ -4874,6 +4883,5 @@ _bfd_mn10300_elf_finish_dynamic_sections #define elf_backend_plt_readonly 1 #define elf_backend_want_plt_sym 0 #define elf_backend_got_header_size 12 -#define elf_backend_plt_header_size PLT0_ENTRY_SIZE #include "elf32-target.h" diff -uprN binutils-2.14.90.0.7/bfd/elf-strtab.c binutils-2.14.90.0.8/bfd/elf-strtab.c --- binutils-2.14.90.0.7/bfd/elf-strtab.c 2003-08-21 08:28:47.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf-strtab.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* ELF strtab with GC and suffix merging support. - Copyright 2001, 2002 Free Software Foundation, Inc. + Copyright 2001, 2002, 2003 Free Software Foundation, Inc. Written by Jakub Jelinek . This file is part of BFD, the Binary File Descriptor library. @@ -30,15 +30,14 @@ struct elf_strtab_hash_entry { struct bfd_hash_entry root; - /* Length of this entry. */ - unsigned int len; + /* Length of this entry. This includes the zero terminator. */ + int len; unsigned int refcount; union { /* Index within the merged section. */ bfd_size_type index; - /* Entry this is a suffix of (if len is 0). */ + /* Entry this is a suffix of (if len < 0). */ struct elf_strtab_hash_entry *suffix; - struct elf_strtab_hash_entry *next; } u; }; @@ -158,6 +157,8 @@ _bfd_elf_strtab_add (struct elf_strtab_h if (entry->len == 0) { entry->len = strlen (str) + 1; + /* 2G strings lose. */ + BFD_ASSERT (entry->len > 0); if (tab->size == tab->alloced) { bfd_size_type amt = sizeof (struct elf_strtab_hash_entry *); @@ -235,14 +236,14 @@ _bfd_elf_strtab_emit (register bfd *abfd for (i = 1; i < tab->size; ++i) { register const char *str; - register size_t len; + register unsigned int len; - str = tab->array[i]->root.string; - len = tab->array[i]->len; BFD_ASSERT (tab->array[i]->refcount == 0); - if (len == 0) + len = tab->array[i]->len; + if ((int) len < 0) continue; + str = tab->array[i]->root.string; if (bfd_bwrite (str, len, abfd) != len) return FALSE; @@ -253,40 +254,41 @@ _bfd_elf_strtab_emit (register bfd *abfd return TRUE; } -/* Compare two elf_strtab_hash_entry structures. This is called via qsort. */ +/* Compare two elf_strtab_hash_entry structures. Called via qsort. */ static int -cmplengthentry (const void *a, const void *b) +strrevcmp (const void *a, const void *b) { struct elf_strtab_hash_entry *A = *(struct elf_strtab_hash_entry **) a; struct elf_strtab_hash_entry *B = *(struct elf_strtab_hash_entry **) b; + unsigned int lenA = A->len; + unsigned int lenB = B->len; + const unsigned char *s = A->root.string + lenA - 1; + const unsigned char *t = B->root.string + lenB - 1; + int l = lenA < lenB ? lenA : lenB; - if (A->len < B->len) - return 1; - else if (A->len > B->len) - return -1; - - return memcmp (A->root.string, B->root.string, A->len); + while (l) + { + if (*s != *t) + return (int) *s - (int) *t; + s--; + t--; + l--; + } + return lenA - lenB; } -static int -last4_eq (const void *a, const void *b) +static inline int +is_suffix (const struct elf_strtab_hash_entry *A, + const struct elf_strtab_hash_entry *B) { - const struct elf_strtab_hash_entry *A = a; - const struct elf_strtab_hash_entry *B = b; - - if (memcmp (A->root.string + A->len - 5, B->root.string + B->len - 5, 4) - != 0) - /* This was a hashtable collision. */ - return 0; - if (A->len <= B->len) /* B cannot be a suffix of A unless A is equal to B, which is guaranteed not to be equal by the hash table. */ return 0; return memcmp (A->root.string + (A->len - B->len), - B->root.string, B->len - 5) == 0; + B->root.string, B->len - 1) == 0; } /* This function assigns final string table offsets for used strings, @@ -295,10 +297,8 @@ last4_eq (const void *a, const void *b) void _bfd_elf_strtab_finalize (struct elf_strtab_hash *tab) { - struct elf_strtab_hash_entry **array, **a, **end, *e; - htab_t last4tab = NULL; + struct elf_strtab_hash_entry **array, **a, *e; bfd_size_type size, amt; - struct elf_strtab_hash_entry *last[256], **last_ptr[256]; /* GCC 2.91.66 (egcs-1.1.2) on i386 miscompiles this function when i is a 64-bit bfd_size_type: a 64-bit target or --enable-64-bit-bfd. @@ -306,105 +306,71 @@ _bfd_elf_strtab_finalize (struct elf_str cycles. */ size_t i; - /* Now sort the strings by length, longest first. */ - array = NULL; + /* Sort the strings by suffix and length. */ amt = tab->size * sizeof (struct elf_strtab_hash_entry *); array = bfd_malloc (amt); if (array == NULL) goto alloc_failure; - memset (last, 0, sizeof (last)); - for (i = 0; i < 256; ++i) - last_ptr[i] = &last[i]; for (i = 1, a = array; i < tab->size; ++i) - if (tab->array[i]->refcount) - *a++ = tab->array[i]; - else - tab->array[i]->len = 0; + { + e = tab->array[i]; + if (e->refcount) + { + *a++ = e; + /* Adjust the length to not include the zero terminator. */ + e->len -= 1; + } + else + e->len = 0; + } size = a - array; + if (size != 0) + { + qsort (array, size, sizeof (struct elf_strtab_hash_entry *), strrevcmp); - qsort (array, size, sizeof (struct elf_strtab_hash_entry *), cmplengthentry); + /* Loop over the sorted array and merge suffixes. Start from the + end because we want eg. - last4tab = htab_create_alloc (size * 4, NULL, last4_eq, NULL, calloc, free); - if (last4tab == NULL) - goto alloc_failure; + s1 -> "d" + s2 -> "bcd" + s3 -> "abcd" - /* Now insert the strings into hash tables (strings with last 4 characters - and strings with last character equal), look for longer strings which - we're suffix of. */ - for (a = array, end = array + size; a < end; a++) - { - register hashval_t hash; - unsigned int c; - unsigned int j; - const unsigned char *s; - void **p; + to end up as - e = *a; - if (e->len > 4) - { - s = e->root.string + e->len - 1; - hash = 0; - for (j = 0; j < 4; j++) - { - c = *--s; - hash += c + (c << 17); - hash ^= hash >> 2; - } - p = htab_find_slot_with_hash (last4tab, e, hash, INSERT); - if (p == NULL) - goto alloc_failure; - if (*p) - { - struct elf_strtab_hash_entry *ent; + s3 -> "abcd" + s2 _____^ + s1 _______^ - ent = *p; - e->u.suffix = ent; - e->len = 0; - continue; - } - else - *p = e; - } - else + ie. we don't want s1 pointing into the old s2. */ + e = *--a; + e->len += 1; + while (--a >= array) { - struct elf_strtab_hash_entry *tem; + struct elf_strtab_hash_entry *cmp = *a; - c = e->root.string[e->len - 2] & 0xff; - - for (tem = last[c]; tem; tem = tem->u.next) - if (tem->len > e->len - && memcmp (tem->root.string + (tem->len - e->len), - e->root.string, e->len - 1) == 0) - break; - if (tem) + cmp->len += 1; + if (is_suffix (e, cmp)) { - e->u.suffix = tem; - e->len = 0; - continue; + cmp->u.suffix = e; + cmp->len = -cmp->len; } + else + e = cmp; } - - c = e->root.string[e->len - 2] & 0xff; - /* Put longest strings first. */ - *last_ptr[c] = e; - last_ptr[c] = &e->u.next; - e->u.next = NULL; } alloc_failure: if (array) free (array); - if (last4tab) - htab_delete (last4tab); - /* Now assign positions to the strings we want to keep. */ + /* Assign positions to the strings we want to keep. */ size = 1; for (i = 1; i < tab->size; ++i) { e = tab->array[i]; - if (e->refcount && e->len) + if (e->refcount && e->len > 0) { e->u.index = size; size += e->len; @@ -413,12 +379,11 @@ alloc_failure: tab->sec_size = size; - /* And now adjust the rest. */ + /* Adjust the rest. */ for (i = 1; i < tab->size; ++i) { e = tab->array[i]; - if (e->refcount && ! e->len) - e->u.index = e->u.suffix->u.index - + (e->u.suffix->len - strlen (e->root.string) - 1); + if (e->refcount && e->len < 0) + e->u.index = e->u.suffix->u.index + (e->u.suffix->len + e->len); } } diff -uprN binutils-2.14.90.0.7/bfd/elf.c binutils-2.14.90.0.8/bfd/elf.c --- binutils-2.14.90.0.7/bfd/elf.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf.c 2004-01-14 13:07:43.000000000 -0800 @@ -41,7 +41,7 @@ #include "libiberty.h" static int elf_sort_sections (const void *, const void *); -static bfd_boolean assign_file_positions_except_relocs (bfd *); +static bfd_boolean assign_file_positions_except_relocs (bfd *, struct bfd_link_info *); static bfd_boolean prep_headers (bfd *); static bfd_boolean swap_out_syms (bfd *, struct bfd_strtab_hash **, int) ; static bfd_boolean elfcore_read_notes (bfd *, file_ptr, bfd_size_type) ; @@ -894,7 +894,7 @@ merge_sections_remove_hook (bfd *abfd AT bfd_boolean _bfd_elf_merge_sections (bfd *abfd, struct bfd_link_info *info) { - if (!is_elf_hash_table (info)) + if (!is_elf_hash_table (info->hash)) return FALSE; if (elf_hash_table (info)->merge_info) _bfd_merge_sections (abfd, elf_hash_table (info)->merge_info, @@ -907,7 +907,7 @@ _bfd_elf_link_just_syms (asection *sec, { sec->output_section = bfd_abs_section_ptr; sec->output_offset = sec->vma; - if (!is_elf_hash_table (info)) + if (!is_elf_hash_table (info->hash)) return; sec->sec_info_type = ELF_INFO_TYPE_JUST_SYMS; @@ -1354,12 +1354,13 @@ _bfd_elf_link_hash_copy_indirect (const /* Copy down any references that we may have already seen to the symbol which just became indirect. */ - dir->elf_link_hash_flags |= - (ind->elf_link_hash_flags - & (ELF_LINK_HASH_REF_DYNAMIC - | ELF_LINK_HASH_REF_REGULAR - | ELF_LINK_HASH_REF_REGULAR_NONWEAK - | ELF_LINK_NON_GOT_REF)); + dir->elf_link_hash_flags + |= ind->elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC + | ELF_LINK_HASH_REF_REGULAR + | ELF_LINK_HASH_REF_REGULAR_NONWEAK + | ELF_LINK_NON_GOT_REF + | ELF_LINK_HASH_NEEDS_PLT + | ELF_LINK_POINTER_EQUALITY_NEEDED); if (ind->root.type != bfd_link_hash_indirect) return; @@ -1444,7 +1445,8 @@ _bfd_elf_link_hash_table_init memset (&table->eh_info, 0, sizeof (table->eh_info)); table->dynlocal = NULL; table->runpath = NULL; - table->tls_segment = NULL; + table->tls_sec = NULL; + table->tls_size = 0; table->loaded = NULL; ret = _bfd_link_hash_table_init (&table->root, abfd, newfunc); @@ -1502,7 +1504,7 @@ struct bfd_link_needed_list * bfd_elf_get_needed_list (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) { - if (! is_elf_hash_table (info)) + if (! is_elf_hash_table (info->hash)) return NULL; return elf_hash_table (info)->needed; } @@ -1514,7 +1516,7 @@ struct bfd_link_needed_list * bfd_elf_get_runpath_list (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) { - if (! is_elf_hash_table (info)) + if (! is_elf_hash_table (info->hash)) return NULL; return elf_hash_table (info)->runpath; } @@ -3101,7 +3103,7 @@ _bfd_elf_compute_section_file_positions /* sh_offset is set in assign_file_positions_except_relocs. */ shstrtab_hdr->sh_addralign = 1; - if (!assign_file_positions_except_relocs (abfd)) + if (!assign_file_positions_except_relocs (abfd, link_info)) return FALSE; if (link_info == NULL && bfd_get_symcount (abfd) > 0) @@ -3574,7 +3576,7 @@ elf_sort_sections (const void *arg1, con the file header, and writes out the program headers. */ static bfd_boolean -assign_file_positions_for_segments (bfd *abfd) +assign_file_positions_for_segments (bfd *abfd, struct bfd_link_info *link_info) { const struct elf_backend_data *bed = get_elf_backend_data (abfd); unsigned int count; @@ -3626,7 +3628,7 @@ assign_file_positions_for_segments (bfd if (bed->elf_backend_modify_segment_map) { - if (! (*bed->elf_backend_modify_segment_map) (abfd)) + if (! (*bed->elf_backend_modify_segment_map) (abfd, link_info)) return FALSE; } @@ -4134,7 +4136,8 @@ get_program_header_size (bfd *abfd) We also don't set the positions of the .symtab and .strtab here. */ static bfd_boolean -assign_file_positions_except_relocs (bfd *abfd) +assign_file_positions_except_relocs (bfd *abfd, + struct bfd_link_info *link_info) { struct elf_obj_tdata * const tdata = elf_tdata (abfd); Elf_Internal_Ehdr * const i_ehdrp = elf_elfheader (abfd); @@ -4185,7 +4188,7 @@ assign_file_positions_except_relocs (bfd /* Assign file positions for the loaded sections based on the assignment of sections to segments. */ - if (! assign_file_positions_for_segments (abfd)) + if (! assign_file_positions_for_segments (abfd, link_info)) return FALSE; /* Assign file positions for the other sections. */ @@ -4622,8 +4625,9 @@ copy_private_bfd_data (bfd *ibfd, bfd *o 2. It is an allocated segment, 3. There is an output section associated with it, 4. The section has not already been allocated to a previous segment. - 5. PT_TLS segment includes only SHF_TLS sections. - 6. SHF_TLS sections are only in PT_TLS or PT_LOAD segments. */ + 5. PT_GNU_STACK segments do not include any sections. + 6. PT_TLS segment includes only SHF_TLS sections. + 7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments. */ #define INCLUDE_SECTION_IN_SEGMENT(section, segment, bed) \ ((((segment->p_paddr \ ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr) \ @@ -4631,6 +4635,7 @@ copy_private_bfd_data (bfd *ibfd, bfd *o && (section->flags & SEC_ALLOC) != 0) \ || IS_COREFILE_NOTE (segment, section)) \ && section->output_section != NULL \ + && segment->p_type != PT_GNU_STACK \ && (segment->p_type != PT_TLS \ || (section->flags & SEC_THREAD_LOCAL)) \ && (segment->p_type == PT_LOAD \ @@ -4674,7 +4679,7 @@ copy_private_bfd_data (bfd *ibfd, bfd *o if (IS_SOLARIS_PT_INTERP (segment, section)) { /* Mininal change so that the normal section to segment - assigment code will work. */ + assignment code will work. */ segment->p_vaddr = section->vma; break; } @@ -6095,7 +6100,7 @@ _bfd_elf_sizeof_headers (bfd *abfd, bfd_ bfd_boolean _bfd_elf_set_section_contents (bfd *abfd, sec_ptr section, - void *location, + const void *location, file_ptr offset, bfd_size_type count) { @@ -6239,7 +6244,7 @@ _bfd_elf_close_and_cleanup (bfd *abfd) bfd_reloc_status_type _bfd_elf_rel_vtable_reloc_fn (bfd *abfd ATTRIBUTE_UNUSED, arelent *re ATTRIBUTE_UNUSED, - struct symbol_cache_entry *symbol ATTRIBUTE_UNUSED, + struct bfd_symbol *symbol ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED, asection *is ATTRIBUTE_UNUSED, bfd *obfd ATTRIBUTE_UNUSED, char **errmsg ATTRIBUTE_UNUSED) { @@ -6833,7 +6838,8 @@ elfcore_grok_netbsd_procinfo (bfd *abfd, elf_tdata (abfd)->core_command = _bfd_elfcore_strndup (abfd, note->descdata + 0x7c, 31); - return TRUE; + return elfcore_make_note_pseudosection (abfd, ".note.netbsdcore.procinfo", + note); } static bfd_boolean @@ -7367,9 +7373,10 @@ _bfd_elf_reloc_type_class (const Elf_Int bfd_vma _bfd_elf_rela_local_sym (bfd *abfd, Elf_Internal_Sym *sym, - asection *sec, + asection **psec, Elf_Internal_Rela *rel) { + asection *sec = *psec; bfd_vma relocation; relocation = (sec->output_section->vma @@ -7379,16 +7386,14 @@ _bfd_elf_rela_local_sym (bfd *abfd, && ELF_ST_TYPE (sym->st_info) == STT_SECTION && sec->sec_info_type == ELF_INFO_TYPE_MERGE) { - asection *msec; - - msec = sec; rel->r_addend = - _bfd_merged_section_offset (abfd, &msec, + _bfd_merged_section_offset (abfd, psec, elf_section_data (sec)->sec_info, sym->st_value + rel->r_addend, - 0) - - relocation; - rel->r_addend += msec->output_section->vma + msec->output_offset; + 0); + sec = *psec; + rel->r_addend -= relocation; + rel->r_addend += sec->output_section->vma + sec->output_offset; } return relocation; } diff -uprN binutils-2.14.90.0.7/bfd/elf32-am33lin.c binutils-2.14.90.0.8/bfd/elf32-am33lin.c --- binutils-2.14.90.0.7/bfd/elf32-am33lin.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-am33lin.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* Matsushita AM33/2.0 support for 32-bit GNU/Linux ELF - Copyright 2001 + Copyright 2003 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/elf32-arm.h binutils-2.14.90.0.8/bfd/elf32-arm.h --- binutils-2.14.90.0.7/bfd/elf32-arm.h 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-arm.h 2004-01-14 13:07:43.000000000 -0800 @@ -84,6 +84,12 @@ static struct bfd_hash_entry * elf32_arm static void arm_add_to_rel PARAMS ((bfd *, bfd_byte *, reloc_howto_type *, bfd_signed_vma)); #endif +static bfd_boolean allocate_dynrelocs + PARAMS ((struct elf_link_hash_entry *h, PTR inf)); +static bfd_boolean create_got_section + PARAMS ((bfd * dynobj, struct bfd_link_info * info)); +static bfd_boolean elf32_arm_create_dynamic_sections + PARAMS ((bfd * dynobj, struct bfd_link_info * info)); static enum elf_reloc_type_class elf32_arm_reloc_type_class PARAMS ((const Elf_Internal_Rela *)); static bfd_boolean elf32_arm_object_p @@ -119,6 +125,12 @@ bfd_boolean bfd_elf32_arm_process_before section. */ #define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1" +#ifdef FOUR_WORD_PLT + +/* The size in bytes of the special first entry in the procedure + linkage table. */ +#define PLT_HEADER_SIZE 16 + /* The size in bytes of an entry in the procedure linkage table. */ #define PLT_ENTRY_SIZE 16 @@ -126,23 +138,56 @@ bfd_boolean bfd_elf32_arm_process_before this. It is set up so that any shared library function that is called before the relocation has been set up calls the dynamic linker first. */ -static const bfd_vma elf32_arm_plt0_entry [PLT_ENTRY_SIZE / 4] = +static const bfd_vma elf32_arm_plt0_entry [PLT_HEADER_SIZE / 4] = + { + 0xe52de004, /* str lr, [sp, #-4]! */ + 0xe59fe010, /* ldr lr, [pc, #16] */ + 0xe08fe00e, /* add lr, pc, lr */ + 0xe5bef008, /* ldr pc, [lr, #8]! */ + }; + +/* Subsequent entries in a procedure linkage table look like + this. */ +static const bfd_vma elf32_arm_plt_entry [PLT_ENTRY_SIZE / 4] = + { + 0xe28fc600, /* add ip, pc, #NN */ + 0xe28cca00, /* add ip, ip, #NN */ + 0xe5bcf000, /* ldr pc, [ip, #NN]! */ + 0x00000000, /* unused */ + }; + +#else + +/* The size in bytes of the special first entry in the procedure + linkage table. */ +#define PLT_HEADER_SIZE 20 + +/* The size in bytes of an entry in the procedure linkage table. */ +#define PLT_ENTRY_SIZE 12 + +/* The first entry in a procedure linkage table looks like + this. It is set up so that any shared library function that is + called before the relocation has been set up calls the dynamic + linker first. */ +static const bfd_vma elf32_arm_plt0_entry [PLT_HEADER_SIZE / 4] = { - 0xe52de004, /* str lr, [sp, #-4]! */ - 0xe59fe010, /* ldr lr, [pc, #16] */ - 0xe08fe00e, /* add lr, pc, lr */ - 0xe5bef008 /* ldr pc, [lr, #8]! */ + 0xe52de004, /* str lr, [sp, #-4]! */ + 0xe59fe004, /* ldr lr, [pc, #4] */ + 0xe08fe00e, /* add lr, pc, lr */ + 0xe5bef008, /* ldr pc, [lr, #8]! */ + 0x00000000, /* &GOT[0] - . */ }; /* Subsequent entries in a procedure linkage table look like this. */ static const bfd_vma elf32_arm_plt_entry [PLT_ENTRY_SIZE / 4] = - { - 0xe59fc004, /* ldr ip, [pc, #4] */ - 0xe08fc00c, /* add ip, pc, ip */ - 0xe59cf000, /* ldr pc, [ip] */ - 0x00000000 /* offset to symbol in got */ - }; + { + 0xe28fc600, /* add ip, pc, #0xNN00000 */ + 0xe28cca00, /* add ip, ip, #0xNN000 */ + 0xe5bcf000, /* ldr pc, [ip, #0xNNN]! */ + }; + +#endif /* The ARM linker needs to keep track of the number of relocs that it decides to copy in check_relocs for each symbol. This is so that @@ -152,10 +197,10 @@ static const bfd_vma elf32_arm_plt_entry /* This structure keeps track of the number of PC relative relocs we have copied for a given symbol. */ -struct elf32_arm_pcrel_relocs_copied +struct elf32_arm_relocs_copied { /* Next section. */ - struct elf32_arm_pcrel_relocs_copied * next; + struct elf32_arm_relocs_copied * next; /* A section in dynobj. */ asection * section; /* Number of relocs copied in this section. */ @@ -168,13 +213,9 @@ struct elf32_arm_link_hash_entry struct elf_link_hash_entry root; /* Number of PC relative relocs copied for this symbol. */ - struct elf32_arm_pcrel_relocs_copied * pcrel_relocs_copied; + struct elf32_arm_relocs_copied * relocs_copied; }; -/* Declare this now that the above structures are defined. */ -static bfd_boolean elf32_arm_discard_copies - PARAMS ((struct elf32_arm_link_hash_entry *, PTR)); - /* Traverse an arm ELF linker hash table. */ #define elf32_arm_link_hash_traverse(table, func, info) \ (elf_link_hash_traverse \ @@ -192,18 +233,30 @@ struct elf32_arm_link_hash_table /* The main hash table. */ struct elf_link_hash_table root; - /* The size in bytes of the section containg the Thumb-to-ARM glue. */ + /* The size in bytes of the section containing the Thumb-to-ARM glue. */ bfd_size_type thumb_glue_size; - /* The size in bytes of the section containg the ARM-to-Thumb glue. */ + /* The size in bytes of the section containing the ARM-to-Thumb glue. */ bfd_size_type arm_glue_size; - /* An arbitary input BFD chosen to hold the glue sections. */ + /* An arbitrary input BFD chosen to hold the glue sections. */ bfd * bfd_of_glue_owner; /* A boolean indicating whether knowledge of the ARM's pipeline length should be applied by the linker. */ int no_pipeline_knowledge; + + /* Short-cuts to get to dynamic linker sections. */ + asection *sgot; + asection *sgotplt; + asection *srelgot; + asection *splt; + asection *srelplt; + asection *sdynbss; + asection *srelbss; + + /* Small local sym to section mapping cache. */ + struct sym_sec_cache sym_sec; }; /* Create an entry in an ARM ELF linker hash table. */ @@ -231,11 +284,120 @@ elf32_arm_link_hash_newfunc (entry, tabl _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret, table, string)); if (ret != (struct elf32_arm_link_hash_entry *) NULL) - ret->pcrel_relocs_copied = NULL; + ret->relocs_copied = NULL; return (struct bfd_hash_entry *) ret; } +/* Create .got, .gotplt, and .rel.got sections in DYNOBJ, and set up + shortcuts to them in our hash table. */ + +static bfd_boolean +create_got_section (dynobj, info) + bfd *dynobj; + struct bfd_link_info *info; +{ + struct elf32_arm_link_hash_table *htab; + + if (! _bfd_elf_create_got_section (dynobj, info)) + return FALSE; + + htab = elf32_arm_hash_table (info); + htab->sgot = bfd_get_section_by_name (dynobj, ".got"); + htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); + if (!htab->sgot || !htab->sgotplt) + abort (); + + htab->srelgot = bfd_make_section (dynobj, ".rel.got"); + if (htab->srelgot == NULL + || ! bfd_set_section_flags (dynobj, htab->srelgot, + (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS + | SEC_IN_MEMORY | SEC_LINKER_CREATED + | SEC_READONLY)) + || ! bfd_set_section_alignment (dynobj, htab->srelgot, 2)) + return FALSE; + return TRUE; +} + +/* Create .plt, .rel.plt, .got, .got.plt, .rel.got, .dynbss, and + .rel.bss sections in DYNOBJ, and set up shortcuts to them in our + hash table. */ + +static bfd_boolean +elf32_arm_create_dynamic_sections (dynobj, info) + bfd *dynobj; + struct bfd_link_info *info; +{ + struct elf32_arm_link_hash_table *htab; + + htab = elf32_arm_hash_table (info); + if (!htab->sgot && !create_got_section (dynobj, info)) + return FALSE; + + if (!_bfd_elf_create_dynamic_sections (dynobj, info)) + return FALSE; + + htab->splt = bfd_get_section_by_name (dynobj, ".plt"); + htab->srelplt = bfd_get_section_by_name (dynobj, ".rel.plt"); + htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss"); + if (!info->shared) + htab->srelbss = bfd_get_section_by_name (dynobj, ".rel.bss"); + + if (!htab->splt || !htab->srelplt || !htab->sdynbss + || (!info->shared && !htab->srelbss)) + abort (); + + return TRUE; +} + +/* Copy the extra info we tack onto an elf_link_hash_entry. */ + +static void +elf32_arm_copy_indirect_symbol (const struct elf_backend_data *bed, + struct elf_link_hash_entry *dir, + struct elf_link_hash_entry *ind) +{ + struct elf32_arm_link_hash_entry *edir, *eind; + + edir = (struct elf32_arm_link_hash_entry *) dir; + eind = (struct elf32_arm_link_hash_entry *) ind; + + if (eind->relocs_copied != NULL) + { + if (edir->relocs_copied != NULL) + { + struct elf32_arm_relocs_copied **pp; + struct elf32_arm_relocs_copied *p; + + if (ind->root.type == bfd_link_hash_indirect) + abort (); + + /* Add reloc counts against the weak sym to the strong sym + list. Merge any entries against the same section. */ + for (pp = &eind->relocs_copied; (p = *pp) != NULL; ) + { + struct elf32_arm_relocs_copied *q; + + for (q = edir->relocs_copied; q != NULL; q = q->next) + if (q->section == p->section) + { + q->count += p->count; + *pp = p->next; + break; + } + if (q == NULL) + pp = &p->next; + } + *pp = edir->relocs_copied; + } + + edir->relocs_copied = eind->relocs_copied; + eind->relocs_copied = NULL; + } + + _bfd_elf_link_hash_copy_indirect (bed, dir, ind); +} + /* Create an ARM elf linker hash table. */ static struct bfd_link_hash_table * @@ -256,10 +418,18 @@ elf32_arm_link_hash_table_create (abfd) return NULL; } + ret->sgot = NULL; + ret->sgotplt = NULL; + ret->srelgot = NULL; + ret->splt = NULL; + ret->srelplt = NULL; + ret->sdynbss = NULL; + ret->srelbss = NULL; ret->thumb_glue_size = 0; ret->arm_glue_size = 0; ret->bfd_of_glue_owner = NULL; ret->no_pipeline_knowledge = 0; + ret->sym_sec.abfd = NULL; return &ret->root.root; } @@ -792,7 +962,7 @@ error_return: instruction. It takes two thumb instructions to encode the target address. Each has - 11 bits to invest. The upper 11 bits are stored in one (identifed by + 11 bits to invest. The upper 11 bits are stored in one (identified by H-0.. see below), the lower 11 bits are stored in the other (identified by H-1). @@ -1134,16 +1304,44 @@ elf32_arm_final_link_relocate (howto, in #ifndef OLD_ARM_ABI case R_ARM_XPC25: #endif + case R_ARM_PLT32: + /* r_symndx will be zero only for relocs against symbols + from removed linkonce sections, or sections discarded by + a linker script. */ + if (r_symndx == 0) + return bfd_reloc_ok; + + /* Handle relocations which should use the PLT entry. ABS32/REL32 + will use the symbol's value, which may point to a PLT entry, but we + don't need to handle that here. If we created a PLT entry, all + branches in this object should go to it. */ + if ((r_type != R_ARM_ABS32 && r_type != R_ARM_REL32) + && h != NULL + && splt != NULL + && h->plt.offset != (bfd_vma) -1) + { + /* If we've created a .plt section, and assigned a PLT entry to + this function, it should not be known to bind locally. If + it were, we would have cleared the PLT entry. */ + BFD_ASSERT (!SYMBOL_CALLS_LOCAL (info, h)); + + value = (splt->output_section->vma + + splt->output_offset + + h->plt.offset); + return _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, rel->r_offset, value, + (bfd_vma) 0); + } + /* When generating a shared object, these relocations are copied into the output file to be resolved at run time. */ if (info->shared - && r_symndx != 0 - && (r_type != R_ARM_PC24 - || (h != NULL - && h->dynindx != -1 - && (! info->symbolic - || (h->elf_link_hash_flags - & ELF_LINK_HASH_DEF_REGULAR) == 0)))) + && (input_section->flags & SEC_ALLOC) + && (h == NULL + || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT + || h->root.type != bfd_link_hash_undefweak) + && r_type != R_ARM_PC24 + && r_type != R_ARM_PLT32) { Elf_Internal_Rela outrel; bfd_byte *loc; @@ -1184,30 +1382,18 @@ elf32_arm_final_link_relocate (howto, in if (skip) memset (&outrel, 0, sizeof outrel); - else if (r_type == R_ARM_PC24) - { - BFD_ASSERT (h != NULL && h->dynindx != -1); - if ((input_section->flags & SEC_ALLOC) == 0) - relocate = TRUE; - outrel.r_info = ELF32_R_INFO (h->dynindx, R_ARM_PC24); - } + else if (h != NULL + && h->dynindx != -1 + && (!info->shared + || !info->symbolic + || (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0)) + outrel.r_info = ELF32_R_INFO (h->dynindx, r_type); else { - if (h == NULL - || ((info->symbolic || h->dynindx == -1) - && (h->elf_link_hash_flags - & ELF_LINK_HASH_DEF_REGULAR) != 0)) - { - relocate = TRUE; - outrel.r_info = ELF32_R_INFO (0, R_ARM_RELATIVE); - } - else - { - BFD_ASSERT (h->dynindx != -1); - if ((input_section->flags & SEC_ALLOC) == 0) - relocate = TRUE; - outrel.r_info = ELF32_R_INFO (h->dynindx, R_ARM_ABS32); - } + /* This symbol is local, or marked to become local. */ + relocate = TRUE; + outrel.r_info = ELF32_R_INFO (0, R_ARM_RELATIVE); } loc = sreloc->contents; @@ -1230,6 +1416,7 @@ elf32_arm_final_link_relocate (howto, in case R_ARM_XPC25: /* Arm BLX instruction. */ #endif case R_ARM_PC24: /* Arm B/BL instruction */ + case R_ARM_PLT32: #ifndef OLD_ARM_ABI if (r_type == R_ARM_XPC25) { @@ -1617,16 +1804,17 @@ elf32_arm_final_link_relocate (howto, in if (h != NULL) { bfd_vma off; - bfd_boolean dyn = elf_hash_table (info)->dynamic_sections_created; + bfd_boolean dyn; off = h->got.offset; BFD_ASSERT (off != (bfd_vma) -1); + dyn = globals->root.dynamic_sections_created; - if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h) + if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h) || (info->shared - && (info->symbolic || h->dynindx == -1 - || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL)) - && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))) + && SYMBOL_REFERENCES_LOCAL (info, h)) + || (ELF_ST_VISIBILITY (h->other) + && h->root.type == bfd_link_hash_undefweak)) { /* This is actually a static link, or it is a -Bsymbolic link and the symbol is defined locally. We must initialize this @@ -1701,36 +1889,6 @@ elf32_arm_final_link_relocate (howto, in contents, rel->r_offset, value, (bfd_vma) 0); - case R_ARM_PLT32: - /* Relocation is to the entry for this symbol in the - procedure linkage table. */ - - /* Resolve a PLT32 reloc against a local symbol directly, - without using the procedure linkage table. */ - if (h == NULL) - return _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, rel->r_offset, value, - (bfd_vma) 0); - - if (h->plt.offset == (bfd_vma) -1) - /* We didn't make a PLT entry for this symbol. This - happens when statically linking PIC code, or when - using -Bsymbolic. */ - return _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, rel->r_offset, value, - (bfd_vma) 0); - - BFD_ASSERT(splt != NULL); - if (splt == NULL) - return bfd_reloc_notsupported; - - value = (splt->output_section->vma - + splt->output_offset - + h->plt.offset); - return _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, rel->r_offset, value, - (bfd_vma) 0); - case R_ARM_SBREL32: return bfd_reloc_notsupported; @@ -1958,7 +2116,7 @@ elf32_arm_relocate_section (output_bfd, bfd_put_32 (input_bfd, value, contents + rel->r_offset); } #else - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); #endif } else @@ -1983,9 +2141,10 @@ elf32_arm_relocate_section (output_bfd, case R_ARM_THM_PC22: if (info->shared && ( - (!info->symbolic && h->dynindx != -1) + (!info->symbolic && h->dynindx != -1) || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0 ) + && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && ((input_section->flags & SEC_ALLOC) != 0 /* DWARF will emit R_ARM_ABS32 relocations in its sections against symbols defined externally @@ -2440,7 +2599,7 @@ elf32_arm_print_private_bfd_data (abfd, switch (EF_ARM_EABI_VERSION (flags)) { case EF_ARM_EABI_UNKNOWN: - /* The following flag bits are GNU extenstions and not part of the + /* The following flag bits are GNU extensions and not part of the official ARM ELF extended ABI. Hence they are only decoded if the EABI version is not set. */ if (flags & EF_ARM_INTERWORK) @@ -2603,7 +2762,76 @@ elf32_arm_gc_sweep_hook (abfd, info, sec asection *sec ATTRIBUTE_UNUSED; const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED; { - /* We don't support garbage collection of GOT and PLT relocs yet. */ + Elf_Internal_Shdr *symtab_hdr; + struct elf_link_hash_entry **sym_hashes; + bfd_signed_vma *local_got_refcounts; + const Elf_Internal_Rela *rel, *relend; + unsigned long r_symndx; + struct elf_link_hash_entry *h; + + elf_section_data (sec)->local_dynrel = NULL; + + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + local_got_refcounts = elf_local_got_refcounts (abfd); + + relend = relocs + sec->reloc_count; + for (rel = relocs; rel < relend; rel++) + switch (ELF32_R_TYPE (rel->r_info)) + { + case R_ARM_GOT32: + r_symndx = ELF32_R_SYM (rel->r_info); + if (r_symndx >= symtab_hdr->sh_info) + { + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + if (h->got.refcount > 0) + h->got.refcount -= 1; + } + else if (local_got_refcounts != NULL) + { + if (local_got_refcounts[r_symndx] > 0) + local_got_refcounts[r_symndx] -= 1; + } + break; + + case R_ARM_ABS32: + case R_ARM_REL32: + case R_ARM_PC24: + case R_ARM_PLT32: + r_symndx = ELF32_R_SYM (rel->r_info); + if (r_symndx >= symtab_hdr->sh_info) + { + struct elf32_arm_link_hash_entry *eh; + struct elf32_arm_relocs_copied **pp; + struct elf32_arm_relocs_copied *p; + + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + + if (h->plt.refcount > 0) + h->plt.refcount -= 1; + + if (ELF32_R_TYPE (rel->r_info) == R_ARM_ABS32 + || ELF32_R_TYPE (rel->r_info) == R_ARM_REL32) + { + eh = (struct elf32_arm_link_hash_entry *) h; + + for (pp = &eh->relocs_copied; (p = *pp) != NULL; + pp = &p->next) + if (p->section == sec) + { + p->count -= 1; + if (p->count == 0) + *pp = p->next; + break; + } + } + } + break; + + default: + break; + } + return TRUE; } @@ -2622,13 +2850,15 @@ elf32_arm_check_relocs (abfd, info, sec, const Elf_Internal_Rela *rel; const Elf_Internal_Rela *rel_end; bfd *dynobj; - asection *sgot, *srelgot, *sreloc; + asection *sreloc; bfd_vma *local_got_offsets; + struct elf32_arm_link_hash_table *htab; if (info->relocatable) return TRUE; - sgot = srelgot = sreloc = NULL; + htab = elf32_arm_hash_table (info); + sreloc = NULL; dynobj = elf_hash_table (info)->dynobj; local_got_offsets = elf_local_got_offsets (abfd); @@ -2653,126 +2883,74 @@ elf32_arm_check_relocs (abfd, info, sec, else h = sym_hashes[r_symndx - symtab_hdr->sh_info]; - /* Some relocs require a global offset table. */ - if (dynobj == NULL) - { - switch (ELF32_R_TYPE (rel->r_info)) - { - case R_ARM_GOT32: - case R_ARM_GOTOFF: - case R_ARM_GOTPC: - elf_hash_table (info)->dynobj = dynobj = abfd; - if (! _bfd_elf_create_got_section (dynobj, info)) - return FALSE; - break; - - default: - break; - } - } - switch (ELF32_R_TYPE (rel->r_info)) { case R_ARM_GOT32: /* This symbol requires a global offset table entry. */ - if (sgot == NULL) - { - sgot = bfd_get_section_by_name (dynobj, ".got"); - BFD_ASSERT (sgot != NULL); - } - - /* Get the got relocation section if necessary. */ - if (srelgot == NULL - && (h != NULL || info->shared)) - { - srelgot = bfd_get_section_by_name (dynobj, ".rel.got"); - - /* If no got relocation section, make one and initialize. */ - if (srelgot == NULL) - { - srelgot = bfd_make_section (dynobj, ".rel.got"); - if (srelgot == NULL - || ! bfd_set_section_flags (dynobj, srelgot, - (SEC_ALLOC - | SEC_LOAD - | SEC_HAS_CONTENTS - | SEC_IN_MEMORY - | SEC_LINKER_CREATED - | SEC_READONLY)) - || ! bfd_set_section_alignment (dynobj, srelgot, 2)) - return FALSE; - } - } - if (h != NULL) { - if (h->got.offset != (bfd_vma) -1) - /* We have already allocated space in the .got. */ - break; - - h->got.offset = sgot->_raw_size; - - /* Make sure this symbol is output as a dynamic symbol. */ - if (h->dynindx == -1) - if (! bfd_elf32_link_record_dynamic_symbol (info, h)) - return FALSE; - - srelgot->_raw_size += sizeof (Elf32_External_Rel); + h->got.refcount++; } else { - /* This is a global offset table entry for a local - symbol. */ - if (local_got_offsets == NULL) + bfd_signed_vma *local_got_refcounts; + + /* This is a global offset table entry for a local symbol. */ + local_got_refcounts = elf_local_got_refcounts (abfd); + if (local_got_refcounts == NULL) { bfd_size_type size; - unsigned int i; size = symtab_hdr->sh_info; - size *= sizeof (bfd_vma); - local_got_offsets = (bfd_vma *) bfd_alloc (abfd, size); - if (local_got_offsets == NULL) + size *= (sizeof (bfd_signed_vma) + sizeof(char)); + local_got_refcounts = ((bfd_signed_vma *) + bfd_zalloc (abfd, size)); + if (local_got_refcounts == NULL) return FALSE; - elf_local_got_offsets (abfd) = local_got_offsets; - for (i = 0; i < symtab_hdr->sh_info; i++) - local_got_offsets[i] = (bfd_vma) -1; + elf_local_got_refcounts (abfd) = local_got_refcounts; } - - if (local_got_offsets[r_symndx] != (bfd_vma) -1) - /* We have already allocated space in the .got. */ - break; - - local_got_offsets[r_symndx] = sgot->_raw_size; - - if (info->shared) - /* If we are generating a shared object, we need to - output a R_ARM_RELATIVE reloc so that the dynamic - linker can adjust this GOT entry. */ - srelgot->_raw_size += sizeof (Elf32_External_Rel); + local_got_refcounts[r_symndx] += 1; } - - sgot->_raw_size += 4; break; - case R_ARM_PLT32: - /* This symbol requires a procedure linkage table entry. We - actually build the entry in adjust_dynamic_symbol, - because this might be a case of linking PIC code which is - never referenced by a dynamic object, in which case we - don't need to generate a procedure linkage table entry - after all. */ - - /* If this is a local symbol, we resolve it directly without - creating a procedure linkage table entry. */ - if (h == NULL) - continue; - - h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; + case R_ARM_GOTOFF: + case R_ARM_GOTPC: + if (htab->sgot == NULL) + { + if (htab->root.dynobj == NULL) + htab->root.dynobj = abfd; + if (!create_got_section (htab->root.dynobj, info)) + return FALSE; + } break; case R_ARM_ABS32: case R_ARM_REL32: case R_ARM_PC24: + case R_ARM_PLT32: + if (h != NULL) + { + /* If this reloc is in a read-only section, we might + need a copy reloc. We can't check reliably at this + stage whether the section is read-only, as input + sections have not yet been mapped to output sections. + Tentatively set the flag for now, and correct in + adjust_dynamic_symbol. */ + if (!info->shared) + h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF; + + /* We may need a .plt entry if the function this reloc + refers to is in a different object. We can't tell for + sure yet, because something later might force the + symbol local. */ + if (ELF32_R_TYPE (rel->r_info) == R_ARM_PC24 + || ELF32_R_TYPE (rel->r_info) == R_ARM_PLT32) + { + h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; + h->plt.refcount += 1; + } + } + /* If we are creating a shared library, and this is a reloc against a global symbol, or a non PC relative reloc against a local symbol, then we need to copy the reloc @@ -2784,14 +2962,18 @@ elf32_arm_check_relocs (abfd, info, sec, possible that DEF_REGULAR is not set now but will be set later (it is never cleared). We account for that possibility below by storing information in the - pcrel_relocs_copied field of the hash table entry. */ + relocs_copied field of the hash table entry. */ if (info->shared - && (ELF32_R_TYPE (rel->r_info) != R_ARM_PC24 - || (h != NULL - && (! info->symbolic - || (h->elf_link_hash_flags - & ELF_LINK_HASH_DEF_REGULAR) == 0)))) + && (sec->flags & SEC_ALLOC) != 0 + && ((ELF32_R_TYPE (rel->r_info) != R_ARM_PC24 + && ELF32_R_TYPE (rel->r_info) != R_ARM_PLT32) + || (h != NULL + && (! info->symbolic + || (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0)))) { + struct elf32_arm_relocs_copied *p, **head; + /* When creating a shared object, we must copy these reloc types into the output file. We create a reloc section in dynobj and make room for this reloc. */ @@ -2825,45 +3007,48 @@ elf32_arm_check_relocs (abfd, info, sec, || ! bfd_set_section_alignment (dynobj, sreloc, 2)) return FALSE; } - if (sec->flags & SEC_READONLY) - info->flags |= DF_TEXTREL; + + elf_section_data (sec)->sreloc = sreloc; } - sreloc->_raw_size += sizeof (Elf32_External_Rel); - /* If we are linking with -Bsymbolic, and this is a - global symbol, we count the number of PC relative - relocations we have entered for this symbol, so that - we can discard them again if the symbol is later - defined by a regular object. Note that this function - is only called if we are using an elf_i386 linker - hash table, which means that h is really a pointer to - an elf_i386_link_hash_entry. */ - if (h != NULL && info->symbolic - && ELF32_R_TYPE (rel->r_info) == R_ARM_PC24) + /* If this is a global symbol, we count the number of + relocations we need for this symbol. */ + if (h != NULL) { - struct elf32_arm_link_hash_entry * eh; - struct elf32_arm_pcrel_relocs_copied * p; - - eh = (struct elf32_arm_link_hash_entry *) h; - - for (p = eh->pcrel_relocs_copied; p != NULL; p = p->next) - if (p->section == sreloc) - break; - + head = &((struct elf32_arm_link_hash_entry *) h)->relocs_copied; + } + else + { + /* Track dynamic relocs needed for local syms too. + We really need local syms available to do this + easily. Oh well. */ + + asection *s; + s = bfd_section_from_r_symndx (abfd, &htab->sym_sec, + sec, r_symndx); + if (s == NULL) + return FALSE; + + head = ((struct elf32_arm_relocs_copied **) + &elf_section_data (s)->local_dynrel); + } + + p = *head; + if (p == NULL || p->section != sec) + { + bfd_size_type amt = sizeof *p; + p = bfd_alloc (htab->root.dynobj, amt); if (p == NULL) - { - p = ((struct elf32_arm_pcrel_relocs_copied *) - bfd_alloc (dynobj, (bfd_size_type) sizeof * p)); - if (p == NULL) - return FALSE; - p->next = eh->pcrel_relocs_copied; - eh->pcrel_relocs_copied = p; - p->section = sreloc; - p->count = 0; - } - - ++p->count; + return FALSE; + p->next = *head; + *head = p; + p->section = sec; + p->count = 0; } + + if (ELF32_R_TYPE (rel->r_info) == R_ARM_ABS32 + || ELF32_R_TYPE (rel->r_info) == R_ARM_REL32) + p->count += 1; } break; @@ -3003,71 +3188,29 @@ elf32_arm_adjust_dynamic_symbol (info, h if (h->type == STT_FUNC || (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0) { - /* If we link a program (not a DSO), we'll get rid of unnecessary - PLT entries; we point to the actual symbols -- even for pic - relocs, because a program built with -fpic should have the same - result as one built without -fpic, specifically considering weak - symbols. - FIXME: m68k and i386 differ here, for unclear reasons. */ - if (! info->shared - && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0) + if (h->plt.refcount <= 0 + || SYMBOL_CALLS_LOCAL (info, h) + || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT + && h->root.type == bfd_link_hash_undefweak)) { /* This case can occur if we saw a PLT32 reloc in an input - file, but the symbol was not defined by a dynamic object. - In such a case, we don't actually need to build a - procedure linkage table, and we can just do a PC32 reloc - instead. */ - BFD_ASSERT ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0); + file, but the symbol was never referred to by a dynamic + object, or if all references were garbage collected. In + such a case, we don't actually need to build a procedure + linkage table, and we can just do a PC24 reloc instead. */ + h->plt.offset = (bfd_vma) -1; h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; - return TRUE; - } - - /* Make sure this symbol is output as a dynamic symbol. */ - if (h->dynindx == -1) - { - if (! bfd_elf32_link_record_dynamic_symbol (info, h)) - return FALSE; } - s = bfd_get_section_by_name (dynobj, ".plt"); - BFD_ASSERT (s != NULL); - - /* If this is the first .plt entry, make room for the special - first entry. */ - if (s->_raw_size == 0) - s->_raw_size += PLT_ENTRY_SIZE; - - /* If this symbol is not defined in a regular file, and we are - not generating a shared library, then set the symbol to this - location in the .plt. This is required to make function - pointers compare as equal between the normal executable and - the shared library. */ - if (! info->shared - && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) - { - h->root.u.def.section = s; - h->root.u.def.value = s->_raw_size; - } - - h->plt.offset = s->_raw_size; - - /* Make room for this entry. */ - s->_raw_size += PLT_ENTRY_SIZE; - - /* We also need to make an entry in the .got.plt section, which - will be placed in the .got section by the linker script. */ - s = bfd_get_section_by_name (dynobj, ".got.plt"); - BFD_ASSERT (s != NULL); - s->_raw_size += 4; - - /* We also need to make an entry in the .rel.plt section. */ - - s = bfd_get_section_by_name (dynobj, ".rel.plt"); - BFD_ASSERT (s != NULL); - s->_raw_size += sizeof (Elf32_External_Rel); - return TRUE; } + else + /* It's possible that we incorrectly decided a .plt reloc was + needed for an R_ARM_PC24 reloc to a non-function sym in + check_relocs. We can't decide accurately between function and + non-function syms in check-relocs; Objects loaded later in + the link may change h->type. So fix it now. */ + h->plt.offset = (bfd_vma) -1; /* If this is a weak symbol, and there is a real definition, the processor independent code will have arranged for us to see the @@ -3142,6 +3285,177 @@ elf32_arm_adjust_dynamic_symbol (info, h return TRUE; } +/* Allocate space in .plt, .got and associated reloc sections for + dynamic relocs. */ + +static bfd_boolean +allocate_dynrelocs (h, inf) + struct elf_link_hash_entry *h; + PTR inf; +{ + struct bfd_link_info *info; + struct elf32_arm_link_hash_table *htab; + struct elf32_arm_link_hash_entry *eh; + struct elf32_arm_relocs_copied *p; + + if (h->root.type == bfd_link_hash_indirect) + return TRUE; + + if (h->root.type == bfd_link_hash_warning) + /* When warning symbols are created, they **replace** the "real" + entry in the hash table, thus we never get to see the real + symbol in a hash traversal. So look at it now. */ + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + info = (struct bfd_link_info *) inf; + htab = elf32_arm_hash_table (info); + + if (htab->root.dynamic_sections_created + && h->plt.refcount > 0) + { + /* Make sure this symbol is output as a dynamic symbol. + Undefined weak syms won't yet be marked as dynamic. */ + if (h->dynindx == -1 + && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) + { + if (! bfd_elf32_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + if (info->shared + || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h)) + { + asection *s = htab->splt; + + /* If this is the first .plt entry, make room for the special + first entry. */ + if (s->_raw_size == 0) + s->_raw_size += PLT_HEADER_SIZE; + + h->plt.offset = s->_raw_size; + + /* If this symbol is not defined in a regular file, and we are + not generating a shared library, then set the symbol to this + location in the .plt. This is required to make function + pointers compare as equal between the normal executable and + the shared library. */ + if (! info->shared + && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) + { + h->root.u.def.section = s; + h->root.u.def.value = h->plt.offset; + } + + /* Make room for this entry. */ + s->_raw_size += PLT_ENTRY_SIZE; + + /* We also need to make an entry in the .got.plt section, which + will be placed in the .got section by the linker script. */ + htab->sgotplt->_raw_size += 4; + + /* We also need to make an entry in the .rel.plt section. */ + htab->srelplt->_raw_size += sizeof (Elf32_External_Rel); + } + else + { + h->plt.offset = (bfd_vma) -1; + h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; + } + } + else + { + h->plt.offset = (bfd_vma) -1; + h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; + } + + if (h->got.refcount > 0) + { + asection *s; + bfd_boolean dyn; + + /* Make sure this symbol is output as a dynamic symbol. + Undefined weak syms won't yet be marked as dynamic. */ + if (h->dynindx == -1 + && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) + { + if (! bfd_elf32_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + s = htab->sgot; + h->got.offset = s->_raw_size; + s->_raw_size += 4; + dyn = htab->root.dynamic_sections_created; + if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT + || h->root.type != bfd_link_hash_undefweak) + && (info->shared + || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))) + htab->srelgot->_raw_size += sizeof (Elf32_External_Rel); + } + else + h->got.offset = (bfd_vma) -1; + + eh = (struct elf32_arm_link_hash_entry *) h; + if (eh->relocs_copied == NULL) + return TRUE; + + /* In the shared -Bsymbolic case, discard space allocated for + dynamic pc-relative relocs against symbols which turn out to be + defined in regular objects. For the normal shared case, discard + space for pc-relative relocs that have become local due to symbol + visibility changes. */ + + if (info->shared) + { + /* Discard relocs on undefined weak syms with non-default + visibility. */ + if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT + && h->root.type == bfd_link_hash_undefweak) + eh->relocs_copied = NULL; + } + else + { + /* For the non-shared case, discard space for relocs against + symbols which turn out to need copy relocs or are not + dynamic. */ + + if ((h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0 + && (((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0 + && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) + || (htab->root.dynamic_sections_created + && (h->root.type == bfd_link_hash_undefweak + || h->root.type == bfd_link_hash_undefined)))) + { + /* Make sure this symbol is output as a dynamic symbol. + Undefined weak syms won't yet be marked as dynamic. */ + if (h->dynindx == -1 + && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) + { + if (! bfd_elf32_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + /* If that succeeded, we know we'll be keeping all the + relocs. */ + if (h->dynindx != -1) + goto keep; + } + + eh->relocs_copied = NULL; + + keep: ; + } + + /* Finally, allocate space. */ + for (p = eh->relocs_copied; p != NULL; p = p->next) + { + asection *sreloc = elf_section_data (p->section)->sreloc; + sreloc->_raw_size += p->count * sizeof (Elf32_External_Rel); + } + + return TRUE; +} + /* Set the sizes of the dynamic sections. */ static bfd_boolean @@ -3153,14 +3467,17 @@ elf32_arm_size_dynamic_sections (output_ asection * s; bfd_boolean plt; bfd_boolean relocs; + bfd *ibfd; + struct elf32_arm_link_hash_table *htab; + htab = elf32_arm_hash_table (info); dynobj = elf_hash_table (info)->dynobj; BFD_ASSERT (dynobj != NULL); if (elf_hash_table (info)->dynamic_sections_created) { /* Set the contents of the .interp section to the interpreter. */ - if (! info->shared) + if (info->executable) { s = bfd_get_section_by_name (dynobj, ".interp"); BFD_ASSERT (s != NULL); @@ -3168,26 +3485,74 @@ elf32_arm_size_dynamic_sections (output_ s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER; } } - else - { - /* We may have created entries in the .rel.got section. - However, if we are not creating the dynamic sections, we will - not actually use these entries. Reset the size of .rel.got, - which will cause it to get stripped from the output file - below. */ - s = bfd_get_section_by_name (dynobj, ".rel.got"); - if (s != NULL) - s->_raw_size = 0; - } - - /* If this is a -Bsymbolic shared link, then we need to discard all - PC relative relocs against symbols defined in a regular object. - We allocated space for them in the check_relocs routine, but we - will not fill them in in the relocate_section routine. */ - if (info->shared && info->symbolic) - elf32_arm_link_hash_traverse (elf32_arm_hash_table (info), - elf32_arm_discard_copies, - (PTR) NULL); + + /* Set up .got offsets for local syms, and space for local dynamic + relocs. */ + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + { + bfd_signed_vma *local_got; + bfd_signed_vma *end_local_got; + char *local_tls_type; + bfd_size_type locsymcount; + Elf_Internal_Shdr *symtab_hdr; + asection *srel; + + if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour) + continue; + + for (s = ibfd->sections; s != NULL; s = s->next) + { + struct elf32_arm_relocs_copied *p; + + for (p = *((struct elf32_arm_relocs_copied **) + &elf_section_data (s)->local_dynrel); + p != NULL; + p = p->next) + { + if (!bfd_is_abs_section (p->section) + && bfd_is_abs_section (p->section->output_section)) + { + /* Input section has been discarded, either because + it is a copy of a linkonce section or due to + linker script /DISCARD/, so we'll be discarding + the relocs too. */ + } + else if (p->count != 0) + { + srel = elf_section_data (p->section)->sreloc; + srel->_raw_size += p->count * sizeof (Elf32_External_Rel); + if ((p->section->output_section->flags & SEC_READONLY) != 0) + info->flags |= DF_TEXTREL; + } + } + } + + local_got = elf_local_got_refcounts (ibfd); + if (!local_got) + continue; + + symtab_hdr = &elf_tdata (ibfd)->symtab_hdr; + locsymcount = symtab_hdr->sh_info; + end_local_got = local_got + locsymcount; + s = htab->sgot; + srel = htab->srelgot; + for (; local_got < end_local_got; ++local_got, ++local_tls_type) + { + if (*local_got > 0) + { + *local_got = s->_raw_size; + s->_raw_size += 4; + if (info->shared) + srel->_raw_size += sizeof (Elf32_External_Rel); + } + else + *local_got = (bfd_vma) -1; + } + } + + /* Allocate global sym .plt and .got entries, and space for global + sym dynamic relocs. */ + elf_link_hash_traverse (&htab->root, allocate_dynrelocs, (PTR) info); /* The check_relocs and adjust_dynamic_symbol entry points have determined the sizes of the various dynamic sections. Allocate @@ -3312,33 +3677,6 @@ elf32_arm_size_dynamic_sections (output_ return TRUE; } -/* This function is called via elf32_arm_link_hash_traverse if we are - creating a shared object with -Bsymbolic. It discards the space - allocated to copy PC relative relocs against symbols which are - defined in regular objects. We allocated space for them in the - check_relocs routine, but we won't fill them in in the - relocate_section routine. */ - -static bfd_boolean -elf32_arm_discard_copies (h, ignore) - struct elf32_arm_link_hash_entry * h; - PTR ignore ATTRIBUTE_UNUSED; -{ - struct elf32_arm_pcrel_relocs_copied * s; - - if (h->root.root.type == bfd_link_hash_warning) - h = (struct elf32_arm_link_hash_entry *) h->root.root.u.i.link; - - /* We only discard relocs for symbols defined in a regular object. */ - if ((h->root.elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) - return TRUE; - - for (s = h->pcrel_relocs_copied; s != NULL; s = s->next) - s->section->_raw_size -= s->count * sizeof (Elf32_External_Rel); - - return TRUE; -} - /* Finish up dynamic symbol handling. We set the contents of various dynamic sections here. */ @@ -3362,6 +3700,7 @@ elf32_arm_finish_dynamic_symbol (output_ bfd_vma got_offset; Elf_Internal_Rela rel; bfd_byte *loc; + bfd_vma got_displacement; /* This symbol has an entry in the procedure linkage table. Set it up. */ @@ -3377,35 +3716,43 @@ elf32_arm_finish_dynamic_symbol (output_ corresponds to this symbol. This is the index of this symbol in all the symbols for which we are making plt entries. The first entry in the procedure linkage table is reserved. */ - plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1; + plt_index = (h->plt.offset - PLT_HEADER_SIZE) / PLT_ENTRY_SIZE; /* Get the offset into the .got table of the entry that corresponds to this function. Each .got entry is 4 bytes. The first three are reserved. */ got_offset = (plt_index + 3) * 4; + /* Calculate the displacement between the PLT slot and the + entry in the GOT. */ + got_displacement = (sgot->output_section->vma + + sgot->output_offset + + got_offset + - splt->output_section->vma + - splt->output_offset + - h->plt.offset + - 8); + + BFD_ASSERT ((got_displacement & 0xf0000000) == 0); + /* Fill in the entry in the procedure linkage table. */ - bfd_put_32 (output_bfd, elf32_arm_plt_entry[0], + bfd_put_32 (output_bfd, elf32_arm_plt_entry[0] | ((got_displacement & 0x0ff00000) >> 20), splt->contents + h->plt.offset + 0); - bfd_put_32 (output_bfd, elf32_arm_plt_entry[1], + bfd_put_32 (output_bfd, elf32_arm_plt_entry[1] | ((got_displacement & 0x000ff000) >> 12), splt->contents + h->plt.offset + 4); - bfd_put_32 (output_bfd, elf32_arm_plt_entry[2], + bfd_put_32 (output_bfd, elf32_arm_plt_entry[2] | (got_displacement & 0x00000fff), splt->contents + h->plt.offset + 8); - bfd_put_32 (output_bfd, - (sgot->output_section->vma - + sgot->output_offset - + got_offset - - splt->output_section->vma - - splt->output_offset - - h->plt.offset - 12), - splt->contents + h->plt.offset + 12); +#ifdef FOUR_WORD_PLT + bfd_put_32 (output_bfd, elf32_arm_plt_entry[3], + splt->contents + h->plt.offset + 12); +#endif /* Fill in the entry in the global offset table. */ bfd_put_32 (output_bfd, (splt->output_section->vma + splt->output_offset), sgot->contents + got_offset); - + /* Fill in the entry in the .rel.plt section. */ rel.r_offset = (sgot->output_section->vma + sgot->output_offset @@ -3446,16 +3793,20 @@ elf32_arm_finish_dynamic_symbol (output_ + sgot->output_offset + (h->got.offset &~ (bfd_vma) 1)); - /* If this is a -Bsymbolic link, and the symbol is defined - locally, we just want to emit a RELATIVE reloc. The entry in - the global offset table will already have been initialized in - the relocate_section function. */ + /* If this is a static link, or it is a -Bsymbolic link and the + symbol is defined locally or was forced to be local because + of a version file, we just want to emit a RELATIVE reloc. + The entry in the global offset table will already have been + initialized in the relocate_section function. */ if (info->shared - && (info->symbolic || h->dynindx == -1) - && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)) - rel.r_info = ELF32_R_INFO (0, R_ARM_RELATIVE); + && SYMBOL_REFERENCES_LOCAL (info, h)) + { + BFD_ASSERT((h->got.offset & 1) != 0); + rel.r_info = ELF32_R_INFO (0, R_ARM_RELATIVE); + } else { + BFD_ASSERT((h->got.offset & 1) == 0); bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + h->got.offset); rel.r_info = ELF32_R_INFO (h->dynindx, R_ARM_GLOB_DAT); } @@ -3588,7 +3939,7 @@ elf32_arm_finish_dynamic_sections (outpu name = info->fini_function; get_sym: /* If it wasn't set by elf_bfd_final_link - then there is nothing to ajdust. */ + then there is nothing to adjust. */ if (dyn.d_un.d_val != 0) { struct elf_link_hash_entry * eh; @@ -3609,10 +3960,26 @@ elf32_arm_finish_dynamic_sections (outpu /* Fill in the first entry in the procedure linkage table. */ if (splt->_raw_size > 0) { + bfd_vma got_displacement; + + /* Calculate the displacement between the PLT slot and &GOT[0]. */ + got_displacement = (sgot->output_section->vma + + sgot->output_offset + - splt->output_section->vma + - splt->output_offset + - 16); + bfd_put_32 (output_bfd, elf32_arm_plt0_entry[0], splt->contents + 0); bfd_put_32 (output_bfd, elf32_arm_plt0_entry[1], splt->contents + 4); bfd_put_32 (output_bfd, elf32_arm_plt0_entry[2], splt->contents + 8); bfd_put_32 (output_bfd, elf32_arm_plt0_entry[3], splt->contents + 12); +#ifdef FOUR_WORD_PLT + /* The displacement value goes in the otherwise-unused last word of + the second entry. */ + bfd_put_32 (output_bfd, got_displacement, splt->contents + 28); +#else + bfd_put_32 (output_bfd, got_displacement, splt->contents + 16); +#endif } /* UnixWare sets the entsize of .plt to 4, although that doesn't @@ -3714,7 +4081,7 @@ elf32_arm_final_write_processing (abfd, #define elf_backend_check_relocs elf32_arm_check_relocs #define elf_backend_relocate_section elf32_arm_relocate_section #define elf_backend_adjust_dynamic_symbol elf32_arm_adjust_dynamic_symbol -#define elf_backend_create_dynamic_sections _bfd_elf_create_dynamic_sections +#define elf_backend_create_dynamic_sections elf32_arm_create_dynamic_sections #define elf_backend_finish_dynamic_symbol elf32_arm_finish_dynamic_symbol #define elf_backend_finish_dynamic_sections elf32_arm_finish_dynamic_sections #define elf_backend_size_dynamic_sections elf32_arm_size_dynamic_sections @@ -3723,7 +4090,9 @@ elf32_arm_final_write_processing (abfd, #define elf_backend_object_p elf32_arm_object_p #define elf_backend_section_flags elf32_arm_section_flags #define elf_backend_final_write_processing elf32_arm_final_write_processing +#define elf_backend_copy_indirect_symbol elf32_arm_copy_indirect_symbol +#define elf_backend_can_refcount 1 #define elf_backend_can_gc_sections 1 #define elf_backend_plt_readonly 1 #define elf_backend_want_got_plt 1 @@ -3733,7 +4102,6 @@ elf32_arm_final_write_processing (abfd, #endif #define elf_backend_got_header_size 12 -#define elf_backend_plt_header_size PLT_ENTRY_SIZE #include "elf32-target.h" diff -uprN binutils-2.14.90.0.7/bfd/elf32-avr.c binutils-2.14.90.0.8/bfd/elf32-avr.c --- binutils-2.14.90.0.7/bfd/elf32-avr.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-avr.c 2004-01-14 13:07:43.000000000 -0800 @@ -750,7 +750,7 @@ elf32_avr_relocate_section (output_bfd, { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); diff -uprN binutils-2.14.90.0.7/bfd/elf32-cris.c binutils-2.14.90.0.8/bfd/elf32-cris.c --- binutils-2.14.90.0.7/bfd/elf32-cris.c 2003-08-21 08:28:47.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-cris.c 2004-01-14 13:07:43.000000000 -0800 @@ -847,7 +847,7 @@ cris_elf_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); symname = (bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name)); @@ -1292,16 +1292,7 @@ cris_elf_relocate_section (output_bfd, i { long indx; - if (h == NULL) - sec = local_sections[r_symndx]; - else - { - BFD_ASSERT (h->root.type == bfd_link_hash_defined - || (h->root.type - == bfd_link_hash_defweak)); - sec = h->root.u.def.section; - } - if (sec != NULL && bfd_is_abs_section (sec)) + if (bfd_is_abs_section (sec)) indx = 0; else if (sec == NULL || sec->owner == NULL) { @@ -1779,26 +1770,27 @@ cris_elf_gc_sweep_hook (abfd, info, sec, struct elf_link_hash_entry **sym_hashes; bfd_signed_vma *local_got_refcounts; const Elf_Internal_Rela *rel, *relend; - unsigned long r_symndx; - struct elf_link_hash_entry *h; bfd *dynobj; asection *sgot; asection *srelgot; - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - sym_hashes = elf_sym_hashes (abfd); - local_got_refcounts = elf_local_got_refcounts (abfd); - dynobj = elf_hash_table (info)->dynobj; if (dynobj == NULL) return TRUE; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + local_got_refcounts = elf_local_got_refcounts (abfd); + sgot = bfd_get_section_by_name (dynobj, ".got"); srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); relend = relocs + sec->reloc_count; for (rel = relocs; rel < relend; rel++) { + unsigned long r_symndx; + struct elf_link_hash_entry *h; + switch (ELF32_R_TYPE (rel->r_info)) { case R_CRIS_16_GOT: @@ -2647,7 +2639,7 @@ elf_cris_size_dynamic_sections (output_b if (elf_hash_table (info)->dynamic_sections_created) { /* Set the contents of the .interp section to the interpreter. */ - if (!info->shared) + if (info->executable) { s = bfd_get_section_by_name (dynobj, ".interp"); BFD_ASSERT (s != NULL); @@ -3064,7 +3056,6 @@ elf_cris_reloc_type_class (rela) #define elf_backend_plt_readonly 1 #define elf_backend_want_plt_sym 0 #define elf_backend_got_header_size 12 -#define elf_backend_plt_header_size PLT_ENTRY_SIZE /* Later, we my want to optimize RELA entries into REL entries for dynamic linking and libraries (if it's a win of any significance). Until then, diff -uprN binutils-2.14.90.0.7/bfd/elf32-d10v.c binutils-2.14.90.0.8/bfd/elf32-d10v.c --- binutils-2.14.90.0.7/bfd/elf32-d10v.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-d10v.c 2004-01-14 13:07:43.000000000 -0800 @@ -38,6 +38,10 @@ static bfd_boolean elf32_d10v_gc_sweep_h static bfd_boolean elf32_d10v_check_relocs PARAMS ((bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *)); +static bfd_vma extract_rel_addend + PARAMS ((bfd *, bfd_byte *, reloc_howto_type *)); +static void insert_rel_addend + PARAMS ((bfd *, bfd_byte *, reloc_howto_type *, bfd_vma)); static bfd_boolean elf32_d10v_relocate_section PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, @@ -346,6 +350,75 @@ elf32_d10v_check_relocs (abfd, info, sec return TRUE; } +static bfd_vma +extract_rel_addend (abfd, where, howto) + bfd *abfd; + bfd_byte *where; + reloc_howto_type *howto; +{ + bfd_vma insn, val; + + switch (howto->size) + { + case 0: + insn = bfd_get_8 (abfd, where); + break; + case 1: + insn = bfd_get_16 (abfd, where); + break; + case 2: + insn = bfd_get_32 (abfd, where); + break; + default: + abort (); + } + + val = (insn & howto->dst_mask) >> howto->bitpos << howto->rightshift; + /* We should really be testing for signed addends here, but we don't + have that info directly in the howto. */ + if (howto->pc_relative) + { + bfd_vma sign; + sign = howto->dst_mask & (~howto->dst_mask >> 1 | ~(-(bfd_vma) 1 >> 1)); + sign = sign >> howto->bitpos << howto->rightshift; + val = (val ^ sign) - sign; + } + return val; +} + +static void +insert_rel_addend (abfd, where, howto, addend) + bfd *abfd; + bfd_byte *where; + reloc_howto_type *howto; + bfd_vma addend; +{ + bfd_vma insn; + + addend = (addend >> howto->rightshift << howto->bitpos) & howto->dst_mask; + insn = ~howto->dst_mask; + switch (howto->size) + { + case 0: + insn &= bfd_get_8 (abfd, where); + insn |= addend; + bfd_put_8 (abfd, insn, where); + break; + case 1: + insn &= bfd_get_16 (abfd, where); + insn |= addend; + bfd_put_16 (abfd, insn, where); + break; + case 2: + insn &= bfd_get_32 (abfd, where); + insn |= addend; + bfd_put_32 (abfd, insn, where); + break; + default: + abort (); + } +} + /* Relocate a D10V ELF section. */ static bfd_boolean elf32_d10v_relocate_section (output_bfd, info, input_bfd, input_section, @@ -391,20 +464,28 @@ elf32_d10v_relocate_section (output_bfd, if (info->relocatable) { + bfd_vma val; + bfd_byte *where; + /* This is a relocatable link. We don't have to change anything, unless the reloc is against a section symbol, in which case we have to adjust according to where the section symbol winds up in the output section. */ - if (r_symndx < symtab_hdr->sh_info) - { - sym = local_syms + r_symndx; - if (ELF_ST_TYPE (sym->st_info) == STT_SECTION) - { - sec = local_sections[r_symndx]; - rel->r_addend += sec->output_offset + sym->st_value; - } - } + if (r_symndx >= symtab_hdr->sh_info) + continue; + + sym = local_syms + r_symndx; + if (ELF_ST_TYPE (sym->st_info) != STT_SECTION) + continue; + sec = local_sections[r_symndx]; + val = sec->output_offset; + if (val == 0) + continue; + + where = contents + rel->r_offset; + val += extract_rel_addend (input_bfd, where, howto); + insert_rel_addend (input_bfd, where, howto, val); continue; } @@ -416,7 +497,23 @@ elf32_d10v_relocate_section (output_bfd, { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = (sec->output_section->vma + + sec->output_offset + + sym->st_value); + if ((sec->flags & SEC_MERGE) + && ELF_ST_TYPE (sym->st_info) == STT_SECTION) + { + asection *msec; + bfd_vma addend; + bfd_byte *where = contents + rel->r_offset; + + addend = extract_rel_addend (input_bfd, where, howto); + msec = sec; + addend = _bfd_elf_rel_local_sym (output_bfd, sym, &msec, addend); + addend -= relocation; + addend += msec->output_section->vma + msec->output_offset; + insert_rel_addend (input_bfd, where, howto, addend); + } } else { @@ -456,7 +553,7 @@ elf32_d10v_relocate_section (output_bfd, r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents, rel->r_offset, - relocation, rel->r_addend); + relocation, (bfd_vma) 0); if (r != bfd_reloc_ok) { diff -uprN binutils-2.14.90.0.7/bfd/elf32-d30v.c binutils-2.14.90.0.8/bfd/elf32-d30v.c --- binutils-2.14.90.0.7/bfd/elf32-d30v.c 2002-12-16 12:22:51.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-d30v.c 2004-01-14 13:07:43.000000000 -0800 @@ -293,7 +293,7 @@ bfd_elf_d30v_reloc (abfd, reloc_entry, s if (reloc_entry->address > input_section->_cooked_size) return bfd_reloc_outofrange; - /* Work out which section the relocation is targetted at and the + /* Work out which section the relocation is targeted at and the initial relocation command value. */ /* Get symbol value. (Common symbols are special.) */ @@ -402,7 +402,7 @@ bfd_elf_d30v_reloc_21 (abfd, reloc_entry if (reloc_entry->address > input_section->_cooked_size) return bfd_reloc_outofrange; - /* Work out which section the relocation is targetted at and the + /* Work out which section the relocation is targeted at and the initial relocation command value. */ /* Get symbol value. (Common symbols are special.) */ diff -uprN binutils-2.14.90.0.7/bfd/elf32-dlx.c binutils-2.14.90.0.8/bfd/elf32-dlx.c --- binutils-2.14.90.0.7/bfd/elf32-dlx.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-dlx.c 2004-01-14 13:07:43.000000000 -0800 @@ -228,7 +228,7 @@ HOWTO (R_DLX_RELOC_16_LO, /* type */ FALSE); /* pcrel_offset */ -/* The gas default beheaver is not to preform the %hi modifier so that the +/* The gas default behavior is not to preform the %hi modifier so that the GNU assembler can have the lower 16 bits offset placed in the insn, BUT we do like the gas to indicate it is %hi reloc type so when we in the link loader phase we can have the corrected hi16 vale replace the buggous lo16 @@ -493,7 +493,7 @@ elf32_dlx_relocate26 (abfd, reloc_entry More about this table - for dlx elf relocation we do not really need this table, if we have a rtype defined in this table will caused tc_gen_relocate confused and die on us, but if we remove - this table it will caused more problem, so for now simple soulation + this table it will caused more problem, so for now simple solution is to remove those entries which may cause problem. */ struct elf_reloc_map { diff -uprN binutils-2.14.90.0.7/bfd/elf32-fr30.c binutils-2.14.90.0.8/bfd/elf32-fr30.c --- binutils-2.14.90.0.7/bfd/elf32-fr30.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-fr30.c 2004-01-14 13:07:43.000000000 -0800 @@ -552,7 +552,7 @@ fr30_elf_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); diff -uprN binutils-2.14.90.0.7/bfd/elf32-frv.c binutils-2.14.90.0.8/bfd/elf32-frv.c --- binutils-2.14.90.0.7/bfd/elf32-frv.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-frv.c 2004-01-14 13:07:43.000000000 -0800 @@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suit #include "libbfd.h" #include "elf-bfd.h" #include "elf/frv.h" +#include "hashtab.h" /* Forward declarations. */ static bfd_reloc_status_type elf32_frv_relocate_lo16 @@ -236,6 +237,229 @@ static reloc_howto_type elf32_frv_howto_ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ FALSE), /* pcrel_offset */ + + /* A 12-bit signed operand with the GOT offset for the address of + the symbol. */ + HOWTO (R_FRV_GOT12, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOT12", /* name */ + FALSE, /* partial_inplace */ + 0xfff, /* src_mask */ + 0xfff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The upper 16 bits of the GOT offset for the address of the + symbol. */ + HOWTO (R_FRV_GOTHI, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOTHI", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The lower 16 bits of the GOT offset for the address of the + symbol. */ + HOWTO (R_FRV_GOTLO, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOTLO", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The 32-bit address of the canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC", /* name */ + FALSE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* A 12-bit signed operand with the GOT offset for the address of + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOT12, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOT12", /* name */ + FALSE, /* partial_inplace */ + 0xfff, /* src_mask */ + 0xfff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The upper 16 bits of the GOT offset for the address of the + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOTHI, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOTHI", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The lower 16 bits of the GOT offset for the address of the + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOTLO, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOTLO", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The 32-bit address of the canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_VALUE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 64, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_VALUE", /* name */ + FALSE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* A 12-bit signed operand with the GOT offset for the address of + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOTOFF12, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOTOFF12", /* name */ + FALSE, /* partial_inplace */ + 0xfff, /* src_mask */ + 0xfff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The upper 16 bits of the GOT offset for the address of the + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOTOFFHI, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOTOFFHI", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The lower 16 bits of the GOT offset for the address of the + canonical descriptor of a function. */ + HOWTO (R_FRV_FUNCDESC_GOTOFFLO, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_GOTOFFLO", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* A 12-bit signed operand with the GOT offset for the address of + the symbol. */ + HOWTO (R_FRV_GOTOFF12, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOTOFF12", /* name */ + FALSE, /* partial_inplace */ + 0xfff, /* src_mask */ + 0xfff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The upper 16 bits of the GOT offset for the address of the + symbol. */ + HOWTO (R_FRV_GOTOFFHI, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOTOFFHI", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The lower 16 bits of the GOT offset for the address of the + symbol. */ + HOWTO (R_FRV_GOTOFFLO, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_GOTOFFLO", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + }; /* GNU extension to record C++ vtable hierarchy. */ @@ -269,6 +493,54 @@ static reloc_howto_type elf32_frv_vtentr 0, /* src_mask */ 0, /* dst_mask */ FALSE); /* pcrel_offset */ + +/* The following 3 relocations are REL. The only difference to the + entries in the table above are that partial_inplace is TRUE. */ +static reloc_howto_type elf32_frv_rel_32_howto = + HOWTO (R_FRV_32, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_32", /* name */ + TRUE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE); /* pcrel_offset */ + +static reloc_howto_type elf32_frv_rel_funcdesc_howto = + HOWTO (R_FRV_FUNCDESC, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC", /* name */ + TRUE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE); /* pcrel_offset */ + +static reloc_howto_type elf32_frv_rel_funcdesc_value_howto = + HOWTO (R_FRV_FUNCDESC_VALUE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 64, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FRV_FUNCDESC_VALUE", /* name */ + TRUE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE); /* pcrel_offset */ + /* Map BFD reloc types to FRV ELF reloc types. */ #if 0 @@ -291,77 +563,809 @@ static const struct frv_reloc_map frv_re { BFD_RELOC_FRV_GPREL32, R_FRV_GPREL32 }, { BFD_RELOC_FRV_GPRELHI, R_FRV_GPRELHI }, { BFD_RELOC_FRV_GPRELLO, R_FRV_GPRELLO }, + { BFD_RELOC_FRV_GOT12, R_FRV_GOT12 }, + { BFD_RELOC_FRV_GOTHI, R_FRV_GOTHI }, + { BFD_RELOC_FRV_GOTLO, R_FRV_GOTLO }, + { BFD_RELOC_FRV_FUNCDESC, R_FRV_FUNCDESC }, + { BFD_RELOC_FRV_FUNCDESC_GOT12, R_FRV_FUNCDESC_GOT12 }, + { BFD_RELOC_FRV_FUNCDESC_GOTHI, R_FRV_FUNCDESC_GOTHI }, + { BFD_RELOC_FRV_FUNCDESC_GOTLO, R_FRV_FUNCDESC_GOTLO }, + { BFD_RELOC_FRV_FUNCDESC_VALUE, R_FRV_FUNCDESC_VALUE }, + { BFD_RELOC_FRV_FUNCDESC_GOTOFF12, R_FRV_FUNCDESC_GOTOFF12 }, + { BFD_RELOC_FRV_FUNCDESC_GOTOFFHI, R_FRV_FUNCDESC_GOTOFFHI }, + { BFD_RELOC_FRV_FUNCDESC_GOTOFFLO, R_FRV_FUNCDESC_GOTOFFLO }, + { BFD_RELOC_FRV_GOTOFF12, R_FRV_GOTOFF12 }, + { BFD_RELOC_FRV_GOTOFFHI, R_FRV_GOTOFFHI }, + { BFD_RELOC_FRV_GOTOFFLO, R_FRV_GOTOFFLO }, { BFD_RELOC_VTABLE_INHERIT, R_FRV_GNU_VTINHERIT }, { BFD_RELOC_VTABLE_ENTRY, R_FRV_GNU_VTENTRY }, }; #endif -/* Handle an FRV small data reloc. */ -static bfd_reloc_status_type -elf32_frv_relocate_gprel12 (info, input_bfd, input_section, relocation, - contents, value) - struct bfd_link_info *info; - bfd *input_bfd; - asection *input_section; - Elf_Internal_Rela *relocation; - bfd_byte *contents; - bfd_vma value; +/* An extension of the elf hash table data structure, containing some + additional FRV-specific data. */ +struct frv_elf_link_hash_table { - bfd_vma insn; - bfd_vma gp; - struct bfd_link_hash_entry *h; + struct elf_link_hash_table elf; - h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE); + /* A pointer to the .got section. */ + asection *sgot; + /* A pointer to the .rel.got section. */ + asection *sgotrel; + /* A pointer to the .rofixup section. */ + asection *sgotfixup; + /* A pointer to the .plt section. */ + asection *splt; + /* A pointer to the .rel.plt section. */ + asection *spltrel; + /* GOT base offset. */ + bfd_vma got0; + /* Location of the first non-lazy PLT entry, i.e., the number of + bytes taken by lazy PLT entries. */ + bfd_vma plt0; + /* A hash table holding information about which symbols were + referenced with which PIC-related relocations. */ + struct htab *relocs_info; +}; - gp = (h->u.def.value - + h->u.def.section->output_section->vma - + h->u.def.section->output_offset); +/* Get the FRV ELF linker hash table from a link_info structure. */ - value -= input_section->output_section->vma; - value -= (gp - input_section->output_section->vma); +#define frv_hash_table(info) \ + ((struct frv_elf_link_hash_table *) ((info)->hash)) - insn = bfd_get_32 (input_bfd, contents + relocation->r_offset); +#define frv_got_section(info) \ + (frv_hash_table (info)->sgot) +#define frv_gotrel_section(info) \ + (frv_hash_table (info)->sgotrel) +#define frv_gotfixup_section(info) \ + (frv_hash_table (info)->sgotfixup) +#define frv_plt_section(info) \ + (frv_hash_table (info)->splt) +#define frv_pltrel_section(info) \ + (frv_hash_table (info)->spltrel) +#define frv_relocs_info(info) \ + (frv_hash_table (info)->relocs_info) +#define frv_got_initial_offset(info) \ + (frv_hash_table (info)->got0) +#define frv_plt_initial_offset(info) \ + (frv_hash_table (info)->plt0) - value += relocation->r_addend; +/* Create an FRV ELF linker hash table. */ - if ((long) value > 0x7ff || (long) value < -0x800) - return bfd_reloc_overflow; +static struct bfd_link_hash_table * +frv_elf_link_hash_table_create (bfd *abfd) +{ + struct frv_elf_link_hash_table *ret; + bfd_size_type amt = sizeof (struct frv_elf_link_hash_table); - bfd_put_32 (input_bfd, - (insn & 0xfffff000) | (value & 0xfff), - contents + relocation->r_offset); + ret = bfd_zalloc (abfd, amt); + if (ret == NULL) + return NULL; - return bfd_reloc_ok; + if (! _bfd_elf_link_hash_table_init (&ret->elf, abfd, + _bfd_elf_link_hash_newfunc)) + { + free (ret); + return NULL; + } + + return &ret->elf.root; } -/* Handle an FRV small data reloc. for the u12 field. */ +/* Decide whether a reference to a symbol can be resolved locally or + not. If the symbol is protected, we want the local address, but + its function descriptor must be assigned by the dynamic linker. */ +#define FRV_SYM_LOCAL(INFO, H) \ + (_bfd_elf_symbol_refs_local_p ((H), (INFO), 1) \ + || ! elf_hash_table (INFO)->dynamic_sections_created \ + || (H)->root.type == bfd_link_hash_undefweak \ + || (/* The condition below is an ugly hack to get .scommon data to + be regarded as local. For some reason the + ELF_LINK_HASH_DEF_REGULAR bit is not set on such common + symbols, and the SEC_IS_COMMON bit is not set any longer + when we need to perform this test. Hopefully this + approximation is good enough. */ \ + ((H)->root.type == bfd_link_hash_defined \ + || (H)->root.type == bfd_link_hash_defweak) \ + && (H)->root.u.def.section->output_section \ + && ((H)->root.u.def.section->flags & SEC_LINKER_CREATED))) +#define FRV_FUNCDESC_LOCAL(INFO, H) \ + ((H)->dynindx == -1 || ! elf_hash_table (INFO)->dynamic_sections_created) + +/* This structure collects information on what kind of GOT, PLT or + function descriptors are required by relocations that reference a + certain symbol. */ +struct frv_pic_relocs_info +{ + /* The index of the symbol, as stored in the relocation r_info, if + we have a local symbol; -1 otherwise. */ + long symndx; + union + { + /* The input bfd in which the symbol is defined, if it's a local + symbol. */ + bfd *abfd; + /* If symndx == -1, the hash table entry corresponding to a global + symbol (even if it turns out to bind locally, in which case it + should ideally be replaced with section's symndx + addend). */ + struct elf_link_hash_entry *h; + } d; + /* The addend of the relocation that references the symbol. */ + bfd_vma addend; + + /* The fields above are used to identify an entry. The fields below + contain information on how an entry is used and, later on, which + locations it was assigned. */ + /* The following 3 fields record whether the symbol+addend above was + ever referenced with a GOT relocation. The 12 suffix indicates a + GOT12 relocation; los is used for GOTLO relocations that are not + matched by a GOTHI relocation; hilo is used for GOTLO/GOTHI + pairs. */ + unsigned got12:1; + unsigned gotlos:1; + unsigned gothilo:1; + /* Whether a FUNCDESC relocation references symbol+addend. */ + unsigned fd:1; + /* Whether a FUNCDESC_GOT relocation references symbol+addend. */ + unsigned fdgot12:1; + unsigned fdgotlos:1; + unsigned fdgothilo:1; + /* Whether a FUNCDESC_GOTOFF relocation references symbol+addend. */ + unsigned fdgoff12:1; + unsigned fdgofflos:1; + unsigned fdgoffhilo:1; + /* Whether symbol+addend is referenced with GOTOFF12, GOTOFFLO or + GOTOFFHI relocations. The addend doesn't really matter, since we + envision that this will only be used to check whether the symbol + is mapped to the same segment as the got. */ + unsigned gotoff:1; + /* Whether symbol+addend is referenced by a LABEL24 relocation. */ + unsigned call:1; + /* Whether symbol+addend is referenced by a 32 or FUNCDESC_VALUE + relocation. */ + unsigned sym:1; + /* Whether we need a PLT entry for a symbol. Should be implied by + something like: + (call && symndx == -1 && ! FRV_SYM_LOCAL (info, d.h)) */ + unsigned plt:1; + /* Whether a function descriptor should be created in this link unit + for symbol+addend. Should be implied by something like: + (plt || fdgotoff12 || fdgotofflos || fdgotofflohi + || ((fd || fdgot12 || fdgotlos || fdgothilo) + && (symndx != -1 || FRV_FUNCDESC_LOCAL (info, d.h)))) */ + unsigned privfd:1; + /* Whether a lazy PLT entry is needed for this symbol+addend. + Should be implied by something like: + (privfd && symndx == -1 && ! FRV_SYM_LOCAL (info, d.h) + && ! (info->flags & DF_BIND_NOW)) */ + unsigned lazyplt:1; + /* Whether we've already emitted GOT relocations and PLT entries as + needed for this symbol. */ + unsigned done:1; + + /* The number of R_FRV_32, R_FRV_FUNCDESC and R_FRV_FUNCDESC_VALUE + relocations referencing the symbol. */ + unsigned relocs32, relocsfd, relocsfdv; + + /* The offsets of the GOT entries assigned to symbol+addend, to the + function descriptor's address, and to a function descriptor, + respectively. Should be zero if unassigned. The offsets are + counted from the value that will be assigned to the PIC register, + not from the beginning of the .got section. */ + bfd_signed_vma got_entry, fdgot_entry, fd_entry; + /* The offsets of the PLT entries assigned to symbol+addend, + non-lazy and lazy, respectively. If unassigned, should be + (bfd_vma)-1. */ + bfd_vma plt_entry, lzplt_entry; +}; -static bfd_reloc_status_type -elf32_frv_relocate_gprelu12 (info, input_bfd, input_section, relocation, - contents, value) - struct bfd_link_info *info; - bfd *input_bfd; - asection *input_section; - Elf_Internal_Rela *relocation; - bfd_byte *contents; - bfd_vma value; +/* Compute a hash with the key fields of an frv_pic_relocs_info entry. */ +static hashval_t +frv_pic_relocs_info_hash (const void *entry_) { - bfd_vma insn; - bfd_vma gp; - struct bfd_link_hash_entry *h; - bfd_vma mask; + const struct frv_pic_relocs_info *entry = entry_; - h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE); + return (entry->symndx == -1 + ? entry->d.h->root.root.hash + : entry->symndx + entry->d.abfd->id * 257) + entry->addend; +} - gp = (h->u.def.value - + h->u.def.section->output_section->vma - + h->u.def.section->output_offset); +/* Test whether the key fields of two frv_pic_relocs_info entries are + identical. */ +static int +frv_pic_relocs_info_eq (const void *entry1, const void *entry2) +{ + const struct frv_pic_relocs_info *e1 = entry1; + const struct frv_pic_relocs_info *e2 = entry2; - value -= input_section->output_section->vma; - value -= (gp - input_section->output_section->vma); + return e1->symndx == e2->symndx && e1->addend == e2->addend + && (e1->symndx == -1 ? e1->d.h == e2->d.h : e1->d.abfd == e2->d.abfd); +} - insn = bfd_get_32 (input_bfd, contents + relocation->r_offset); +/* Find or create an entry in a hash table HT that matches the key + fields of the given ENTRY. If it's not found, memory for a new + entry is allocated in ABFD's obstack. */ +static struct frv_pic_relocs_info * +frv_pic_relocs_info_find (struct htab *ht, + bfd *abfd, + const struct frv_pic_relocs_info *entry) +{ + struct frv_pic_relocs_info **loc = + (struct frv_pic_relocs_info **) htab_find_slot (ht, entry, INSERT); + + if (*loc) + return *loc; + + *loc = bfd_zalloc (abfd, sizeof (**loc)); + + if (! *loc) + return *loc; + + (*loc)->symndx = entry->symndx; + (*loc)->d = entry->d; + (*loc)->addend = entry->addend; + (*loc)->plt_entry = (bfd_vma)-1; + (*loc)->lzplt_entry = (bfd_vma)-1; + + return *loc; +} + +/* Obtain the address of the entry in HT associated with H's symbol + + addend, creating a new entry if none existed. ABFD is only used + for memory allocation purposes. */ +inline static struct frv_pic_relocs_info * +frv_pic_relocs_info_for_global (struct htab *ht, + bfd *abfd, + struct elf_link_hash_entry *h, + bfd_vma addend) +{ + struct frv_pic_relocs_info entry; + + entry.symndx = -1; + entry.d.h = h; + entry.addend = addend; + + return frv_pic_relocs_info_find (ht, abfd, &entry); +} + +/* Obtain the address of the entry in HT associated with the SYMNDXth + local symbol of the input bfd ABFD, plus the addend, creating a new + entry if none existed. */ +inline static struct frv_pic_relocs_info * +frv_pic_relocs_info_for_local (struct htab *ht, + bfd *abfd, + long symndx, + bfd_vma addend) +{ + struct frv_pic_relocs_info entry; + + entry.symndx = symndx; + entry.d.abfd = abfd; + entry.addend = addend; + + return frv_pic_relocs_info_find (ht, abfd, &entry); +} + +/* Every block of 65535 lazy PLT entries shares a single call to the + resolver, inserted in the 32768th lazy PLT entry (i.e., entry # + 32767, counting from 0). All other lazy PLT entries branch to it + in a single instruction. */ + +#define FRV_LZPLT_BLOCK_SIZE ((bfd_vma) 8 * 65535 + 4) +#define FRV_LZPLT_RESOLV_LOC (8 * 32767) + +/* Add a dynamic relocation to the SRELOC section. */ + +inline static bfd_vma +_frv_add_dyn_reloc (bfd *output_bfd, asection *sreloc, bfd_vma offset, + int reloc_type, long dynindx, bfd_vma addend) +{ + Elf_Internal_Rela outrel; + bfd_vma reloc_offset; + + outrel.r_offset = offset; + outrel.r_info = ELF32_R_INFO (dynindx, reloc_type); + outrel.r_addend = addend; + + reloc_offset = sreloc->reloc_count * sizeof (Elf32_External_Rel); + BFD_ASSERT (reloc_offset < sreloc->_raw_size); + bfd_elf32_swap_reloc_out (output_bfd, &outrel, + sreloc->contents + reloc_offset); + sreloc->reloc_count++; + + return reloc_offset; +} + +/* Add a fixup to the ROFIXUP section. */ + +static bfd_vma +_frv_add_rofixup (bfd *output_bfd, asection *rofixup, bfd_vma offset) +{ + bfd_vma fixup_offset; + + if (rofixup->flags & SEC_EXCLUDE) + return -1; + + fixup_offset = rofixup->reloc_count * 4; + if (rofixup->contents) + { + BFD_ASSERT (fixup_offset < rofixup->_raw_size); + bfd_put_32 (output_bfd, offset, rofixup->contents + fixup_offset); + } + rofixup->reloc_count++; + + return fixup_offset; +} + +/* Find the segment number in which OSEC, and output section, is + located. */ + +static unsigned +_frv_osec_to_segment (bfd *output_bfd, asection *osec) +{ + struct elf_segment_map *m; + Elf_Internal_Phdr *p; + + /* Find the segment that contains the output_section. */ + for (m = elf_tdata (output_bfd)->segment_map, + p = elf_tdata (output_bfd)->phdr; + m != NULL; + m = m->next, p++) + { + int i; + + for (i = m->count - 1; i >= 0; i--) + if (m->sections[i] == osec) + break; + + if (i >= 0) + break; + } + + return p - elf_tdata (output_bfd)->phdr; +} + +inline static bfd_boolean +_frv_osec_readonly_p (bfd *output_bfd, asection *osec) +{ + unsigned seg = _frv_osec_to_segment (output_bfd, osec); + + return ! (elf_tdata (output_bfd)->phdr[seg].p_flags & PF_W); +} + +/* Generate relocations for GOT entries, function descriptors, and + code for PLT and lazy PLT entries. */ + +inline static bfd_boolean +_frv_emit_got_relocs_plt_entries (struct frv_pic_relocs_info *entry, + bfd *output_bfd, + struct bfd_link_info *info, + asection *sec, + Elf_Internal_Sym *sym, + bfd_vma addend) + +{ + bfd_vma fd_lazy_rel_offset = (bfd_vma)-1; + int dynindx = -1; + + if (entry->done) + return TRUE; + entry->done = 1; + + if (entry->got_entry || entry->fdgot_entry || entry->fd_entry) + { + /* If the symbol is dynamic, consider it for dynamic + relocations, otherwise decay to section + offset. */ + if (entry->symndx == -1 && entry->d.h->dynindx != -1) + dynindx = entry->d.h->dynindx; + else + { + if (sec->output_section + && ! bfd_is_abs_section (sec->output_section) + && ! bfd_is_und_section (sec->output_section)) + dynindx = elf_section_data (sec->output_section)->dynindx; + else + dynindx = 0; + } + } + + /* Generate relocation for GOT entry pointing to the symbol. */ + if (entry->got_entry) + { + int idx = dynindx; + bfd_vma ad = addend; + + /* If the symbol is dynamic but binds locally, use + section+offset. */ + if (sec && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h))) + { + if (entry->symndx == -1) + ad += entry->d.h->root.u.def.value; + else + ad += sym->st_value; + ad += sec->output_offset; + if (sec->output_section && elf_section_data (sec->output_section)) + idx = elf_section_data (sec->output_section)->dynindx; + else + idx = 0; + } + + /* If we're linking an executable at a fixed address, we can + omit the dynamic relocation as long as the symbol is local to + this module. */ + if (info->executable && !info->pie + && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h))) + { + if (sec) + ad += sec->output_section->vma; + if (entry->symndx != -1 || + entry->d.h->root.type != bfd_link_hash_undefweak) + _frv_add_rofixup (output_bfd, frv_gotfixup_section (info), + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + + entry->got_entry); + } + else + _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info), + _bfd_elf_section_offset + (output_bfd, info, + frv_got_section (info), + frv_got_initial_offset (info) + + entry->got_entry) + + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset, + R_FRV_32, idx, ad); + + bfd_put_32 (output_bfd, ad, + frv_got_section (info)->contents + + frv_got_initial_offset (info) + + entry->got_entry); + } + + /* Generate relocation for GOT entry pointing to a canonical + function descriptor. */ + if (entry->fdgot_entry) + { + int reloc, idx; + bfd_vma ad; + + /* If the symbol is dynamic and there may be dynamic symbol + resolution because we are or are linked with a shared + library, emit a FUNCDESC relocation such that the dynamic + linker will allocate the function descriptor. */ + if (entry->symndx == -1 && ! FRV_FUNCDESC_LOCAL (info, entry->d.h)) + { + reloc = R_FRV_FUNCDESC; + idx = dynindx; + ad = addend; + if (ad) + return FALSE; + } + else + { + /* Otherwise, we know we have a private function descriptor, + so reference it directly. */ + if (elf_hash_table (info)->dynamic_sections_created) + BFD_ASSERT (entry->privfd); + reloc = R_FRV_32; + idx = elf_section_data (frv_got_section (info)->output_section) + ->dynindx; + ad = frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + entry->fd_entry; + } + + /* If there is room for dynamic symbol resolution, emit the + dynamic relocation. However, if we're linking an executable + at a fixed location, we won't have emitted a dynamic symbol + entry for the got section, so idx will be zero, which means + we can and should compute the address of the private + descriptor ourselves. */ + if (info->executable && !info->pie + && (entry->symndx != -1 || FRV_FUNCDESC_LOCAL (info, entry->d.h))) + { + if (entry->symndx == -1 + && entry->d.h->root.type == bfd_link_hash_undefweak) + ad = 0; + else + { + ad += frv_got_section (info)->output_section->vma; + _frv_add_rofixup (output_bfd, frv_gotfixup_section (info), + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + + entry->fdgot_entry); + } + } + else + _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info), + _bfd_elf_section_offset + (output_bfd, info, + frv_got_section (info), + frv_got_initial_offset (info) + + entry->fdgot_entry) + + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset, + reloc, idx, ad); + + bfd_put_32 (output_bfd, ad, + frv_got_section (info)->contents + + frv_got_initial_offset (info) + + entry->fdgot_entry); + } + + /* Generate relocation to fill in a private function descriptor in + the GOT. */ + if (entry->fd_entry) + { + int idx = dynindx; + bfd_vma ad = addend; + bfd_vma ofst; + long lowword, highword; + + /* If the symbol is dynamic but binds locally, use + section+offset. */ + if (sec && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h))) + { + if (entry->symndx == -1) + ad += entry->d.h->root.u.def.value; + else + ad += sym->st_value; + ad += sec->output_offset; + if (sec->output_section && elf_section_data (sec->output_section)) + idx = elf_section_data (sec->output_section)->dynindx; + else + idx = 0; + } + + /* If we're linking an executable at a fixed address, we can + omit the dynamic relocation as long as the symbol is local to + this module. */ + if (info->executable && !info->pie + && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h))) + { + if (sec) + ad += sec->output_section->vma; + ofst = 0; + if (entry->symndx != -1 || + entry->d.h->root.type != bfd_link_hash_undefweak) + { + _frv_add_rofixup (output_bfd, frv_gotfixup_section (info), + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + + entry->fd_entry); + _frv_add_rofixup (output_bfd, frv_gotfixup_section (info), + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + + entry->fd_entry + 4); + } + } + else + { + ofst = + _frv_add_dyn_reloc (output_bfd, + entry->lazyplt ? frv_pltrel_section (info) + : frv_gotrel_section (info), + _bfd_elf_section_offset + (output_bfd, info, + frv_got_section (info), + frv_got_initial_offset (info) + + entry->fd_entry) + + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset, + R_FRV_FUNCDESC_VALUE, idx, ad); + } + + /* If we've omitted the dynamic relocation, just emit the fixed + addresses of the symbol and of the local GOT base offset. */ + if (info->executable && !info->pie && sec && sec->output_section) + { + lowword = ad; + highword = frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info); + } + else if (entry->lazyplt) + { + if (ad) + return FALSE; + + fd_lazy_rel_offset = ofst; + + /* A function descriptor used for lazy or local resolving is + initialized such that its high word contains the output + section index in which the PLT entries are located, and + the low word contains the address of the lazy PLT entry + entry point, that must be within the memory region + assigned to that section. */ + lowword = entry->lzplt_entry + 4 + + frv_plt_section (info)->output_offset + + frv_plt_section (info)->output_section->vma; + highword = _frv_osec_to_segment + (output_bfd, frv_plt_section (info)->output_section); + } + else + { + /* A function descriptor for a local function gets the index + of the section. For a non-local function, it's + disregarded. */ + lowword = ad; + if (entry->symndx == -1 && entry->d.h->dynindx != -1 + && entry->d.h->dynindx == idx) + highword = 0; + else + highword = _frv_osec_to_segment (output_bfd, sec->output_section); + } + + bfd_put_32 (output_bfd, lowword, + frv_got_section (info)->contents + + frv_got_initial_offset (info) + + entry->fd_entry); + bfd_put_32 (output_bfd, highword, + frv_got_section (info)->contents + + frv_got_initial_offset (info) + + entry->fd_entry + 4); + } + + /* Generate code for the PLT entry. */ + if (entry->plt_entry != (bfd_vma) -1) + { + bfd_byte *plt_code = frv_plt_section (info)->contents + entry->plt_entry; + + BFD_ASSERT (entry->fd_entry); + + /* Figure out what kind of PLT entry we need, depending on the + location of the function descriptor within the GOT. */ + if (entry->fd_entry >= -(1 << (12 - 1)) + && entry->fd_entry < (1 << (12 - 1))) + { + /* lddi @(gr15, fd_entry), gr14 */ + bfd_put_32 (output_bfd, + 0x9cccf000 | (entry->fd_entry & ((1 << 12) - 1)), + plt_code); + plt_code += 4; + } + else + { + if (entry->fd_entry >= -(1 << (16 - 1)) + && entry->fd_entry < (1 << (16 - 1))) + { + /* setlos lo(fd_entry), gr14 */ + bfd_put_32 (output_bfd, + 0x9cfc0000 + | (entry->fd_entry & (((bfd_vma)1 << 16) - 1)), + plt_code); + plt_code += 4; + } + else + { + /* sethi.p hi(fd_entry), gr14 + setlo lo(fd_entry), gr14 */ + bfd_put_32 (output_bfd, + 0x1cf80000 + | ((entry->fd_entry >> 16) + & (((bfd_vma)1 << 16) - 1)), + plt_code); + bfd_put_32 (output_bfd, + 0x9cf40000 + | (entry->fd_entry & (((bfd_vma)1 << 16) - 1)), + plt_code); + plt_code += 8; + } + /* ldd @(gr14,gr15),gr14 */ + bfd_put_32 (output_bfd, 0x9c08e14f, plt_code); + plt_code += 4; + } + /* jmpl @(gr14,gr0) */ + bfd_put_32 (output_bfd, 0x8030e000, plt_code); + } + + /* Generate code for the lazy PLT entry. */ + if (entry->lzplt_entry != (bfd_vma) -1) + { + bfd_byte *lzplt_code = frv_plt_section (info)->contents + + entry->lzplt_entry; + bfd_vma resolverStub_addr; + + bfd_put_32 (output_bfd, fd_lazy_rel_offset, lzplt_code); + lzplt_code += 4; + + resolverStub_addr = entry->lzplt_entry / FRV_LZPLT_BLOCK_SIZE + * FRV_LZPLT_BLOCK_SIZE + FRV_LZPLT_RESOLV_LOC; + if (resolverStub_addr >= frv_plt_initial_offset (info)) + resolverStub_addr = frv_plt_initial_offset (info) - 12; + + if (entry->lzplt_entry == resolverStub_addr) + { + /* This is a lazy PLT entry that includes a resolver call. */ + /* ldd @(gr15,gr0), gr4 + jmpl @(gr4,gr0) */ + bfd_put_32 (output_bfd, 0x8808f140, lzplt_code); + bfd_put_32 (output_bfd, 0x80304000, lzplt_code + 4); + } + else + { + /* bra resolverStub */ + bfd_put_32 (output_bfd, + 0xc01a0000 + | (((resolverStub_addr - entry->lzplt_entry) + / 4) & (((bfd_vma)1 << 16) - 1)), + lzplt_code); + } + } + + return TRUE; +} + +/* Handle an FRV small data reloc. */ + +static bfd_reloc_status_type +elf32_frv_relocate_gprel12 (info, input_bfd, input_section, relocation, + contents, value) + struct bfd_link_info *info; + bfd *input_bfd; + asection *input_section; + Elf_Internal_Rela *relocation; + bfd_byte *contents; + bfd_vma value; +{ + bfd_vma insn; + bfd_vma gp; + struct bfd_link_hash_entry *h; + + h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE); + + gp = (h->u.def.value + + h->u.def.section->output_section->vma + + h->u.def.section->output_offset); + + value -= input_section->output_section->vma; + value -= (gp - input_section->output_section->vma); + + insn = bfd_get_32 (input_bfd, contents + relocation->r_offset); + + value += relocation->r_addend; + + if ((long) value > 0x7ff || (long) value < -0x800) + return bfd_reloc_overflow; + + bfd_put_32 (input_bfd, + (insn & 0xfffff000) | (value & 0xfff), + contents + relocation->r_offset); + + return bfd_reloc_ok; +} + +/* Handle an FRV small data reloc. for the u12 field. */ + +static bfd_reloc_status_type +elf32_frv_relocate_gprelu12 (info, input_bfd, input_section, relocation, + contents, value) + struct bfd_link_info *info; + bfd *input_bfd; + asection *input_section; + Elf_Internal_Rela *relocation; + bfd_byte *contents; + bfd_vma value; +{ + bfd_vma insn; + bfd_vma gp; + struct bfd_link_hash_entry *h; + bfd_vma mask; + + h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE); + + gp = (h->u.def.value + + h->u.def.section->output_section->vma + + h->u.def.section->output_offset); + + value -= input_section->output_section->vma; + value -= (gp - input_section->output_section->vma); + + insn = bfd_get_32 (input_bfd, contents + relocation->r_offset); value += relocation->r_addend; @@ -555,6 +1559,10 @@ frv_reloc_type_lookup (abfd, code) return &elf32_frv_howto_table[ (int) R_FRV_NONE]; case BFD_RELOC_32: + if (elf_elfheader (abfd)->e_type == ET_EXEC + || elf_elfheader (abfd)->e_type == ET_DYN) + return &elf32_frv_rel_32_howto; + /* Fall through. */ case BFD_RELOC_CTOR: return &elf32_frv_howto_table[ (int) R_FRV_32]; @@ -585,6 +1593,54 @@ frv_reloc_type_lookup (abfd, code) case BFD_RELOC_FRV_GPRELLO: return &elf32_frv_howto_table[ (int) R_FRV_GPRELLO]; + case BFD_RELOC_FRV_GOT12: + return &elf32_frv_howto_table[ (int) R_FRV_GOT12]; + + case BFD_RELOC_FRV_GOTHI: + return &elf32_frv_howto_table[ (int) R_FRV_GOTHI]; + + case BFD_RELOC_FRV_GOTLO: + return &elf32_frv_howto_table[ (int) R_FRV_GOTLO]; + + case BFD_RELOC_FRV_FUNCDESC: + if (elf_elfheader (abfd)->e_type == ET_EXEC + || elf_elfheader (abfd)->e_type == ET_DYN) + return &elf32_frv_rel_funcdesc_howto; + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC]; + + case BFD_RELOC_FRV_FUNCDESC_GOT12: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOT12]; + + case BFD_RELOC_FRV_FUNCDESC_GOTHI: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTHI]; + + case BFD_RELOC_FRV_FUNCDESC_GOTLO: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTLO]; + + case BFD_RELOC_FRV_FUNCDESC_VALUE: + if (elf_elfheader (abfd)->e_type == ET_EXEC + || elf_elfheader (abfd)->e_type == ET_DYN) + return &elf32_frv_rel_funcdesc_value_howto; + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_VALUE]; + + case BFD_RELOC_FRV_FUNCDESC_GOTOFF12: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTOFF12]; + + case BFD_RELOC_FRV_FUNCDESC_GOTOFFHI: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTOFFHI]; + + case BFD_RELOC_FRV_FUNCDESC_GOTOFFLO: + return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTOFFLO]; + + case BFD_RELOC_FRV_GOTOFF12: + return &elf32_frv_howto_table[ (int) R_FRV_GOTOFF12]; + + case BFD_RELOC_FRV_GOTOFFHI: + return &elf32_frv_howto_table[ (int) R_FRV_GOTOFFHI]; + + case BFD_RELOC_FRV_GOTOFFLO: + return &elf32_frv_howto_table[ (int) R_FRV_GOTOFFLO]; + case BFD_RELOC_VTABLE_INHERIT: return &elf32_frv_vtinherit_howto; @@ -621,6 +1677,34 @@ frv_info_to_howto_rela (abfd, cache_ptr, break; } } + +/* Set the howto pointer for an FRV ELF REL reloc. */ +static void +frv_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, + arelent *cache_ptr, Elf_Internal_Rela *dst) +{ + unsigned int r_type; + + r_type = ELF32_R_TYPE (dst->r_info); + switch (r_type) + { + case R_FRV_32: + cache_ptr->howto = &elf32_frv_rel_32_howto; + break; + + case R_FRV_FUNCDESC: + cache_ptr->howto = &elf32_frv_rel_funcdesc_howto; + break; + + case R_FRV_FUNCDESC_VALUE: + cache_ptr->howto = &elf32_frv_rel_funcdesc_value_howto; + break; + + default: + cache_ptr->howto = NULL; + break; + } +} /* Perform a single relocation. By default we use the standard BFD routines, but a few relocs, we have to do them ourselves. */ @@ -687,6 +1771,9 @@ elf32_frv_relocate_section (output_bfd, struct elf_link_hash_entry **sym_hashes; Elf_Internal_Rela *rel; Elf_Internal_Rela *relend; + unsigned isec_segment, got_segment, plt_segment, gprel_segment, + check_segment[2]; + int silence_segment_error = !(info->shared || info->pie); if (info->relocatable) return TRUE; @@ -695,6 +1782,27 @@ elf32_frv_relocate_section (output_bfd, sym_hashes = elf_sym_hashes (input_bfd); relend = relocs + input_section->reloc_count; + isec_segment = _frv_osec_to_segment (output_bfd, + input_section->output_section); + if (frv_got_section (info)) + got_segment = _frv_osec_to_segment (output_bfd, + frv_got_section (info) + ->output_section); + else + got_segment = -1; + if (frv_gotfixup_section (info)) + gprel_segment = _frv_osec_to_segment (output_bfd, + frv_gotfixup_section (info) + ->output_section); + else + gprel_segment = -1; + if (elf_hash_table (info)->dynamic_sections_created) + plt_segment = _frv_osec_to_segment (output_bfd, + frv_plt_section (info) + ->output_section); + else + plt_segment = -1; + for (rel = relocs; rel < relend; rel ++) { reloc_howto_type *howto; @@ -706,6 +1814,9 @@ elf32_frv_relocate_section (output_bfd, bfd_reloc_status_type r; const char * name = NULL; int r_type; + asection *osec; + struct frv_pic_relocs_info *picrel; + bfd_vma orig_addend = rel->r_addend; r_type = ELF32_R_TYPE (rel->r_info); @@ -720,218 +1831,1950 @@ elf32_frv_relocate_section (output_bfd, sym = NULL; sec = NULL; - if (r_symndx < symtab_hdr->sh_info) - { - sym = local_syms + r_symndx; - sec = local_sections [r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + if (r_symndx < symtab_hdr->sh_info) + { + sym = local_syms + r_symndx; + osec = sec = local_sections [r_symndx]; + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); + + name = bfd_elf_string_from_elf_section + (input_bfd, symtab_hdr->sh_link, sym->st_name); + name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name; + } + else + { + h = sym_hashes [r_symndx - symtab_hdr->sh_info]; + + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + name = h->root.root.string; + + if ((h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + && ! FRV_SYM_LOCAL (info, h)) + { + sec = NULL; + relocation = 0; + } + else + if (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + { + sec = h->root.u.def.section; + relocation = (h->root.u.def.value + + sec->output_section->vma + + sec->output_offset); + } + else if (h->root.type == bfd_link_hash_undefweak) + { + relocation = 0; + } + else if ( ! info->executable + && ! info->symbolic + && info->unresolved_syms_in_objects == RM_IGNORE + && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT) + relocation = 0; + else + { + if (! ((*info->callbacks->undefined_symbol) + (info, h->root.root.string, input_bfd, + input_section, rel->r_offset, TRUE))) + return FALSE; + relocation = 0; + } + osec = sec; + } + + switch (r_type) + { + case R_FRV_LABEL24: + case R_FRV_32: + case R_FRV_GOT12: + case R_FRV_GOTHI: + case R_FRV_GOTLO: + case R_FRV_FUNCDESC_GOT12: + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTLO: + case R_FRV_GOTOFF12: + case R_FRV_GOTOFFHI: + case R_FRV_GOTOFFLO: + case R_FRV_FUNCDESC_GOTOFF12: + case R_FRV_FUNCDESC_GOTOFFHI: + case R_FRV_FUNCDESC_GOTOFFLO: + case R_FRV_FUNCDESC: + case R_FRV_FUNCDESC_VALUE: + if (h != NULL) + picrel = frv_pic_relocs_info_for_global (frv_relocs_info (info), + input_bfd, h, + orig_addend); + else + /* In order to find the entry we created before, we must + use the original addend, not the one that may have been + modified by _bfd_elf_rela_local_sym(). */ + picrel = frv_pic_relocs_info_for_local (frv_relocs_info (info), + input_bfd, r_symndx, + orig_addend); + if (! picrel) + return FALSE; + + if (!_frv_emit_got_relocs_plt_entries (picrel, output_bfd, info, + osec, sym, rel->r_addend)) + { + info->callbacks->warning + (info, _("Dynamic relocation references symbol with nonzero addend"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + + } + + break; + + default: + picrel = NULL; + if (h && ! FRV_SYM_LOCAL (info, h)) + { + info->callbacks->warning + (info, _("relocation references symbol not defined in the module"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + break; + } + + switch (r_type) + { + case R_FRV_LABEL24: + check_segment[0] = isec_segment; + if (picrel->plt) + { + relocation = frv_plt_section (info)->output_section->vma + + frv_plt_section (info)->output_offset + + picrel->plt_entry; + check_segment[1] = plt_segment; + } + /* We don't want to warn on calls to undefined weak symbols, + as calls to them must be protected by non-NULL tests + anyway, and unprotected calls would invoke undefined + behavior. */ + else if (picrel->symndx == -1 + && picrel->d.h->root.type == bfd_link_hash_undefweak) + check_segment[1] = check_segment[0]; + else + check_segment[1] = sec + ? _frv_osec_to_segment (output_bfd, sec->output_section) + : (unsigned)-1; + break; + + case R_FRV_GOT12: + case R_FRV_GOTHI: + case R_FRV_GOTLO: + relocation = picrel->got_entry; + check_segment[0] = check_segment[1] = got_segment; + break; + + case R_FRV_FUNCDESC_GOT12: + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTLO: + relocation = picrel->fdgot_entry; + check_segment[0] = check_segment[1] = got_segment; + break; + + case R_FRV_GOTOFFHI: + case R_FRV_GOTOFF12: + case R_FRV_GOTOFFLO: + relocation -= frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info); + check_segment[0] = got_segment; + check_segment[1] = sec + ? _frv_osec_to_segment (output_bfd, sec->output_section) + : (unsigned)-1; + break; + + case R_FRV_FUNCDESC_GOTOFF12: + case R_FRV_FUNCDESC_GOTOFFHI: + case R_FRV_FUNCDESC_GOTOFFLO: + relocation = picrel->fd_entry; + check_segment[0] = check_segment[1] = got_segment; + break; + + case R_FRV_FUNCDESC: + { + int dynindx; + bfd_vma addend = rel->r_addend; + + /* If the symbol is dynamic and there may be dynamic + symbol resolution because we are or are linked with a + shared library, emit a FUNCDESC relocation such that + the dynamic linker will allocate the function + descriptor. */ + if (h && ! FRV_FUNCDESC_LOCAL (info, h)) + { + if (addend) + { + info->callbacks->warning + (info, _("R_FRV_FUNCDESC references dynamic symbol with nonzero addend"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + dynindx = h->dynindx; + } + else + { + /* Otherwise, we know we have a private function + descriptor, so reference it directly. */ + BFD_ASSERT (picrel->privfd); + r_type = R_FRV_32; + dynindx = elf_section_data (frv_got_section + (info)->output_section)->dynindx; + addend = frv_got_section (info)->output_offset + + frv_got_initial_offset (info) + + picrel->fd_entry; + } + + /* If there is room for dynamic symbol resolution, emit + the dynamic relocation. However, if we're linking an + executable at a fixed location, we won't have emitted a + dynamic symbol entry for the got section, so idx will + be zero, which means we can and should compute the + address of the private descriptor ourselves. */ + if (info->executable && !info->pie + && (!h || FRV_FUNCDESC_LOCAL (info, h))) + { + addend += frv_got_section (info)->output_section->vma; + if ((bfd_get_section_flags (output_bfd, + input_section->output_section) + & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)) + { + if (_frv_osec_readonly_p (output_bfd, + input_section->output_section)) + { + info->callbacks->warning + (info, + _("cannot emit fixups in read-only section"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + if (! h || h->root.type != bfd_link_hash_undefweak) + _frv_add_rofixup (output_bfd, + frv_gotfixup_section (info), + _bfd_elf_section_offset + (output_bfd, info, + input_section, rel->r_offset) + + input_section->output_section->vma + + input_section->output_offset); + } + } + else if ((bfd_get_section_flags (output_bfd, + input_section->output_section) + & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)) + { + if (_frv_osec_readonly_p (output_bfd, + input_section->output_section)) + { + info->callbacks->warning + (info, + _("cannot emit dynamic relocations in read-only section"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info), + _bfd_elf_section_offset + (output_bfd, info, + input_section, rel->r_offset) + + input_section->output_section->vma + + input_section->output_offset, + r_type, dynindx, addend); + } + + /* We want the addend in-place because dynamic + relocations are REL. Setting relocation to it should + arrange for it to be installed. */ + relocation = addend - rel->r_addend; + } + check_segment[0] = check_segment[1] = got_segment; + break; + + case R_FRV_32: + case R_FRV_FUNCDESC_VALUE: + { + int dynindx; + bfd_vma addend = rel->r_addend; + + /* If the symbol is dynamic but binds locally, use + section+offset. */ + if (h && ! FRV_SYM_LOCAL (info, h)) + { + if (addend && r_type == R_FRV_FUNCDESC_VALUE) + { + info->callbacks->warning + (info, _("R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + dynindx = h->dynindx; + } + else + { + if (h) + addend += h->root.u.def.value; + else + addend += sym->st_value; + if (osec) + addend += osec->output_offset; + if (osec && osec->output_section + && ! bfd_is_abs_section (osec->output_section) + && ! bfd_is_und_section (osec->output_section)) + dynindx = elf_section_data (osec->output_section)->dynindx; + else + dynindx = 0; + } + + /* If we're linking an executable at a fixed address, we + can omit the dynamic relocation as long as the symbol + is defined in the current link unit (which is implied + by its output section not being NULL). */ + if (info->executable && !info->pie + && (!h || FRV_SYM_LOCAL (info, h))) + { + if (osec) + addend += osec->output_section->vma; + if ((elf_elfheader (input_bfd)->e_flags & EF_FRV_FDPIC) + && (bfd_get_section_flags (output_bfd, + input_section->output_section) + & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)) + { + if (_frv_osec_readonly_p (output_bfd, + input_section->output_section)) + { + info->callbacks->warning + (info, + _("cannot emit fixups in read-only section"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + if (!h || h->root.type != bfd_link_hash_undefweak) + { + _frv_add_rofixup (output_bfd, + frv_gotfixup_section (info), + _bfd_elf_section_offset + (output_bfd, info, + input_section, rel->r_offset) + + input_section->output_section->vma + + input_section->output_offset); + if (r_type == R_FRV_FUNCDESC_VALUE) + _frv_add_rofixup + (output_bfd, + frv_gotfixup_section (info), + _bfd_elf_section_offset + (output_bfd, info, + input_section, rel->r_offset) + + input_section->output_section->vma + + input_section->output_offset + 4); + } + } + } + else + { + if ((bfd_get_section_flags (output_bfd, + input_section->output_section) + & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)) + { + if (_frv_osec_readonly_p (output_bfd, + input_section->output_section)) + { + info->callbacks->warning + (info, + _("cannot emit dynamic relocations in read-only section"), + name, input_bfd, input_section, rel->r_offset); + return FALSE; + } + _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info), + _bfd_elf_section_offset + (output_bfd, info, + input_section, rel->r_offset) + + input_section->output_section->vma + + input_section->output_offset, + r_type, dynindx, addend); + } + /* We want the addend in-place because dynamic + relocations are REL. Setting relocation to it + should arrange for it to be installed. */ + relocation = addend - rel->r_addend; + } + + if (r_type == R_FRV_FUNCDESC_VALUE) + { + /* If we've omitted the dynamic relocation, just emit + the fixed addresses of the symbol and of the local + GOT base offset. */ + if (info->executable && !info->pie + && (!h || FRV_SYM_LOCAL (info, h))) + bfd_put_32 (output_bfd, + frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info), + contents + rel->r_offset + 4); + else + /* A function descriptor used for lazy or local + resolving is initialized such that its high word + contains the output section index in which the + PLT entries are located, and the low word + contains the offset of the lazy PLT entry entry + point into that section. */ + bfd_put_32 (output_bfd, + h && ! FRV_SYM_LOCAL (info, h) + ? 0 + : _frv_osec_to_segment (output_bfd, + sec->output_section), + contents + rel->r_offset + 4); + } + } + check_segment[0] = check_segment[1] = got_segment; + break; + + case R_FRV_GPREL12: + case R_FRV_GPRELU12: + case R_FRV_GPREL32: + case R_FRV_GPRELHI: + case R_FRV_GPRELLO: + check_segment[0] = gprel_segment; + check_segment[1] = sec + ? _frv_osec_to_segment (output_bfd, sec->output_section) + : (unsigned)-1; + break; + + default: + check_segment[0] = isec_segment; + check_segment[1] = sec + ? _frv_osec_to_segment (output_bfd, sec->output_section) + : (unsigned)-1; + break; + } + + if (check_segment[0] != check_segment[1] + && (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC)) + { +#if 1 + /* This helps catch problems in GCC while we can't do more + than static linking. The idea is to test whether the + input file basename is crt0.o only once. */ + if (silence_segment_error == 1) + silence_segment_error = + (strlen (input_bfd->filename) == 6 + && strcmp (input_bfd->filename, "crt0.o") == 0) + || (strlen (input_bfd->filename) > 6 + && strcmp (input_bfd->filename + + strlen (input_bfd->filename) - 7, + "/crt0.o") == 0) + ? -1 : 0; +#endif + if (!silence_segment_error + /* We don't want duplicate errors for undefined + symbols. */ + && !(picrel && picrel->symndx == -1 + && picrel->d.h->root.type == bfd_link_hash_undefined)) + info->callbacks->warning + (info, + (info->shared || info->pie) + ? _("relocations between different segments are not supported") + : _("warning: relocation references a different segment"), + name, input_bfd, input_section, rel->r_offset); + if (!silence_segment_error && (info->shared || info->pie)) + return FALSE; + elf_elfheader (output_bfd)->e_flags |= EF_FRV_PIC; + } + + switch (r_type) + { + case R_FRV_GOTOFFHI: + /* We need the addend to be applied before we shift the + value right. */ + relocation += rel->r_addend; + /* Fall through. */ + case R_FRV_GOTHI: + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTOFFHI: + relocation >>= 16; + /* Fall through. */ + + case R_FRV_GOTLO: + case R_FRV_FUNCDESC_GOTLO: + case R_FRV_GOTOFFLO: + case R_FRV_FUNCDESC_GOTOFFLO: + relocation &= 0xffff; + break; + + default: + break; + } + + switch (r_type) + { + case R_FRV_LABEL24: + if (! picrel->plt) + break; + /* Fall through. */ + + /* When referencing a GOT entry, a function descriptor or a + PLT, we don't want the addend to apply to the reference, + but rather to the referenced symbol. The actual entry + will have already been created taking the addend into + account, so cancel it out here. */ + case R_FRV_GOT12: + case R_FRV_GOTHI: + case R_FRV_GOTLO: + case R_FRV_FUNCDESC_GOT12: + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTLO: + case R_FRV_FUNCDESC_GOTOFF12: + case R_FRV_FUNCDESC_GOTOFFHI: + case R_FRV_FUNCDESC_GOTOFFLO: + /* Note that we only want GOTOFFHI, not GOTOFFLO or GOTOFF12 + here, since we do want to apply the addend to the others. + Note that we've applied the addend to GOTOFFHI before we + shifted it right. */ + case R_FRV_GOTOFFHI: + relocation -= rel->r_addend; + break; + + default: + break; + } + + if (r_type == R_FRV_HI16) + r = elf32_frv_relocate_hi16 (input_bfd, rel, contents, relocation); + + else if (r_type == R_FRV_LO16) + r = elf32_frv_relocate_lo16 (input_bfd, rel, contents, relocation); + + else if (r_type == R_FRV_LABEL24) + r = elf32_frv_relocate_label24 (input_bfd, input_section, rel, + contents, relocation); + + else if (r_type == R_FRV_GPREL12) + r = elf32_frv_relocate_gprel12 (info, input_bfd, input_section, rel, + contents, relocation); + + else if (r_type == R_FRV_GPRELU12) + r = elf32_frv_relocate_gprelu12 (info, input_bfd, input_section, rel, + contents, relocation); + + else if (r_type == R_FRV_GPRELLO) + r = elf32_frv_relocate_gprello (info, input_bfd, input_section, rel, + contents, relocation); + + else if (r_type == R_FRV_GPRELHI) + r = elf32_frv_relocate_gprelhi (info, input_bfd, input_section, rel, + contents, relocation); + + else + r = frv_final_link_relocate (howto, input_bfd, input_section, contents, + rel, relocation); + + if (r != bfd_reloc_ok) + { + const char * msg = (const char *) NULL; + + switch (r) + { + case bfd_reloc_overflow: + r = info->callbacks->reloc_overflow + (info, name, howto->name, (bfd_vma) 0, + input_bfd, input_section, rel->r_offset); + break; + + case bfd_reloc_undefined: + r = info->callbacks->undefined_symbol + (info, name, input_bfd, input_section, rel->r_offset, TRUE); + break; + + case bfd_reloc_outofrange: + msg = _("internal error: out of range error"); + break; + + case bfd_reloc_notsupported: + msg = _("internal error: unsupported relocation error"); + break; + + case bfd_reloc_dangerous: + msg = _("internal error: dangerous relocation"); + break; + + default: + msg = _("internal error: unknown error"); + break; + } + + if (msg) + r = info->callbacks->warning + (info, msg, name, input_bfd, input_section, rel->r_offset); + + if (! r) + return FALSE; + } + } + + return TRUE; +} + +/* Return the section that should be marked against GC for a given + relocation. */ + +static asection * +elf32_frv_gc_mark_hook (sec, info, rel, h, sym) + asection *sec; + struct bfd_link_info *info ATTRIBUTE_UNUSED; + Elf_Internal_Rela *rel; + struct elf_link_hash_entry *h; + Elf_Internal_Sym *sym; +{ + if (h != NULL) + { + switch (ELF32_R_TYPE (rel->r_info)) + { + case R_FRV_GNU_VTINHERIT: + case R_FRV_GNU_VTENTRY: + break; + + default: + switch (h->root.type) + { + default: + break; + + case bfd_link_hash_defined: + case bfd_link_hash_defweak: + return h->root.u.def.section; + + case bfd_link_hash_common: + return h->root.u.c.p->section; + } + } + } + else + return bfd_section_from_elf_index (sec->owner, sym->st_shndx); + + return NULL; +} + +/* Update the got entry reference counts for the section being removed. */ + +static bfd_boolean +elf32_frv_gc_sweep_hook (abfd, info, sec, relocs) + bfd *abfd ATTRIBUTE_UNUSED; + struct bfd_link_info *info ATTRIBUTE_UNUSED; + asection *sec ATTRIBUTE_UNUSED; + const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED; +{ + return TRUE; +} + + +/* Hook called by the linker routine which adds symbols from an object + file. We use it to put .comm items in .scomm, and not .comm. */ + +static bfd_boolean +elf32_frv_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp) + bfd *abfd; + struct bfd_link_info *info; + const Elf_Internal_Sym *sym; + const char **namep ATTRIBUTE_UNUSED; + flagword *flagsp ATTRIBUTE_UNUSED; + asection **secp; + bfd_vma *valp; +{ + if (sym->st_shndx == SHN_COMMON + && !info->relocatable + && (int)sym->st_size <= (int)bfd_get_gp_size (abfd)) + { + /* Common symbols less than or equal to -G nn bytes are + automatically put into .sbss. */ + + asection *scomm = bfd_get_section_by_name (abfd, ".scommon"); + + if (scomm == NULL) + { + scomm = bfd_make_section (abfd, ".scommon"); + if (scomm == NULL + || !bfd_set_section_flags (abfd, scomm, (SEC_ALLOC + | SEC_IS_COMMON + | SEC_LINKER_CREATED))) + return FALSE; + } + + *secp = scomm; + *valp = sym->st_size; + } + + return TRUE; +} +/* Create a .got section, as well as its additional info field. This + is almost entirely copied from + elflink.c:_bfd_elf_create_got_section(). */ + +static bfd_boolean +_frv_create_got_section (bfd *abfd, struct bfd_link_info *info) +{ + flagword flags; + asection *s; + struct elf_link_hash_entry *h; + struct bfd_link_hash_entry *bh; + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + int ptralign; + + /* This function may be called more than once. */ + s = bfd_get_section_by_name (abfd, ".got"); + if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0) + return TRUE; + + /* Machine specific: although pointers are 32-bits wide, we want the + GOT to be aligned to a 64-bit boundary, such that function + descriptors in it can be accessed with 64-bit loads and + stores. */ + ptralign = 3; + + flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY + | SEC_LINKER_CREATED); + + s = bfd_make_section (abfd, ".got"); + if (s == NULL + || !bfd_set_section_flags (abfd, s, flags) + || !bfd_set_section_alignment (abfd, s, ptralign)) + return FALSE; + + if (bed->want_got_plt) + { + s = bfd_make_section (abfd, ".got.plt"); + if (s == NULL + || !bfd_set_section_flags (abfd, s, flags) + || !bfd_set_section_alignment (abfd, s, ptralign)) + return FALSE; + } + + if (bed->want_got_sym) + { + /* Define the symbol _GLOBAL_OFFSET_TABLE_ at the start of the .got + (or .got.plt) section. We don't do this in the linker script + because we don't want to define the symbol if we are not creating + a global offset table. */ + bh = NULL; + if (!(_bfd_generic_link_add_one_symbol + (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s, + bed->got_symbol_offset, (const char *) NULL, FALSE, + bed->collect, &bh))) + return FALSE; + h = (struct elf_link_hash_entry *) bh; + h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; + h->type = STT_OBJECT; + + /* Machine-specific: we want the symbol for executables as + well. */ + if (! _bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + + elf_hash_table (info)->hgot = h; + } + + /* The first bit of the global offset table is the header. */ + s->_raw_size += bed->got_header_size + bed->got_symbol_offset; + + /* This is the machine-specific part. Create and initialize section + data for the got. */ + frv_got_section (info) = s; + frv_relocs_info (info) = htab_try_create (1, frv_pic_relocs_info_hash, + frv_pic_relocs_info_eq, + (htab_del) NULL); + if (! frv_relocs_info (info)) + return FALSE; + + s = bfd_make_section (abfd, ".rel.got"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, (flags | SEC_READONLY)) + || ! bfd_set_section_alignment (abfd, s, 2)) + return FALSE; + + frv_gotrel_section (info) = s; + + /* Machine-specific. */ + s = bfd_make_section (abfd, ".rofixup"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, (flags | SEC_READONLY)) + || ! bfd_set_section_alignment (abfd, s, 2)) + return FALSE; + + frv_gotfixup_section (info) = s; + + /* Define _gp in .rofixup, for FDPIC. If it turns out that + we're linking with a different linker script, the linker script + will override it. */ + bh = NULL; + if (!(_bfd_generic_link_add_one_symbol + (info, abfd, "_gp", BSF_GLOBAL, s, -2048, (const char *) NULL, FALSE, + bed->collect, &bh))) + return FALSE; + h = (struct elf_link_hash_entry *) bh; + h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; + h->type = STT_OBJECT; + + /* Machine-specific: we want the symbol for executables as well. */ + if (! _bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + + return TRUE; +} + +/* Make sure the got and plt sections exist, and that our pointers in + the link hash table point to them. */ + +static bfd_boolean +elf32_frv_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) +{ + /* This is mostly copied from + elflink.c:_bfd_elf_create_dynamic_sections(). */ + flagword flags, pltflags; + asection *s; + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + + /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and + .rel[a].bss sections. */ + + flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY + | SEC_LINKER_CREATED); + + pltflags = flags; + pltflags |= SEC_CODE; + if (bed->plt_not_loaded) + pltflags &= ~ (SEC_CODE | SEC_LOAD | SEC_HAS_CONTENTS); + if (bed->plt_readonly) + pltflags |= SEC_READONLY; + + s = bfd_make_section (abfd, ".plt"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, pltflags) + || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment)) + return FALSE; + /* FRV-specific: remember it. */ + frv_plt_section (info) = s; + + if (bed->want_plt_sym) + { + /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the + .plt section. */ + struct elf_link_hash_entry *h; + struct bfd_link_hash_entry *bh = NULL; + + if (! (_bfd_generic_link_add_one_symbol + (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, 0, NULL, + FALSE, get_elf_backend_data (abfd)->collect, &bh))) + return FALSE; + h = (struct elf_link_hash_entry *) bh; + h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; + h->type = STT_OBJECT; + + if (! info->executable + && ! _bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + /* FRV-specific: we want rel relocations for the plt. */ + s = bfd_make_section (abfd, ".rel.plt"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY) + || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align)) + return FALSE; + /* FRV-specific: remember it. */ + frv_pltrel_section (info) = s; + + /* FRV-specific: we want to create the GOT in the FRV way. */ + if (! _frv_create_got_section (abfd, info)) + return FALSE; + + /* FRV-specific: make sure we created everything we wanted. */ + BFD_ASSERT (frv_got_section (info) && frv_gotrel_section (info) + && frv_gotfixup_section (info) + && frv_plt_section (info) && frv_pltrel_section (info)); + + if (bed->want_dynbss) + { + /* The .dynbss section is a place to put symbols which are defined + by dynamic objects, are referenced by regular objects, and are + not functions. We must allocate space for them in the process + image and use a R_*_COPY reloc to tell the dynamic linker to + initialize them at run time. The linker script puts the .dynbss + section into the .bss section of the final image. */ + s = bfd_make_section (abfd, ".dynbss"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, SEC_ALLOC | SEC_LINKER_CREATED)) + return FALSE; + + /* The .rel[a].bss section holds copy relocs. This section is not + normally needed. We need to create it here, though, so that the + linker will map it to an output section. We can't just create it + only if we need it, because we will not know whether we need it + until we have seen all the input files, and the first time the + main linker code calls BFD after examining all the input files + (size_dynamic_sections) the input sections have already been + mapped to the output sections. If the section turns out not to + be needed, we can discard it later. We will never need this + section when generating a shared object, since they do not use + copy relocs. */ + if (! info->shared) + { + s = bfd_make_section (abfd, + (bed->default_use_rela_p + ? ".rela.bss" : ".rel.bss")); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY) + || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align)) + return FALSE; + } + } + + return TRUE; +} + +/* The name of the dynamic interpreter. This is put in the .interp + section. */ + +#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1" + +#define DEFAULT_STACK_SIZE 0x20000 + +/* This structure is used to collect the number of entries present in + each addressable range of the got. */ +struct _frv_dynamic_got_info +{ + /* Several bits of information about the current link. */ + struct bfd_link_info *info; + /* Total size needed for GOT entries within the 12-, 16- or 32-bit + ranges. */ + bfd_vma got12, gotlos, gothilo; + /* Total size needed for function descriptor entries within the 12-, + 16- or 32-bit ranges. */ + bfd_vma fd12, fdlos, fdhilo; + /* Total size needed function descriptor entries referenced in PLT + entries, that would be profitable to place in offsets close to + the PIC register. */ + bfd_vma fdplt; + /* Total size needed by lazy PLT entries. */ + bfd_vma lzplt; + /* Number of relocations carried over from input object files. */ + unsigned long relocs; + /* Number of fixups introduced by relocations in input object files. */ + unsigned long fixups; +}; + +/* Compute the total GOT size required by each symbol in each range. + Symbols may require up to 4 words in the GOT: an entry pointing to + the symbol, an entry pointing to its function descriptor, and a + private function descriptors taking two words. */ + +static int +_frv_count_got_plt_entries (void **entryp, void *dinfo_) +{ + struct frv_pic_relocs_info *entry = *entryp; + struct _frv_dynamic_got_info *dinfo = dinfo_; + + /* Allocate space for a GOT entry pointing to the symbol. */ + if (entry->got12) + dinfo->got12 += 4; + else if (entry->gotlos) + dinfo->gotlos += 4; + else if (entry->gothilo) + dinfo->gothilo += 4; + else + entry->relocs32--; + entry->relocs32++; + + /* Allocate space for a GOT entry pointing to the function + descriptor. */ + if (entry->fdgot12) + dinfo->got12 += 4; + else if (entry->fdgotlos) + dinfo->gotlos += 4; + else if (entry->fdgothilo) + dinfo->gothilo += 4; + else + entry->relocsfd--; + entry->relocsfd++; + + /* Decide whether we need a PLT entry, a function descriptor in the + GOT, and a lazy PLT entry for this symbol. */ + entry->plt = entry->call + && entry->symndx == -1 && ! FRV_SYM_LOCAL (dinfo->info, entry->d.h) + && elf_hash_table (dinfo->info)->dynamic_sections_created; + entry->privfd = entry->plt + || entry->fdgoff12 || entry->fdgofflos || entry->fdgoffhilo + || ((entry->fd || entry->fdgot12 || entry->fdgotlos || entry->fdgothilo) + && (entry->symndx != -1 + || FRV_FUNCDESC_LOCAL (dinfo->info, entry->d.h))); + entry->lazyplt = entry->privfd + && entry->symndx == -1 && ! FRV_SYM_LOCAL (dinfo->info, entry->d.h) + && ! (dinfo->info->flags & DF_BIND_NOW) + && elf_hash_table (dinfo->info)->dynamic_sections_created; + + /* Allocate space for a function descriptor. */ + if (entry->fdgoff12) + dinfo->fd12 += 8; + else if (entry->fdgofflos) + dinfo->fdlos += 8; + else if (entry->privfd && entry->plt) + dinfo->fdplt += 8; + else if (entry->privfd) + dinfo->fdhilo += 8; + else + entry->relocsfdv--; + entry->relocsfdv++; + + if (entry->lazyplt) + dinfo->lzplt += 8; + + if (!dinfo->info->executable || dinfo->info->pie) + dinfo->relocs += entry->relocs32 + entry->relocsfd + entry->relocsfdv; + else + { + if (entry->symndx != -1 || FRV_SYM_LOCAL (dinfo->info, entry->d.h)) + { + if (entry->symndx != -1 + || entry->d.h->root.type != bfd_link_hash_undefweak) + dinfo->fixups += entry->relocs32 + 2 * entry->relocsfdv; + } + else + dinfo->relocs += entry->relocs32 + entry->relocsfdv; + if (entry->symndx != -1 || FRV_FUNCDESC_LOCAL (dinfo->info, entry->d.h)) + { + if (entry->symndx != -1 + || entry->d.h->root.type != bfd_link_hash_undefweak) + dinfo->fixups += entry->relocsfd; + } + else + dinfo->relocs += entry->relocsfd; + } + + return 1; +} + +/* This structure is used to assign offsets to got entries, function + descriptors, plt entries and lazy plt entries. */ + +struct _frv_dynamic_got_plt_info +{ + /* Summary information collected with _frv_count_got_plt_entries. */ + struct _frv_dynamic_got_info g; + + /* For each addressable range, we record a MAX (positive) and MIN + (negative) value. CUR is used to assign got entries, and it's + incremented from an initial positive value to MAX, then from MIN + to FDCUR (unless FDCUR wraps around first). FDCUR is used to + assign function descriptors, and it's decreased from an initial + non-positive value to MIN, then from MAX down to CUR (unless CUR + wraps around first). All of MIN, MAX, CUR and FDCUR always point + to even words. ODD, if non-zero, indicates an odd word to be + used for the next got entry, otherwise CUR is used and + incremented by a pair of words, wrapping around when it reaches + MAX. FDCUR is decremented (and wrapped) before the next function + descriptor is chosen. FDPLT indicates the number of remaining + slots that can be used for function descriptors used only by PLT + entries. */ + struct _frv_dynamic_got_alloc_data + { + bfd_signed_vma max, cur, odd, fdcur, min; + bfd_vma fdplt; + } got12, gotlos, gothilo; +}; + +/* Determine the positive and negative ranges to be used by each + offset range in the GOT. FDCUR and CUR, that must be aligned to a + double-word boundary, are the minimum (negative) and maximum + (positive) GOT offsets already used by previous ranges, except for + an ODD entry that may have been left behind. GOT and FD indicate + the size of GOT entries and function descriptors that must be + placed within the range from -WRAP to WRAP. If there's room left, + up to FDPLT bytes should be reserved for additional function + descriptors. */ + +inline static bfd_signed_vma +_frv_compute_got_alloc_data (struct _frv_dynamic_got_alloc_data *gad, + bfd_signed_vma fdcur, + bfd_signed_vma odd, + bfd_signed_vma cur, + bfd_vma got, + bfd_vma fd, + bfd_vma fdplt, + bfd_vma wrap) +{ + bfd_signed_vma wrapmin = -wrap; + + /* Start at the given initial points. */ + gad->fdcur = fdcur; + gad->cur = cur; + + /* If we had an incoming odd word and we have any got entries that + are going to use it, consume it, otherwise leave gad->odd at + zero. We might force gad->odd to zero and return the incoming + odd such that it is used by the next range, but then GOT entries + might appear to be out of order and we wouldn't be able to + shorten the GOT by one word if it turns out to end with an + unpaired GOT entry. */ + if (odd && got) + { + gad->odd = odd; + got -= 4; + odd = 0; + } + else + gad->odd = 0; + + /* If we're left with an unpaired GOT entry, compute its location + such that we can return it. Otherwise, if got doesn't require an + odd number of words here, either odd was already zero in the + block above, or it was set to zero because got was non-zero, or + got was already zero. In the latter case, we want the value of + odd to carry over to the return statement, so we don't want to + reset odd unless the condition below is true. */ + if (got & 4) + { + odd = cur + got; + got += 4; + } + + /* Compute the tentative boundaries of this range. */ + gad->max = cur + got; + gad->min = fdcur - fd; + gad->fdplt = 0; + + /* If function descriptors took too much space, wrap some of them + around. */ + if (gad->min < wrapmin) + { + gad->max += wrapmin - gad->min; + gad->min = wrapmin; + } + /* If there is space left and we have function descriptors + referenced in PLT entries that could take advantage of shorter + offsets, place them here. */ + else if (fdplt && gad->min > wrapmin) + { + bfd_vma fds; + if ((bfd_vma) (gad->min - wrapmin) < fdplt) + fds = gad->min - wrapmin; + else + fds = fdplt; + + fdplt -= fds; + gad->min -= fds; + gad->fdplt += fds; + } + + /* If GOT entries took too much space, wrap some of them around. + This may well cause gad->min to become lower than wrapmin. This + will cause a relocation overflow later on, so we don't have to + report it here . */ + if ((bfd_vma) gad->max > wrap) + { + gad->min -= gad->max - wrap; + gad->max = wrap; + } + /* If there is more space left, try to place some more function + descriptors for PLT entries. */ + else if (fdplt && (bfd_vma) gad->max < wrap) + { + bfd_vma fds; + if ((bfd_vma) (wrap - gad->max) < fdplt) + fds = wrap - gad->max; + else + fds = fdplt; + + fdplt -= fds; + gad->max += fds; + gad->fdplt += fds; + } + + /* If odd was initially computed as an offset past the wrap point, + wrap it around. */ + if (odd > gad->max) + odd = gad->min + odd - gad->max; + + /* _frv_get_got_entry() below will always wrap gad->cur if needed + before returning, so do it here too. This guarantees that, + should cur and fdcur meet at the wrap point, they'll both be + equal to min. */ + if (gad->cur == gad->max) + gad->cur = gad->min; + + return odd; +} + +/* Compute the location of the next GOT entry, given the allocation + data for a range. */ + +inline static bfd_signed_vma +_frv_get_got_entry (struct _frv_dynamic_got_alloc_data *gad) +{ + bfd_signed_vma ret; + + if (gad->odd) + { + /* If there was an odd word left behind, use it. */ + ret = gad->odd; + gad->odd = 0; + } + else + { + /* Otherwise, use the word pointed to by cur, reserve the next + as an odd word, and skip to the next pair of words, possibly + wrapping around. */ + ret = gad->cur; + gad->odd = gad->cur + 4; + gad->cur += 8; + if (gad->cur == gad->max) + gad->cur = gad->min; + } + + return ret; +} + +/* Compute the location of the next function descriptor entry in the + GOT, given the allocation data for a range. */ + +inline static bfd_signed_vma +_frv_get_fd_entry (struct _frv_dynamic_got_alloc_data *gad) +{ + /* If we're at the bottom, wrap around, and only then allocate the + next pair of words. */ + if (gad->fdcur == gad->min) + gad->fdcur = gad->max; + return gad->fdcur -= 8; +} + +/* Assign GOT offsets for every GOT entry and function descriptor. + Doing everything in a single pass is tricky. */ + +static int +_frv_assign_got_entries (void **entryp, void *info_) +{ + struct frv_pic_relocs_info *entry = *entryp; + struct _frv_dynamic_got_plt_info *dinfo = info_; + + if (entry->got12) + entry->got_entry = _frv_get_got_entry (&dinfo->got12); + else if (entry->gotlos) + entry->got_entry = _frv_get_got_entry (&dinfo->gotlos); + else if (entry->gothilo) + entry->got_entry = _frv_get_got_entry (&dinfo->gothilo); + + if (entry->fdgot12) + entry->fdgot_entry = _frv_get_got_entry (&dinfo->got12); + else if (entry->fdgotlos) + entry->fdgot_entry = _frv_get_got_entry (&dinfo->gotlos); + else if (entry->fdgothilo) + entry->fdgot_entry = _frv_get_got_entry (&dinfo->gothilo); + + if (entry->fdgoff12) + entry->fd_entry = _frv_get_fd_entry (&dinfo->got12); + else if (entry->plt && dinfo->got12.fdplt) + { + dinfo->got12.fdplt -= 8; + entry->fd_entry = _frv_get_fd_entry (&dinfo->got12); + } + else if (entry->fdgofflos) + entry->fd_entry = _frv_get_fd_entry (&dinfo->gotlos); + else if (entry->plt && dinfo->gotlos.fdplt) + { + dinfo->gotlos.fdplt -= 8; + entry->fd_entry = _frv_get_fd_entry (&dinfo->gotlos); + } + else if (entry->plt) + { + dinfo->gothilo.fdplt -= 8; + entry->fd_entry = _frv_get_fd_entry (&dinfo->gothilo); + } + else if (entry->privfd) + entry->fd_entry = _frv_get_fd_entry (&dinfo->gothilo); + + return 1; +} + +/* Assign GOT offsets to private function descriptors used by PLT + entries (or referenced by 32-bit offsets), as well as PLT entries + and lazy PLT entries. */ + +static int +_frv_assign_plt_entries (void **entryp, void *info_) +{ + struct frv_pic_relocs_info *entry = *entryp; + struct _frv_dynamic_got_plt_info *dinfo = info_; + + /* If this symbol requires a local function descriptor, allocate + one. */ + if (entry->privfd && entry->fd_entry == 0) + { + if (dinfo->got12.fdplt) + { + entry->fd_entry = _frv_get_fd_entry (&dinfo->got12); + dinfo->got12.fdplt -= 8; + } + else if (dinfo->gotlos.fdplt) + { + entry->fd_entry = _frv_get_fd_entry (&dinfo->gotlos); + dinfo->gotlos.fdplt -= 8; + } + else + { + BFD_ASSERT (dinfo->gothilo.fdplt) + entry->fd_entry = _frv_get_fd_entry (&dinfo->gothilo); + dinfo->gothilo.fdplt -= 8; + } + } + + if (entry->plt) + { + int size; + + /* We use the section's raw size to mark the location of the + next PLT entry. */ + entry->plt_entry = frv_plt_section (dinfo->g.info)->_raw_size; + + /* Figure out the length of this PLT entry based on the + addressing mode we need to reach the function descriptor. */ + BFD_ASSERT (entry->fd_entry); + if (entry->fd_entry >= -(1 << (12 - 1)) + && entry->fd_entry < (1 << (12 - 1))) + size = 8; + else if (entry->fd_entry >= -(1 << (16 - 1)) + && entry->fd_entry < (1 << (16 - 1))) + size = 12; + else + size = 16; + + frv_plt_section (dinfo->g.info)->_raw_size += size; + } + + if (entry->lazyplt) + { + entry->lzplt_entry = dinfo->g.lzplt; + dinfo->g.lzplt += 8; + /* If this entry is the one that gets the resolver stub, account + for the additional instruction. */ + if (entry->lzplt_entry % FRV_LZPLT_BLOCK_SIZE == FRV_LZPLT_RESOLV_LOC) + dinfo->g.lzplt += 4; + } + + return 1; +} + +/* Follow indirect and warning hash entries so that each got entry + points to the final symbol definition. P must point to a pointer + to the hash table we're traversing. Since this traversal may + modify the hash table, we set this pointer to NULL to indicate + we've made a potentially-destructive change to the hash table, so + the traversal must be restarted. */ +static int +_frv_resolve_final_relocs_info (void **entryp, void *p) +{ + struct frv_pic_relocs_info *entry = *entryp; + htab_t *htab = p; + + if (entry->symndx == -1) + { + struct elf_link_hash_entry *h = entry->d.h; + + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *)h->root.u.i.link; + + if (entry->d.h == h) + return 1; + + entry->d.h = h; + + /* If we can't find this entry with the new bfd hash, re-insert + it, and get the traversal restarted. */ + if (! htab_find (*htab, entry)) + { + htab_clear_slot (*htab, entryp); + entryp = htab_find_slot (*htab, entry, INSERT); + if (! *entryp) + *entryp = entry; + /* Abort the traversal, since the whole table may have + moved, and leave it up to the parent to restart the + process. */ + *(htab_t *)p = NULL; + return 0; + } + } + + return 1; +} + +/* Set the sizes of the dynamic sections. */ + +static bfd_boolean +elf32_frv_size_dynamic_sections (bfd *output_bfd, + struct bfd_link_info *info) +{ + bfd *dynobj; + asection *s; + struct _frv_dynamic_got_plt_info gpinfo; + bfd_signed_vma odd; + bfd_vma limit; + + dynobj = elf_hash_table (info)->dynobj; + BFD_ASSERT (dynobj != NULL); + + if (elf_hash_table (info)->dynamic_sections_created) + { + /* Set the contents of the .interp section to the interpreter. */ + if (info->executable) + { + s = bfd_get_section_by_name (dynobj, ".interp"); + BFD_ASSERT (s != NULL); + s->_raw_size = sizeof ELF_DYNAMIC_INTERPRETER; + s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER; + } + } + + memset (&gpinfo, 0, sizeof (gpinfo)); + gpinfo.g.info = info; + + for (;;) + { + htab_t relocs = frv_relocs_info (info); + + htab_traverse (relocs, _frv_resolve_final_relocs_info, &relocs); + + if (relocs == frv_relocs_info (info)) + break; + } + + htab_traverse (frv_relocs_info (info), _frv_count_got_plt_entries, + &gpinfo.g); + + odd = 12; + /* Compute the total size taken by entries in the 12-bit and 16-bit + ranges, to tell how many PLT function descriptors we can bring + into the 12-bit range without causing the 16-bit range to + overflow. */ + limit = odd + gpinfo.g.got12 + gpinfo.g.gotlos + + gpinfo.g.fd12 + gpinfo.g.fdlos; + if (limit < (bfd_vma)1 << 16) + limit = ((bfd_vma)1 << 16) - limit; + else + limit = 0; + if (gpinfo.g.fdplt < limit) + limit = gpinfo.g.fdplt; + + /* Determine the ranges of GOT offsets that we can use for each + range of addressing modes. */ + odd = _frv_compute_got_alloc_data (&gpinfo.got12, + 0, + odd, + 16, + gpinfo.g.got12, + gpinfo.g.fd12, + limit, + (bfd_vma)1 << (12-1)); + odd = _frv_compute_got_alloc_data (&gpinfo.gotlos, + gpinfo.got12.min, + odd, + gpinfo.got12.max, + gpinfo.g.gotlos, + gpinfo.g.fdlos, + gpinfo.g.fdplt - gpinfo.got12.fdplt, + (bfd_vma)1 << (16-1)); + odd = _frv_compute_got_alloc_data (&gpinfo.gothilo, + gpinfo.gotlos.min, + odd, + gpinfo.gotlos.max, + gpinfo.g.gothilo, + gpinfo.g.fdhilo, + gpinfo.g.fdplt - gpinfo.got12.fdplt + - gpinfo.gotlos.fdplt, + (bfd_vma)1 << (32-1)); + + /* Now assign (most) GOT offsets. */ + htab_traverse (frv_relocs_info (info), _frv_assign_got_entries, &gpinfo); + + frv_got_section (info)->_raw_size = gpinfo.gothilo.max - gpinfo.gothilo.min + /* If an odd word is the last word of the GOT, we don't need this + word to be part of the GOT. */ + - (odd + 4 == gpinfo.gothilo.max ? 4 : 0); + if (frv_got_section (info)->_raw_size == 0) + frv_got_section (info)->flags |= SEC_EXCLUDE; + else if (frv_got_section (info)->_raw_size == 12 + && ! elf_hash_table (info)->dynamic_sections_created) + { + frv_got_section (info)->flags |= SEC_EXCLUDE; + frv_got_section (info)->_raw_size = 0; + } + else + { + frv_got_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, frv_got_section (info)->_raw_size); + if (frv_got_section (info)->contents == NULL) + return FALSE; + } + + if (elf_hash_table (info)->dynamic_sections_created) + /* Subtract the number of lzplt entries, since those will generate + relocations in the pltrel section. */ + frv_gotrel_section (info)->_raw_size = + (gpinfo.g.relocs - gpinfo.g.lzplt / 8) + * get_elf_backend_data (output_bfd)->s->sizeof_rel; + else + BFD_ASSERT (gpinfo.g.relocs == 0); + if (frv_gotrel_section (info)->_raw_size == 0) + frv_gotrel_section (info)->flags |= SEC_EXCLUDE; + else + { + frv_gotrel_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, frv_gotrel_section (info)->_raw_size); + if (frv_gotrel_section (info)->contents == NULL) + return FALSE; + } - name = bfd_elf_string_from_elf_section - (input_bfd, symtab_hdr->sh_link, sym->st_name); - name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name; + if (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC) + frv_gotfixup_section (info)->_raw_size = (gpinfo.g.fixups + 1) * 4; + if (frv_gotfixup_section (info)->_raw_size == 0) + frv_gotfixup_section (info)->flags |= SEC_EXCLUDE; + else + { + frv_gotfixup_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, + frv_gotfixup_section (info)->_raw_size); + if (frv_gotfixup_section (info)->contents == NULL) + return FALSE; + } + + if (elf_hash_table (info)->dynamic_sections_created) + { + frv_pltrel_section (info)->_raw_size = + gpinfo.g.lzplt / 8 * get_elf_backend_data (output_bfd)->s->sizeof_rel; + if (frv_pltrel_section (info)->_raw_size == 0) + frv_pltrel_section (info)->flags |= SEC_EXCLUDE; + else + { + frv_pltrel_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, + frv_pltrel_section (info)->_raw_size); + if (frv_pltrel_section (info)->contents == NULL) + return FALSE; } + } + + /* Add 4 bytes for every block of at most 65535 lazy PLT entries, + such that there's room for the additional instruction needed to + call the resolver. Since _frv_assign_got_entries didn't account + for them, our block size is 4 bytes smaller than the real block + size. */ + if (elf_hash_table (info)->dynamic_sections_created) + { + frv_plt_section (info)->_raw_size = gpinfo.g.lzplt + + ((gpinfo.g.lzplt + (FRV_LZPLT_BLOCK_SIZE - 4) - 8) + / (FRV_LZPLT_BLOCK_SIZE - 4) * 4); + } + + /* Reset it, such that _frv_assign_plt_entries() can use it to + actually assign lazy PLT entries addresses. */ + gpinfo.g.lzplt = 0; + + /* Save information that we're going to need to generate GOT and PLT + entries. */ + frv_got_initial_offset (info) = -gpinfo.gothilo.min; + + if (get_elf_backend_data (output_bfd)->want_got_sym) + elf_hash_table (info)->hgot->root.u.def.value + += frv_got_initial_offset (info); + + if (elf_hash_table (info)->dynamic_sections_created) + frv_plt_initial_offset (info) = frv_plt_section (info)->_raw_size; + + htab_traverse (frv_relocs_info (info), _frv_assign_plt_entries, &gpinfo); + + /* Allocate the PLT section contents only after + _frv_assign_plt_entries has a chance to add the size of the + non-lazy PLT entries. */ + if (elf_hash_table (info)->dynamic_sections_created) + { + if (frv_plt_section (info)->_raw_size == 0) + frv_plt_section (info)->flags |= SEC_EXCLUDE; else { - h = sym_hashes [r_symndx - symtab_hdr->sh_info]; + frv_plt_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, frv_plt_section (info)->_raw_size); + if (frv_plt_section (info)->contents == NULL) + return FALSE; + } + } - while (h->root.type == bfd_link_hash_indirect - || h->root.type == bfd_link_hash_warning) - h = (struct elf_link_hash_entry *) h->root.u.i.link; + if (elf_hash_table (info)->dynamic_sections_created) + { + if (frv_got_section (info)->_raw_size) + if (! bfd_elf32_add_dynamic_entry (info, DT_PLTGOT, 0)) + return FALSE; + + if (frv_pltrel_section (info)->_raw_size) + if (! bfd_elf32_add_dynamic_entry (info, DT_PLTRELSZ, 0) + || ! bfd_elf32_add_dynamic_entry (info, DT_PLTREL, DT_REL) + || ! bfd_elf32_add_dynamic_entry (info, DT_JMPREL, 0)) + return FALSE; + + if (frv_gotrel_section (info)->_raw_size) + if (! bfd_elf32_add_dynamic_entry (info, DT_REL, 0) + || ! bfd_elf32_add_dynamic_entry (info, DT_RELSZ, 0) + || ! bfd_elf32_add_dynamic_entry (info, DT_RELENT, + sizeof (Elf32_External_Rel))) + return FALSE; + } - name = h->root.root.string; + return TRUE; +} - if (h->root.type == bfd_link_hash_defined - || h->root.type == bfd_link_hash_defweak) - { - sec = h->root.u.def.section; - relocation = (h->root.u.def.value - + sec->output_section->vma - + sec->output_offset); - } - else if (h->root.type == bfd_link_hash_undefweak) - { - relocation = 0; - } - else - { - if (! ((*info->callbacks->undefined_symbol) - (info, h->root.root.string, input_bfd, - input_section, rel->r_offset, TRUE))) - return FALSE; - relocation = 0; - } - } +static bfd_boolean +elf32_frv_always_size_sections (bfd *output_bfd, + struct bfd_link_info *info) +{ + if (!info->relocatable + && elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC) + { + struct elf_link_hash_entry *h; + asection *sec; - if (r_type == R_FRV_HI16) - r = elf32_frv_relocate_hi16 (input_bfd, rel, contents, relocation); + /* Force a PT_GNU_STACK segment to be created. */ + if (! elf_tdata (output_bfd)->stack_flags) + elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X; + + /* Define __stacksize if it's not defined yet. */ + h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize", + FALSE, FALSE, FALSE); + if (! h || h->root.type != bfd_link_hash_defined + || h->type != STT_OBJECT + || !(h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)) + { + struct bfd_link_hash_entry *bh; - else if (r_type == R_FRV_LO16) - r = elf32_frv_relocate_lo16 (input_bfd, rel, contents, relocation); + if (!(_bfd_generic_link_add_one_symbol + (info, output_bfd, "__stacksize", + BSF_GLOBAL, bfd_abs_section_ptr, DEFAULT_STACK_SIZE, + (const char *) NULL, FALSE, + get_elf_backend_data (output_bfd)->collect, &bh))) + return FALSE; - else if (r_type == R_FRV_LABEL24) - r = elf32_frv_relocate_label24 (input_bfd, input_section, rel, - contents, relocation); + h = (struct elf_link_hash_entry *) bh; + h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; + h->type = STT_OBJECT; + } - else if (r_type == R_FRV_GPREL12) - r = elf32_frv_relocate_gprel12 (info, input_bfd, input_section, rel, - contents, relocation); + /* Create a stack section, and set its alignment. */ + sec = bfd_make_section (output_bfd, ".stack"); - else if (r_type == R_FRV_GPRELU12) - r = elf32_frv_relocate_gprelu12 (info, input_bfd, input_section, rel, - contents, relocation); + if (sec == NULL + || ! bfd_set_section_alignment (output_bfd, sec, 3)) + return FALSE; + } - else if (r_type == R_FRV_GPRELLO) - r = elf32_frv_relocate_gprello (info, input_bfd, input_section, rel, - contents, relocation); + return TRUE; +} - else if (r_type == R_FRV_GPRELHI) - r = elf32_frv_relocate_gprelhi (info, input_bfd, input_section, rel, - contents, relocation); +static bfd_boolean +elf32_frv_modify_segment_map (bfd *output_bfd, + struct bfd_link_info *info) +{ + if (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC) + { + struct elf_segment_map *m; - else - r = frv_final_link_relocate (howto, input_bfd, input_section, contents, - rel, relocation); + for (m = elf_tdata (output_bfd)->segment_map; m != NULL; m = m->next) + if (m->p_type == PT_GNU_STACK) + break; - if (r != bfd_reloc_ok) + if (m) { - const char * msg = (const char *) NULL; + asection *sec = bfd_get_section_by_name (output_bfd, ".stack"); + struct elf_link_hash_entry *h; - switch (r) + if (sec) { - case bfd_reloc_overflow: - r = info->callbacks->reloc_overflow - (info, name, howto->name, (bfd_vma) 0, - input_bfd, input_section, rel->r_offset); - break; + /* Obtain the pointer to the __stacksize symbol. */ + h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize", + FALSE, FALSE, FALSE); + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *)h->root.u.i.link; + BFD_ASSERT (h->root.type == bfd_link_hash_defined); + + /* Set the section size from the symbol value. We + intentionally ignore the symbol section. */ + if (h->root.type == bfd_link_hash_defined) + sec->_raw_size = h->root.u.def.value; + else + sec->_raw_size = DEFAULT_STACK_SIZE; + + /* Add the stack section to the PT_GNU_STACK segment, + such that its size and alignment requirements make it + to the segment. */ + m->sections[m->count] = sec; + m->count++; + } + } + } - case bfd_reloc_undefined: - r = info->callbacks->undefined_symbol - (info, name, input_bfd, input_section, rel->r_offset, TRUE); - break; + return TRUE; +} - case bfd_reloc_outofrange: - msg = _("internal error: out of range error"); - break; +/* Fill in code and data in dynamic sections. */ - case bfd_reloc_notsupported: - msg = _("internal error: unsupported relocation error"); - break; +static bfd_boolean +elf32_frv_finish_dynamic_sections (bfd *output_bfd, + struct bfd_link_info *info) +{ + bfd *dynobj; + asection *sdyn; - case bfd_reloc_dangerous: - msg = _("internal error: dangerous relocation"); - break; + dynobj = elf_hash_table (info)->dynobj; - default: - msg = _("internal error: unknown error"); - break; - } + if (frv_got_section (info)) + { + BFD_ASSERT (frv_gotrel_section (info)->_raw_size + == (frv_gotrel_section (info)->reloc_count + * sizeof (Elf32_External_Rel))); - if (msg) - r = info->callbacks->warning - (info, msg, name, input_bfd, input_section, rel->r_offset); + if (frv_gotfixup_section (info)) + { + if (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC) + { + struct elf_link_hash_entry *hgot = elf_hash_table (info)->hgot; + bfd_vma got_value = hgot->root.u.def.value + + hgot->root.u.def.section->output_section->vma + + hgot->root.u.def.section->output_offset; - if (! r) - return FALSE; + _frv_add_rofixup (output_bfd, frv_gotfixup_section (info), + got_value); + } + + if (frv_gotfixup_section (info)->_raw_size + != (frv_gotfixup_section (info)->reloc_count * 4)) + { + if (!elf_hash_table (info)->dynamic_sections_created) + { + info->callbacks->warning + (info, "no dynamic sections, missing -melf32frvfd?", + ".rofixup", NULL, NULL, 0); + return FALSE; + } + BFD_ASSERT (0); + } } } + if (elf_hash_table (info)->dynamic_sections_created) + { + BFD_ASSERT (frv_pltrel_section (info)->_raw_size + == (frv_pltrel_section (info)->reloc_count + * sizeof (Elf32_External_Rel))); + } - return TRUE; -} - -/* Return the section that should be marked against GC for a given - relocation. */ + sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); -static asection * -elf32_frv_gc_mark_hook (sec, info, rel, h, sym) - asection *sec; - struct bfd_link_info *info ATTRIBUTE_UNUSED; - Elf_Internal_Rela *rel; - struct elf_link_hash_entry *h; - Elf_Internal_Sym *sym; -{ - if (h != NULL) + if (elf_hash_table (info)->dynamic_sections_created) { - switch (ELF32_R_TYPE (rel->r_info)) + Elf32_External_Dyn * dyncon; + Elf32_External_Dyn * dynconend; + + BFD_ASSERT (sdyn != NULL); + + dyncon = (Elf32_External_Dyn *) sdyn->contents; + dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->_raw_size); + + for (; dyncon < dynconend; dyncon++) { - case R_FRV_GNU_VTINHERIT: - case R_FRV_GNU_VTENTRY: - break; + Elf_Internal_Dyn dyn; - default: - switch (h->root.type) + bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn); + + switch (dyn.d_tag) { default: break; - case bfd_link_hash_defined: - case bfd_link_hash_defweak: - return h->root.u.def.section; + case DT_PLTGOT: + dyn.d_un.d_ptr = frv_got_section (info)->output_section->vma + + frv_got_section (info)->output_offset + + frv_got_initial_offset (info); + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; - case bfd_link_hash_common: - return h->root.u.c.p->section; + case DT_JMPREL: + dyn.d_un.d_ptr = frv_pltrel_section (info)->output_section->vma + + frv_pltrel_section (info)->output_offset; + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; + + case DT_PLTRELSZ: + if (frv_pltrel_section (info)->_cooked_size != 0) + dyn.d_un.d_val = frv_pltrel_section (info)->_cooked_size; + else + dyn.d_un.d_val = frv_pltrel_section (info)->_raw_size; + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; } } } - else - return bfd_section_from_elf_index (sec->owner, sym->st_shndx); - return NULL; + return TRUE; } -/* Update the got entry reference counts for the section being removed. */ +/* Adjust a symbol defined by a dynamic object and referenced by a + regular object. */ static bfd_boolean -elf32_frv_gc_sweep_hook (abfd, info, sec, relocs) - bfd *abfd ATTRIBUTE_UNUSED; - struct bfd_link_info *info ATTRIBUTE_UNUSED; - asection *sec ATTRIBUTE_UNUSED; - const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED; +elf32_frv_adjust_dynamic_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED, + struct elf_link_hash_entry *h ATTRIBUTE_UNUSED) { - return TRUE; -} + bfd * dynobj; - -/* Hook called by the linker routine which adds symbols from an object - file. We use it to put .comm items in .scomm, and not .comm. */ + dynobj = elf_hash_table (info)->dynobj; -static bfd_boolean -elf32_frv_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp) - bfd *abfd; - struct bfd_link_info *info; - const Elf_Internal_Sym *sym; - const char **namep ATTRIBUTE_UNUSED; - flagword *flagsp ATTRIBUTE_UNUSED; - asection **secp; - bfd_vma *valp; -{ - if (sym->st_shndx == SHN_COMMON - && !info->relocatable - && (int)sym->st_size <= (int)bfd_get_gp_size (abfd)) + /* Make sure we know what is going on here. */ + BFD_ASSERT (dynobj != NULL + && (h->weakdef != NULL + || ((h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_DYNAMIC) != 0 + && (h->elf_link_hash_flags + & ELF_LINK_HASH_REF_REGULAR) != 0 + && (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0))); + + /* If this is a weak symbol, and there is a real definition, the + processor independent code will have arranged for us to see the + real definition first, and we can just use the same value. */ + if (h->weakdef != NULL) { - /* Common symbols less than or equal to -G nn bytes are - automatically put into .sbss. */ - - asection *scomm = bfd_get_section_by_name (abfd, ".scommon"); + BFD_ASSERT (h->weakdef->root.type == bfd_link_hash_defined + || h->weakdef->root.type == bfd_link_hash_defweak); + h->root.u.def.section = h->weakdef->root.u.def.section; + h->root.u.def.value = h->weakdef->root.u.def.value; + } - if (scomm == NULL) - { - scomm = bfd_make_section (abfd, ".scommon"); - if (scomm == NULL - || !bfd_set_section_flags (abfd, scomm, (SEC_ALLOC - | SEC_IS_COMMON - | SEC_LINKER_CREATED))) - return FALSE; - } + return TRUE; +} - *secp = scomm; - *valp = sym->st_size; - } +/* Perform any actions needed for dynamic symbols. */ +static bfd_boolean +elf32_frv_finish_dynamic_symbol (bfd *output_bfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + struct elf_link_hash_entry *h ATTRIBUTE_UNUSED, + Elf_Internal_Sym *sym ATTRIBUTE_UNUSED) +{ return TRUE; } + /* Look through the relocs for a section during the first phase. - Since we don't do .gots or .plts, we just need to consider the - virtual table relocs for gc. */ + + Besides handling virtual table relocs for gc, we have to deal with + all sorts of PIC-related relocations. We describe below the + general plan on how to handle such relocations, even though we only + collect information at this point, storing them in hash tables for + perusal of later passes. + + 32 relocations are propagated to the linker output when creating + position-independent output. LO16 and HI16 relocations are not + supposed to be encountered in this case. + + LABEL16 should always be resolvable by the linker, since it's only + used by branches. + + LABEL24, on the other hand, is used by calls. If it turns out that + the target of a call is a dynamic symbol, a PLT entry must be + created for it, which triggers the creation of a private function + descriptor and, unless lazy binding is disabled, a lazy PLT entry. + + GPREL relocations require the referenced symbol to be in the same + segment as _gp, but this can only be checked later. + + All GOT, GOTOFF and FUNCDESC relocations require a .got section to + exist. LABEL24 might as well, since it may require a PLT entry, + that will require a got. + + Non-FUNCDESC GOT relocations require a GOT entry to be created + regardless of whether the symbol is dynamic. However, since a + global symbol that turns out to not be exported may have the same + address of a non-dynamic symbol, we don't assign GOT entries at + this point, such that we can share them in this case. A relocation + for the GOT entry always has to be created, be it to offset a + private symbol by the section load address, be it to get the symbol + resolved dynamically. + + FUNCDESC GOT relocations require a GOT entry to be created, and + handled as if a FUNCDESC relocation was applied to the GOT entry in + an object file. + + FUNCDESC relocations referencing a symbol that turns out to NOT be + dynamic cause a private function descriptor to be created. The + FUNCDESC relocation then decays to a 32 relocation that points at + the private descriptor. If the symbol is dynamic, the FUNCDESC + relocation is propagated to the linker output, such that the + dynamic linker creates the canonical descriptor, pointing to the + dynamically-resolved definition of the function. + + Non-FUNCDESC GOTOFF relocations must always refer to non-dynamic + symbols that are assigned to the same segment as the GOT, but we + can only check this later, after we know the complete set of + symbols defined and/or exported. + + FUNCDESC GOTOFF relocations require a function descriptor to be + created and, unless lazy binding is disabled or the symbol is not + dynamic, a lazy PLT entry. Since we can't tell at this point + whether a symbol is going to be dynamic, we have to decide later + whether to create a lazy PLT entry or bind the descriptor directly + to the private function. + + FUNCDESC_VALUE relocations are not supposed to be present in object + files, but they may very well be simply propagated to the linker + output, since they have no side effect. + + + A function descriptor always requires a FUNCDESC_VALUE relocation. + Whether it's in .plt.rel or not depends on whether lazy binding is + enabled and on whether the referenced symbol is dynamic. + + The existence of a lazy PLT requires the resolverStub lazy PLT + entry to be present. + + + As for assignment of GOT, PLT and lazy PLT entries, and private + descriptors, we might do them all sequentially, but we can do + better than that. For example, we can place GOT entries and + private function descriptors referenced using 12-bit operands + closer to the PIC register value, such that these relocations don't + overflow. Those that are only referenced with LO16 relocations + could come next, but we may as well place PLT-required function + descriptors in the 12-bit range to make them shorter. Symbols + referenced with LO16/HI16 may come next, but we may place + additional function descriptors in the 16-bit range if we can + reliably tell that we've already placed entries that are ever + referenced with only LO16. PLT entries are therefore generated as + small as possible, while not introducing relocation overflows in + GOT or FUNCDESC_GOTOFF relocations. Lazy PLT entries could be + generated before or after PLT entries, but not intermingled with + them, such that we can have more lazy PLT entries in range for a + branch to the resolverStub. The resolverStub should be emitted at + the most distant location from the first lazy PLT entry such that + it's still in range for a branch, or closer, if there isn't a need + for so many lazy PLT entries. Additional lazy PLT entries may be + emitted after the resolverStub, as long as branches are still in + range. If the branch goes out of range, longer lazy PLT entries + are emitted. + + We could further optimize PLT and lazy PLT entries by giving them + priority in assignment to closer-to-gr17 locations depending on the + number of occurrences of references to them (assuming a function + that's called more often is more important for performance, so its + PLT entry should be faster), or taking hints from the compiler. + Given infinite time and money... :-) */ static bfd_boolean elf32_frv_check_relocs (abfd, info, sec, relocs) @@ -944,6 +3787,8 @@ elf32_frv_check_relocs (abfd, info, sec, struct elf_link_hash_entry **sym_hashes, **sym_hashes_end; const Elf_Internal_Rela *rel; const Elf_Internal_Rela *rel_end; + bfd *dynobj; + struct frv_pic_relocs_info *picrel; if (info->relocatable) return TRUE; @@ -954,6 +3799,7 @@ elf32_frv_check_relocs (abfd, info, sec, if (!elf_bad_symtab (abfd)) sym_hashes_end -= symtab_hdr->sh_info; + dynobj = elf_hash_table (info)->dynobj; rel_end = relocs + sec->reloc_count; for (rel = relocs; rel < rel_end; rel++) { @@ -967,7 +3813,114 @@ elf32_frv_check_relocs (abfd, info, sec, h = sym_hashes[r_symndx - symtab_hdr->sh_info]; switch (ELF32_R_TYPE (rel->r_info)) + { + case R_FRV_LABEL24: + case R_FRV_32: + case R_FRV_GOT12: + case R_FRV_GOTHI: + case R_FRV_GOTLO: + case R_FRV_FUNCDESC_GOT12: + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTLO: + case R_FRV_GOTOFF12: + case R_FRV_GOTOFFHI: + case R_FRV_GOTOFFLO: + case R_FRV_FUNCDESC_GOTOFF12: + case R_FRV_FUNCDESC_GOTOFFHI: + case R_FRV_FUNCDESC_GOTOFFLO: + case R_FRV_FUNCDESC: + case R_FRV_FUNCDESC_VALUE: + if (! dynobj) + { + elf_hash_table (info)->dynobj = dynobj = abfd; + if (! _frv_create_got_section (abfd, info)) + return FALSE; + } + if (h != NULL) + { + if (h->dynindx == -1) + switch (ELF_ST_VISIBILITY (h->other)) + { + case STV_INTERNAL: + case STV_HIDDEN: + break; + default: + bfd_elf32_link_record_dynamic_symbol (info, h); + break; + } + picrel + = frv_pic_relocs_info_for_global (frv_relocs_info (info), + abfd, h, + rel->r_addend); + } + else + picrel = frv_pic_relocs_info_for_local (frv_relocs_info (info), + abfd, r_symndx, + rel->r_addend); + if (! picrel) + return FALSE; + break; + + default: + picrel = NULL; + break; + } + + switch (ELF32_R_TYPE (rel->r_info)) { + case R_FRV_LABEL24: + picrel->call = 1; + break; + + case R_FRV_FUNCDESC_VALUE: + picrel->relocsfdv++; + if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) + picrel->relocs32--; + /* Fall through. */ + case R_FRV_32: + picrel->sym = 1; + if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) + picrel->relocs32++; + break; + + case R_FRV_GOT12: + picrel->got12 = 1; + break; + + case R_FRV_GOTHI: + case R_FRV_GOTLO: + picrel->gothilo = 1; + break; + + case R_FRV_FUNCDESC_GOT12: + picrel->fdgot12 = 1; + break; + + case R_FRV_FUNCDESC_GOTHI: + case R_FRV_FUNCDESC_GOTLO: + picrel->fdgothilo = 1; + break; + + case R_FRV_GOTOFF12: + case R_FRV_GOTOFFHI: + case R_FRV_GOTOFFLO: + picrel->gotoff = 1; + break; + + case R_FRV_FUNCDESC_GOTOFF12: + picrel->fdgoff12 = 1; + break; + + case R_FRV_FUNCDESC_GOTOFFHI: + case R_FRV_FUNCDESC_GOTOFFLO: + picrel->fdgoffhilo = 1; + break; + + case R_FRV_FUNCDESC: + picrel->fd = 1; + picrel->relocsfd++; + break; + /* This relocation describes the C++ object vtable hierarchy. Reconstruct it for later use during GC. */ case R_FRV_GNU_VTINHERIT: @@ -1067,6 +4020,9 @@ frv_elf_merge_private_bfd_data (ibfd, ob new_flags = elf_elfheader (ibfd)->e_flags; old_flags = elf_elfheader (obfd)->e_flags; + if (new_flags & EF_FRV_FDPIC) + new_flags &= ~EF_FRV_PIC; + #ifdef DEBUG (*_bfd_error_handler) ("old_flags = 0x%.8lx, new_flags = 0x%.8lx, init = %s, filename = %s", old_flags, new_flags, elf_flags_init (obfd) ? "yes" : "no", @@ -1369,6 +4325,12 @@ frv_elf_print_private_bfd_data (abfd, pt if (flags & EF_FRV_BIGPIC) fprintf (file, " -fPIC"); + if (flags & EF_FRV_LIBPIC) + fprintf (file, " -mlibrary-pic"); + + if (flags & EF_FRV_FDPIC) + fprintf (file, " -mfdpic"); + if (flags & EF_FRV_NON_PIC_RELOCS) fprintf (file, " non-pic relocations"); @@ -1387,7 +4349,7 @@ frv_elf_print_private_bfd_data (abfd, pt #define TARGET_BIG_SYM bfd_elf32_frv_vec #define TARGET_BIG_NAME "elf32-frv" -#define elf_info_to_howto_rel NULL +#define elf_info_to_howto_rel frv_info_to_howto_rel #define elf_info_to_howto frv_info_to_howto_rela #define elf_backend_relocate_section elf32_frv_relocate_section #define elf_backend_gc_mark_hook elf32_frv_gc_mark_hook @@ -1405,4 +4367,33 @@ frv_elf_print_private_bfd_data (abfd, pt #define bfd_elf32_bfd_merge_private_bfd_data frv_elf_merge_private_bfd_data #define bfd_elf32_bfd_print_private_bfd_data frv_elf_print_private_bfd_data +#define bfd_elf32_bfd_link_hash_table_create frv_elf_link_hash_table_create +#define elf_backend_always_size_sections \ + elf32_frv_always_size_sections +#define elf_backend_modify_segment_map \ + elf32_frv_modify_segment_map + +#define elf_backend_create_dynamic_sections \ + elf32_frv_create_dynamic_sections +#define elf_backend_adjust_dynamic_symbol \ + elf32_frv_adjust_dynamic_symbol +#define elf_backend_size_dynamic_sections \ + elf32_frv_size_dynamic_sections +#define elf_backend_finish_dynamic_symbol \ + elf32_frv_finish_dynamic_symbol +#define elf_backend_finish_dynamic_sections \ + elf32_frv_finish_dynamic_sections + +#define elf_backend_want_got_sym 1 +#define elf_backend_got_header_size 0 +#define elf_backend_want_got_plt 0 +#define elf_backend_plt_readonly 1 +#define elf_backend_want_plt_sym 0 +#define elf_backend_plt_header_size 0 + +#define elf_backend_may_use_rel_p 1 +#define elf_backend_may_use_rela_p 1 +/* We use REL for dynamic relocations only. */ +#define elf_backend_default_use_rela_p 1 + #include "elf32-target.h" diff -uprN binutils-2.14.90.0.7/bfd/elf32-h8300.c binutils-2.14.90.0.8/bfd/elf32-h8300.c --- binutils-2.14.90.0.7/bfd/elf32-h8300.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-h8300.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD back-end for Renesas H8/300 ELF binaries. - Copyright 1993, 1995, 1998, 1999, 2001, 2002, 2003 + Copyright 1993, 1995, 1998, 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -30,23 +30,23 @@ static void elf32_h8_info_to_howto (bfd *, arelent *, Elf_Internal_Rela *); static void elf32_h8_info_to_howto_rel (bfd *, arelent *, Elf_Internal_Rela *); -static unsigned long elf32_h8_mach - (flagword); -static void elf32_h8_final_write_processing - (bfd *, bfd_boolean); -static bfd_boolean elf32_h8_object_p - (bfd *); -static bfd_boolean elf32_h8_merge_private_bfd_data - (bfd *, bfd *); +static unsigned long elf32_h8_mach (flagword); +static void elf32_h8_final_write_processing (bfd *, bfd_boolean); +static bfd_boolean elf32_h8_object_p (bfd *); +static bfd_boolean elf32_h8_merge_private_bfd_data (bfd *, bfd *); static bfd_boolean elf32_h8_relax_section (bfd *, asection *, struct bfd_link_info *, bfd_boolean *); static bfd_boolean elf32_h8_relax_delete_bytes (bfd *, asection *, bfd_vma, int); -static bfd_boolean elf32_h8_symbol_address_p - (bfd *, asection *, bfd_vma); +static bfd_boolean elf32_h8_symbol_address_p (bfd *, asection *, bfd_vma); static bfd_byte *elf32_h8_get_relocated_section_contents (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, bfd_boolean, asymbol **); +static asection *elf32_h8_gc_mark_hook + (asection *, struct bfd_link_info *, Elf_Internal_Rela *, + struct elf_link_hash_entry *, Elf_Internal_Sym *); +static bfd_boolean elf32_h8_gc_sweep_hook + (bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *); static bfd_reloc_status_type elf32_h8_final_link_relocate (unsigned long, bfd *, bfd *, asection *, bfd_byte *, bfd_vma, bfd_vma, bfd_vma, @@ -435,7 +435,7 @@ elf32_h8_relocate_section (bfd *output_b { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -640,8 +640,8 @@ elf32_h8_merge_private_bfd_data (bfd *ib && bfd_get_mach (obfd) < bfd_get_mach (ibfd)) { if (! bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), - bfd_get_mach (ibfd))) - return FALSE; + bfd_get_mach (ibfd))) + return FALSE; } return TRUE; @@ -649,7 +649,7 @@ elf32_h8_merge_private_bfd_data (bfd *ib /* This function handles relaxing for the H8.. - There's a few relaxing opportunites available on the H8: + There are a few relaxing opportunities available on the H8: jmp/jsr:24 -> bra/bsr:8 2 bytes The jmp may be completely eliminated if the previous insn is a @@ -1010,6 +1010,7 @@ elf32_h8_relax_section (bfd *abfd, asect if (value >= 0xffffff00u) { unsigned char code; + unsigned char temp_code; /* Note that we've changed the relocs, section contents, etc. */ @@ -1024,18 +1025,29 @@ elf32_h8_relax_section (bfd *abfd, asect if (code != 0x6a) abort (); - code = bfd_get_8 (abfd, contents + irel->r_offset - 1); + temp_code = code = bfd_get_8 (abfd, contents + irel->r_offset - 1); + if ((temp_code & 0x10) != 0x10) + temp_code &= 0xf0; - if ((code & 0xf0) == 0x00) - bfd_put_8 (abfd, - (code & 0xf) | 0x20, - contents + irel->r_offset - 2); - else if ((code & 0xf0) == 0x80) - bfd_put_8 (abfd, - (code & 0xf) | 0x30, - contents + irel->r_offset - 2); - else - abort (); + switch (temp_code) + { + case 0x00: + bfd_put_8 (abfd, (code & 0xf) | 0x20, + contents + irel->r_offset - 2); + break; + case 0x80: + bfd_put_8 (abfd, (code & 0xf) | 0x30, + contents + irel->r_offset - 2); + break; + case 0x18: + bfd_put_8 (abfd, 0x7f, contents + irel->r_offset - 2); + break; + case 0x10: + bfd_put_8 (abfd, 0x7e, contents + irel->r_offset - 2); + break; + default: + abort (); + } /* Fix the relocation's type. */ irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info), @@ -1066,6 +1078,7 @@ elf32_h8_relax_section (bfd *abfd, asect if (value >= 0xffffff00u) { unsigned char code; + unsigned char temp_code; /* Note that we've changed the relocs, section contents, etc. */ @@ -1080,9 +1093,12 @@ elf32_h8_relax_section (bfd *abfd, asect if (code != 0x6a) abort (); - code = bfd_get_8 (abfd, contents + irel->r_offset - 1); + temp_code = code = bfd_get_8 (abfd, contents + irel->r_offset - 1); + + if ((temp_code & 0x30) != 0x30) + temp_code &= 0xf0; - switch (code & 0xf0) + switch (temp_code) { case 0x20: bfd_put_8 (abfd, (code & 0xf) | 0x20, @@ -1092,8 +1108,14 @@ elf32_h8_relax_section (bfd *abfd, asect bfd_put_8 (abfd, (code & 0xf) | 0x30, contents + irel->r_offset - 2); break; + case 0x38: + bfd_put_8 (abfd, 0x7f, contents + irel->r_offset - 2); + break; + case 0x30: + bfd_put_8 (abfd, 0x7e, contents + irel->r_offset - 2); + break; default: - abort (); + abort(); } /* Fix the relocation's type. */ @@ -1113,10 +1135,10 @@ elf32_h8_relax_section (bfd *abfd, asect } } - /* FALLTHRU */ + /* Fall through. */ /* This is a 24/32bit absolute address in a "mov" insn, which may - become a 16bit absoulte address if it is in the right range. */ + become a 16-bit absolute address if it is in the right range. */ case R_H8_DIR32A16: { bfd_vma value; @@ -1428,6 +1450,42 @@ elf32_h8_get_relocated_section_contents return NULL; } +static asection * +elf32_h8_gc_mark_hook (asection *sec, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + Elf_Internal_Rela *rel ATTRIBUTE_UNUSED, + struct elf_link_hash_entry *h, + Elf_Internal_Sym *sym) +{ + if (h != NULL) + { + switch (h->root.type) + { + case bfd_link_hash_defined: + case bfd_link_hash_defweak: + return h->root.u.def.section; + + case bfd_link_hash_common: + return h->root.u.c.p->section; + + default: + break; + } + } + else + return bfd_section_from_elf_index (sec->owner, sym->st_shndx); + return NULL; +} + +static bfd_boolean +elf32_h8_gc_sweep_hook (bfd *abfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + asection *sec ATTRIBUTE_UNUSED, + const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED) +{ + return TRUE; +} + #define TARGET_BIG_SYM bfd_elf32_h8300_vec #define TARGET_BIG_NAME "elf32-h8300" @@ -1446,6 +1504,8 @@ elf32_h8_get_relocated_section_contents elf32_h8_object_p #define bfd_elf32_bfd_merge_private_bfd_data \ elf32_h8_merge_private_bfd_data +#define elf_backend_gc_mark_hook elf32_h8_gc_mark_hook +#define elf_backend_gc_sweep_hook elf32_h8_gc_sweep_hook /* ??? when elf_backend_relocate_section is not defined, elf32-target.h defaults to using _bfd_generic_link_hash_table_create, but @@ -1457,6 +1517,7 @@ elf32_h8_get_relocated_section_contents /* Use an H8 specific linker, not the ELF generic linker. */ #define elf_backend_relocate_section elf32_h8_relocate_section #define elf_backend_rela_normal 1 +#define elf_backend_can_gc_sections 1 /* And relaxing stuff. */ #define bfd_elf32_bfd_relax_section elf32_h8_relax_section diff -uprN binutils-2.14.90.0.7/bfd/elf32-hppa.c binutils-2.14.90.0.8/bfd/elf32-hppa.c --- binutils-2.14.90.0.7/bfd/elf32-hppa.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-hppa.c 2004-01-14 13:07:43.000000000 -0800 @@ -141,6 +141,12 @@ static const bfd_byte plt_stub[] = #define IS_ABSOLUTE_RELOC(r_type) 1 #endif +/* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid + copying dynamic variables from a shared lib into an app's dynbss + section, and instead use a dynamic relocation to point into the + shared lib. */ +#define ELIMINATE_COPY_RELOCS 1 + enum elf32_hppa_stub_type { hppa_stub_long_branch, hppa_stub_long_branch_shared, @@ -1003,7 +1009,19 @@ elf32_hppa_copy_indirect_symbol (const s eind->dyn_relocs = NULL; } - _bfd_elf_link_hash_copy_indirect (bed, dir, ind); + if (ELIMINATE_COPY_RELOCS + && ind->root.type != bfd_link_hash_indirect + && (dir->elf_link_hash_flags & ELF_LINK_HASH_DYNAMIC_ADJUSTED) != 0) + /* If called to transfer flags for a weakdef during processing + of elf_adjust_dynamic_symbol, don't copy ELF_LINK_NON_GOT_REF. + We clear it ourselves for ELIMINATE_COPY_RELOCS. */ + dir->elf_link_hash_flags |= + (ind->elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC + | ELF_LINK_HASH_REF_REGULAR + | ELF_LINK_HASH_REF_REGULAR_NONWEAK + | ELF_LINK_HASH_NEEDS_PLT)); + else + _bfd_elf_link_hash_copy_indirect (bed, dir, ind); } /* Look through the relocs for a section during the first phase, and @@ -1332,7 +1350,8 @@ elf32_hppa_check_relocs (bfd *abfd, || h->elf.root.type == bfd_link_hash_defweak || (h->elf.elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)))) - || (!info->shared + || (ELIMINATE_COPY_RELOCS + && !info->shared && (sec->flags & SEC_ALLOC) != 0 && h != NULL && (h->elf.root.type == bfd_link_hash_defweak @@ -1623,8 +1642,6 @@ elf32_hppa_adjust_dynamic_symbol (struct struct elf_link_hash_entry *h) { struct elf32_hppa_link_hash_table *htab; - struct elf32_hppa_link_hash_entry *eh; - struct elf32_hppa_dyn_reloc_entry *p; asection *s; unsigned int power_of_two; @@ -1666,6 +1683,10 @@ elf32_hppa_adjust_dynamic_symbol (struct abort (); h->root.u.def.section = h->weakdef->root.u.def.section; h->root.u.def.value = h->weakdef->root.u.def.value; + if (ELIMINATE_COPY_RELOCS) + h->elf_link_hash_flags + = ((h->elf_link_hash_flags & ~ELF_LINK_NON_GOT_REF) + | (h->weakdef->elf_link_hash_flags & ELF_LINK_NON_GOT_REF)); return TRUE; } @@ -1684,20 +1705,26 @@ elf32_hppa_adjust_dynamic_symbol (struct if ((h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0) return TRUE; - eh = (struct elf32_hppa_link_hash_entry *) h; - for (p = eh->dyn_relocs; p != NULL; p = p->next) + if (ELIMINATE_COPY_RELOCS) { - s = p->sec->output_section; - if (s != NULL && (s->flags & SEC_READONLY) != 0) - break; - } + struct elf32_hppa_link_hash_entry *eh; + struct elf32_hppa_dyn_reloc_entry *p; - /* If we didn't find any dynamic relocs in read-only sections, then - we'll be keeping the dynamic relocs and avoiding the copy reloc. */ - if (p == NULL) - { - h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF; - return TRUE; + eh = (struct elf32_hppa_link_hash_entry *) h; + for (p = eh->dyn_relocs; p != NULL; p = p->next) + { + s = p->sec->output_section; + if (s != NULL && (s->flags & SEC_READONLY) != 0) + break; + } + + /* If we didn't find any dynamic relocs in read-only sections, then + we'll be keeping the dynamic relocs and avoiding the copy reloc. */ + if (p == NULL) + { + h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF; + return TRUE; + } } /* We must allocate the symbol in our .dynbss section, which will @@ -1883,9 +1910,7 @@ allocate_dynrelocs (struct elf_link_hash if (info->shared) { #if RELATIVE_DYNRELOCS - if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0 - && ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0 - || info->symbolic)) + if (SYMBOL_CALLS_LOCAL (info, h)) { struct elf32_hppa_dyn_reloc_entry **pp; @@ -1900,6 +1925,12 @@ allocate_dynrelocs (struct elf_link_hash } } #endif + + /* Also discard relocs on undefined weak syms with non-default + visibility. */ + if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT + && h->root.type == bfd_link_hash_undefweak) + eh->dyn_relocs = NULL; } else { @@ -1907,7 +1938,8 @@ allocate_dynrelocs (struct elf_link_hash symbols which turn out to need copy relocs or are not dynamic. */ if ((h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0 - && (((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0 + && ((ELIMINATE_COPY_RELOCS + && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0 && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) || (htab->elf.dynamic_sections_created && (h->root.type == bfd_link_hash_undefweak @@ -2016,7 +2048,7 @@ elf32_hppa_size_dynamic_sections (bfd *o if (htab->elf.dynamic_sections_created) { /* Set the contents of the .interp section to the interpreter. */ - if (! info->shared) + if (info->executable) { s = bfd_get_section_by_name (dynobj, ".interp"); if (s == NULL) @@ -2273,9 +2305,6 @@ elf32_hppa_setup_section_lists (bfd *out bfd_size_type amt; struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info); - if (htab->elf.root.creator->flavour != bfd_target_elf_flavour) - return 0; - /* Count the number of input BFDs and find the top input section id. */ for (input_bfd = info->input_bfds, bfd_count = 0, top_id = 0; input_bfd != NULL; @@ -2879,21 +2908,8 @@ elf32_hppa_set_gp (bfd *abfd, struct bfd } else { - asection *splt; - asection *sgot; - - if (htab->elf.root.creator->flavour == bfd_target_elf_flavour) - { - splt = htab->splt; - sgot = htab->sgot; - } - else - { - /* If we're not elf, look up the output sections in the - hope we may actually find them. */ - splt = bfd_get_section_by_name (abfd, ".plt"); - sgot = bfd_get_section_by_name (abfd, ".got"); - } + asection *splt = bfd_get_section_by_name (abfd, ".plt"); + asection *sgot = bfd_get_section_by_name (abfd, ".got"); /* Choose to point our LTP at, in this order, one of .plt, .got, or .data, if these sections exist. In the case of choosing @@ -3067,17 +3083,17 @@ final_link_relocate (asection *input_sec if (!info->shared) { switch (r_type) - { - case R_PARISC_DLTIND21L: - r_type = R_PARISC_DPREL21L; + { + case R_PARISC_DLTIND21L: + r_type = R_PARISC_DPREL21L; break; - case R_PARISC_DLTIND14R: - r_type = R_PARISC_DPREL14R; + case R_PARISC_DLTIND14R: + r_type = R_PARISC_DPREL14R; break; - case R_PARISC_DLTIND14F: - r_type = R_PARISC_DPREL14F; + case R_PARISC_DLTIND14F: + r_type = R_PARISC_DPREL14F; break; } } @@ -3155,7 +3171,7 @@ final_link_relocate (asection *input_sec and convert the associated add instruction, so issue an error. */ (*_bfd_error_handler) - (_("%s(%s+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link"), + (_("%s(%s+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link"), bfd_archive_filename (input_bfd), input_section->name, (long) rel->r_offset, @@ -3408,7 +3424,7 @@ elf32_hppa_relocate_section (bfd *output /* This is a local symbol, h defaults to NULL. */ sym = local_syms + r_symndx; sym_sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sym_sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sym_sec, rel); } else { @@ -3423,7 +3439,7 @@ elf32_hppa_relocate_section (bfd *output && hh->root.type != bfd_link_hash_defined && hh->root.type != bfd_link_hash_defweak && hh->root.type != bfd_link_hash_undefweak) - { + { if (!info->executable && info->unresolved_syms_in_objects == RM_IGNORE && ELF_ST_VISIBILITY (hh->other) == STV_DEFAULT @@ -3671,18 +3687,18 @@ elf32_hppa_relocate_section (bfd *output Conversely, DEF_DYNAMIC can't be used in check_relocs as there all files have not been loaded. */ if ((info->shared + && (h == NULL + || ELF_ST_VISIBILITY (h->elf.other) == STV_DEFAULT + || h->elf.root.type != bfd_link_hash_undefweak) && (IS_ABSOLUTE_RELOC (r_type) - || (h != NULL - && h->elf.dynindx != -1 - && (!info->symbolic - || (h->elf.elf_link_hash_flags - & ELF_LINK_HASH_DEF_REGULAR) == 0)))) + || !SYMBOL_CALLS_LOCAL (info, &h->elf))) || (!info->shared && h != NULL && h->elf.dynindx != -1 && (h->elf.elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0 - && (((h->elf.elf_link_hash_flags - & ELF_LINK_HASH_DEF_DYNAMIC) != 0 + && ((ELIMINATE_COPY_RELOCS + && (h->elf.elf_link_hash_flags + & ELF_LINK_HASH_DEF_DYNAMIC) != 0 && (h->elf.elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) || h->elf.root.type == bfd_link_hash_undefweak diff -uprN binutils-2.14.90.0.7/bfd/elf32-i370.c binutils-2.14.90.0.8/bfd/elf32-i370.c --- binutils-2.14.90.0.7/bfd/elf32-i370.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-i370.c 2004-01-14 13:07:43.000000000 -0800 @@ -653,7 +653,7 @@ i370_elf_size_dynamic_sections (output_b if (elf_hash_table (info)->dynamic_sections_created) { /* Set the contents of the .interp section to the interpreter. */ - if (! info->shared) + if (info->executable) { s = bfd_get_section_by_name (dynobj, ".interp"); BFD_ASSERT (s != NULL); @@ -834,7 +834,7 @@ i370_elf_size_dynamic_sections (output_b FIXME: We assume that there will never be relocations to locations in linker-created sections that do not have externally-visible names. Instead, we should work out precisely - which sections relocations are targetted at. */ + which sections relocations are targeted at. */ if (info->shared) { int c; @@ -1210,7 +1210,7 @@ i370_elf_relocate_section (output_bfd, i sec = local_sections[r_symndx]; sym_name = ""; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); addend = rel->r_addend; } else @@ -1363,16 +1363,7 @@ i370_elf_relocate_section (output_bfd, i { long indx; - if (h == NULL) - sec = local_sections[r_symndx]; - else - { - BFD_ASSERT (h->root.type == bfd_link_hash_defined - || (h->root.type - == bfd_link_hash_defweak)); - sec = h->root.u.def.section; - } - if (sec != NULL && bfd_is_abs_section (sec)) + if (bfd_is_abs_section (sec)) indx = 0; else if (sec == NULL || sec->owner == NULL) { @@ -1564,6 +1555,6 @@ static int i370_noop () #define elf_backend_additional_program_headers \ (int (*) PARAMS ((bfd *))) i370_noop #define elf_backend_modify_segment_map \ - (bfd_boolean (*) PARAMS ((bfd *))) i370_noop + (bfd_boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) i370_noop #include "elf32-target.h" diff -uprN binutils-2.14.90.0.7/bfd/elf32-i386.c binutils-2.14.90.0.8/bfd/elf32-i386.c --- binutils-2.14.90.0.7/bfd/elf32-i386.c 2003-08-21 08:28:47.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-i386.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* Intel 80386/80486-specific support for 32-bit ELF - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -346,29 +346,50 @@ elf_i386_is_local_label_name (bfd *abfd, } /* Support for core dump NOTE sections. */ + static bfd_boolean elf_i386_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) { int offset; size_t raw_size; - switch (note->descsz) + if (note->namesz == 8 && strcmp (note->namedata, "FreeBSD") == 0) { - default: - return FALSE; + int pr_version = bfd_get_32 (abfd, note->descdata); + + if (pr_version != 1) + return FALSE; + + /* pr_cursig */ + elf_tdata (abfd)->core_signal = bfd_get_32 (abfd, note->descdata + 20); + + /* pr_pid */ + elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24); + + /* pr_reg */ + offset = 28; + raw_size = bfd_get_32 (abfd, note->descdata + 8); + } + else + { + switch (note->descsz) + { + default: + return FALSE; - case 144: /* Linux/i386 */ - /* pr_cursig */ - elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12); - - /* pr_pid */ - elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24); - - /* pr_reg */ - offset = 72; - raw_size = 68; + case 144: /* Linux/i386 */ + /* pr_cursig */ + elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12); + + /* pr_pid */ + elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24); + + /* pr_reg */ + offset = 72; + raw_size = 68; - break; + break; + } } /* Make a ".reg/999" section. */ @@ -379,22 +400,36 @@ elf_i386_grok_prstatus (bfd *abfd, Elf_I static bfd_boolean elf_i386_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) { - switch (note->descsz) + if (note->namesz == 8 && strcmp (note->namedata, "FreeBSD") == 0) { - default: + int pr_version = bfd_get_32 (abfd, note->descdata); + + if (pr_version != 1) return FALSE; - case 124: /* Linux/i386 elf_prpsinfo */ - elf_tdata (abfd)->core_program - = _bfd_elfcore_strndup (abfd, note->descdata + 28, 16); - elf_tdata (abfd)->core_command - = _bfd_elfcore_strndup (abfd, note->descdata + 44, 80); + elf_tdata (abfd)->core_program + = _bfd_elfcore_strndup (abfd, note->descdata + 8, 17); + elf_tdata (abfd)->core_command + = _bfd_elfcore_strndup (abfd, note->descdata + 25, 81); + } + else + { + switch (note->descsz) + { + default: + return FALSE; + + case 124: /* Linux/i386 elf_prpsinfo. */ + elf_tdata (abfd)->core_program + = _bfd_elfcore_strndup (abfd, note->descdata + 28, 16); + elf_tdata (abfd)->core_command + = _bfd_elfcore_strndup (abfd, note->descdata + 44, 80); + } } /* Note that for some reason, a spurious space is tacked onto the end of the args in some (at least one anyway) implementations, so strip it off if it exists. */ - { char *command = elf_tdata (abfd)->core_command; int n = strlen (command); @@ -546,20 +581,6 @@ elf_i386_mkobject (bfd *abfd) return TRUE; } -static bfd_boolean -elf_i386_object_p (bfd *abfd) -{ - /* Allocate our special target data. */ - struct elf_i386_obj_tdata *new_tdata; - bfd_size_type amt = sizeof (struct elf_i386_obj_tdata); - new_tdata = bfd_zalloc (abfd, amt); - if (new_tdata == NULL) - return FALSE; - new_tdata->root = *abfd->tdata.elf_obj_data; - abfd->tdata.any = new_tdata; - return TRUE; -} - /* i386 ELF linker hash table. */ struct elf_i386_link_hash_table @@ -770,7 +791,9 @@ elf_i386_copy_indirect_symbol (const str dir->elf_link_hash_flags |= (ind->elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR - | ELF_LINK_HASH_REF_REGULAR_NONWEAK)); + | ELF_LINK_HASH_REF_REGULAR_NONWEAK + | ELF_LINK_HASH_NEEDS_PLT + | ELF_LINK_POINTER_EQUALITY_NEEDED)); else _bfd_elf_link_hash_copy_indirect (bed, dir, ind); } @@ -1000,6 +1023,8 @@ elf_i386_check_relocs (bfd *abfd, /* We may need a .plt entry if the function this reloc refers to is in a shared lib. */ h->plt.refcount += 1; + if (r_type != R_386_PC32) + h->elf_link_hash_flags |= ELF_LINK_POINTER_EQUALITY_NEEDED; } /* If we are creating a shared library, and this is a reloc @@ -1953,10 +1978,10 @@ elf_i386_fake_sections (bfd *abfd ATTRIB static bfd_vma dtpoff_base (struct bfd_link_info *info) { - /* If tls_segment is NULL, we should have signalled an error already. */ - if (elf_hash_table (info)->tls_segment == NULL) + /* If tls_sec is NULL, we should have signalled an error already. */ + if (elf_hash_table (info)->tls_sec == NULL) return 0; - return elf_hash_table (info)->tls_segment->start; + return elf_hash_table (info)->tls_sec->vma; } /* Return the relocation value for @tpoff relocation @@ -1965,14 +1990,12 @@ dtpoff_base (struct bfd_link_info *info) static bfd_vma tpoff (struct bfd_link_info *info, bfd_vma address) { - struct elf_link_tls_segment *tls_segment - = elf_hash_table (info)->tls_segment; + struct elf_link_hash_table *htab = elf_hash_table (info); - /* If tls_segment is NULL, we should have signalled an error already. */ - if (tls_segment == NULL) + /* If tls_sec is NULL, we should have signalled an error already. */ + if (htab->tls_sec == NULL) return 0; - return (align_power (tls_segment->size, tls_segment->align) - + tls_segment->start - address); + return htab->tls_size + htab->tls_sec->vma - address; } /* Relocate an i386 ELF section. */ @@ -3005,11 +3028,16 @@ elf_i386_finish_dynamic_symbol (bfd *out if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) { /* Mark the symbol as undefined, rather than as defined in - the .plt section. Leave the value alone. This is a clue + the .plt section. Leave the value if there were any + relocations where pointer equality matters (this is a clue for the dynamic linker, to make function pointer comparisons work between an application and shared - library. */ + library), otherwise set it to zero. If a function is only + called from a binary, there is no need to slow down + shared libraries because of that. */ sym->st_shndx = SHN_UNDEF; + if ((h->elf_link_hash_flags & ELF_LINK_POINTER_EQUALITY_NEEDED) == 0) + sym->st_value = 0; } } @@ -3240,14 +3268,12 @@ elf_i386_finish_dynamic_sections (bfd *o #define elf_backend_plt_readonly 1 #define elf_backend_want_plt_sym 0 #define elf_backend_got_header_size 12 -#define elf_backend_plt_header_size PLT_ENTRY_SIZE /* Support RELA for objdump of prelink objects. */ #define elf_info_to_howto elf_i386_info_to_howto_rel #define elf_info_to_howto_rel elf_i386_info_to_howto_rel #define bfd_elf32_mkobject elf_i386_mkobject -#define elf_backend_object_p elf_i386_object_p #define bfd_elf32_bfd_is_local_label_name elf_i386_is_local_label_name #define bfd_elf32_bfd_link_hash_table_create elf_i386_link_hash_table_create diff -uprN binutils-2.14.90.0.7/bfd/elf32-i860.c binutils-2.14.90.0.8/bfd/elf32-i860.c --- binutils-2.14.90.0.7/bfd/elf32-i860.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-i860.c 2004-01-14 13:07:43.000000000 -0800 @@ -1104,7 +1104,7 @@ elf32_i860_relocate_section (bfd *output { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); diff -uprN binutils-2.14.90.0.7/bfd/elf32-i960.c binutils-2.14.90.0.8/bfd/elf32-i960.c --- binutils-2.14.90.0.7/bfd/elf32-i960.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-i960.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,4 +1,4 @@ -/* Intel 860 specific support for 32-bit ELF +/* Intel 960 specific support for 32-bit ELF Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -107,13 +107,8 @@ elf32_i960_info_to_howto_rel (abfd, cach relocatable output against an external symbol. */ bfd_reloc_status_type -elf32_i960_relocate (abfd, - reloc_entry, - symbol, - data, - input_section, - output_bfd, - error_message) +elf32_i960_relocate (abfd, reloc_entry, symbol, data, input_section, + output_bfd, error_message) bfd *abfd ATTRIBUTE_UNUSED; arelent *reloc_entry; asymbol *symbol; diff -uprN binutils-2.14.90.0.7/bfd/elf32-ip2k.c binutils-2.14.90.0.8/bfd/elf32-ip2k.c --- binutils-2.14.90.0.7/bfd/elf32-ip2k.c 2003-08-21 08:28:47.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-ip2k.c 2004-01-14 13:07:43.000000000 -0800 @@ -1007,7 +1007,7 @@ ip2k_elf_relax_section_page (abfd, sec, int switch_table_128; int switch_table_256; - /* Walk thru the section looking for relaxation opertunities. */ + /* Walk thru the section looking for relaxation opportunities. */ for (irel = misc->irelbase; irel < irelend; irel++) { if (ELF32_R_TYPE (irel->r_info) != (int) R_IP2K_PAGE3) @@ -1388,7 +1388,7 @@ ip2k_final_link_relocate (howto, input_b case R_IP2K_ADDR16CJP: if (BASEADDR (input_section) + rel->r_offset != page_addr + 2) { - /* No preceeding page instruction, verify that it isn't needed. */ + /* No preceding page instruction, verify that it isn't needed. */ if (PAGENO (relocation + rel->r_addend) != ip2k_nominal_page_bits (input_bfd, input_section, rel->r_offset, contents)) @@ -1398,7 +1398,7 @@ ip2k_final_link_relocate (howto, input_b } else if (ip2k_relaxed) { - /* Preceeding page instruction. Verify that the page instruction is + /* Preceding page instruction. Verify that the page instruction is really needed. One reason for the relaxation to miss a page is if the section is not marked as executable. */ if (!ip2k_is_switch_table_128 (input_bfd, input_section, rel->r_offset - 2, contents) && diff -uprN binutils-2.14.90.0.7/bfd/elf32-m32r.c binutils-2.14.90.0.8/bfd/elf32-m32r.c --- binutils-2.14.90.0.7/bfd/elf32-m32r.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-m32r.c 2004-01-14 13:07:43.000000000 -0800 @@ -2,21 +2,21 @@ Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -This file is part of BFD, the Binary File Descriptor library. + 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" #include "sysdep.h" @@ -44,6 +44,8 @@ static reloc_howto_type *bfd_elf32_bfd_r PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); static void m32r_info_to_howto_rel PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); +static void m32r_info_to_howto + PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); bfd_boolean _bfd_m32r_elf_section_from_bfd_section PARAMS ((bfd *, asection *, int *)); void _bfd_m32r_elf_symbol_processing @@ -77,10 +79,34 @@ static bfd_boolean m32r_elf_check_relocs PARAMS ((bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *)); +static bfd_boolean m32r_elf_adjust_dynamic_symbol + PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); +static bfd_boolean m32r_elf_size_dynamic_sections + PARAMS ((bfd *, struct bfd_link_info *)); + asection * m32r_elf_gc_mark_hook PARAMS ((asection *, struct bfd_link_info *, Elf_Internal_Rela *, struct elf_link_hash_entry *, Elf_Internal_Sym *)); +static bfd_boolean m32r_elf_create_dynamic_sections + PARAMS ((bfd *, struct bfd_link_info *)); + +static bfd_boolean m32r_elf_finish_dynamic_sections + PARAMS ((bfd *, struct bfd_link_info *)); + +static bfd_boolean m32r_elf_finish_dynamic_symbol + PARAMS ((bfd *, struct bfd_link_info *, struct elf_link_hash_entry *, + Elf_Internal_Sym *)); + +static bfd_boolean allocate_dynrelocs + PARAMS ((struct elf_link_hash_entry *, PTR)); +static bfd_boolean readonly_dynrelocs + PARAMS ((struct elf_link_hash_entry *, PTR)); +static enum elf_reloc_type_class m32r_elf_reloc_type_class + PARAMS ((const Elf_Internal_Rela *)); +static bfd_boolean m32r_elf_fake_sections + PARAMS ((bfd *, Elf_Internal_Shdr *, asection *)); + #define NOP_INSN 0x7000 #define MAKE_PARALLEL(insn) ((insn) | 0x8000) @@ -88,11 +114,55 @@ asection * m32r_elf_gc_mark_hook This only saves space in libraries and object files, but perhaps relocs will be put in ROM? All in all though, REL relocs are a pain to work with. */ -#define USE_REL 1 +/* #define USE_REL 1 #ifndef USE_REL #define USE_REL 0 -#endif +#endif */ +/* Use RELA. But use REL to link old objects for backwords compatibility. */ + +/* Functions for the M32R ELF linker. */ + +/* The name of the dynamic interpreter. This is put in the .interp + section. */ + +#define ELF_DYNAMIC_INTERPRETER "/usr/lib/libc.so.1" + +/* The nop opcode we use. */ + +#define M32R_NOP 0x7000f000 + +#define PLT_EMPTY 0x10101010 /* RIE -> RIE */ + +/* The size in bytes of an entry in the procedure linkage table. */ + +#define PLT_ENTRY_SIZE 20 +#define PLT_HEADER_SIZE 20 + +/* The first one entries in a procedure linkage table are reserved, + and the initial contents are unimportant (we zero them out). + Subsequent entries look like this. */ + +#define PLT0_ENTRY_WORD0 0xd6c00000 /* seth r6, #high(.got+4) */ +#define PLT0_ENTRY_WORD1 0x86e60000 /* or3 r6, r6, #low(.got)+4) */ +#define PLT0_ENTRY_WORD2 0x24e626c6 /* ld r4, @r6+ -> ld r6, @r6 */ +#define PLT0_ENTRY_WORD3 0x1fc6f000 /* jmp r6 || pnop */ +#define PLT0_ENTRY_WORD4 PLT_EMPTY /* RIE -> RIE */ + +#define PLT0_PIC_ENTRY_WORD0 0xa4cc0004 /* ld r4, @(4,r12) */ +#define PLT0_PIC_ENTRY_WORD1 0xa6cc0008 /* ld r6, @(8,r12) */ +#define PLT0_PIC_ENTRY_WORD2 0x1fc6f000 /* jmp r6 || nop */ +#define PLT0_PIC_ENTRY_WORD3 PLT_EMPTY /* RIE -> RIE */ +#define PLT0_PIC_ENTRY_WORD4 PLT_EMPTY /* RIE -> RIE */ + +#define PLT_ENTRY_WORD0 0xe6000000 /* ld24 r6, .name_in_GOT */ +#define PLT_ENTRY_WORD1 0x06acf000 /* add r6, r12 || nop */ +#define PLT_ENTRY_WORD0b 0xd6c00000 /* seth r6, #high(.name_in_GOT) */ +#define PLT_ENTRY_WORD1b 0x86e60000 /* or3 r6, r6, #low(.name_in_GOT) */ +#define PLT_ENTRY_WORD2 0x26c61fc6 /* ld r6, @r6 -> jmp r6 */ +#define PLT_ENTRY_WORD3 0xe5000000 /* ld24 r5, $offset */ +#define PLT_ENTRY_WORD4 0xff000000 /* bra .plt0. */ + static reloc_howto_type m32r_elf_howto_table[] = { @@ -302,117 +372,548 @@ static reloc_howto_type m32r_elf_howto_t 0, /* dst_mask */ FALSE), /* pcrel_offset */ -}; - -/* Handle the R_M32R_10_PCREL reloc. */ - -static bfd_reloc_status_type -m32r_elf_10_pcrel_reloc (abfd, reloc_entry, symbol, data, - input_section, output_bfd, error_message) - bfd * abfd; - arelent * reloc_entry; - asymbol * symbol; - PTR data; - asection * input_section; - bfd * output_bfd; - char ** error_message ATTRIBUTE_UNUSED; -{ - /* This part is from bfd_elf_generic_reloc. */ - if (output_bfd != (bfd *) NULL - && (symbol->flags & BSF_SECTION_SYM) == 0 - && (! reloc_entry->howto->partial_inplace - || reloc_entry->addend == 0)) - { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } + EMPTY_HOWTO (13), + EMPTY_HOWTO (14), + EMPTY_HOWTO (15), + EMPTY_HOWTO (16), + EMPTY_HOWTO (17), + EMPTY_HOWTO (18), + EMPTY_HOWTO (19), + EMPTY_HOWTO (20), + EMPTY_HOWTO (21), + EMPTY_HOWTO (22), + EMPTY_HOWTO (23), + EMPTY_HOWTO (24), + EMPTY_HOWTO (25), + EMPTY_HOWTO (26), + EMPTY_HOWTO (27), + EMPTY_HOWTO (28), + EMPTY_HOWTO (29), + EMPTY_HOWTO (30), + EMPTY_HOWTO (31), + EMPTY_HOWTO (32), - if (output_bfd != NULL) - { - /* FIXME: See bfd_perform_relocation. Is this right? */ - return bfd_reloc_continue; - } + /* A 16 bit absolute relocation. */ + HOWTO (R_M32R_16_RELA, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_16_RELA", /* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + FALSE), /* pcrel_offset */ - return m32r_elf_do_10_pcrel_reloc (abfd, reloc_entry->howto, - input_section, - data, reloc_entry->address, - symbol->section, - (symbol->value - + symbol->section->output_section->vma - + symbol->section->output_offset), - reloc_entry->addend); -} + /* A 32 bit absolute relocation. */ + HOWTO (R_M32R_32_RELA, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc,/* special_function */ + "R_M32R_32_RELA", /* name */ + FALSE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ -/* Utility to actually perform an R_M32R_10_PCREL reloc. */ + /* A 24 bit address. */ + HOWTO (R_M32R_24_RELA, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 24, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_unsigned, /* complain_on_overflow */ + bfd_elf_generic_reloc,/* special_function */ + "R_M32R_24_RELA", /* name */ + FALSE, /* partial_inplace */ + 0xffffff, /* src_mask */ + 0xffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ -static bfd_reloc_status_type -m32r_elf_do_10_pcrel_reloc (abfd, howto, input_section, data, offset, - symbol_section, symbol_value, addend) - bfd *abfd; - reloc_howto_type *howto; - asection *input_section; - bfd_byte *data; - bfd_vma offset; - asection *symbol_section ATTRIBUTE_UNUSED; - bfd_vma symbol_value; - bfd_vma addend; -{ - bfd_signed_vma relocation; - unsigned long x; - bfd_reloc_status_type status; + HOWTO (R_M32R_10_PCREL_RELA, /* type */ + 2, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 10, /* bitsize */ + TRUE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + m32r_elf_10_pcrel_reloc, /* special_function */ + "R_M32R_10_PCREL_RELA",/* name */ + FALSE, /* partial_inplace */ + 0xff, /* src_mask */ + 0xff, /* dst_mask */ + TRUE), /* pcrel_offset */ - /* Sanity check the address (offset in section). */ - if (offset > input_section->_cooked_size) - return bfd_reloc_outofrange; + /* A relative 18 bit relocation, right shifted by 2. */ + HOWTO (R_M32R_18_PCREL_RELA, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + TRUE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_18_PCREL_RELA",/* name */ + FALSE, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + TRUE), /* pcrel_offset */ - relocation = symbol_value + addend; - /* Make it pc relative. */ - relocation -= (input_section->output_section->vma - + input_section->output_offset); - /* These jumps mask off the lower two bits of the current address - before doing pcrel calculations. */ - relocation -= (offset & -(bfd_vma) 4); + /* A relative 26 bit relocation, right shifted by 2. */ + HOWTO (R_M32R_26_PCREL_RELA, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 26, /* bitsize */ + TRUE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_26_PCREL_RELA",/* name */ + FALSE, /* partial_inplace */ + 0xffffff, /* src_mask */ + 0xffffff, /* dst_mask */ + TRUE), /* pcrel_offset */ - if (relocation < -0x200 || relocation > 0x1ff) - status = bfd_reloc_overflow; - else - status = bfd_reloc_ok; + /* High 16 bits of address when lower 16 is or'd in. */ + HOWTO (R_M32R_HI16_ULO_RELA, /* type */ + 16, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_HI16_ULO_RELA",/* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ - x = bfd_get_16 (abfd, data + offset); - relocation >>= howto->rightshift; - relocation <<= howto->bitpos; - x = (x & ~howto->dst_mask) | (((x & howto->src_mask) + relocation) & howto->dst_mask); - bfd_put_16 (abfd, (bfd_vma) x, data + offset); + /* High 16 bits of address when lower 16 is added in. */ + HOWTO (R_M32R_HI16_SLO_RELA, /* type */ + 16, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_HI16_SLO_RELA",/* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ - return status; -} + /* Lower 16 bits of address. */ + HOWTO (R_M32R_LO16_RELA, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_LO16_RELA", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ -/* Handle the R_M32R_HI16_[SU]LO relocs. - HI16_SLO is for the add3 and load/store with displacement instructions. - HI16_ULO is for the or3 instruction. - For R_M32R_HI16_SLO, the lower 16 bits are sign extended when added to - the high 16 bytes so if the lower 16 bits are negative (bit 15 == 1) then - we must add one to the high 16 bytes (which will get subtracted off when - the low 16 bits are added). - These relocs have to be done in combination with an R_M32R_LO16 reloc - because there is a carry from the LO16 to the HI16. Here we just save - the information we need; we do the actual relocation when we see the LO16. - This code is copied from the elf32-mips.c. We also support an arbitrary - number of HI16 relocs to be associated with a single LO16 reloc. The - assembler sorts the relocs to ensure each HI16 immediately precedes its - LO16. However if there are multiple copies, the assembler may not find - the real LO16 so it picks the first one it finds. */ + /* Small data area 16 bits offset. */ + HOWTO (R_M32R_SDA16_RELA, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_SDA16_RELA", /* name */ + TRUE, /* partial_inplace */ /* FIXME: correct? */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ -struct m32r_hi16 -{ - struct m32r_hi16 *next; - bfd_byte *addr; - bfd_vma addend; -}; + /* GNU extension to record C++ vtable hierarchy */ + HOWTO (R_M32R_RELA_GNU_VTINHERIT, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + NULL, /* special_function */ + "R_M32R_RELA_GNU_VTINHERIT", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ -/* FIXME: This should not be a static variable. */ + /* GNU extension to record C++ vtable member usage */ + HOWTO (R_M32R_RELA_GNU_VTENTRY, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + _bfd_elf_rel_vtable_reloc_fn, /* special_function */ + "R_M32R_RELA_GNU_VTENTRY", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ -static struct m32r_hi16 *m32r_hi16_list; + EMPTY_HOWTO (45), + EMPTY_HOWTO (46), + EMPTY_HOWTO (47), + + /* Like R_M32R_24, but referring to the GOT table entry for + the symbol. */ + HOWTO (R_M32R_GOT24, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 24, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_unsigned, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_GOT24", /* name */ + FALSE, /* partial_inplace */ + 0xffffff, /* src_mask */ + 0xffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Like R_M32R_PCREL, but referring to the procedure linkage table + entry for the symbol. */ + HOWTO (R_M32R_26_PLTREL, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 24, /* bitsize */ + TRUE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_26_PLTREL", /* name */ + FALSE, /* partial_inplace */ + 0xffffff, /* src_mask */ + 0xffffff, /* dst_mask */ + TRUE), /* pcrel_offset */ + + /* This is used only by the dynamic linker. The symbol should exist + both in the object being run and in some shared library. The + dynamic linker copies the data addressed by the symbol from the + shared library into the object, because the object being + run has to have the data at some particular address. */ + HOWTO (R_M32R_COPY, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_COPY", /* name */ + FALSE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Like R_M32R_24, but used when setting global offset table + entries. */ + HOWTO (R_M32R_GLOB_DAT, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_GLOB_DAT", /* name */ + FALSE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Marks a procedure linkage table entry for a symbol. */ + HOWTO (R_M32R_JMP_SLOT, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_JMP_SLOT", /* name */ + FALSE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Used only by the dynamic linker. When the object is run, this + longword is set to the load address of the object, plus the + addend. */ + HOWTO (R_M32R_RELATIVE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_RELATIVE", /* name */ + FALSE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_M32R_GOTOFF, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_GOTOFF", /* name */ + FALSE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* An PC Relative 24-bit relocation used when setting PIC offset + table register. */ + HOWTO (R_M32R_GOTPC24, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 24, /* bitsize */ + TRUE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_unsigned, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_GOTPC24", /* name */ + FALSE, /* partial_inplace */ + 0xffffff, /* src_mask */ + 0xffffff, /* dst_mask */ + TRUE), /* pcrel_offset */ + + /* Like R_M32R_HI16_ULO, but referring to the GOT table entry for + the symbol. */ + HOWTO (R_M32R_GOT16_HI_ULO, /* type */ + 16, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_GOT16_HI_ULO", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Like R_M32R_HI16_SLO, but referring to the GOT table entry for + the symbol. */ + HOWTO (R_M32R_GOT16_HI_SLO, /* type */ + 16, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_GOT16_HI_SLO", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Like R_M32R_LO16, but referring to the GOT table entry for + the symbol. */ + HOWTO (R_M32R_GOT16_LO, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_GOT16_LO", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* An PC Relative relocation used when setting PIC offset table register. + Like R_M32R_HI16_ULO, but referring to the GOT table entry for + the symbol. */ + HOWTO (R_M32R_GOTPC_HI_ULO, /* type */ + 16, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_GOTPC_HI_ULO", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + TRUE), /* pcrel_offset */ + + /* An PC Relative relocation used when setting PIC offset table register. + Like R_M32R_HI16_SLO, but referring to the GOT table entry for + the symbol. */ + HOWTO (R_M32R_GOTPC_HI_SLO, /* type */ + 16, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_GOTPC_HI_SLO", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + TRUE), /* pcrel_offset */ + + /* An PC Relative relocation used when setting PIC offset table register. + Like R_M32R_LO16, but referring to the GOT table entry for + the symbol. */ + HOWTO (R_M32R_GOTPC_LO, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32R_GOTPC_LO", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + TRUE), /* pcrel_offset */ +}; + +/* Handle the R_M32R_10_PCREL reloc. */ + +static bfd_reloc_status_type +m32r_elf_10_pcrel_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message) + bfd * abfd; + arelent * reloc_entry; + asymbol * symbol; + PTR data; + asection * input_section; + bfd * output_bfd; + char ** error_message ATTRIBUTE_UNUSED; +{ + /* This part is from bfd_elf_generic_reloc. */ + if (output_bfd != (bfd *) NULL + && (symbol->flags & BSF_SECTION_SYM) == 0 + && (! reloc_entry->howto->partial_inplace + || reloc_entry->addend == 0)) + { + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } + + if (output_bfd != NULL) + { + /* FIXME: See bfd_perform_relocation. Is this right? */ + return bfd_reloc_continue; + } + + return m32r_elf_do_10_pcrel_reloc (abfd, reloc_entry->howto, + input_section, + data, reloc_entry->address, + symbol->section, + (symbol->value + + symbol->section->output_section->vma + + symbol->section->output_offset), + reloc_entry->addend); +} + +/* Utility to actually perform an R_M32R_10_PCREL reloc. */ + +static bfd_reloc_status_type +m32r_elf_do_10_pcrel_reloc (abfd, howto, input_section, data, offset, + symbol_section, symbol_value, addend) + bfd *abfd; + reloc_howto_type *howto; + asection *input_section; + bfd_byte *data; + bfd_vma offset; + asection *symbol_section ATTRIBUTE_UNUSED; + bfd_vma symbol_value; + bfd_vma addend; +{ + bfd_signed_vma relocation; + unsigned long x; + bfd_reloc_status_type status; + + /* Sanity check the address (offset in section). */ + if (offset > input_section->_cooked_size) + return bfd_reloc_outofrange; + + relocation = symbol_value + addend; + /* Make it pc relative. */ + relocation -= (input_section->output_section->vma + + input_section->output_offset); + /* These jumps mask off the lower two bits of the current address + before doing pcrel calculations. */ + relocation -= (offset & -(bfd_vma) 4); + + if (relocation < -0x200 || relocation > 0x1ff) + status = bfd_reloc_overflow; + else + status = bfd_reloc_ok; + + x = bfd_get_16 (abfd, data + offset); + relocation >>= howto->rightshift; + relocation <<= howto->bitpos; + x = (x & ~howto->dst_mask) | (((x & howto->src_mask) + relocation) & howto->dst_mask); + bfd_put_16 (abfd, (bfd_vma) x, data + offset); + + return status; +} + +/* Handle the R_M32R_HI16_[SU]LO relocs. + HI16_SLO is for the add3 and load/store with displacement instructions. + HI16_ULO is for the or3 instruction. + For R_M32R_HI16_SLO, the lower 16 bits are sign extended when added to + the high 16 bytes so if the lower 16 bits are negative (bit 15 == 1) then + we must add one to the high 16 bytes (which will get subtracted off when + the low 16 bits are added). + These relocs have to be done in combination with an R_M32R_LO16 reloc + because there is a carry from the LO16 to the HI16. Here we just save + the information we need; we do the actual relocation when we see the LO16. + This code is copied from the elf32-mips.c. We also support an arbitrary + number of HI16 relocs to be associated with a single LO16 reloc. The + assembler sorts the relocs to ensure each HI16 immediately precedes its + LO16. However if there are multiple copies, the assembler may not find + the real LO16 so it picks the first one it finds. */ + +struct m32r_hi16 +{ + struct m32r_hi16 *next; + bfd_byte *addr; + bfd_vma addend; +}; + +/* FIXME: This should not be a static variable. */ + +static struct m32r_hi16 *m32r_hi16_list; static bfd_reloc_status_type m32r_elf_hi16_reloc (abfd, reloc_entry, symbol, data, @@ -715,7 +1216,7 @@ struct m32r_reloc_map unsigned char elf_reloc_val; }; -static const struct m32r_reloc_map m32r_reloc_map[] = +static const struct m32r_reloc_map m32r_reloc_map_old[] = { { BFD_RELOC_NONE, R_M32R_NONE }, { BFD_RELOC_16, R_M32R_16 }, @@ -732,6 +1233,38 @@ static const struct m32r_reloc_map m32r_ { BFD_RELOC_VTABLE_ENTRY, R_M32R_GNU_VTENTRY }, }; +static const struct m32r_reloc_map m32r_reloc_map[] = +{ + { BFD_RELOC_NONE, R_M32R_NONE }, + { BFD_RELOC_16, R_M32R_16_RELA }, + { BFD_RELOC_32, R_M32R_32_RELA }, + { BFD_RELOC_M32R_24, R_M32R_24_RELA }, + { BFD_RELOC_M32R_10_PCREL, R_M32R_10_PCREL_RELA }, + { BFD_RELOC_M32R_18_PCREL, R_M32R_18_PCREL_RELA }, + { BFD_RELOC_M32R_26_PCREL, R_M32R_26_PCREL_RELA }, + { BFD_RELOC_M32R_HI16_ULO, R_M32R_HI16_ULO_RELA }, + { BFD_RELOC_M32R_HI16_SLO, R_M32R_HI16_SLO_RELA }, + { BFD_RELOC_M32R_LO16, R_M32R_LO16_RELA }, + { BFD_RELOC_M32R_SDA16, R_M32R_SDA16_RELA }, + { BFD_RELOC_VTABLE_INHERIT, R_M32R_RELA_GNU_VTINHERIT }, + { BFD_RELOC_VTABLE_ENTRY, R_M32R_RELA_GNU_VTENTRY }, + + { BFD_RELOC_M32R_GOT24, R_M32R_GOT24 }, + { BFD_RELOC_M32R_26_PLTREL, R_M32R_26_PLTREL }, + { BFD_RELOC_M32R_COPY, R_M32R_COPY }, + { BFD_RELOC_M32R_GLOB_DAT, R_M32R_GLOB_DAT }, + { BFD_RELOC_M32R_JMP_SLOT, R_M32R_JMP_SLOT }, + { BFD_RELOC_M32R_RELATIVE, R_M32R_RELATIVE }, + { BFD_RELOC_M32R_GOTOFF, R_M32R_GOTOFF }, + { BFD_RELOC_M32R_GOTPC24, R_M32R_GOTPC24 }, + { BFD_RELOC_M32R_GOT16_HI_ULO, R_M32R_GOT16_HI_ULO }, + { BFD_RELOC_M32R_GOT16_HI_SLO, R_M32R_GOT16_HI_SLO }, + { BFD_RELOC_M32R_GOT16_LO, R_M32R_GOT16_LO }, + { BFD_RELOC_M32R_GOTPC_HI_ULO, R_M32R_GOTPC_HI_ULO }, + { BFD_RELOC_M32R_GOTPC_HI_SLO, R_M32R_GOTPC_HI_SLO }, + { BFD_RELOC_M32R_GOTPC_LO, R_M32R_GOTPC_LO }, +}; + static reloc_howto_type * bfd_elf32_bfd_reloc_type_lookup (abfd, code) bfd *abfd ATTRIBUTE_UNUSED; @@ -739,6 +1272,16 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, c { unsigned int i; +#ifdef USE_M32R_OLD_RELOC + for (i = 0; + i < sizeof (m32r_reloc_map_old) / sizeof (struct m32r_reloc_map); + i++) + { + if (m32r_reloc_map_old[i].bfd_reloc_val == code) + return &m32r_elf_howto_table[m32r_reloc_map_old[i].elf_reloc_val]; + } +#else /* ! USE_M32R_OLD_RELOC */ + for (i = 0; i < sizeof (m32r_reloc_map) / sizeof (struct m32r_reloc_map); i++) @@ -746,6 +1289,7 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, c if (m32r_reloc_map[i].bfd_reloc_val == code) return &m32r_elf_howto_table[m32r_reloc_map[i].elf_reloc_val]; } +#endif return NULL; } @@ -753,17 +1297,30 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, c /* Set the howto pointer for an M32R ELF reloc. */ static void -m32r_info_to_howto_rel (abfd, cache_ptr, dst) +m32r_info_to_howto_rel (abfd, cache_ptr, dst) + bfd *abfd ATTRIBUTE_UNUSED; + arelent *cache_ptr; + Elf_Internal_Rela *dst; +{ + unsigned int r_type; + + r_type = ELF32_R_TYPE (dst->r_info); + BFD_ASSERT (ELF32_R_TYPE(dst->r_info) <= (unsigned int) R_M32R_GNU_VTENTRY) + cache_ptr->howto = &m32r_elf_howto_table[r_type]; +} + +static void +m32r_info_to_howto (abfd, cache_ptr, dst) bfd *abfd ATTRIBUTE_UNUSED; arelent *cache_ptr; Elf_Internal_Rela *dst; { - unsigned int r_type; - - r_type = ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r_type < (unsigned int) R_M32R_max); - cache_ptr->howto = &m32r_elf_howto_table[r_type]; + BFD_ASSERT ((ELF32_R_TYPE(dst->r_info) == (unsigned int) R_M32R_NONE) + || ((ELF32_R_TYPE(dst->r_info) > (unsigned int) R_M32R_GNU_VTENTRY) + && (ELF32_R_TYPE(dst->r_info) < (unsigned int) R_M32R_max))); + cache_ptr->howto = &m32r_elf_howto_table[ELF32_R_TYPE(dst->r_info)]; } + /* Given a BFD section, try to locate the corresponding ELF section index. */ @@ -843,7 +1400,7 @@ m32r_elf_add_symbol_hook (abfd, info, sy if (! info->relocatable && (*namep)[0] == '_' && (*namep)[1] == 'S' && strcmp (*namep, "_SDA_BASE_") == 0 - && info->hash->creator->flavour == bfd_target_elf_flavour) + && is_elf_hash_table (info->hash)) { /* This is simpler than using _bfd_elf_create_linker_section (our needs are simpler than ppc's needs). Also @@ -854,87 +1411,1078 @@ m32r_elf_add_symbol_hook (abfd, info, sy struct bfd_link_hash_entry *bh; asection *s = bfd_get_section_by_name (abfd, ".sdata"); - /* The following code was cobbled from elf32-ppc.c and elflink.c. */ + /* The following code was cobbled from elf32-ppc.c and elflink.c. */ + + if (s == NULL) + { + flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS + | SEC_IN_MEMORY | SEC_LINKER_CREATED); + + s = bfd_make_section_anyway (abfd, ".sdata"); + if (s == NULL) + return FALSE; + bfd_set_section_flags (abfd, s, flags); + bfd_set_section_alignment (abfd, s, 2); + } + + bh = bfd_link_hash_lookup (info->hash, "_SDA_BASE_", + FALSE, FALSE, FALSE); + + if ((bh == NULL || bh->type == bfd_link_hash_undefined) + && !(_bfd_generic_link_add_one_symbol (info, + abfd, + "_SDA_BASE_", + BSF_GLOBAL, + s, + (bfd_vma) 32768, + (const char *) NULL, + FALSE, + get_elf_backend_data (abfd)->collect, + &bh))) + return FALSE; + h = (struct elf_link_hash_entry *) bh; + h->type = STT_OBJECT; + } + + switch (sym->st_shndx) + { + case SHN_M32R_SCOMMON: + *secp = bfd_make_section_old_way (abfd, ".scommon"); + (*secp)->flags |= SEC_IS_COMMON; + *valp = sym->st_size; + break; + } + + return TRUE; +} + +/* We have to figure out the SDA_BASE value, so that we can adjust the + symbol value correctly. We look up the symbol _SDA_BASE_ in the output + BFD. If we can't find it, we're stuck. We cache it in the ELF + target data. We don't need to adjust the symbol value for an + external symbol if we are producing relocatable output. */ + +static bfd_reloc_status_type +m32r_elf_final_sda_base (output_bfd, info, error_message, psb) + bfd *output_bfd; + struct bfd_link_info *info; + const char **error_message; + bfd_vma *psb; +{ + if (elf_gp (output_bfd) == 0) + { + struct bfd_link_hash_entry *h; + + h = bfd_link_hash_lookup (info->hash, "_SDA_BASE_", FALSE, FALSE, TRUE); + if (h != (struct bfd_link_hash_entry *) NULL + && h->type == bfd_link_hash_defined) + elf_gp (output_bfd) = (h->u.def.value + + h->u.def.section->output_section->vma + + h->u.def.section->output_offset); + else + { + /* Only get the error once. */ + *psb = elf_gp (output_bfd) = 4; + *error_message = + (const char *) _("SDA relocation when _SDA_BASE_ not defined"); + return bfd_reloc_dangerous; + } + } + *psb = elf_gp (output_bfd); + return bfd_reloc_ok; +} + +/* Return size of a PLT entry. */ +#define elf_m32r_sizeof_plt(info) PLT_ENTRY_SIZE + +/* The m32r linker needs to keep track of the number of relocs that it + decides to copy in check_relocs for each symbol. This is so that + it can discard PC relative relocs if it doesn't need them when + linking with -Bsymbolic. We store the information in a field + extending the regular ELF linker hash table. */ + +/* This structure keeps track of the number of PC relative relocs we + have copied for a given symbol. */ + +struct elf_m32r_pcrel_relocs_copied +{ + /* Next section. */ + struct elf_m32r_pcrel_relocs_copied *next; + /* A section in dynobj. */ + asection *section; + /* Number of relocs copied in this section. */ + bfd_size_type count; +}; + +/* The sh linker needs to keep track of the number of relocs that it + decides to copy as dynamic relocs in check_relocs for each symbol. + This is so that it can later discard them if they are found to be + unnecessary. We store the information in a field extending the + regular ELF linker hash table. */ + +struct elf_m32r_dyn_relocs +{ + struct elf_m32r_dyn_relocs *next; + + /* The input section of the reloc. */ + asection *sec; + + /* Total number of relocs copied for the input section. */ + bfd_size_type count; + + /* Number of pc-relative relocs copied for the input section. */ + bfd_size_type pc_count; +}; + + +/* m32r ELF linker hash entry. */ + +struct elf_m32r_link_hash_entry +{ + struct elf_link_hash_entry root; + + /* Track dynamic relocs copied for this symbol. */ + struct elf_m32r_dyn_relocs *dyn_relocs; + +// bfd_signed_vma gotplt_refcount; + + /* Number of PC relative relocs copied for this symbol. */ + /* struct elf_m32r_pcrel_relocs_copied *pcrel_relocs_copied; FIXME */ +}; + +/* m32r ELF linker hash table. */ + +struct elf_m32r_link_hash_table +{ + struct elf_link_hash_table root; + + /* Short-cuts to get to dynamic linker sections. */ + asection *sgot; + asection *sgotplt; + asection *srelgot; + asection *splt; + asection *srelplt; + asection *sdynbss; + asection *srelbss; + + /* Small local sym to section mapping cache. */ + struct sym_sec_cache sym_sec; +}; + +/* Traverse an m32r ELF linker hash table. */ + +#define m32r_elf_link_hash_traverse(table, func, info) \ + (elf_link_hash_traverse \ + (&(table)->root, \ + (bfd_boolean (*) PARAMS ((struct elf_link_hash_entry *, PTR))) (func), \ + (info))) + +/* Get the m32r ELF linker hash table from a link_info structure. */ + + +#define m32r_elf_hash_table(p) \ + ((struct elf_m32r_link_hash_table *) ((p)->hash)) + +/* Create an entry in an m32r ELF linker hash table. */ +static struct bfd_hash_entry * +m32r_elf_link_hash_newfunc (struct bfd_hash_entry *, struct bfd_hash_table *, + const char * ); + +static struct bfd_hash_entry * +m32r_elf_link_hash_newfunc (entry, table, string) + struct bfd_hash_entry *entry; + struct bfd_hash_table *table; + const char *string; +{ + struct elf_m32r_link_hash_entry *ret = + (struct elf_m32r_link_hash_entry *) entry; + + /* Allocate the structure if it has not already been allocated by a + subclass. */ + if (ret == (struct elf_m32r_link_hash_entry *) NULL) + ret = ((struct elf_m32r_link_hash_entry *) + bfd_hash_allocate (table, + sizeof (struct elf_m32r_link_hash_entry))); + if (ret == (struct elf_m32r_link_hash_entry *) NULL) + return (struct bfd_hash_entry *) ret; + + /* Call the allocation method of the superclass. */ + ret = ((struct elf_m32r_link_hash_entry *) + _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret, + table, string)); + if (ret != (struct elf_m32r_link_hash_entry *) NULL) + { + struct elf_m32r_link_hash_entry *eh; + + eh = (struct elf_m32r_link_hash_entry *) ret; + eh->dyn_relocs = NULL; +// eh->gotplt_refcount = 0; + /* eh->pcrel_relocs_copied = NULL; FIXME */ + } + + return (struct bfd_hash_entry *) ret; +} + +/* Create an m32r ELF linker hash table. */ +static struct bfd_link_hash_table *m32r_elf_link_hash_table_create (bfd *); + +static struct bfd_link_hash_table * +m32r_elf_link_hash_table_create (abfd) + bfd *abfd; +{ + struct elf_m32r_link_hash_table *ret; + bfd_size_type amt = sizeof (struct elf_m32r_link_hash_table); + + ret = (struct elf_m32r_link_hash_table *) bfd_malloc (amt); + if (ret == (struct elf_m32r_link_hash_table *) NULL) + return NULL; + + if (! _bfd_elf_link_hash_table_init (&ret->root, abfd, + m32r_elf_link_hash_newfunc)) + { + free (ret); + return NULL; + } + + ret->sgot = NULL; + ret->sgotplt = NULL; + ret->srelgot = NULL; + ret->splt = NULL; + ret->srelplt = NULL; + ret->sdynbss = NULL; + ret->srelbss = NULL; + ret->sym_sec.abfd = NULL; + + return &ret->root.root; +} + +/* Create .got, .gotplt, and .rela.got sections in DYNOBJ, and set up + shortcuts to them in our hash table. */ +static bfd_boolean create_got_section (bfd *, struct bfd_link_info *); + +static bfd_boolean +create_got_section (dynobj, info) + bfd *dynobj; + struct bfd_link_info *info; +{ + struct elf_m32r_link_hash_table *htab; + + if (! _bfd_elf_create_got_section (dynobj, info)) + return FALSE; + + htab = m32r_elf_hash_table (info); + htab->sgot = bfd_get_section_by_name (dynobj, ".got"); + htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); + if (! htab->sgot || ! htab->sgotplt) + abort (); + + htab->srelgot = bfd_make_section (dynobj, ".rela.got"); + if (htab->srelgot == NULL + || ! bfd_set_section_flags (dynobj, htab->srelgot, + (SEC_ALLOC + | SEC_LOAD + | SEC_HAS_CONTENTS + | SEC_IN_MEMORY + | SEC_LINKER_CREATED + | SEC_READONLY)) + || ! bfd_set_section_alignment (dynobj, htab->srelgot, 2)) + return FALSE; + + return TRUE; +} + +/* Create dynamic sections when linking against a dynamic object. */ + +static bfd_boolean +m32r_elf_create_dynamic_sections (abfd, info) + bfd *abfd; + struct bfd_link_info *info; +{ + struct elf_m32r_link_hash_table *htab; + flagword flags, pltflags; + register asection *s; + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + int ptralign = 2; /* 32bit */ + + htab = m32r_elf_hash_table (info); + + /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and + .rel[a].bss sections. */ + + flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY + | SEC_LINKER_CREATED); + + pltflags = flags; + pltflags |= SEC_CODE; + if (bed->plt_not_loaded) + pltflags &= ~ (SEC_LOAD | SEC_HAS_CONTENTS); + if (bed->plt_readonly) + pltflags |= SEC_READONLY; + + s = bfd_make_section (abfd, ".plt"); + htab->splt = s; + if (s == NULL + || ! bfd_set_section_flags (abfd, s, pltflags) + || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment)) + return FALSE; + + if (bed->want_plt_sym) + { + /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the + .plt section. */ + struct elf_link_hash_entry *h = NULL; + if (! (_bfd_generic_link_add_one_symbol + (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, + (bfd_vma) 0, (const char *) NULL, FALSE, + get_elf_backend_data (abfd)->collect, + (struct bfd_link_hash_entry **) &h))) + return FALSE; + h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; + h->type = STT_OBJECT; + + if (info->shared + && ! _bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + s = bfd_make_section (abfd, + bed->default_use_rela_p ? ".rela.plt" : ".rel.plt"); + htab->srelplt = s; + if (s == NULL + || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY) + || ! bfd_set_section_alignment (abfd, s, ptralign)) + return FALSE; + + if (htab->sgot == NULL + && ! create_got_section (abfd, info)) + return FALSE; + + { + const char *secname; + char *relname; + flagword secflags; + asection *sec; + + for (sec = abfd->sections; sec; sec = sec->next) + { + secflags = bfd_get_section_flags (abfd, sec); + if ((secflags & (SEC_DATA | SEC_LINKER_CREATED)) + || ((secflags & SEC_HAS_CONTENTS) != SEC_HAS_CONTENTS)) + continue; + secname = bfd_get_section_name (abfd, sec); + relname = (char *) bfd_malloc ((bfd_size_type) strlen (secname) + 6); + strcpy (relname, ".rela"); + strcat (relname, secname); + if (bfd_get_section_by_name (abfd, secname)) + continue; + s = bfd_make_section (abfd, relname); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY) + || ! bfd_set_section_alignment (abfd, s, ptralign)) + return FALSE; + } + } + + if (bed->want_dynbss) + { + /* The .dynbss section is a place to put symbols which are defined + by dynamic objects, are referenced by regular objects, and are + not functions. We must allocate space for them in the process + image and use a R_*_COPY reloc to tell the dynamic linker to + initialize them at run time. The linker script puts the .dynbss + section into the .bss section of the final image. */ + s = bfd_make_section (abfd, ".dynbss"); + htab->sdynbss = s; + if (s == NULL + || ! bfd_set_section_flags (abfd, s, SEC_ALLOC)) + return FALSE; + /* The .rel[a].bss section holds copy relocs. This section is not + normally needed. We need to create it here, though, so that the + linker will map it to an output section. We can't just create it + only if we need it, because we will not know whether we need it + until we have seen all the input files, and the first time the + main linker code calls BFD after examining all the input files + (size_dynamic_sections) the input sections have already been + mapped to the output sections. If the section turns out not to + be needed, we can discard it later. We will never need this + section when generating a shared object, since they do not use + copy relocs. */ + if (! info->shared) + { + s = bfd_make_section (abfd, + (bed->default_use_rela_p + ? ".rela.bss" : ".rel.bss")); + htab->srelbss = s; + if (s == NULL + || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY) + || ! bfd_set_section_alignment (abfd, s, ptralign)) + return FALSE; + } + } + + return TRUE; +} + +/* Copy the extra info we tack onto an elf_link_hash_entry. */ +static void m32r_elf_copy_indirect_symbol (const struct elf_backend_data *, + struct elf_link_hash_entry *, + struct elf_link_hash_entry *); + +static void +m32r_elf_copy_indirect_symbol (const struct elf_backend_data *bed, + struct elf_link_hash_entry *dir, + struct elf_link_hash_entry *ind) +{ + struct elf_m32r_link_hash_entry *edir, *eind; + + edir = (struct elf_m32r_link_hash_entry *) dir; + eind = (struct elf_m32r_link_hash_entry *) ind; + + if (eind->dyn_relocs != NULL) + { + if (edir->dyn_relocs != NULL) + { + struct elf_m32r_dyn_relocs **pp; + struct elf_m32r_dyn_relocs *p; + + if (ind->root.type == bfd_link_hash_indirect) + abort (); + + /* Add reloc counts against the weak sym to the strong sym + list. Merge any entries against the same section. */ + for (pp = &eind->dyn_relocs; (p = *pp) != NULL; ) + { + struct elf_m32r_dyn_relocs *q; + + for (q = edir->dyn_relocs; q != NULL; q = q->next) + if (q->sec == p->sec) + { + q->pc_count += p->pc_count; + q->count += p->count; + *pp = p->next; + break; + } + if (q == NULL) + pp = &p->next; + } + *pp = edir->dyn_relocs; + } + + edir->dyn_relocs = eind->dyn_relocs; + eind->dyn_relocs = NULL; + } + +// if (ind->root.type == bfd_link_hash_indirect +// && dir->got.refcount <= 0) +// { +// edir->tls_type = eind->tls_type; +// eind->tls_type = GOT_UNKNOWN; +// } + _bfd_elf_link_hash_copy_indirect (bed, dir, ind); +} + + +/* Adjust a symbol defined by a dynamic object and referenced by a + regular object. The current definition is in some section of the + dynamic object, but we're not including those sections. We have to + change the definition to something the rest of the link can + understand. */ + +static bfd_boolean +m32r_elf_adjust_dynamic_symbol (info, h) + struct bfd_link_info *info; + struct elf_link_hash_entry *h; +{ + struct elf_m32r_link_hash_table *htab; + struct elf_m32r_link_hash_entry *eh; + struct elf_m32r_dyn_relocs *p; + bfd *dynobj; + asection *s; + unsigned int power_of_two; + +#ifdef DEBUG_PIC +printf("m32r_elf_adjust_dynamic_symbol()\n"); +#endif + + dynobj = elf_hash_table (info)->dynobj; + + /* Make sure we know what is going on here. */ + BFD_ASSERT (dynobj != NULL + && ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) + || h->weakdef != NULL + || ((h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_DYNAMIC) != 0 + && (h->elf_link_hash_flags + & ELF_LINK_HASH_REF_REGULAR) != 0 + && (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0))); + + + /* If this is a function, put it in the procedure linkage table. We + will fill in the contents of the procedure linkage table later, + when we know the address of the .got section. */ + if (h->type == STT_FUNC + || (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0) + { + if (! info->shared + && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0 + && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0 + && h->root.type != bfd_link_hash_undefweak + && h->root.type != bfd_link_hash_undefined) + { + /* This case can occur if we saw a PLT reloc in an input + file, but the symbol was never referred to by a dynamic + object. In such a case, we don't actually need to build + a procedure linkage table, and we can just do a PCREL + reloc instead. */ + h->plt.offset = (bfd_vma) -1; + h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; + } + + return TRUE; + } + else + h->plt.offset = (bfd_vma) -1; + + /* If this is a weak symbol, and there is a real definition, the + processor independent code will have arranged for us to see the + real definition first, and we can just use the same value. */ + if (h->weakdef != NULL) + { + BFD_ASSERT (h->weakdef->root.type == bfd_link_hash_defined + || h->weakdef->root.type == bfd_link_hash_defweak); + h->root.u.def.section = h->weakdef->root.u.def.section; + h->root.u.def.value = h->weakdef->root.u.def.value; + return TRUE; + } + + /* This is a reference to a symbol defined by a dynamic object which + is not a function. */ + + /* If we are creating a shared library, we must presume that the + only references to the symbol are via the global offset table. + For such cases we need not do anything here; the relocations will + be handled correctly by relocate_section. */ + if (info->shared) + return TRUE; + + /* If there are no references to this symbol that do not use the + GOT, we don't need to generate a copy reloc. */ + if ((h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0) + return TRUE; + + /* If -z nocopyreloc was given, we won't generate them either. */ + if (info->nocopyreloc) + { + h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF; + return TRUE; + } + + eh = (struct elf_m32r_link_hash_entry *) h; + for (p = eh->dyn_relocs; p != NULL; p = p->next) + { + s = p->sec->output_section; + if (s != NULL && (s->flags & (SEC_READONLY | SEC_HAS_CONTENTS)) != 0) + break; + } + + /* If we didn't find any dynamic relocs in sections which needs the + copy reloc, then we'll be keeping the dynamic relocs and avoiding + the copy reloc. */ + if (p == NULL) + { + h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF; + return TRUE; + } + + /* We must allocate the symbol in our .dynbss section, which will + become part of the .bss section of the executable. There will be + an entry for this symbol in the .dynsym section. The dynamic + object will contain position independent code, so all references + from the dynamic object to this symbol will go through the global + offset table. The dynamic linker will use the .dynsym entry to + determine the address it must put in the global offset table, so + both the dynamic object and the regular object will refer to the + same memory location for the variable. */ + + htab = m32r_elf_hash_table (info); + s = htab->sdynbss; + BFD_ASSERT (s != NULL); + + /* We must generate a R_M32R_COPY reloc to tell the dynamic linker + to copy the initial value out of the dynamic object and into the + runtime process image. We need to remember the offset into the + .rela.bss section we are going to use. */ + if ((h->root.u.def.section->flags & SEC_ALLOC) != 0) + { + asection *srel; + + srel = htab->srelbss; + BFD_ASSERT (srel != NULL); + srel->_raw_size += sizeof (Elf32_External_Rela); + h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_COPY; + } + + /* We need to figure out the alignment required for this symbol. I + have no idea how ELF linkers handle this. */ + power_of_two = bfd_log2 (h->size); + if (power_of_two > 3) + power_of_two = 3; + + /* Apply the required alignment. */ + s->_raw_size = BFD_ALIGN (s->_raw_size, + (bfd_size_type) (1 << power_of_two)); + if (power_of_two > bfd_get_section_alignment (dynobj, s)) + { + if (! bfd_set_section_alignment (dynobj, s, power_of_two)) + return FALSE; + } + + /* Define the symbol as being at this point in the section. */ + h->root.u.def.section = s; + h->root.u.def.value = s->_raw_size; + + /* Increment the section size to make room for the symbol. */ + s->_raw_size += h->size; + + return TRUE; +} + +/* This is the condition under which finish_dynamic_symbol will be called + from elflink.h. If elflink.h doesn't call our finish_dynamic_symbol + routine, we'll need to do something about initializing any .plt and .got + entries in relocate_section. */ +#define WILL_CALL_FINISH_DYNAMIC_SYMBOL(DYN, INFO, H) \ + ((DYN) \ + && ((INFO)->shared \ + || ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) \ + && ((H)->dynindx != -1 \ + || ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0)) + +/* Allocate space in .plt, .got and associated reloc sections for + dynamic relocs. */ + +static bfd_boolean +allocate_dynrelocs (h, inf) + struct elf_link_hash_entry *h; + PTR inf; +{ + struct bfd_link_info *info; + struct elf_m32r_link_hash_table *htab; + struct elf_m32r_link_hash_entry *eh; + struct elf_m32r_dyn_relocs *p; + + if (h->root.type == bfd_link_hash_indirect) + return TRUE; + + if (h->root.type == bfd_link_hash_warning) + /* When warning symbols are created, they **replace** the "real" + entry in the hash table, thus we never get to see the real + symbol in a hash traversal. So look at it now. */ + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + info = (struct bfd_link_info *) inf; + htab = m32r_elf_hash_table (info); + + eh = (struct elf_m32r_link_hash_entry *) h; +// if ((h->got.refcount > 0 +// || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL)) +// && eh->gotplt_refcount > 0) +// { +// /* The symbol has been forced local, or we have some direct got refs, +// so treat all the gotplt refs as got refs. */ +// h->got.refcount += eh->gotplt_refcount; +// if (h->plt.refcount >= eh->gotplt_refcount) +// h->plt.refcount -= eh->gotplt_refcount; +// } + + if (htab->root.dynamic_sections_created + && h->plt.refcount > 0) + { + /* Make sure this symbol is output as a dynamic symbol. + Undefined weak syms won't yet be marked as dynamic. */ + if (h->dynindx == -1 + && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) + { + if (! bfd_elf32_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, info, h)) + { + asection *s = htab->splt; + + /* If this is the first .plt entry, make room for the special + first entry. */ + if (s->_raw_size == 0) + s->_raw_size += PLT_ENTRY_SIZE; + + h->plt.offset = s->_raw_size; + + /* If this symbol is not defined in a regular file, and we are + not generating a shared library, then set the symbol to this + location in the .plt. This is required to make function + pointers compare as equal between the normal executable and + the shared library. */ + if (! info->shared + && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) + { + h->root.u.def.section = s; + h->root.u.def.value = h->plt.offset; + } + + /* Make room for this entry. */ + s->_raw_size += PLT_ENTRY_SIZE; + + /* We also need to make an entry in the .got.plt section, which + will be placed in the .got section by the linker script. */ + htab->sgotplt->_raw_size += 4; + + /* We also need to make an entry in the .rel.plt section. */ + htab->srelplt->_raw_size += sizeof (Elf32_External_Rela); + } + else + { + h->plt.offset = (bfd_vma) -1; + h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; + } + } + else + { + h->plt.offset = (bfd_vma) -1; + h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; + } + + if (h->got.refcount > 0) + { + asection *s; + bfd_boolean dyn; + + /* Make sure this symbol is output as a dynamic symbol. + Undefined weak syms won't yet be marked as dynamic. */ + if (h->dynindx == -1 + && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) + { + if (! bfd_elf32_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + s = htab->sgot; + + h->got.offset = s->_raw_size; + s->_raw_size += 4; + dyn = htab->root.dynamic_sections_created; + if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h)) + htab->srelgot->_raw_size += sizeof (Elf32_External_Rela); + } + else + h->got.offset = (bfd_vma) -1; + + if (eh->dyn_relocs == NULL) + return TRUE; + + /* In the shared -Bsymbolic case, discard space allocated for + dynamic pc-relative relocs against symbols which turn out to be + defined in regular objects. For the normal shared case, discard + space for pc-relative relocs that have become local due to symbol + visibility changes. */ + + if (info->shared) + { + if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0 + && ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0 + || info->symbolic)) + { + struct elf_m32r_dyn_relocs **pp; + for (pp = &eh->dyn_relocs; (p = *pp) != NULL; ) + { + p->count -= p->pc_count; + p->pc_count = 0; + if (p->count == 0) + *pp = p->next; + else + pp = &p->next; + } + } + } + else + { + /* For the non-shared case, discard space for relocs against + symbols which turn out to need copy relocs or are not + dynamic. */ + + if ((h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0 + && (((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0 + && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) + || (htab->root.dynamic_sections_created + && (h->root.type == bfd_link_hash_undefweak + || h->root.type == bfd_link_hash_undefined)))) + { + /* Make sure this symbol is output as a dynamic symbol. + Undefined weak syms won't yet be marked as dynamic. */ + if (h->dynindx == -1 + && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) + { + if (! bfd_elf32_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + /* If that succeeded, we know we'll be keeping all the + relocs. */ + if (h->dynindx != -1) + goto keep; + } + + eh->dyn_relocs = NULL; + + keep: ; + } + + /* Finally, allocate space. */ + for (p = eh->dyn_relocs; p != NULL; p = p->next) + { + asection *sreloc = elf_section_data (p->sec)->sreloc; + sreloc->_raw_size += p->count * sizeof (Elf32_External_Rela); + } + + return TRUE; +} +/* Find any dynamic relocs that apply to read-only sections. */ + +static bfd_boolean +readonly_dynrelocs (h, inf) + struct elf_link_hash_entry *h; + PTR inf; +{ + struct elf_m32r_link_hash_entry *eh; + struct elf_m32r_dyn_relocs *p; + + if (h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + eh = (struct elf_m32r_link_hash_entry *) h; + for (p = eh->dyn_relocs; p != NULL; p = p->next) + { + asection *s = p->sec->output_section; + + if (s != NULL && (s->flags & SEC_READONLY) != 0) + { + struct bfd_link_info *info = (struct bfd_link_info *) inf; + + info->flags |= DF_TEXTREL; - if (s == NULL) - { - flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS - | SEC_IN_MEMORY | SEC_LINKER_CREATED); + /* Not an error, just cut short the traversal. */ + return FALSE; + } + } + return TRUE; +} - s = bfd_make_section_anyway (abfd, ".sdata"); - if (s == NULL) - return FALSE; - bfd_set_section_flags (abfd, s, flags); - bfd_set_section_alignment (abfd, s, 2); - } +/* Set the sizes of the dynamic sections. */ + +static bfd_boolean +m32r_elf_size_dynamic_sections (output_bfd, info) + bfd *output_bfd ATTRIBUTE_UNUSED; + struct bfd_link_info *info; +{ + struct elf_m32r_link_hash_table *htab; + bfd *dynobj; + asection *s; + bfd_boolean relocs; + bfd *ibfd; - bh = bfd_link_hash_lookup (info->hash, "_SDA_BASE_", - FALSE, FALSE, FALSE); +#ifdef DEBUG_PIC +printf("m32r_elf_size_dynamic_sections()\n"); +#endif - if ((bh == NULL || bh->type == bfd_link_hash_undefined) - && !(_bfd_generic_link_add_one_symbol (info, - abfd, - "_SDA_BASE_", - BSF_GLOBAL, - s, - (bfd_vma) 32768, - (const char *) NULL, - FALSE, - get_elf_backend_data (abfd)->collect, - &bh))) - return FALSE; - h = (struct elf_link_hash_entry *) bh; - h->type = STT_OBJECT; - } + htab = m32r_elf_hash_table (info); + dynobj = htab->root.dynobj; + BFD_ASSERT (dynobj != NULL); - switch (sym->st_shndx) + if (htab->root.dynamic_sections_created) { - case SHN_M32R_SCOMMON: - *secp = bfd_make_section_old_way (abfd, ".scommon"); - (*secp)->flags |= SEC_IS_COMMON; - *valp = sym->st_size; - break; + /* Set the contents of the .interp section to the interpreter. */ + if (! info->shared) + { + s = bfd_get_section_by_name (dynobj, ".interp"); + BFD_ASSERT (s != NULL); + s->_raw_size = sizeof ELF_DYNAMIC_INTERPRETER; + s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER; + } } - return TRUE; -} + /* Set up .got offsets for local syms, and space for local dynamic + relocs. */ + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + { + bfd_signed_vma *local_got; + bfd_signed_vma *end_local_got; + bfd_size_type locsymcount; + Elf_Internal_Shdr *symtab_hdr; + asection *srel; -/* We have to figure out the SDA_BASE value, so that we can adjust the - symbol value correctly. We look up the symbol _SDA_BASE_ in the output - BFD. If we can't find it, we're stuck. We cache it in the ELF - target data. We don't need to adjust the symbol value for an - external symbol if we are producing relocatable output. */ + if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour) + continue; -static bfd_reloc_status_type -m32r_elf_final_sda_base (output_bfd, info, error_message, psb) - bfd *output_bfd; - struct bfd_link_info *info; - const char **error_message; - bfd_vma *psb; -{ - if (elf_gp (output_bfd) == 0) + for (s = ibfd->sections; s != NULL; s = s->next) + { + struct elf_m32r_dyn_relocs *p; + + for (p = ((struct elf_m32r_dyn_relocs *) + elf_section_data (s)->local_dynrel); + p != NULL; + p = p->next) + { + if (! bfd_is_abs_section (p->sec) + && bfd_is_abs_section (p->sec->output_section)) + { + /* Input section has been discarded, either because + it is a copy of a linkonce section or due to + linker script /DISCARD/, so we'll be discarding + the relocs too. */ + } + else if (p->count != 0) + { + srel = elf_section_data (p->sec)->sreloc; + srel->_raw_size += p->count * sizeof (Elf32_External_Rela); + if ((p->sec->output_section->flags & SEC_READONLY) != 0) + info->flags |= DF_TEXTREL; + } + } + } + + local_got = elf_local_got_refcounts (ibfd); + if (!local_got) + continue; + + symtab_hdr = &elf_tdata (ibfd)->symtab_hdr; + locsymcount = symtab_hdr->sh_info; + end_local_got = local_got + locsymcount; + s = htab->sgot; + srel = htab->srelgot; + for (; local_got < end_local_got; ++local_got) + { + if (*local_got > 0) + { + *local_got = s->_raw_size; + s->_raw_size += 4; + if (info->shared) + srel->_raw_size += sizeof (Elf32_External_Rela); + } + else + *local_got = (bfd_vma) -1; + } + } + + /* Allocate global sym .plt and .got entries, and space for global + sym dynamic relocs. */ + elf_link_hash_traverse (&htab->root, allocate_dynrelocs, (PTR) info); + + /* We now have determined the sizes of the various dynamic sections. + Allocate memory for them. */ + relocs = FALSE; + for (s = dynobj->sections; s != NULL; s = s->next) { - struct bfd_link_hash_entry *h; + if ((s->flags & SEC_LINKER_CREATED) == 0) + continue; - h = bfd_link_hash_lookup (info->hash, "_SDA_BASE_", FALSE, FALSE, TRUE); - if (h != (struct bfd_link_hash_entry *) NULL - && h->type == bfd_link_hash_defined) - elf_gp (output_bfd) = (h->u.def.value - + h->u.def.section->output_section->vma - + h->u.def.section->output_offset); + if (s == htab->splt + || s == htab->sgot + || s == htab->sgotplt) + { + /* Strip this section if we don't need it; see the + comment below. */ + } + else if (strncmp (bfd_get_section_name (dynobj, s), ".rela", 5) == 0) + { + if (s->_raw_size != 0 && s != htab->srelplt) + relocs = TRUE; + + /* We use the reloc_count field as a counter if we need + to copy relocs into the output file. */ + s->reloc_count = 0; + } else + { + /* It's not one of our sections, so don't allocate space. */ + continue; + } + + if (s->_raw_size == 0) + { + /* If we don't need this section, strip it from the + output file. This is mostly to handle .rela.bss and + .rela.plt. We must create both sections in + create_dynamic_sections, because they must be created + before the linker maps input sections to output + sections. The linker does that before + adjust_dynamic_symbol is called, and it is that + function which decides whether anything needs to go + into these sections. */ + _bfd_strip_section_from_output (info, s); + continue; + } + + /* Allocate memory for the section contents. We use bfd_zalloc + here in case unused entries are not reclaimed before the + section's contents are written out. This should not happen, + but this way if it does, we get a R_M32R_NONE reloc instead + of garbage. */ + s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->_raw_size); + if (s->contents == NULL) + return FALSE; + } + + if (htab->root.dynamic_sections_created) + { + /* Add some entries to the .dynamic section. We fill in the + values later, in m32r_elf_finish_dynamic_sections, but we + must add the entries now so that we get the correct size for + the .dynamic section. The DT_DEBUG entry is filled in by the + dynamic linker and used by the debugger. */ +#define add_dynamic_entry(TAG, VAL) \ + bfd_elf32_add_dynamic_entry (info, (bfd_vma) (TAG), (bfd_vma) (VAL)) + + if (! info->shared) { - /* Only get the error once. */ - *psb = elf_gp (output_bfd) = 4; - *error_message = - (const char *) _("SDA relocation when _SDA_BASE_ not defined"); - return bfd_reloc_dangerous; + if (! add_dynamic_entry (DT_DEBUG, 0)) + return FALSE; } + + if (htab->splt->_raw_size != 0) + { + if (! add_dynamic_entry (DT_PLTGOT, 0) + || ! add_dynamic_entry (DT_PLTRELSZ, 0) + || ! add_dynamic_entry (DT_PLTREL, DT_RELA) + || ! add_dynamic_entry (DT_JMPREL, 0)) + return FALSE; + } + + if (relocs) + { + if (! add_dynamic_entry (DT_RELA, 0) + || ! add_dynamic_entry (DT_RELASZ, 0) + || ! add_dynamic_entry (DT_RELAENT, + sizeof (Elf32_External_Rela))) + return FALSE; + + /* If any dynamic relocs apply to a read-only section, + then we need a DT_TEXTREL entry. */ + if ((info->flags & DF_TEXTREL) == 0) + elf_link_hash_traverse (&htab->root, readonly_dynrelocs, + (PTR) info); + + if ((info->flags & DF_TEXTREL) != 0) + { + if (! add_dynamic_entry (DT_TEXTREL, 0)) + return FALSE; + } + } } - *psb = elf_gp (output_bfd); - return bfd_reloc_ok; +#undef add_dynamic_entry + + return TRUE; } - /* Relocate an M32R/D ELF section. There is some attempt to make this function usable for many architectures, both for RELA and REL type relocs, if only to serve as a learning tool. @@ -986,10 +2534,17 @@ m32r_elf_relocate_section (output_bfd, i /* Assume success. */ bfd_boolean ret = TRUE; -#if !USE_REL - if (info->relocatable) - return TRUE; -#endif + struct elf_m32r_link_hash_table *htab = m32r_elf_hash_table (info); + bfd *dynobj; + bfd_vma *local_got_offsets; + asection *sgot, *splt, *sreloc; + + dynobj = htab->root.dynobj; + local_got_offsets = elf_local_got_offsets (input_bfd); + + sgot = htab->sgot; + splt = htab->splt; + sreloc = NULL; rel = relocs; relend = relocs + input_section->reloc_count; @@ -998,18 +2553,19 @@ m32r_elf_relocate_section (output_bfd, i int r_type; reloc_howto_type *howto; unsigned long r_symndx; + struct elf_link_hash_entry *h; /* We can't modify r_addend here as elf_link_input_bfd has an assert to - ensure it's zero (we use REL relocs, not RELA). Therefore this - should be assigning zero to `addend', but for clarity we use - `r_addend'. */ + ensure it's zero (we use REL relocs, not RELA). Therefore this + should be assigning zero to `addend', but for clarity we use + `r_addend'. */ bfd_vma addend = rel->r_addend; bfd_vma offset = rel->r_offset; - struct elf_link_hash_entry *h; Elf_Internal_Sym *sym; asection *sec; const char *sym_name; bfd_reloc_status_type r; const char *errmsg = NULL; + bfd_boolean use_rel = FALSE; h = NULL; r_type = ELF32_R_TYPE (rel->r_info); @@ -1024,14 +2580,19 @@ m32r_elf_relocate_section (output_bfd, i } if (r_type == R_M32R_GNU_VTENTRY - || r_type == R_M32R_GNU_VTINHERIT) + || r_type == R_M32R_GNU_VTINHERIT + || r_type == R_M32R_NONE + || r_type == R_M32R_RELA_GNU_VTENTRY + || r_type == R_M32R_RELA_GNU_VTINHERIT) continue; + if (r_type <= R_M32R_GNU_VTENTRY) + use_rel = TRUE; + howto = m32r_elf_howto_table + r_type; r_symndx = ELF32_R_SYM (rel->r_info); -#if USE_REL - if (info->relocatable) + if (info->relocatable && (use_rel == TRUE)) { /* This is a relocatable link. We don't have to change anything, unless the reloc is against a section symbol, @@ -1092,13 +2653,13 @@ m32r_elf_relocate_section (output_bfd, i } } else -#endif /* USE_REL */ { bfd_vma relocation; /* This is a final link. */ sym = NULL; sec = NULL; + h = NULL; if (r_symndx < symtab_hdr->sh_info) { @@ -1106,20 +2667,37 @@ m32r_elf_relocate_section (output_bfd, i sym = local_syms + r_symndx; sec = local_sections[r_symndx]; sym_name = ""; -#if !USE_REL - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); - addend = rel->r_addend; -#else - /* FIXME: This won't handle local relocations against SEC_MERGE - symbols. See elf32-i386.c for how to do this. */ - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); -#endif + + if (use_rel == FALSE) + { + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); + addend = rel->r_addend; + + if (info->relocatable) + { + /* This is a relocatable link. We don't have to change + anything, unless the reloc is against a section symbol, + in which case we have to adjust according to where the + section symbol winds up in the output section. */ + if (ELF_ST_TYPE (sym->st_info) == STT_SECTION) + rel->r_addend += sec->output_offset + sym->st_value; + + continue; + } + } + else + { + relocation = (sec->output_section->vma + + sec->output_offset + + sym->st_value); + } } else { /* External symbol. */ + if (info->relocatable && (use_rel == FALSE)) + continue; + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; while (h->root.type == bfd_link_hash_indirect || h->root.type == bfd_link_hash_warning) @@ -1129,9 +2707,64 @@ m32r_elf_relocate_section (output_bfd, i if (h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) { + bfd_boolean dyn; sec = h->root.u.def.section; - if (sec->output_section == NULL) - relocation = 0; + + dyn = htab->root.dynamic_sections_created; + sec = h->root.u.def.section; + if (r_type == R_M32R_GOTPC24 + || (r_type == R_M32R_GOTPC_HI_ULO + || r_type == R_M32R_GOTPC_HI_SLO + || r_type == R_M32R_GOTPC_LO) + || (r_type == R_M32R_26_PLTREL + && h->plt.offset != (bfd_vma) -1) + || ((r_type == R_M32R_GOT24 + || r_type == R_M32R_GOT16_HI_ULO + || r_type == R_M32R_GOT16_HI_SLO + || r_type == R_M32R_GOT16_LO) + && WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h) + && (! info->shared + || (! info->symbolic && h->dynindx != -1) + || (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0)) + || (info->shared + && ((! info->symbolic && h->dynindx != -1) + || (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0) + && (((r_type == R_M32R_16_RELA + || r_type == R_M32R_32_RELA + || r_type == R_M32R_24_RELA + || r_type == R_M32R_HI16_ULO_RELA + || r_type == R_M32R_HI16_SLO_RELA + || r_type == R_M32R_LO16_RELA) + && (h->elf_link_hash_flags + & ELF_LINK_FORCED_LOCAL) == 0) + || r_type == R_M32R_10_PCREL_RELA + || r_type == R_M32R_18_PCREL_RELA + || r_type == R_M32R_26_PCREL_RELA) + && ((input_section->flags & SEC_ALLOC) != 0 + /* DWARF will emit R_M32R_16(24,32) relocations + in its sections against symbols defined + externally in shared libraries. We can't do + anything with them here. */ + || ((input_section->flags & SEC_DEBUGGING) != 0 + && (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_DYNAMIC) != 0)))) + { + /* In these cases, we don't need the relocation + value. We check specially because in some + obscure cases sec->output_section will be NULL. */ + relocation = 0; + } + else if (sec->output_section == NULL) + { + (*_bfd_error_handler) + (_("%s: warning: unresolvable relocation against symbol `%s' from %s section"), + bfd_get_filename (input_bfd), h->root.root.string, + bfd_get_section_name (input_bfd, input_section)); + + relocation = 0; + } else relocation = (h->root.u.def.value + sec->output_section->vma @@ -1139,11 +2772,17 @@ m32r_elf_relocate_section (output_bfd, i } else if (h->root.type == bfd_link_hash_undefweak) relocation = 0; + else if (info->shared + && (!info->symbolic) + && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT) + relocation = 0; else { if (! ((*info->callbacks->undefined_symbol) (info, h->root.root.string, input_bfd, - input_section, offset, TRUE))) + input_section, offset, + (!info->shared + || ELF_ST_VISIBILITY (h->other))))) return FALSE; relocation = 0; } @@ -1158,11 +2797,283 @@ m32r_elf_relocate_section (output_bfd, i switch ((int) r_type) { + case R_M32R_GOTPC24: + /* .got(_GLOBAL_OFFSET_TABLE_) - pc relocation + ld24 rx,#_GLOBAL_OFFSET_TABLE_ + */ + relocation = sgot->output_section->vma; + break; + + case R_M32R_GOTPC_HI_ULO: + case R_M32R_GOTPC_HI_SLO: + case R_M32R_GOTPC_LO: + { + /* .got(_GLOBAL_OFFSET_TABLE_) - pc relocation + bl .+4 + seth rx,#high(_GLOBAL_OFFSET_TABLE_) + or3 rx,rx,#low(_GLOBAL_OFFSET_TABLE_ +4) + or + bl .+4 + seth rx,#shigh(_GLOBAL_OFFSET_TABLE_) + add3 rx,rx,#low(_GLOBAL_OFFSET_TABLE_ +4) + */ + relocation = sgot->output_section->vma; + relocation -= (input_section->output_section->vma + + input_section->output_offset + + rel->r_offset); + if ((r_type == R_M32R_GOTPC_HI_SLO) + && ((relocation + rel->r_addend) & 0x8000)) + rel->r_addend += 0x10000; + + break; + } + case R_M32R_GOT16_HI_ULO: + case R_M32R_GOT16_HI_SLO: + case R_M32R_GOT16_LO: + /* Fall through. */ + case R_M32R_GOT24: + /* Relocation is to the entry for this symbol in the global + offset table. */ + BFD_ASSERT (sgot != NULL); + + if (h != NULL) + { + bfd_boolean dyn; + bfd_vma off; + + off = h->got.offset; + BFD_ASSERT (off != (bfd_vma) -1); + + dyn = htab->root.dynamic_sections_created; + if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h) + || (info->shared + && (info->symbolic + || h->dynindx == -1 + || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL)) + && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))) + { + /* This is actually a static link, or it is a + -Bsymbolic link and the symbol is defined + locally, or the symbol was forced to be local + because of a version file. We must initialize + this entry in the global offset table. Since the + offset must always be a multiple of 4, we use the + least significant bit to record whether we have + initialized it already. + + When doing a dynamic link, we create a .rela.got + relocation entry to initialize the value. This + is done in the finish_dynamic_symbol routine. */ + if ((off & 1) != 0) + off &= ~1; + else + { + bfd_put_32 (output_bfd, relocation, + sgot->contents + off); + h->got.offset |= 1; + } + } + + relocation = sgot->output_offset + off; + } + else + { + bfd_vma off; + bfd_byte *loc; + + BFD_ASSERT (local_got_offsets != NULL + && local_got_offsets[r_symndx] != (bfd_vma) -1); + + off = local_got_offsets[r_symndx]; + + /* The offset must always be a multiple of 4. We use + the least significant bit to record whether we have + already processed this entry. */ + if ((off & 1) != 0) + off &= ~1; + else + { + bfd_put_32 (output_bfd, relocation, sgot->contents + off); + + if (info->shared) + { + asection *srelgot; + Elf_Internal_Rela outrel; + + /* We need to generate a R_M32R_RELATIVE reloc + for the dynamic linker. */ + srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); + BFD_ASSERT (srelgot != NULL); + + outrel.r_offset = (sgot->output_section->vma + + sgot->output_offset + + off); + outrel.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE); + outrel.r_addend = relocation; + loc = srelgot->contents; + loc += srelgot->reloc_count * sizeof(Elf32_External_Rela); + bfd_elf32_swap_reloca_out (output_bfd, &outrel,loc); + ++srelgot->reloc_count; + } + + local_got_offsets[r_symndx] |= 1; + } + + relocation = sgot->output_offset + off; + } + if ((r_type == R_M32R_GOT16_HI_SLO) + && ((relocation + rel->r_addend) & 0x8000)) + rel->r_addend += 0x10000; + + break; + + case R_M32R_26_PLTREL: + /* Relocation is to the entry for this symbol in the + procedure linkage table. */ + + /* The native assembler will generate a 26_PLTREL reloc + for a local symbol if you assemble a call from one + section to another when using -K pic. */ + if (h == NULL) + break; + + //if (ELF_ST_VISIBILITY (h->other) == STV_INTERNAL + // || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN) + // break; + if (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) + break; + + if (h->plt.offset == (bfd_vma) -1) + { + /* We didn't make a PLT entry for this symbol. This + happens when statically linking PIC code, or when + using -Bsymbolic. */ + break; + } + + relocation = (splt->output_section->vma + + splt->output_offset + + h->plt.offset); + break; + + case R_M32R_HI16_SLO_RELA: + { + if ((relocation + rel->r_addend) & 0x8000) + { + rel->r_addend += 0x10000; + } + } + /* Fall through. */ + case R_M32R_16_RELA: + case R_M32R_24_RELA: + case R_M32R_32_RELA: + case R_M32R_18_PCREL_RELA: + case R_M32R_26_PCREL_RELA: + case R_M32R_HI16_ULO_RELA: + case R_M32R_LO16_RELA: + case R_M32R_SDA16_RELA: + if (info->shared + && r_symndx != 0 + && (input_section->flags & SEC_ALLOC) != 0 + && ((r_type != R_M32R_18_PCREL_RELA + && r_type != R_M32R_26_PCREL_RELA) + || (h != NULL + && h->dynindx != -1 + && (! info->symbolic + || (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0)))) + { + Elf_Internal_Rela outrel; + bfd_boolean skip, relocate; + bfd_byte *loc; + + /* When generating a shared object, these relocations + are copied into the output file to be resolved at run + time. */ + + if (sreloc == NULL) + { + const char *name; + + name = (bfd_elf_string_from_elf_section + (input_bfd, + elf_elfheader (input_bfd)->e_shstrndx, + elf_section_data (input_section)->rel_hdr.sh_name)); + if (name == NULL) + return FALSE; + + BFD_ASSERT (strncmp (name, ".rela", 5) == 0 + && strcmp (bfd_get_section_name (input_bfd, + input_section), + name + 5) == 0); + + sreloc = bfd_get_section_by_name (dynobj, name); + BFD_ASSERT (sreloc != NULL); + } + + skip = FALSE; + relocate = FALSE; + + outrel.r_offset = _bfd_elf_section_offset (output_bfd, + info, + input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = TRUE; + else if (outrel.r_offset == (bfd_vma) -2) + skip = TRUE, relocate = TRUE; + outrel.r_offset += (input_section->output_section->vma + + input_section->output_offset); + + if (skip) + memset (&outrel, 0, sizeof outrel); + else if (r_type == R_M32R_18_PCREL_RELA + || r_type == R_M32R_26_PCREL_RELA) + { + BFD_ASSERT (h != NULL && h->dynindx != -1); + outrel.r_info = ELF32_R_INFO (h->dynindx, r_type); + outrel.r_addend = rel->r_addend; + } + else + { + /* h->dynindx may be -1 if this symbol was marked to + become local. */ + if (h == NULL + || ((info->symbolic || h->dynindx == -1) + && (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) != 0)) + { + relocate = TRUE; + outrel.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE); + outrel.r_addend = relocation + rel->r_addend; + } + else + { + BFD_ASSERT (h->dynindx != -1); + outrel.r_info = ELF32_R_INFO (h->dynindx, r_type); + outrel.r_addend = relocation + rel->r_addend; + } + } + + loc = sreloc->contents; + loc += sreloc->reloc_count * sizeof(Elf32_External_Rela); + bfd_elf32_swap_reloca_out (output_bfd, &outrel,loc); + ++sreloc->reloc_count; + + /* If this reloc is against an external symbol, we do + not want to fiddle with the addend. Otherwise, we + need to include the symbol value so that it becomes + an addend for the dynamic reloc. */ + if (! relocate) + continue; + } + break; + case (int) R_M32R_10_PCREL : r = m32r_elf_do_10_pcrel_reloc (input_bfd, howto, input_section, contents, offset, sec, relocation, addend); - break; + goto check_reloc; case (int) R_M32R_HI16_SLO : case (int) R_M32R_HI16_ULO : @@ -1190,7 +3101,8 @@ m32r_elf_relocate_section (output_bfd, i contents, offset, relocation, addend); } - break; + + goto check_reloc; case (int) R_M32R_SDA16 : { @@ -1233,14 +3145,20 @@ m32r_elf_relocate_section (output_bfd, i continue; } } - /* fall through */ + /* fall through */ + + default : /* OLD_M32R_RELOC */ - default : r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents, offset, relocation, addend); - break; + goto check_reloc; } + + r = _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, rel->r_offset, + relocation, rel->r_addend); + } check_reloc: @@ -1307,6 +3225,353 @@ m32r_elf_relocate_section (output_bfd, i return ret; } + +/* Finish up dynamic symbol handling. We set the contents of various + dynamic sections here. */ +static bfd_boolean +m32r_elf_finish_dynamic_symbol (output_bfd, info, h, sym) + bfd *output_bfd; + struct bfd_link_info *info; + struct elf_link_hash_entry *h; + Elf_Internal_Sym *sym; +{ + struct elf_m32r_link_hash_table *htab; + bfd *dynobj; + bfd_byte *loc; + +#ifdef DEBUG_PIC +printf("m32r_elf_finish_dynamic_symbol()\n"); +#endif + + htab = m32r_elf_hash_table (info); + dynobj = htab->root.dynobj; + + if (h->plt.offset != (bfd_vma) -1) + { + asection *splt; + asection *sgot; + asection *srela; + + bfd_vma plt_index; + bfd_vma got_offset; + Elf_Internal_Rela rela; + + /* This symbol has an entry in the procedure linkage table. Set + it up. */ + + BFD_ASSERT (h->dynindx != -1); + + splt = htab->splt; + sgot = htab->sgotplt; + srela = htab->srelplt; + BFD_ASSERT (splt != NULL && sgot != NULL && srela != NULL); + + /* Get the index in the procedure linkage table which + corresponds to this symbol. This is the index of this symbol + in all the symbols for which we are making plt entries. The + first entry in the procedure linkage table is reserved. */ + plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1; + + /* Get the offset into the .got table of the entry that + corresponds to this function. Each .got entry is 4 bytes. + The first three are reserved. */ + got_offset = (plt_index + 3) * 4; + + /* Fill in the entry in the procedure linkage table. */ + if (! info->shared) + { + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD0b + + (((sgot->output_section->vma + + sgot->output_offset + + got_offset) >> 16) & 0xffff)), + splt->contents + h->plt.offset); + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD1b + + ((sgot->output_section->vma + + sgot->output_offset + + got_offset) & 0xffff)), + splt->contents + h->plt.offset + 4); + bfd_put_32 (output_bfd, PLT_ENTRY_WORD2, + splt->contents + h->plt.offset + 8); + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD3 + + plt_index * sizeof (Elf32_External_Rela)), + splt->contents + h->plt.offset + 12); + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD4 + + (((unsigned int) ((- (h->plt.offset + 16)) >> 2)) & 0xffffff)), + splt->contents + h->plt.offset + 16); + } + else + { + bfd_put_32 (output_bfd, + PLT_ENTRY_WORD0 + got_offset, + splt->contents + h->plt.offset); + bfd_put_32 (output_bfd, PLT_ENTRY_WORD1, + splt->contents + h->plt.offset + 4); + bfd_put_32 (output_bfd, PLT_ENTRY_WORD2, + splt->contents + h->plt.offset + 8); + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD3 + + plt_index * sizeof (Elf32_External_Rela)), + splt->contents + h->plt.offset + 12); + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD4 + + (((unsigned int) ((- (h->plt.offset + 16)) >> 2)) & 0xffffff)), + splt->contents + h->plt.offset + 16); + } + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, + (splt->output_section->vma + + splt->output_offset + + h->plt.offset + + 12), /* same offset */ + sgot->contents + got_offset); + + /* Fill in the entry in the .rela.plt section. */ + rela.r_offset = (sgot->output_section->vma + + sgot->output_offset + + got_offset); + rela.r_info = ELF32_R_INFO (h->dynindx, R_M32R_JMP_SLOT); + rela.r_addend = 0; + loc = srela->contents; + loc += plt_index * sizeof(Elf32_External_Rela); + bfd_elf32_swap_reloca_out (output_bfd, &rela, loc); + + if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) + { + /* Mark the symbol as undefined, rather than as defined in + the .plt section. Leave the value alone. */ + sym->st_shndx = SHN_UNDEF; + } + } + + if (h->got.offset != (bfd_vma) -1) + { + asection *sgot; + asection *srela; + Elf_Internal_Rela rela; + + /* This symbol has an entry in the global offset table. Set it + up. */ + + sgot = htab->sgot; + srela = htab->srelgot; + BFD_ASSERT (sgot != NULL && srela != NULL); + + rela.r_offset = (sgot->output_section->vma + + sgot->output_offset + + (h->got.offset &~ 1)); + + /* If this is a -Bsymbolic link, and the symbol is defined + locally, we just want to emit a RELATIVE reloc. Likewise if + the symbol was forced to be local because of a version file. + The entry in the global offset table will already have been + initialized in the relocate_section function. */ + if (info->shared + && (info->symbolic + || h->dynindx == -1 + || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL)) + && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)) + { + rela.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE); + rela.r_addend = (h->root.u.def.value + + h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset); + } + else + { + BFD_ASSERT((h->got.offset & 1) == 0); + bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + h->got.offset); + rela.r_info = ELF32_R_INFO (h->dynindx, R_M32R_GLOB_DAT); + rela.r_addend = 0; + } + + loc = srela->contents; + loc += srela->reloc_count * sizeof(Elf32_External_Rela); + bfd_elf32_swap_reloca_out (output_bfd, &rela, loc); + ++srela->reloc_count; + } + + if ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_COPY) != 0) + { + asection *s; + Elf_Internal_Rela rela; + + /* This symbols needs a copy reloc. Set it up. */ + + BFD_ASSERT (h->dynindx != -1 + && (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak)); + + s = bfd_get_section_by_name (h->root.u.def.section->owner, + ".rela.bss"); + BFD_ASSERT (s != NULL); + + rela.r_offset = (h->root.u.def.value + + h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset); + rela.r_info = ELF32_R_INFO (h->dynindx, R_M32R_COPY); + rela.r_addend = 0; + loc = s->contents; + loc += s->reloc_count * sizeof(Elf32_External_Rela); + bfd_elf32_swap_reloca_out (output_bfd, &rela, loc); + ++s->reloc_count; + } + + /* Mark some specially defined symbols as absolute. */ + if (strcmp (h->root.root.string, "_DYNAMIC") == 0 + || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0) + sym->st_shndx = SHN_ABS; + + return TRUE; +} + + +/* Finish up the dynamic sections. */ + +static bfd_boolean +m32r_elf_finish_dynamic_sections (output_bfd, info) + bfd *output_bfd; + struct bfd_link_info *info; +{ + struct elf_m32r_link_hash_table *htab; + bfd *dynobj; + asection *sdyn; + asection *sgot; + +#ifdef DEBUG_PIC +printf("m32r_elf_finish_dynamic_sections()\n"); +#endif + + htab = m32r_elf_hash_table (info); + dynobj = htab->root.dynobj; + + sgot = htab->sgotplt; + sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); + + if (htab->root.dynamic_sections_created) + { + asection *splt; + Elf32_External_Dyn *dyncon, *dynconend; + + BFD_ASSERT (sgot != NULL && sdyn != NULL); + + dyncon = (Elf32_External_Dyn *) sdyn->contents; + dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->_raw_size); + + for (; dyncon < dynconend; dyncon++) + { + Elf_Internal_Dyn dyn; + const char *name; + asection *s; + + bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn); + + switch (dyn.d_tag) + { + default: + break; + + case DT_PLTGOT: + name = ".got"; + s = htab->sgot->output_section; + goto get_vma; + case DT_JMPREL: + name = ".rela.plt"; + s = htab->srelplt->output_section; + get_vma: + BFD_ASSERT (s != NULL); + dyn.d_un.d_ptr = s->vma; + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; + + case DT_PLTRELSZ: + s = htab->srelplt->output_section; + BFD_ASSERT (s != NULL); + if (s->_cooked_size != 0) + dyn.d_un.d_val = s->_cooked_size; + else + dyn.d_un.d_val = s->_raw_size; + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; + + case DT_RELASZ: + /* My reading of the SVR4 ABI indicates that the + procedure linkage table relocs (DT_JMPREL) should be + included in the overall relocs (DT_RELA). This is + what Solaris does. However, UnixWare can not handle + that case. Therefore, we override the DT_RELASZ entry + here to make it not include the JMPREL relocs. Since + the linker script arranges for .rela.plt to follow all + other relocation sections, we don't have to worry + about changing the DT_RELA entry. */ + if (htab->srelplt != NULL) + { + s = htab->srelplt->output_section; + if (s->_cooked_size != 0) + dyn.d_un.d_val -= s->_cooked_size; + else + dyn.d_un.d_val -= s->_raw_size; + } + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; + } + } + + /* Fill in the first entry in the procedure linkage table. */ + splt = htab->splt; + if (splt && splt->_raw_size > 0) + { + if (info->shared) + { + bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD0, splt->contents); + bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD1, splt->contents + 4); + bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD2, splt->contents + 8); + bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD3, splt->contents + 12); + bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD4, splt->contents + 16); + } + else + { + unsigned long addr; + /* addr = .got + 4 */ + addr = sgot->output_section->vma + sgot->output_offset + 4; + bfd_put_32 (output_bfd, + PLT0_ENTRY_WORD0 | ((addr >> 16) & 0xffff), + splt->contents); + bfd_put_32 (output_bfd, + PLT0_ENTRY_WORD1 | (addr & 0xffff), + splt->contents + 4); + bfd_put_32 (output_bfd, PLT0_ENTRY_WORD2, splt->contents + 8); + bfd_put_32 (output_bfd, PLT0_ENTRY_WORD3, splt->contents + 12); + bfd_put_32 (output_bfd, PLT0_ENTRY_WORD4, splt->contents + 16); + } + + elf_section_data (splt->output_section)->this_hdr.sh_entsize = + PLT_ENTRY_SIZE; + } + } + + /* Fill in the first three entries in the global offset table. */ + if (sgot && sgot->_raw_size > 0) + { + if (sdyn == NULL) + bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents); + else + bfd_put_32 (output_bfd, + sdyn->output_section->vma + sdyn->output_offset, + sgot->contents); + bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + 4); + bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + 8); + + elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 4; + } + + return TRUE; +} + #if 0 /* relaxing not supported yet */ @@ -1863,6 +4128,7 @@ m32r_elf_object_p (abfd) default: case E_M32R_ARCH: (void) bfd_default_set_arch_mach (abfd, bfd_arch_m32r, bfd_mach_m32r); break; case E_M32RX_ARCH: (void) bfd_default_set_arch_mach (abfd, bfd_arch_m32r, bfd_mach_m32rx); break; + case E_M32R2_ARCH: (void) bfd_default_set_arch_mach (abfd, bfd_arch_m32r, bfd_mach_m32r2); break; } return TRUE; } @@ -1880,6 +4146,7 @@ m32r_elf_final_write_processing (abfd, l default: case bfd_mach_m32r: val = E_M32R_ARCH; break; case bfd_mach_m32rx: val = E_M32RX_ARCH; break; + case bfd_mach_m32r2: val = E_M32R2_ARCH; break; } elf_elfheader (abfd)->e_flags &=~ EF_M32R_ARCH; @@ -1946,7 +4213,9 @@ m32r_elf_merge_private_bfd_data (ibfd, o if ((in_flags & EF_M32R_ARCH) != (out_flags & EF_M32R_ARCH)) { - if ((in_flags & EF_M32R_ARCH) != E_M32R_ARCH) + if ( ((in_flags & EF_M32R_ARCH) != E_M32R_ARCH) + || ((out_flags & EF_M32R_ARCH) == E_M32R_ARCH) + || ((in_flags & EF_M32R_ARCH) == E_M32R2_ARCH)) { (*_bfd_error_handler) (_("%s: Instruction set mismatch with previous modules"), @@ -1979,6 +4248,7 @@ m32r_elf_print_private_bfd_data (abfd, p default: case E_M32R_ARCH: fprintf (file, _(": m32r instructions")); break; case E_M32RX_ARCH: fprintf (file, _(": m32rx instructions")); break; + case E_M32R2_ARCH: fprintf (file, _(": m32r2 instructions")); break; } fputc ('\n', file); @@ -2000,6 +4270,8 @@ m32r_elf_gc_mark_hook (sec, info, rel, h { case R_M32R_GNU_VTINHERIT: case R_M32R_GNU_VTENTRY: + case R_M32R_RELA_GNU_VTINHERIT: + case R_M32R_RELA_GNU_VTENTRY: break; default: @@ -2030,7 +4302,97 @@ m32r_elf_gc_sweep_hook (abfd, info, sec, asection *sec ATTRIBUTE_UNUSED; const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED; { - /* we don't use got and plt entries for m32r */ + /* Update the got entry reference counts for the section being removed. */ + Elf_Internal_Shdr *symtab_hdr; + struct elf_link_hash_entry **sym_hashes; + bfd_signed_vma *local_got_refcounts; + const Elf_Internal_Rela *rel, *relend; + unsigned long r_symndx; + struct elf_link_hash_entry *h; + + elf_section_data (sec)->local_dynrel = NULL; + + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + local_got_refcounts = elf_local_got_refcounts (abfd); + + relend = relocs + sec->reloc_count; + for (rel = relocs; rel < relend; rel++) + switch (ELF32_R_TYPE (rel->r_info)) + { + case R_M32R_GOT16_HI_ULO: + case R_M32R_GOT16_HI_SLO: + case R_M32R_GOT16_LO: + case R_M32R_GOT24: + case R_M32R_GOTPC_HI_ULO: + case R_M32R_GOTPC_HI_SLO: + case R_M32R_GOTPC_LO: + case R_M32R_GOTPC24: + r_symndx = ELF32_R_SYM (rel->r_info); + if (r_symndx >= symtab_hdr->sh_info) + { + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + if (h->got.refcount > 0) + h->got.refcount--; + } + else + { + if (local_got_refcounts && local_got_refcounts[r_symndx] > 0) + local_got_refcounts[r_symndx]--; + } + break; + + case R_M32R_16_RELA: + case R_M32R_24_RELA: + case R_M32R_32_RELA: + case R_M32R_HI16_ULO_RELA: + case R_M32R_HI16_SLO_RELA: + case R_M32R_LO16_RELA: + case R_M32R_SDA16_RELA: + case R_M32R_18_PCREL_RELA: + case R_M32R_26_PCREL_RELA: + r_symndx = ELF32_R_SYM (rel->r_info); + if (r_symndx >= symtab_hdr->sh_info) + { + struct elf_m32r_link_hash_entry *eh; + struct elf_m32r_dyn_relocs **pp; + struct elf_m32r_dyn_relocs *p; + + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + + if (!info->shared && h->plt.refcount > 0) + h->plt.refcount -= 1; + + eh = (struct elf_m32r_link_hash_entry *) h; + + for (pp = &eh->dyn_relocs; (p = *pp) != NULL; pp = &p->next) + if (p->sec == sec) + { + if (ELF32_R_TYPE (rel->r_info) == R_M32R_26_PCREL_RELA + || ELF32_R_TYPE (rel->r_info) == R_M32R_26_PCREL_RELA) + p->pc_count -= 1; + p->count -= 1; + if (p->count == 0) + *pp = p->next; + break; + } + } + break; + + case R_M32R_26_PLTREL: + r_symndx = ELF32_R_SYM (rel->r_info); + if (r_symndx >= symtab_hdr->sh_info) + { + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + if (h->plt.refcount > 0) + h->plt.refcount--; + } + break; + + default: + break; + } + return TRUE; } @@ -2049,32 +4411,250 @@ m32r_elf_check_relocs (abfd, info, sec, struct elf_link_hash_entry **sym_hashes, **sym_hashes_end; const Elf_Internal_Rela *rel; const Elf_Internal_Rela *rel_end; + struct elf_m32r_link_hash_table *htab; + bfd *dynobj; + bfd_vma *local_got_offsets; + asection *sgot, *srelgot, *sreloc; if (info->relocatable) return TRUE; + sgot = srelgot = sreloc = NULL; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); sym_hashes_end = sym_hashes + symtab_hdr->sh_size/sizeof (Elf32_External_Sym); if (!elf_bad_symtab (abfd)) sym_hashes_end -= symtab_hdr->sh_info; + htab = m32r_elf_hash_table (info); + dynobj = htab->root.dynobj; + local_got_offsets = elf_local_got_offsets (abfd); + rel_end = relocs + sec->reloc_count; for (rel = relocs; rel < rel_end; rel++) { + int r_type; struct elf_link_hash_entry *h; unsigned long r_symndx; r_symndx = ELF32_R_SYM (rel->r_info); + r_type = ELF32_R_TYPE (rel->r_info); if (r_symndx < symtab_hdr->sh_info) h = NULL; else h = sym_hashes[r_symndx - symtab_hdr->sh_info]; - switch (ELF32_R_TYPE (rel->r_info)) + /* Some relocs require a global offset table. */ + if (htab->sgot == NULL) + { + switch (r_type) + { + case R_M32R_GOT16_HI_ULO: + case R_M32R_GOT16_HI_SLO: + case R_M32R_GOT16_LO: + case R_M32R_GOTPC24: + case R_M32R_GOTPC_HI_ULO: + case R_M32R_GOTPC_HI_SLO: + case R_M32R_GOTPC_LO: + case R_M32R_GOT24: + if (dynobj == NULL) + htab->root.dynobj = dynobj = abfd; + if (! create_got_section (dynobj, info)) + return FALSE; + break; + + default: + break; + } + } + + switch (r_type) { + case R_M32R_GOT16_HI_ULO: + case R_M32R_GOT16_HI_SLO: + case R_M32R_GOT16_LO: + case R_M32R_GOT24: + + if (h != NULL) + h->got.refcount += 1; + else + { + bfd_signed_vma *local_got_refcounts; + + /* This is a global offset table entry for a local + symbol. */ + local_got_refcounts = elf_local_got_refcounts (abfd); + if (local_got_refcounts == NULL) + { + bfd_size_type size; + + size = symtab_hdr->sh_info; + size *= sizeof (bfd_signed_vma); + local_got_refcounts = ((bfd_signed_vma *) + bfd_zalloc (abfd, size)); + if (local_got_refcounts == NULL) + return FALSE; + elf_local_got_refcounts (abfd) = local_got_refcounts; + } + local_got_refcounts[r_symndx] += 1; + } + break; + + case R_M32R_26_PLTREL: + /* This symbol requires a procedure linkage table entry. We + actually build the entry in adjust_dynamic_symbol, + because this might be a case of linking PIC code without + linking in any dynamic objects, in which case we don't + need to generate a procedure linkage table after all. */ + + /* If this is a local symbol, we resolve it directly without + creating a procedure linkage table entry. */ + if (h == NULL) + continue; + + if (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) + break; + + h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; + h->plt.refcount += 1; + break; + + case R_M32R_16_RELA: + case R_M32R_24_RELA: + case R_M32R_32_RELA: + case R_M32R_HI16_ULO_RELA: + case R_M32R_HI16_SLO_RELA: + case R_M32R_LO16_RELA: + case R_M32R_SDA16_RELA: + case R_M32R_18_PCREL_RELA: + case R_M32R_26_PCREL_RELA: + + if (h != NULL && !info->shared) + { + h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF; + h->plt.refcount += 1; + } + + /* If we are creating a shared library, and this is a reloc + against a global symbol, or a non PC relative reloc + against a local symbol, then we need to copy the reloc + into the shared library. However, if we are linking with + -Bsymbolic, we do not need to copy a reloc against a + global symbol which is defined in an object we are + including in the link (i.e., DEF_REGULAR is set). At + this point we have not seen all the input files, so it is + possible that DEF_REGULAR is not set now but will be set + later (it is never cleared). We account for that + possibility below by storing information in the + dyn_relocs field of the hash table entry. A similar + situation occurs when creating shared libraries and symbol + visibility changes render the symbol local. + + If on the other hand, we are creating an executable, we + may need to keep relocations for symbols satisfied by a + dynamic library if we manage to avoid copy relocs for the + symbol. */ + if ((info->shared + && (sec->flags & SEC_ALLOC) != 0 + && ((r_type != R_M32R_26_PCREL_RELA + && r_type != R_M32R_18_PCREL_RELA) + || (h != NULL + && (! info->symbolic + || h->root.type == bfd_link_hash_defweak + || (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0)))) + || (!info->shared + && (sec->flags & SEC_ALLOC) != 0 + && h != NULL + && (h->root.type == bfd_link_hash_defweak + || (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0))) + { + struct elf_m32r_dyn_relocs *p; + struct elf_m32r_dyn_relocs **head; + + if (dynobj == NULL) + htab->root.dynobj = dynobj = abfd; + + /* When creating a shared object, we must copy these + relocs into the output file. We create a reloc + section in dynobj and make room for the reloc. */ + if (sreloc == NULL) + { + const char *name; + + name = (bfd_elf_string_from_elf_section + (abfd, + elf_elfheader (abfd)->e_shstrndx, + elf_section_data (sec)->rel_hdr.sh_name)); + if (name == NULL) + return FALSE; + + BFD_ASSERT (strncmp (name, ".rela", 5) == 0 + && strcmp (bfd_get_section_name (abfd, sec), + name + 5) == 0); + + sreloc = bfd_get_section_by_name (dynobj, name); + if (sreloc == NULL) + { + flagword flags; + + sreloc = bfd_make_section (dynobj, name); + flags = (SEC_HAS_CONTENTS | SEC_READONLY + | SEC_IN_MEMORY | SEC_LINKER_CREATED); + if ((sec->flags & SEC_ALLOC) != 0) + flags |= SEC_ALLOC | SEC_LOAD; + if (sreloc == NULL + || ! bfd_set_section_flags (dynobj, sreloc, flags) + || ! bfd_set_section_alignment (dynobj, sreloc, 2)) + return FALSE; + } + elf_section_data (sec)->sreloc = sreloc; + } + + /* If this is a global symbol, we count the number of + relocations we need for this symbol. */ + if (h != NULL) + head = &((struct elf_m32r_link_hash_entry *) h)->dyn_relocs; + else + { + asection *s; + + /* Track dynamic relocs needed for local syms too. */ + s = bfd_section_from_r_symndx (abfd, &htab->sym_sec, + sec, r_symndx); + if (s == NULL) + return FALSE; + + head = ((struct elf_m32r_dyn_relocs **) + &elf_section_data (s)->local_dynrel); + } + + p = *head; + if (p == NULL || p->sec != sec) + { + bfd_size_type amt = sizeof (*p); + p = ((struct elf_m32r_dyn_relocs *) bfd_alloc (dynobj, amt)); + if (p == NULL) + return FALSE; + p->next = *head; + *head = p; + p->sec = sec; + p->count = 0; + p->pc_count = 0; + } + + p->count += 1; + if (ELF32_R_TYPE (rel->r_info) == R_M32R_26_PCREL_RELA + || ELF32_R_TYPE (rel->r_info) == R_M32R_18_PCREL_RELA) + p->pc_count += 1; + } + break; + /* This relocation describes the C++ object vtable hierarchy. Reconstruct it for later use during GC. */ + case R_M32R_RELA_GNU_VTINHERIT: case R_M32R_GNU_VTINHERIT: if (!_bfd_elf32_gc_record_vtinherit (abfd, sec, h, rel->r_offset)) return FALSE; @@ -2086,6 +4666,10 @@ m32r_elf_check_relocs (abfd, info, sec, if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_offset)) return FALSE; break; + case R_M32R_RELA_GNU_VTENTRY: + if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_addend)) + return FALSE; + break; } } @@ -2098,6 +4682,61 @@ static struct bfd_elf_special_section co { ".sbss", 5, -2, SHT_NOBITS, SHF_ALLOC + SHF_WRITE }, { NULL, 0, 0, 0, 0 } }; + +static bfd_boolean +m32r_elf_fake_sections (abfd, hdr, sec) + bfd *abfd; + Elf_Internal_Shdr *hdr ATTRIBUTE_UNUSED; + asection *sec; +{ + register const char *name; + + name = bfd_get_section_name (abfd, sec); + + /* The generic elf_fake_sections will set up REL_HDR using the + default kind of relocations. But, we may actually need both + kinds of relocations, so we set up the second header here. + + This is not necessary for the O32 ABI since that only uses Elf32_Rel + relocations (cf. System V ABI, MIPS RISC Processor Supplement, + 3rd Edition, p. 4-17). It breaks the IRIX 5/6 32-bit ld, since one + of the resulting empty .rela.
sections starts with + sh_offset == object size, and ld doesn't allow that. While the check + is arguably bogus for empty or SHT_NOBITS sections, it can easily be + avoided by not emitting those useless sections in the first place. */ + if ((sec->flags & SEC_RELOC) != 0) + { + struct bfd_elf_section_data *esd; + bfd_size_type amt = sizeof (Elf_Internal_Shdr); + + esd = elf_section_data (sec); + BFD_ASSERT (esd->rel_hdr2 == NULL); + esd->rel_hdr2 = (Elf_Internal_Shdr *) bfd_zalloc (abfd, amt); + if (!esd->rel_hdr2) + return FALSE; + _bfd_elf_init_reloc_shdr (abfd, esd->rel_hdr2, sec, + !sec->use_rela_p); + } + + return TRUE; +} + +static enum elf_reloc_type_class +m32r_elf_reloc_type_class (rela) + const Elf_Internal_Rela *rela; +{ + switch ((int) ELF32_R_TYPE (rela->r_info)) + { + case R_M32R_RELATIVE: + return reloc_class_relative; + case R_M32R_JMP_SLOT: + return reloc_class_plt; + case R_M32R_COPY: + return reloc_class_copy; + default: + return reloc_class_normal; + } +} #define ELF_ARCH bfd_arch_m32r #define ELF_MACHINE_CODE EM_M32R @@ -2106,8 +4745,10 @@ static struct bfd_elf_special_section co #define TARGET_BIG_SYM bfd_elf32_m32r_vec #define TARGET_BIG_NAME "elf32-m32r" +#define TARGET_LITTLE_SYM bfd_elf32_m32rle_vec +#define TARGET_LITTLE_NAME "elf32-m32rle" -#define elf_info_to_howto 0 +#define elf_info_to_howto m32r_info_to_howto #define elf_info_to_howto_rel m32r_info_to_howto_rel #define elf_backend_section_from_bfd_section _bfd_m32r_elf_section_from_bfd_section #define elf_backend_symbol_processing _bfd_m32r_elf_symbol_processing @@ -2117,10 +4758,35 @@ static struct bfd_elf_special_section co #define elf_backend_gc_sweep_hook m32r_elf_gc_sweep_hook #define elf_backend_check_relocs m32r_elf_check_relocs +#define elf_backend_create_dynamic_sections m32r_elf_create_dynamic_sections +#define bfd_elf32_bfd_link_hash_table_create m32r_elf_link_hash_table_create +#define elf_backend_size_dynamic_sections m32r_elf_size_dynamic_sections +#define elf_backend_finish_dynamic_sections m32r_elf_finish_dynamic_sections +#define elf_backend_adjust_dynamic_symbol m32r_elf_adjust_dynamic_symbol +#define elf_backend_finish_dynamic_symbol m32r_elf_finish_dynamic_symbol +#define elf_backend_reloc_type_class m32r_elf_reloc_type_class +#define elf_backend_copy_indirect_symbol m32r_elf_copy_indirect_symbol + #define elf_backend_can_gc_sections 1 -#if !USE_REL +/*#if !USE_REL #define elf_backend_rela_normal 1 +#endif*/ +#define elf_backend_can_refcount 1 +#define elf_backend_want_got_plt 1 +#define elf_backend_plt_readonly 1 +#define elf_backend_want_plt_sym 0 +#define elf_backend_got_header_size 12 + +#define elf_backend_may_use_rel_p 1 +#ifdef USE_M32R_OLD_RELOC +#define elf_backend_default_use_rela_p 0 +#define elf_backend_may_use_rela_p 0 +#else +#define elf_backend_default_use_rela_p 1 +#define elf_backend_may_use_rela_p 1 +#define elf_backend_fake_sections m32r_elf_fake_sections #endif + #if 0 /* not yet */ /* relax support */ #define bfd_elf32_bfd_relax_section m32r_elf_relax_section @@ -2136,3 +4802,20 @@ static struct bfd_elf_special_section co #define elf_backend_special_sections m32r_elf_special_sections #include "elf32-target.h" + +#undef ELF_MAXPAGESIZE +#define ELF_MAXPAGESIZE 0x1000 + +#undef TARGET_BIG_SYM +#define TARGET_BIG_SYM bfd_elf32_m32rlin_vec +#undef TARGET_BIG_NAME +#define TARGET_BIG_NAME "elf32-m32r-linux" +#undef TARGET_LITTLE_SYM +#define TARGET_LITTLE_SYM bfd_elf32_m32rlelin_vec +#undef TARGET_LITTLE_NAME +#define TARGET_LITTLE_NAME "elf32-m32rle-linux" +#undef elf32_bed +#define elf32_bed elf32_m32r_lin_bed + +#include "elf32-target.h" + diff -uprN binutils-2.14.90.0.7/bfd/elf32-m68hc11.c binutils-2.14.90.0.8/bfd/elf32-m68hc11.c --- binutils-2.14.90.0.7/bfd/elf32-m68hc11.c 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-m68hc11.c 2004-01-14 13:07:43.000000000 -0800 @@ -954,7 +954,7 @@ m68hc11_elf_relax_section (bfd *abfd, as { unsigned long old_sec_size = sec->_cooked_size; - /* Note that we've changed the reldection contents, etc. */ + /* Note that we've changed the relocation contents, etc. */ elf_section_data (sec)->relocs = internal_relocs; free_relocs = NULL; @@ -985,7 +985,7 @@ m68hc11_elf_relax_section (bfd *abfd, as continue; } - /* Note that we've changed the reldection contents, etc. */ + /* Note that we've changed the relocation contents, etc. */ elf_section_data (sec)->relocs = internal_relocs; free_relocs = NULL; @@ -1030,7 +1030,7 @@ m68hc11_elf_relax_section (bfd *abfd, as if ((offset & 0xff80) == 0 || (offset & 0xff80) == 0xff80) { - /* Note that we've changed the reldection contents, etc. */ + /* Note that we've changed the relocation contents, etc. */ elf_section_data (sec)->relocs = internal_relocs; free_relocs = NULL; diff -uprN binutils-2.14.90.0.7/bfd/elf32-m68k.c binutils-2.14.90.0.8/bfd/elf32-m68k.c --- binutils-2.14.90.0.7/bfd/elf32-m68k.c 2003-08-21 08:28:47.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-m68k.c 2004-01-14 13:07:43.000000000 -0800 @@ -817,26 +817,27 @@ elf_m68k_gc_sweep_hook (abfd, info, sec, struct elf_link_hash_entry **sym_hashes; bfd_signed_vma *local_got_refcounts; const Elf_Internal_Rela *rel, *relend; - unsigned long r_symndx; - struct elf_link_hash_entry *h; bfd *dynobj; asection *sgot; asection *srelgot; - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - sym_hashes = elf_sym_hashes (abfd); - local_got_refcounts = elf_local_got_refcounts (abfd); - dynobj = elf_hash_table (info)->dynobj; if (dynobj == NULL) return TRUE; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + local_got_refcounts = elf_local_got_refcounts (abfd); + sgot = bfd_get_section_by_name (dynobj, ".got"); srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); relend = relocs + sec->reloc_count; for (rel = relocs; rel < relend; rel++) { + unsigned long r_symndx; + struct elf_link_hash_entry *h; + switch (ELF32_R_TYPE (rel->r_info)) { case R_68K_GOT8: @@ -1127,7 +1128,7 @@ elf_m68k_size_dynamic_sections (output_b if (elf_hash_table (info)->dynamic_sections_created) { /* Set the contents of the .interp section to the interpreter. */ - if (!info->shared) + if (info->executable) { s = bfd_get_section_by_name (dynobj, ".interp"); BFD_ASSERT (s != NULL); @@ -1403,7 +1404,7 @@ elf_m68k_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -1657,16 +1658,7 @@ elf_m68k_relocate_section (output_bfd, i { long indx; - if (h == NULL) - sec = local_sections[r_symndx]; - else - { - BFD_ASSERT (h->root.type == bfd_link_hash_defined - || (h->root.type - == bfd_link_hash_defweak)); - sec = h->root.u.def.section; - } - if (sec != NULL && bfd_is_abs_section (sec)) + if (bfd_is_abs_section (sec)) indx = 0; else if (sec == NULL || sec->owner == NULL) { diff -uprN binutils-2.14.90.0.7/bfd/elf32-mcore.c binutils-2.14.90.0.8/bfd/elf32-mcore.c --- binutils-2.14.90.0.7/bfd/elf32-mcore.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-mcore.c 2004-01-14 13:07:43.000000000 -0800 @@ -84,7 +84,7 @@ static reloc_howto_type mcore_elf_howto_ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ - "ADDR32", /* name *//* For compatability with coff/pe port. */ + "ADDR32", /* name *//* For compatibility with coff/pe port. */ FALSE, /* partial_inplace */ 0x0, /* src_mask */ 0xffffffff, /* dst_mask */ @@ -467,7 +467,7 @@ mcore_elf_relocate_section (output_bfd, { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); addend = rel->r_addend; } else diff -uprN binutils-2.14.90.0.7/bfd/elf32-mips.c binutils-2.14.90.0.8/bfd/elf32-mips.c --- binutils-2.14.90.0.7/bfd/elf32-mips.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-mips.c 2004-01-14 13:07:43.000000000 -0800 @@ -47,49 +47,40 @@ Foundation, Inc., 59 Temple Place - Suit #define ECOFF_SIGNED_32 #include "ecoffswap.h" -static bfd_reloc_status_type mips_elf_generic_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static bfd_reloc_status_type mips_elf_hi16_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static bfd_reloc_status_type mips_elf_lo16_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static bfd_reloc_status_type mips_elf_got16_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); static bfd_reloc_status_type gprel32_with_gp - PARAMS ((bfd *, asymbol *, arelent *, asection *, bfd_boolean, PTR, - bfd_vma)); + (bfd *, asymbol *, arelent *, asection *, bfd_boolean, void *, bfd_vma); static bfd_reloc_status_type mips_elf_gprel32_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips32_64bit_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup - PARAMS ((bfd *, bfd_reloc_code_real_type)); + (bfd *, bfd_reloc_code_real_type); static reloc_howto_type *mips_elf32_rtype_to_howto - PARAMS ((unsigned int, bfd_boolean)); + (unsigned int, bfd_boolean); static void mips_info_to_howto_rel - PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); + (bfd *, arelent *, Elf_Internal_Rela *); static void mips_info_to_howto_rela - PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); + (bfd *, arelent *, Elf_Internal_Rela *); static bfd_boolean mips_elf_sym_is_global - PARAMS ((bfd *, asymbol *)); + (bfd *, asymbol *); static bfd_boolean mips_elf32_object_p - PARAMS ((bfd *)); + (bfd *); static bfd_boolean mips_elf_is_local_label_name - PARAMS ((bfd *, const char *)); + (bfd *, const char *); static bfd_reloc_status_type mips16_jump_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips16_gprel_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips_elf_final_gp - PARAMS ((bfd *, asymbol *, bfd_boolean, char **, bfd_vma *)); + (bfd *, asymbol *, bfd_boolean, char **, bfd_vma *); static bfd_boolean mips_elf_assign_gp - PARAMS ((bfd *, bfd_vma *)); + (bfd *, bfd_vma *); static bfd_boolean elf32_mips_grok_prstatus - PARAMS ((bfd *, Elf_Internal_Note *)); + (bfd *, Elf_Internal_Note *); static bfd_boolean elf32_mips_grok_psinfo - PARAMS ((bfd *, Elf_Internal_Note *)); + (bfd *, Elf_Internal_Note *); static irix_compat_t elf32_mips_irix_compat - PARAMS ((bfd *)); + (bfd *); extern const bfd_target bfd_elf32_bigmips_vec; extern const bfd_target bfd_elf32_littlemips_vec; @@ -121,7 +112,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_NONE", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -136,7 +127,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -151,7 +142,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_32", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -166,7 +157,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_REL32", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -184,7 +175,7 @@ static reloc_howto_type elf_mips_howto_t /* This needs complex overflow detection, because the upper four bits must match the PC + 4. */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_26", /* name */ TRUE, /* partial_inplace */ 0x03ffffff, /* src_mask */ @@ -193,13 +184,13 @@ static reloc_howto_type elf_mips_howto_t /* High 16 bits of symbol value. */ HOWTO (R_MIPS_HI16, /* type */ - 0, /* rightshift */ + 16, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_hi16_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_HI16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -214,7 +205,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_lo16_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_LO16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -259,7 +250,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_got16_reloc, /* special_function */ + _bfd_mips_elf_got16_reloc, /* special_function */ "R_MIPS_GOT16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -274,7 +265,7 @@ static reloc_howto_type elf_mips_howto_t TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_PC16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -289,7 +280,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -325,7 +316,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 6, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SHIFT5", /* name */ TRUE, /* partial_inplace */ 0x000007c0, /* src_mask */ @@ -342,7 +333,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 6, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SHIFT6", /* name */ TRUE, /* partial_inplace */ 0x000007c4, /* src_mask */ @@ -372,7 +363,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_DISP", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -387,7 +378,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_PAGE", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -402,7 +393,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_OFST", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -417,7 +408,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_HI16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -432,7 +423,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_LO16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -447,7 +438,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SUB", /* name */ TRUE, /* partial_inplace */ MINUS_ONE, /* src_mask */ @@ -467,7 +458,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_HIGHER", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -482,7 +473,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_HIGHEST", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -497,7 +488,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_HI16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -512,7 +503,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_LO16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -527,7 +518,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SCN_DISP", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -548,7 +539,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_JALR", /* name */ FALSE, /* partial_inplace */ 0x00000000, /* src_mask */ @@ -612,13 +603,13 @@ static reloc_howto_type elf_mips16_gprel /* High 16 bits of symbol value, pc-relative. */ static reloc_howto_type elf_mips_gnu_rel_hi16 = HOWTO (R_MIPS_GNU_REL_HI16, /* type */ - 0, /* rightshift */ + 16, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_hi16_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_GNU_REL_HI16", /* name */ TRUE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -634,7 +625,7 @@ static reloc_howto_type elf_mips_gnu_rel TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_lo16_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_GNU_REL_LO16", /* name */ TRUE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -650,7 +641,7 @@ static reloc_howto_type elf_mips_gnu_rel TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GNU_REL16_S2", /* name */ TRUE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -666,7 +657,7 @@ static reloc_howto_type elf_mips_gnu_pcr TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_PC64", /* name */ TRUE, /* partial_inplace */ MINUS_ONE, /* src_mask */ @@ -682,7 +673,7 @@ static reloc_howto_type elf_mips_gnu_pcr TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_PC32", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -721,291 +712,11 @@ static reloc_howto_type elf_mips_gnu_vte 0, /* dst_mask */ FALSE); /* pcrel_offset */ -/* We use this instead of bfd_elf_generic_reloc because the latter - gets the handling of zero addends wrong. */ -static bfd_reloc_status_type -mips_elf_generic_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol; - PTR data ATTRIBUTE_UNUSED; - asection *input_section; - bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; -{ - /* If we're relocating, and this is an external symbol, we don't want - to change anything. */ - if (output_bfd != (bfd *) NULL - && (symbol->flags & BSF_SECTION_SYM) == 0 - && (symbol->flags & BSF_LOCAL) != 0) - { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } - - /* Just go on, nothing to see here. */ - return bfd_reloc_continue; -} - -/* Do a R_MIPS_HI16 relocation. This has to be done in combination - with a R_MIPS_LO16 reloc, because there is a carry from the LO16 to - the HI16. Here we just save the information we need; we do the - actual relocation when we see the LO16. - - MIPS ELF requires that the LO16 immediately follow the HI16. As a - GNU extension, for non-pc-relative relocations, we permit an - arbitrary number of HI16 relocs to be associated with a single LO16 - reloc. This extension permits gcc to output the HI and LO relocs - itself. - - This cannot be done for PC-relative relocations because both the HI16 - and LO16 parts of the relocations must be done relative to the LO16 - part, and there can be carry to or borrow from the HI16 part. */ - -struct mips_hi16 -{ - struct mips_hi16 *next; - bfd_byte *addr; - bfd_vma addend; -}; - -/* FIXME: This should not be a static variable. */ - -static struct mips_hi16 *mips_hi16_list; - -static bfd_reloc_status_type -mips_elf_hi16_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; -{ - bfd_reloc_status_type ret; - bfd_vma relocation; - struct mips_hi16 *n; - - /* If we're relocating, and this is an external symbol, we don't want - to change anything. */ - if (output_bfd != (bfd *) NULL - && (symbol->flags & BSF_SECTION_SYM) == 0 - && (symbol->flags & BSF_LOCAL) != 0) - { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } - - ret = bfd_reloc_ok; - - if (strcmp (bfd_asymbol_name (symbol), "_gp_disp") == 0) - { - bfd_boolean relocatable; - bfd_vma gp; - - if (ret == bfd_reloc_undefined) - abort (); - - if (output_bfd != NULL) - relocatable = TRUE; - else - { - relocatable = FALSE; - output_bfd = symbol->section->output_section->owner; - } - - ret = mips_elf_final_gp (output_bfd, symbol, relocatable, - error_message, &gp); - if (ret != bfd_reloc_ok) - return ret; - - relocation = gp - reloc_entry->address; - } - else - { - if (bfd_is_und_section (symbol->section) - && output_bfd == (bfd *) NULL) - ret = bfd_reloc_undefined; - - if (bfd_is_com_section (symbol->section)) - relocation = 0; - else - relocation = symbol->value; - } - - relocation += symbol->section->output_section->vma; - relocation += symbol->section->output_offset; - relocation += reloc_entry->addend; - - if (reloc_entry->address > input_section->_cooked_size) - return bfd_reloc_outofrange; - - /* Save the information, and let LO16 do the actual relocation. */ - n = (struct mips_hi16 *) bfd_malloc ((bfd_size_type) sizeof *n); - if (n == NULL) - return bfd_reloc_outofrange; - n->addr = (bfd_byte *) data + reloc_entry->address; - n->addend = relocation; - n->next = mips_hi16_list; - mips_hi16_list = n; - - if (output_bfd != (bfd *) NULL) - reloc_entry->address += input_section->output_offset; - - return ret; -} - -/* Do a R_MIPS_LO16 relocation. This is a straightforward 16 bit - inplace relocation; this function exists in order to do the - R_MIPS_HI16 relocation described above. */ - -static bfd_reloc_status_type -mips_elf_lo16_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; -{ - arelent gp_disp_relent; - - if (mips_hi16_list != NULL) - { - struct mips_hi16 *l; - - l = mips_hi16_list; - while (l != NULL) - { - unsigned long insn; - unsigned long val; - unsigned long vallo; - struct mips_hi16 *next; - - if (strcmp (bfd_asymbol_name (symbol), "_gp_disp") == 0) - { - gp_disp_relent = *reloc_entry; - reloc_entry = &gp_disp_relent; - reloc_entry->addend = l->addend; - } - else - { - /* Do the HI16 relocation. Note that we actually don't need - to know anything about the LO16 itself, except where to - find the low 16 bits of the addend needed by the LO16. */ - insn = bfd_get_32 (abfd, l->addr); - vallo = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address); - /* The low order 16 bits are always treated as a signed - value. */ - vallo = ((vallo & 0xffff) ^ 0x8000) - 0x8000; - val = ((insn & 0xffff) << 16) + vallo; - val += l->addend; - - /* If PC-relative, we need to subtract out the address of the LO - half of the HI/LO. (The actual relocation is relative - to that instruction.) */ - if (reloc_entry->howto->pc_relative) - val -= reloc_entry->address; - - /* At this point, "val" has the value of the combined HI/LO - pair. If the low order 16 bits (which will be used for - the LO16 insn) are negative, then we will need an - adjustment for the high order 16 bits. */ - val += 0x8000; - val = (val >> 16) & 0xffff; - - insn &= ~ (bfd_vma) 0xffff; - insn |= val; - bfd_put_32 (abfd, (bfd_vma) insn, l->addr); - } - - next = l->next; - free (l); - l = next; - } - - mips_hi16_list = NULL; - } - else if (strcmp (bfd_asymbol_name (symbol), "_gp_disp") == 0) - { - bfd_reloc_status_type ret; - bfd_vma gp, relocation; - - /* FIXME: Does this case ever occur? */ - - ret = mips_elf_final_gp (output_bfd, symbol, TRUE, error_message, &gp); - if (ret != bfd_reloc_ok) - return ret; - - relocation = gp - reloc_entry->address; - relocation += symbol->section->output_section->vma; - relocation += symbol->section->output_offset; - relocation += reloc_entry->addend; - - if (reloc_entry->address > input_section->_cooked_size) - return bfd_reloc_outofrange; - - gp_disp_relent = *reloc_entry; - reloc_entry = &gp_disp_relent; - reloc_entry->addend = relocation - 4; - } - - /* Now do the LO16 reloc in the usual way. */ - return mips_elf_generic_reloc (abfd, reloc_entry, symbol, data, - input_section, output_bfd, error_message); -} - -/* Do a R_MIPS_GOT16 reloc. This is a reloc against the global offset - table used for PIC code. If the symbol is an external symbol, the - instruction is modified to contain the offset of the appropriate - entry in the global offset table. If the symbol is a section - symbol, the next reloc is a R_MIPS_LO16 reloc. The two 16 bit - addends are combined to form the real addend against the section - symbol; the GOT16 is modified to contain the offset of an entry in - the global offset table, and the LO16 is modified to offset it - appropriately. Thus an offset larger than 16 bits requires a - modified value in the global offset table. - - This implementation suffices for the assembler, but the linker does - not yet know how to create global offset tables. */ - -static bfd_reloc_status_type -mips_elf_got16_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; -{ - /* If we're relocating, and this is an external symbol, we don't want - to change anything. */ - if (output_bfd != (bfd *) NULL - && (symbol->flags & BSF_SECTION_SYM) == 0 - && (symbol->flags & BSF_LOCAL) != 0) - { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } - - return mips_elf_hi16_reloc (abfd, reloc_entry, symbol, data, - input_section, output_bfd, error_message); -} - /* Set the GP value for OUTPUT_BFD. Returns FALSE if this is a dangerous relocation. */ static bfd_boolean -mips_elf_assign_gp (output_bfd, pgp) - bfd *output_bfd; - bfd_vma *pgp; +mips_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp) { unsigned int count; asymbol **sym; @@ -1021,7 +732,7 @@ mips_elf_assign_gp (output_bfd, pgp) /* The linker script will have created a symbol named `_gp' with the appropriate value. */ - if (sym == (asymbol **) NULL) + if (sym == NULL) i = count; else { @@ -1057,12 +768,8 @@ mips_elf_assign_gp (output_bfd, pgp) external symbol if we are producing relocatable output. */ static bfd_reloc_status_type -mips_elf_final_gp (output_bfd, symbol, relocatable, error_message, pgp) - bfd *output_bfd; - asymbol *symbol; - bfd_boolean relocatable; - char **error_message; - bfd_vma *pgp; +mips_elf_final_gp (bfd *output_bfd, asymbol *symbol, bfd_boolean relocatable, + char **error_message, bfd_vma *pgp) { if (bfd_is_und_section (symbol->section) && ! relocatable) @@ -1100,31 +807,16 @@ mips_elf_final_gp (output_bfd, symbol, r merged. */ bfd_reloc_status_type -_bfd_mips_elf32_gprel16_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; +_bfd_mips_elf32_gprel16_reloc (bfd *abfd, arelent *reloc_entry, + asymbol *symbol, void *data, + asection *input_section, bfd *output_bfd, + char **error_message) { bfd_boolean relocatable; bfd_reloc_status_type ret; bfd_vma gp; - /* If we're relocating, and this is an external symbol, we don't want - to change anything. */ - if (output_bfd != (bfd *) NULL - && (symbol->flags & BSF_SECTION_SYM) == 0 - && (symbol->flags & BSF_LOCAL) != 0) - { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } - - if (output_bfd != (bfd *) NULL) + if (output_bfd != NULL) relocatable = TRUE; else { @@ -1146,32 +838,15 @@ _bfd_mips_elf32_gprel16_reloc (abfd, rel become the offset from the gp register. */ static bfd_reloc_status_type -mips_elf_gprel32_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; +mips_elf_gprel32_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, bfd *output_bfd, + char **error_message) { bfd_boolean relocatable; bfd_reloc_status_type ret; bfd_vma gp; - /* If we're relocating, and this is an external symbol, we don't want - to change anything. */ - if (output_bfd != (bfd *) NULL - && (symbol->flags & BSF_SECTION_SYM) == 0 - && (symbol->flags & BSF_LOCAL) != 0) - { - *error_message = (char *) - _("32bits gp relative relocation occurs for an external symbol"); - return bfd_reloc_outofrange; - } - - if (output_bfd != (bfd *) NULL) + if (output_bfd != NULL) relocatable = TRUE; else { @@ -1189,15 +864,9 @@ mips_elf_gprel32_reloc (abfd, reloc_entr } static bfd_reloc_status_type -gprel32_with_gp (abfd, symbol, reloc_entry, input_section, relocatable, data, - gp) - bfd *abfd; - asymbol *symbol; - arelent *reloc_entry; - asection *input_section; - bfd_boolean relocatable; - PTR data; - bfd_vma gp; +gprel32_with_gp (bfd *abfd, asymbol *symbol, arelent *reloc_entry, + asection *input_section, bfd_boolean relocatable, + void *data, bfd_vma gp) { bfd_vma relocation; bfd_vma val; @@ -1242,26 +911,16 @@ gprel32_with_gp (abfd, symbol, reloc_ent sign extension. */ static bfd_reloc_status_type -mips32_64bit_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; +mips32_64bit_reloc (bfd *abfd, arelent *reloc_entry, + asymbol *symbol ATTRIBUTE_UNUSED, + void *data, asection *input_section, + bfd *output_bfd, char **error_message) { bfd_reloc_status_type r; arelent reloc32; unsigned long val; bfd_size_type addr; - r = mips_elf_generic_reloc (abfd, reloc_entry, symbol, data, - input_section, output_bfd, error_message); - if (r != bfd_reloc_continue) - return r; - /* Do a normal 32 bit relocation on the lower 32 bits. */ reloc32 = *reloc_entry; if (bfd_big_endian (abfd)) @@ -1279,7 +938,7 @@ mips32_64bit_reloc (abfd, reloc_entry, s addr = reloc_entry->address; if (bfd_little_endian (abfd)) addr += 4; - bfd_put_32 (abfd, (bfd_vma) val, (bfd_byte *) data + addr); + bfd_put_32 (abfd, val, (bfd_byte *) data + addr); return r; } @@ -1287,17 +946,12 @@ mips32_64bit_reloc (abfd, reloc_entry, s /* Handle a mips16 jump. */ static bfd_reloc_status_type -mips16_jump_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol; - PTR data ATTRIBUTE_UNUSED; - asection *input_section; - bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; +mips16_jump_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry, + asymbol *symbol, void *data ATTRIBUTE_UNUSED, + asection *input_section, bfd *output_bfd, + char **error_message ATTRIBUTE_UNUSED) { - if (output_bfd != (bfd *) NULL + if (output_bfd != NULL && (symbol->flags & BSF_SECTION_SYM) == 0 && reloc_entry->addend == 0) { @@ -1322,15 +976,9 @@ mips16_jump_reloc (abfd, reloc_entry, sy /* Handle a mips16 GP relative reloc. */ static bfd_reloc_status_type -mips16_gprel_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; +mips16_gprel_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, bfd *output_bfd, + char **error_message) { bfd_boolean relocatable; bfd_reloc_status_type ret; @@ -1397,13 +1045,10 @@ mips16_gprel_reloc (abfd, reloc_entry, s if (reloc_entry->howto->partial_inplace) { bfd_put_16 (abfd, - (bfd_vma) ((extend & 0xf800) - | ((val >> 11) & 0x1f) - | (val & 0x7e0)), + (extend & 0xf800) | ((val >> 11) & 0x1f) | (val & 0x7e0), (bfd_byte *) data + reloc_entry->address); bfd_put_16 (abfd, - (bfd_vma) ((insn & 0xffe0) - | (val & 0x1f)), + (insn & 0xffe0) | (val & 0x1f), (bfd_byte *) data + reloc_entry->address + 2); } else @@ -1453,9 +1098,7 @@ static const struct elf_reloc_map mips_r /* Given a BFD reloc type, return a howto structure. */ static reloc_howto_type * -bfd_elf32_bfd_reloc_type_lookup (abfd, code) - bfd *abfd; - bfd_reloc_code_real_type code; +bfd_elf32_bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code) { unsigned int i; reloc_howto_type *howto_table = elf_mips_howto_table_rel; @@ -1507,9 +1150,8 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, c /* Given a MIPS Elf_Internal_Rel, fill in an arelent structure. */ static reloc_howto_type * -mips_elf32_rtype_to_howto (r_type, rela_p) - unsigned int r_type; - bfd_boolean rela_p ATTRIBUTE_UNUSED; +mips_elf32_rtype_to_howto (unsigned int r_type, + bfd_boolean rela_p ATTRIBUTE_UNUSED) { switch (r_type) { @@ -1540,10 +1182,7 @@ mips_elf32_rtype_to_howto (r_type, rela_ /* Given a MIPS Elf_Internal_Rel, fill in an arelent structure. */ static void -mips_info_to_howto_rel (abfd, cache_ptr, dst) - bfd *abfd; - arelent *cache_ptr; - Elf_Internal_Rela *dst; +mips_info_to_howto_rel (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst) { unsigned int r_type; @@ -1563,10 +1202,7 @@ mips_info_to_howto_rel (abfd, cache_ptr, /* Given a MIPS Elf_Internal_Rela, fill in an arelent structure. */ static void -mips_info_to_howto_rela (abfd, cache_ptr, dst) - bfd *abfd; - arelent *cache_ptr; - Elf_Internal_Rela *dst; +mips_info_to_howto_rela (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst) { mips_info_to_howto_rel (abfd, cache_ptr, dst); @@ -1581,9 +1217,7 @@ mips_info_to_howto_rela (abfd, cache_ptr and externally visible symbols. */ static bfd_boolean -mips_elf_sym_is_global (abfd, sym) - bfd *abfd ATTRIBUTE_UNUSED; - asymbol *sym; +mips_elf_sym_is_global (bfd *abfd ATTRIBUTE_UNUSED, asymbol *sym) { if (SGI_COMPAT (abfd)) return (sym->flags & BSF_SECTION_SYM) == 0; @@ -1596,8 +1230,7 @@ mips_elf_sym_is_global (abfd, sym) /* Set the right machine number for a MIPS ELF file. */ static bfd_boolean -mips_elf32_object_p (abfd) - bfd *abfd; +mips_elf32_object_p (bfd *abfd) { unsigned long mach; @@ -1619,9 +1252,7 @@ mips_elf32_object_p (abfd) /* MIPS ELF local labels start with '$', not 'L'. */ static bfd_boolean -mips_elf_is_local_label_name (abfd, name) - bfd *abfd; - const char *name; +mips_elf_is_local_label_name (bfd *abfd, const char *name) { if (name[0] == '$') return TRUE; @@ -1633,9 +1264,7 @@ mips_elf_is_local_label_name (abfd, name /* Support for core dump NOTE sections. */ static bfd_boolean -elf32_mips_grok_prstatus (abfd, note) - bfd *abfd; - Elf_Internal_Note *note; +elf32_mips_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) { int offset; unsigned int raw_size; @@ -1665,9 +1294,7 @@ elf32_mips_grok_prstatus (abfd, note) } static bfd_boolean -elf32_mips_grok_psinfo (abfd, note) - bfd *abfd; - Elf_Internal_Note *note; +elf32_mips_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) { switch (note->descsz) { @@ -1699,8 +1326,7 @@ elf32_mips_grok_psinfo (abfd, note) /* Depending on the target vector we generate some version of Irix executables or "normal" MIPS ELF ABI executables. */ static irix_compat_t -elf32_mips_irix_compat (abfd) - bfd *abfd; +elf32_mips_irix_compat (bfd *abfd) { if ((abfd->xvec == &bfd_elf32_bigmips_vec) || (abfd->xvec == &bfd_elf32_littlemips_vec)) @@ -1717,12 +1343,9 @@ elf32_mips_irix_compat (abfd) objects, and before the final_link entry point is called. */ bfd_boolean -bfd_mips_elf32_create_embedded_relocs (abfd, info, datasec, relsec, errmsg) - bfd *abfd; - struct bfd_link_info *info; - asection *datasec; - asection *relsec; - char **errmsg; +bfd_mips_elf32_create_embedded_relocs (bfd *abfd, struct bfd_link_info *info, + asection *datasec, asection *relsec, + char **errmsg) { Elf_Internal_Shdr *symtab_hdr; Elf_Internal_Sym *isymbuf = NULL; @@ -1752,13 +1375,12 @@ bfd_mips_elf32_create_embedded_relocs (a } /* Get a copy of the native relocations. */ - internal_relocs = (_bfd_elf_link_read_relocs - (abfd, datasec, (PTR) NULL, (Elf_Internal_Rela *) NULL, - info->keep_memory)); + internal_relocs = _bfd_elf_link_read_relocs (abfd, datasec, NULL, NULL, + info->keep_memory); if (internal_relocs == NULL) goto error_return; - relsec->contents = (bfd_byte *) bfd_alloc (abfd, datasec->reloc_count * 12); + relsec->contents = bfd_alloc (abfd, datasec->reloc_count * 12); if (relsec->contents == NULL) goto error_return; @@ -1891,10 +1513,6 @@ static const struct ecoff_debug_swap mip #define ELF_ARCH bfd_arch_mips #define ELF_MACHINE_CODE EM_MIPS -/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses - a value of 0x1000, and we are compatible. */ -#define ELF_MAXPAGESIZE 0x1000 - #define elf_backend_collect TRUE #define elf_backend_type_change_ok TRUE #define elf_backend_can_gc_sections TRUE @@ -1940,7 +1558,6 @@ static const struct ecoff_debug_swap mip #define elf_backend_ecoff_debug_swap &mips_elf32_ecoff_debug_swap #define elf_backend_got_header_size (4 * MIPS_RESERVED_GOTNO) -#define elf_backend_plt_header_size 0 #define elf_backend_may_use_rel_p 1 #define elf_backend_may_use_rela_p 0 #define elf_backend_default_use_rela_p 0 @@ -1973,20 +1590,29 @@ static const struct ecoff_debug_swap mip #define TARGET_BIG_SYM bfd_elf32_bigmips_vec #define TARGET_BIG_NAME "elf32-bigmips" +/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses + a value of 0x1000, and we are compatible. */ +#define ELF_MAXPAGESIZE 0x1000 + #include "elf32-target.h" /* Support for traditional mips targets. */ -#define INCLUDED_TARGET_FILE /* More a type of flag. */ - #undef TARGET_LITTLE_SYM #undef TARGET_LITTLE_NAME #undef TARGET_BIG_SYM #undef TARGET_BIG_NAME +#undef ELF_MAXPAGESIZE + #define TARGET_LITTLE_SYM bfd_elf32_tradlittlemips_vec #define TARGET_LITTLE_NAME "elf32-tradlittlemips" #define TARGET_BIG_SYM bfd_elf32_tradbigmips_vec #define TARGET_BIG_NAME "elf32-tradbigmips" +/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses + page sizes of up to that limit, so we need to respect it. */ +#define ELF_MAXPAGESIZE 0x10000 +#define elf32_bed elf32_tradbed + /* Include the target file again for this target. */ #include "elf32-target.h" diff -uprN binutils-2.14.90.0.7/bfd/elf32-msp430.c binutils-2.14.90.0.8/bfd/elf32-msp430.c --- binutils-2.14.90.0.7/bfd/elf32-msp430.c 2003-08-21 08:28:47.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-msp430.c 2004-01-14 13:07:43.000000000 -0800 @@ -449,7 +449,7 @@ elf32_msp430_relocate_section (output_bf { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); diff -uprN binutils-2.14.90.0.7/bfd/elf32-openrisc.c binutils-2.14.90.0.8/bfd/elf32-openrisc.c --- binutils-2.14.90.0.7/bfd/elf32-openrisc.c 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-openrisc.c 2004-01-14 13:07:43.000000000 -0800 @@ -375,7 +375,7 @@ openrisc_elf_relocate_section (output_bf { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); diff -uprN binutils-2.14.90.0.7/bfd/elf32-ppc.c binutils-2.14.90.0.8/bfd/elf32-ppc.c --- binutils-2.14.90.0.7/bfd/elf32-ppc.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-ppc.c 2004-01-14 13:07:43.000000000 -0800 @@ -205,9 +205,6 @@ struct ppc_elf_link_hash_table elf_linker_section_t *sdata2; asection *sbss; - /* Short-cut to first output tls section. */ - asection *tls_sec; - /* Shortcut to .__tls_get_addr. */ struct elf_link_hash_entry *tls_get_addr; @@ -339,7 +336,8 @@ ppc_elf_copy_indirect_symbol (const stru dir->elf_link_hash_flags |= (ind->elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR - | ELF_LINK_HASH_REF_REGULAR_NONWEAK)); + | ELF_LINK_HASH_REF_REGULAR_NONWEAK + | ELF_LINK_HASH_NEEDS_PLT)); else _bfd_elf_link_hash_copy_indirect (bed, dir, ind); } @@ -1534,19 +1532,33 @@ static reloc_howto_type ppc_elf_howto_ra 0xffff, /* dst_mask */ FALSE), /* pcrel_offset */ - /* Phony reloc to handle branch stubs. */ - HOWTO (R_PPC_RELAX32, /* type */ - 0, /* rightshift */ - 0, /* size */ + /* Phony relocs to handle branch stubs. */ + HOWTO (R_PPC_RELAX32, /* type */ + 0, /* rightshift */ + 0, /* size */ + 0, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_PPC_RELAX32", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_PPC_RELAX32PC, /* type */ + 0, /* rightshift */ + 0, /* size */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ - "R_PPC_RELAX32", /* name */ + "R_PPC_RELAX32PC", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ - 0, /* dst_mask */ + 0, /* dst_mask */ FALSE), /* pcrel_offset */ /* GNU extension to record C++ vtable hierarchy. */ @@ -1614,90 +1626,26 @@ ppc_elf_howto_init (void) } } -static bfd_reloc_status_type -ppc_elf_install_value (bfd *abfd, - bfd_byte *hit_addr, - bfd_vma v, - unsigned int r_type) -{ - bfd_vma t0, t1; -#ifdef BFD_HOST_U_64_BIT - BFD_HOST_U_64_BIT val = (BFD_HOST_U_64_BIT) v; -#else - bfd_vma val = v; -#endif - - switch (r_type) - { - case R_PPC_RELAX32: - /* Do stuff here. */ - t0 = bfd_get_32 (abfd, hit_addr); - t1 = bfd_get_32 (abfd, hit_addr + 4); - - /* We're clearing the bits for R_PPC_ADDR16_HA - and R_PPC_ADDR16_LO here. */ - t0 &= ~0xffff; - t1 &= ~0xffff; - - /* t0 is HA, t1 is lo */ - t0 |= ((val + 0x8000) >> 16) & 0xffff; - t1 |= val & 0xffff; - - bfd_put_32 (abfd, t0, hit_addr); - bfd_put_32 (abfd, t1, hit_addr + 4); - break; - - case R_PPC_REL24: - t0 = bfd_get_32 (abfd, hit_addr); - t0 &= ~0x3fffffc; - t0 |= val & 0x3fffffc; - bfd_put_32 (abfd, t0, hit_addr); - break; - - case R_PPC_REL14: - case R_PPC_REL14_BRTAKEN: - case R_PPC_REL14_BRNTAKEN: - t0 = bfd_get_32 (abfd, hit_addr); - t0 &= ~0xfffc; - t0 |= val & 0xfffc; - bfd_put_32 (abfd, t0, hit_addr); - break; - - case R_PPC_LOCAL24PC: - case R_PPC_PLTREL24: - t0 = bfd_get_32 (abfd, hit_addr); - t0 &= ~0x3fffffc; - t0 |= val & 0x3fffffc; - bfd_put_32 (abfd, t0, hit_addr); - break; - - default: - return bfd_reloc_notsupported; - } +#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) - return bfd_reloc_ok; -} - -static const bfd_byte shared_stub_entry[] = +static const int shared_stub_entry[] = { - 0x48, 0x00, 0x00, 0x24, /* b .+36 */ - 0x7c, 0x08, 0x02, 0xa6, /* mflr 0 */ - 0x42, 0x9f, 0x00, 0x05, /* bcl 20, 31, .Lxxx */ - 0x7d, 0x68, 0x02, 0xa6, /* mflr 11 */ - 0x3d, 0x60, 0x00, 0x00, /* addis 11, 11, (xxx-.Lxxx)@ha */ - 0x39, 0x6b, 0x00, 0x18, /* addi 11, 11, (xxx-.Lxxx)@l */ - 0x7c, 0x08, 0x03, 0xa6, /* mtlr 0 */ - 0x7d, 0x69, 0x03, 0xa6, /* mtctr 11 */ - 0x4e, 0x80, 0x04, 0x20, /* bctr */ + 0x7c0802a6, /* mflr 0 */ + 0x429f0005, /* bcl 20, 31, .Lxxx */ + 0x7d6802a6, /* mflr 11 */ + 0x3d6b0000, /* addis 11, 11, (xxx-.Lxxx)@ha */ + 0x396b0018, /* addi 11, 11, (xxx-.Lxxx)@l */ + 0x7c0803a6, /* mtlr 0 */ + 0x7d6903a6, /* mtctr 11 */ + 0x4e800420, /* bctr */ }; -static const bfd_byte stub_entry[] = +static const int stub_entry[] = { - 0x48, 0x00, 0x00, 0x14, /* b .+20 */ - 0x3d, 0x60, 0x00, 0x00, /* lis 11,xxx@ha */ - 0x39, 0x6b, 0x00, 0x00, /* addi 11,11,xxx@l */ - 0x7d, 0x69, 0x03, 0xa6, /* mtctr 11 */ - 0x4e, 0x80, 0x04, 0x20, /* bctr */ + 0x3d600000, /* lis 11,xxx@ha */ + 0x396b0000, /* addi 11,11,xxx@l */ + 0x7d6903a6, /* mtctr 11 */ + 0x4e800420, /* bctr */ }; @@ -1721,23 +1669,24 @@ ppc_elf_relax_section (bfd *abfd, Elf_Internal_Rela *internal_relocs = NULL; Elf_Internal_Rela *irel, *irelend; struct one_fixup *fixups = NULL; - bfd_boolean changed_contents = FALSE; - bfd_boolean changed_relocs = FALSE; + bfd_boolean changed; struct ppc_elf_link_hash_table *ppc_info; + bfd_size_type trampoff; *again = FALSE; - /* Nothing to do if there are no relocations and no need for - the relax finalize pass. */ - if ((isec->flags & SEC_RELOC) == 0 - || isec->reloc_count == 0 - || link_info->relax_finalizing) + /* Nothing to do if there are no relocations. */ + if ((isec->flags & SEC_RELOC) == 0 || isec->reloc_count == 0) return TRUE; /* If needed, initialize this section's cooked size. */ if (isec->_cooked_size == 0) isec->_cooked_size = isec->_raw_size; + trampoff = (isec->_cooked_size + 3) & (bfd_vma) -4; + /* Space for a branch around any trampolines. */ + trampoff += 4; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; /* Get a copy of the native relocations. */ @@ -1767,21 +1716,26 @@ ppc_elf_relax_section (bfd *abfd, for (irel = internal_relocs; irel < irelend; irel++) { unsigned long r_type = ELF32_R_TYPE (irel->r_info); - bfd_vma symaddr, reladdr, trampoff, toff, roff; + bfd_vma symaddr, reladdr, toff, roff; asection *tsec; - bfd_size_type amt; struct one_fixup *f; size_t insn_offset = 0; - bfd_vma max_branch_offset; + bfd_vma max_branch_offset, val; + bfd_byte *hit_addr; + unsigned long t0; switch (r_type) { case R_PPC_REL24: case R_PPC_LOCAL24PC: + case R_PPC_PLTREL24: + max_branch_offset = 1 << 25; + break; + case R_PPC_REL14: case R_PPC_REL14_BRTAKEN: case R_PPC_REL14_BRNTAKEN: - case R_PPC_PLTREL24: + max_branch_offset = 1 << 15; break; default: @@ -1807,7 +1761,7 @@ ppc_elf_relax_section (bfd *abfd, } isym = isymbuf + ELF32_R_SYM (irel->r_info); if (isym->st_shndx == SHN_UNDEF) - continue; /* We can't do anthing with undefined symbols. */ + continue; /* We can't do anything with undefined symbols. */ else if (isym->st_shndx == SHN_ABS) tsec = bfd_abs_section_ptr; else if (isym->st_shndx == SHN_COMMON) @@ -1819,7 +1773,7 @@ ppc_elf_relax_section (bfd *abfd, } else { - /* Need dynamic symbol handling. */ + /* Global symbol handling. */ unsigned long indx; struct elf_link_hash_entry *h; @@ -1830,62 +1784,34 @@ ppc_elf_relax_section (bfd *abfd, || h->root.type == bfd_link_hash_warning) h = (struct elf_link_hash_entry *) h->root.u.i.link; - if (r_type == R_PPC_PLTREL24) + if (r_type == R_PPC_PLTREL24 + && ppc_info->plt != NULL + && h->plt.offset != (bfd_vma) -1) { - Elf_Internal_Sym *isym; - - if (h->plt.offset == (bfd_vma) -1 - || ppc_info->plt == NULL) - { - - /* Read this BFD's local symbols. */ - if (isymbuf == NULL) - { - isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents; - if (isymbuf == NULL) - isymbuf = bfd_elf_get_elf_syms (abfd, symtab_hdr, - symtab_hdr->sh_info, 0, - NULL, NULL, NULL); - if (isymbuf == 0) - goto error_return; - } - isym = isymbuf + ELF32_R_SYM (irel->r_info); - - if (isym->st_shndx == SHN_UNDEF) - /* We can't do anthing with undefined symbols. */ - continue; - else if (isym->st_shndx == SHN_ABS) - tsec = bfd_abs_section_ptr; - else if (isym->st_shndx == SHN_COMMON) - tsec = bfd_com_section_ptr; - else - tsec = h->root.u.def.section; - - toff = h->root.u.def.value; - } - else - { - tsec = ppc_info->plt; - toff = h->plt.offset; - } + tsec = ppc_info->plt; + toff = h->plt.offset; } - else if (h->root.type == bfd_link_hash_undefined - || h->root.type == bfd_link_hash_undefweak) - continue; - - else + else if (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) { tsec = h->root.u.def.section; toff = h->root.u.def.value; } + else + continue; } + /* If the branch and target are in the same section, you have + no hope of adding stubs. We'll error out later should the + branch overflow. */ + if (tsec == isec) + continue; + + toff += irel->r_addend; if (tsec->sec_info_type == ELF_INFO_TYPE_MERGE) toff = _bfd_merged_section_offset (abfd, &tsec, elf_section_data (tsec)->sec_info, - toff + irel->r_addend, 0); - else - toff += irel->r_addend; + toff, 0); symaddr = tsec->output_section->vma + tsec->output_offset + toff; @@ -1893,22 +1819,10 @@ ppc_elf_relax_section (bfd *abfd, reladdr = (isec->output_section->vma + isec->output_offset - + roff) & (bfd_vma) -4; + + roff); /* If the branch is in range, no need to do anything. */ - max_branch_offset = 1 << 25; - if (r_type != R_PPC_REL24 - && r_type != R_PPC_LOCAL24PC - && r_type != R_PPC_PLTREL24) - max_branch_offset = 1 << 15; - - if ((bfd_vma) (symaddr - reladdr) + max_branch_offset - <= 2 * max_branch_offset) - continue; - - /* If the branch and target are in the same section, you have - no hope. We'll error out later. */ - if (tsec == isec) + if (symaddr - reladdr + max_branch_offset < 2 * max_branch_offset) continue; /* Look for an existing fixup to this address. */ @@ -1919,40 +1833,31 @@ ppc_elf_relax_section (bfd *abfd, if (f == NULL) { size_t size; + unsigned long stub_rtype; + + val = trampoff - roff; + if (val >= max_branch_offset) + /* Oh dear, we can't reach a trampoline. Don't try to add + one. We'll report an error later. */ + continue; - if (link_info->shared - || tsec == ppc_info->plt - || r_type == R_PPC_LOCAL24PC) + if (link_info->shared) { - size = sizeof (shared_stub_entry); - insn_offset = 16; + size = 4 * ARRAY_SIZE (shared_stub_entry); + insn_offset = 12; + stub_rtype = R_PPC_RELAX32PC; } else { - size = sizeof (stub_entry); - insn_offset = 4; + size = 4 * ARRAY_SIZE (stub_entry); + insn_offset = 0; + stub_rtype = R_PPC_RELAX32; } - /* Resize the current section to make room for the new branch. */ - trampoff = (isec->_cooked_size + 3) & (bfd_vma) - 4; - amt = trampoff + size; - contents = bfd_realloc (contents, amt); - if (contents == NULL) - abort (); - - isec->_cooked_size = amt; - - if (link_info->shared - || tsec == ppc_info->plt - || r_type == R_PPC_LOCAL24PC) - memcpy (contents + trampoff, shared_stub_entry, size); - else - memcpy (contents + trampoff, stub_entry, size); - /* Hijack the old relocation. Since we need two relocations for this use a "composite" reloc. */ irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info), - R_PPC_RELAX32); + stub_rtype); irel->r_offset = trampoff + insn_offset; /* Record the fixup so we don't do it again this section. */ @@ -1962,31 +1867,95 @@ ppc_elf_relax_section (bfd *abfd, f->toff = toff; f->trampoff = trampoff; fixups = f; + + trampoff += size; } else { + val = f->trampoff - roff; + if (val >= max_branch_offset) + continue; + /* Nop out the reloc, since we're finalizing things here. */ irel->r_info = ELF32_R_INFO (0, R_PPC_NONE); } - /* Fix up the existing branch to hit the trampoline. Hope like - hell this doesn't overflow too. */ - if (ppc_elf_install_value (abfd, contents + roff, - f->trampoff - (roff & (bfd_vma) -3) + 4, - r_type) != bfd_reloc_ok) - abort (); + /* Fix up the existing branch to hit the trampoline. */ + hit_addr = contents + roff; + switch (r_type) + { + case R_PPC_REL24: + case R_PPC_LOCAL24PC: + case R_PPC_PLTREL24: + t0 = bfd_get_32 (abfd, hit_addr); + t0 &= ~0x3fffffc; + t0 |= val & 0x3fffffc; + bfd_put_32 (abfd, t0, hit_addr); + break; - changed_contents = TRUE; - changed_relocs = TRUE; + case R_PPC_REL14: + case R_PPC_REL14_BRTAKEN: + case R_PPC_REL14_BRNTAKEN: + t0 = bfd_get_32 (abfd, hit_addr); + t0 &= ~0xfffc; + t0 |= val & 0xfffc; + bfd_put_32 (abfd, t0, hit_addr); + break; + } } - /* Clean up. */ - while (fixups) + /* Write out the trampolines. */ + changed = fixups != NULL; + if (fixups != NULL) { - struct one_fixup *f = fixups; - fixups = fixups->next; - free (f); + const int *stub; + bfd_byte *dest; + bfd_vma val; + int i, size; + + do + { + struct one_fixup *f = fixups; + fixups = fixups->next; + free (f); + } + while (fixups); + + contents = bfd_realloc (contents, trampoff); + if (contents == NULL) + goto error_return; + + isec->_cooked_size = (isec->_cooked_size + 3) & (bfd_vma) -4; + /* Branch around the trampolines. */ + val = trampoff - isec->_cooked_size + 0x48000000; + dest = contents + isec->_cooked_size; + isec->_cooked_size = trampoff; + bfd_put_32 (abfd, val, dest); + dest += 4; + + if (link_info->shared) + { + stub = shared_stub_entry; + size = ARRAY_SIZE (shared_stub_entry); + } + else + { + stub = stub_entry; + size = ARRAY_SIZE (stub_entry); + } + + i = 0; + while (dest < contents + trampoff) + { + bfd_put_32 (abfd, stub[i], dest); + i++; + if (i == size) + i = 0; + dest += 4; + } + BFD_ASSERT (i == 0); } + if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf) { @@ -2002,7 +1971,7 @@ ppc_elf_relax_section (bfd *abfd, if (contents != NULL && elf_section_data (isec)->this_hdr.contents != contents) { - if (!changed_contents && !link_info->keep_memory) + if (!changed && !link_info->keep_memory) free (contents); else { @@ -2013,13 +1982,13 @@ ppc_elf_relax_section (bfd *abfd, if (elf_section_data (isec)->relocs != internal_relocs) { - if (!changed_relocs) + if (!changed) free (internal_relocs); else elf_section_data (isec)->relocs = internal_relocs; } - *again = changed_contents || changed_relocs; + *again = changed; return TRUE; error_return: @@ -2767,7 +2736,8 @@ ppc_elf_additional_program_headers (bfd /* Modify the segment map if needed. */ static bfd_boolean -ppc_elf_modify_segment_map (bfd *abfd ATTRIBUTE_UNUSED) +ppc_elf_modify_segment_map (bfd *abfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info ATTRIBUTE_UNUSED) { return TRUE; } @@ -4186,25 +4156,18 @@ ppc_elf_gc_sweep_hook (bfd *abfd, return TRUE; } -/* Set htab->tls_sec and htab->tls_get_addr. */ +/* Set htab->tls_get_addr and call the generic ELF tls_setup function. */ -bfd_boolean +asection * ppc_elf_tls_setup (bfd *obfd, struct bfd_link_info *info) { - asection *tls; struct ppc_elf_link_hash_table *htab; htab = ppc_elf_hash_table (info); htab->tls_get_addr = elf_link_hash_lookup (&htab->elf, "__tls_get_addr", FALSE, FALSE, TRUE); - for (tls = obfd->sections; tls != NULL; tls = tls->next) - if ((tls->flags & (SEC_THREAD_LOCAL | SEC_LOAD)) - == (SEC_THREAD_LOCAL | SEC_LOAD)) - break; - htab->tls_sec = tls; - - return tls != NULL; + return _bfd_elf_tls_setup (obfd, info); } /* Run through all the TLS relocs looking for optimization @@ -4727,7 +4690,7 @@ ppc_elf_relocate_section (bfd *output_bf sec = local_sections[r_symndx]; sym_name = bfd_elf_local_sym_name (input_bfd, sym); - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -4735,7 +4698,7 @@ ppc_elf_relocate_section (bfd *output_bf symtab_hdr, relocation, sec, unresolved_reloc, info, warned); - + sym_name = h->root.root.string; } @@ -4919,8 +4882,8 @@ ppc_elf_relocate_section (bfd *output_bf { /* Was an LD reloc. */ r_symndx = 0; - rel->r_addend = htab->tls_sec->vma + DTP_OFFSET; - rel[1].r_addend = htab->tls_sec->vma + DTP_OFFSET; + rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; + rel[1].r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; } r_type = R_PPC_TPREL16_HA; rel->r_info = ELF32_R_INFO (r_symndx, r_type); @@ -4955,7 +4918,7 @@ ppc_elf_relocate_section (bfd *output_bf branch_bit = BRANCH_PREDICT_BIT; /* Fall thru */ - /* Branch not taken predicition relocations. */ + /* Branch not taken prediction relocations. */ case R_PPC_ADDR14_BRNTAKEN: case R_PPC_REL14_BRNTAKEN: insn = bfd_get_32 (output_bfd, contents + rel->r_offset); @@ -5158,7 +5121,7 @@ ppc_elf_relocate_section (bfd *output_bf { outrel.r_addend += relocation; if (tls_ty & (TLS_GD | TLS_DTPREL | TLS_TPREL)) - outrel.r_addend -= htab->tls_sec->vma; + outrel.r_addend -= htab->elf.tls_sec->vma; } loc = htab->relgot->contents; loc += (htab->relgot->reloc_count++ @@ -5176,7 +5139,7 @@ ppc_elf_relocate_section (bfd *output_bf value = 1; else if (tls_ty != 0) { - value -= htab->tls_sec->vma + DTP_OFFSET; + value -= htab->elf.tls_sec->vma + DTP_OFFSET; if (tls_ty == (TLS_TLS | TLS_TPREL)) value += DTP_OFFSET - TP_OFFSET; @@ -5264,7 +5227,7 @@ ppc_elf_relocate_section (bfd *output_bf case R_PPC_DTPREL16_LO: case R_PPC_DTPREL16_HI: case R_PPC_DTPREL16_HA: - addend -= htab->tls_sec->vma + DTP_OFFSET; + addend -= htab->elf.tls_sec->vma + DTP_OFFSET; break; /* Relocations that may need to be propagated if this is a shared @@ -5273,18 +5236,18 @@ ppc_elf_relocate_section (bfd *output_bf case R_PPC_TPREL16_LO: case R_PPC_TPREL16_HI: case R_PPC_TPREL16_HA: - addend -= htab->tls_sec->vma + TP_OFFSET; + addend -= htab->elf.tls_sec->vma + TP_OFFSET; /* The TPREL16 relocs shouldn't really be used in shared libs as they will result in DT_TEXTREL being set, but support them anyway. */ goto dodyn; case R_PPC_TPREL32: - addend -= htab->tls_sec->vma + TP_OFFSET; + addend -= htab->elf.tls_sec->vma + TP_OFFSET; goto dodyn; case R_PPC_DTPREL32: - addend -= htab->tls_sec->vma + DTP_OFFSET; + addend -= htab->elf.tls_sec->vma + DTP_OFFSET; goto dodyn; case R_PPC_DTPMOD32: @@ -5454,45 +5417,33 @@ ppc_elf_relocate_section (bfd *output_bf } break; + case R_PPC_RELAX32PC: + relocation -= (input_section->output_section->vma + + input_section->output_offset + + rel->r_offset - 4); + /* Fall thru */ case R_PPC_RELAX32: { - unsigned long r_symndx; - Elf_Internal_Sym *sym; - asection *sym_sec; - bfd_byte *hit_addr = 0; - bfd_vma value = 0; - - r_symndx = ELF32_R_SYM (rel->r_info); + unsigned long t0; + unsigned long t1; - if (r_symndx < symtab_hdr->sh_info) - { - sym = local_syms + r_symndx; - sym_sec = local_sections[r_symndx]; + t0 = bfd_get_32 (output_bfd, contents + rel->r_offset); + t1 = bfd_get_32 (output_bfd, contents + rel->r_offset + 4); - value = _bfd_elf_rela_local_sym (output_bfd, sym, sym_sec, rel); - } - else - { - bfd_boolean warned; - bfd_boolean unresolved_reloc; + /* We're clearing the bits for R_PPC_ADDR16_HA + and R_PPC_ADDR16_LO here. */ + t0 &= ~0xffff; + t1 &= ~0xffff; + + /* t0 is HA, t1 is LO */ + relocation += addend; + t0 |= ((relocation + 0x8000) >> 16) & 0xffff; + t1 |= relocation & 0xffff; - RELOC_FOR_GLOBAL_SYMBOL (h, elf_sym_hashes (input_bfd), - r_symndx, symtab_hdr, - value, sym_sec, - unresolved_reloc, info, - warned); - if (warned) - continue; - } - hit_addr = contents + rel->r_offset; - value += rel->r_addend; - - r = ppc_elf_install_value (output_bfd, hit_addr, value, r_type); - if (r != bfd_reloc_ok) - break; - else - continue; + bfd_put_32 (output_bfd, t0, contents + rel->r_offset); + bfd_put_32 (output_bfd, t1, contents + rel->r_offset + 4); } + continue; /* Indirect .sdata relocation. */ case R_PPC_EMB_SDAI16: @@ -6228,7 +6179,6 @@ static struct bfd_elf_special_section co #define elf_backend_can_gc_sections 1 #define elf_backend_can_refcount 1 #define elf_backend_got_header_size 12 -#define elf_backend_plt_header_size PLT_INITIAL_ENTRY_SIZE #define elf_backend_rela_normal 1 #define bfd_elf32_mkobject ppc_elf_mkobject diff -uprN binutils-2.14.90.0.7/bfd/elf32-ppc.h binutils-2.14.90.0.8/bfd/elf32-ppc.h --- binutils-2.14.90.0.7/bfd/elf32-ppc.h 2003-07-23 08:08:08.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-ppc.h 2004-01-14 13:07:43.000000000 -0800 @@ -17,5 +17,5 @@ You should have received a copy of the G along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -bfd_boolean ppc_elf_tls_setup (bfd *, struct bfd_link_info *); +asection *ppc_elf_tls_setup (bfd *, struct bfd_link_info *); bfd_boolean ppc_elf_tls_optimize (bfd *, struct bfd_link_info *); diff -uprN binutils-2.14.90.0.7/bfd/elf32-s390.c binutils-2.14.90.0.8/bfd/elf32-s390.c --- binutils-2.14.90.0.7/bfd/elf32-s390.c 2003-08-21 08:28:47.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-s390.c 2004-01-14 13:07:43.000000000 -0800 @@ -484,7 +484,7 @@ elf_s390_is_local_label_name (abfd, name Word 1 is a pointer to a structure describing the object Word 2 is used to point to the loader entry address. - The code for position independand PLT entries looks like this: + The code for position independent PLT entries looks like this: r12 holds addr of the current GOT at entry to the PLT @@ -685,14 +685,6 @@ static bfd_boolean elf_s390_object_p (abfd) bfd *abfd; { - /* Allocate our special target data. */ - struct elf_s390_obj_tdata *new_tdata; - bfd_size_type amt = sizeof (struct elf_s390_obj_tdata); - new_tdata = bfd_zalloc (abfd, amt); - if (new_tdata == NULL) - return FALSE; - new_tdata->root = *abfd->tdata.elf_obj_data; - abfd->tdata.any = new_tdata; /* Set the right machine number for an s390 elf32 file. */ return bfd_default_set_arch_mach (abfd, bfd_arch_s390, bfd_mach_s390_31); } @@ -914,7 +906,8 @@ elf_s390_copy_indirect_symbol (bed, dir, dir->elf_link_hash_flags |= (ind->elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR - | ELF_LINK_HASH_REF_REGULAR_NONWEAK)); + | ELF_LINK_HASH_REF_REGULAR_NONWEAK + | ELF_LINK_HASH_NEEDS_PLT)); else _bfd_elf_link_hash_copy_indirect (bed, dir, ind); } @@ -2216,10 +2209,10 @@ static bfd_vma dtpoff_base (info) struct bfd_link_info *info; { - /* If tls_segment is NULL, we should have signalled an error already. */ - if (elf_hash_table (info)->tls_segment == NULL) + /* If tls_sec is NULL, we should have signalled an error already. */ + if (elf_hash_table (info)->tls_sec == NULL) return 0; - return elf_hash_table (info)->tls_segment->start; + return elf_hash_table (info)->tls_sec->vma; } /* Return the relocation value for @tpoff relocation @@ -2230,14 +2223,12 @@ tpoff (info, address) struct bfd_link_info *info; bfd_vma address; { - struct elf_link_tls_segment *tls_segment - = elf_hash_table (info)->tls_segment; + struct elf_link_hash_table *htab = elf_hash_table (info); - /* If tls_segment is NULL, we should have signalled an error already. */ - if (tls_segment == NULL) + /* If tls_sec is NULL, we should have signalled an error already. */ + if (htab->tls_sec == NULL) return 0; - return (align_power (tls_segment->size, tls_segment->align) - + tls_segment->start - address); + return htab->tls_size + htab->tls_sec->vma - address; } /* Complain if TLS instruction relocation is against an invalid @@ -2327,7 +2318,7 @@ elf_s390_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -2628,9 +2619,41 @@ elf_s390_relocate_section (output_bfd, i else { /* This symbol is local, or marked to become local. */ - relocate = TRUE; - outrel.r_info = ELF32_R_INFO (0, R_390_RELATIVE); outrel.r_addend = relocation + rel->r_addend; + if (r_type == R_390_32) + { + relocate = TRUE; + outrel.r_info = ELF32_R_INFO (0, R_390_RELATIVE); + } + else + { + long sindx; + + if (bfd_is_abs_section (sec)) + sindx = 0; + else if (sec == NULL || sec->owner == NULL) + { + bfd_set_error(bfd_error_bad_value); + return FALSE; + } + else + { + asection *osec; + + osec = sec->output_section; + sindx = elf_section_data (osec)->dynindx; + BFD_ASSERT (sindx > 0); + + /* We are turning this relocation into one + against a section symbol, so subtract out + the output section's address but not the + offset of the input section in the output + section. */ + + outrel.r_addend -= osec->vma; + } + outrel.r_info = ELF32_R_INFO (sindx, r_type); + } } sreloc = elf_section_data (input_section)->sreloc; @@ -3463,7 +3486,6 @@ elf_s390_grok_prstatus (abfd, note) #define elf_backend_plt_readonly 1 #define elf_backend_want_plt_sym 0 #define elf_backend_got_header_size 12 -#define elf_backend_plt_header_size PLT_ENTRY_SIZE #define elf_backend_rela_normal 1 #define elf_info_to_howto elf_s390_info_to_howto diff -uprN binutils-2.14.90.0.7/bfd/elf32-sh.c binutils-2.14.90.0.8/bfd/elf32-sh.c --- binutils-2.14.90.0.7/bfd/elf32-sh.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-sh.c 2004-01-14 13:07:43.000000000 -0800 @@ -457,7 +457,7 @@ static reloc_howto_type sh_elf_howto_tab TRUE), /* pcrel_offset */ /* The assembler will generate this reloc before a block of - instructions. A section should be processed as assumining it + instructions. A section should be processed as assuming it contains data, unless this reloc is seen. */ HOWTO (R_SH_CODE, /* type */ 0, /* rightshift */ @@ -2718,7 +2718,7 @@ sh_elf_relax_delete_bytes (bfd *abfd, as /* The addend will be against the section symbol, thus for adjusting the addend, the relevant start is the start of the section. - N.B. If we want to abandom in-place changes here and + N.B. If we want to abandon in-place changes here and test directly using symbol + addend, we have to take into account that the addend has already been adjusted by -4. */ if (stop > addr && stop < toaddr) @@ -3412,7 +3412,7 @@ movi_shori_putval (bfd *output_bfd, unsi #if 1 /* Note - this code has been "optimised" not to use r2. r2 is used by - GCC to return the address of large strutcures, so it should not be + GCC to return the address of large structures, so it should not be corrupted here. This does mean however, that this PLT does not conform to the SH PIC ABI. That spec says that r0 contains the type of the PLT and r2 contains the GOT id. This version stores the GOT id in r0 and @@ -3635,7 +3635,7 @@ static const bfd_byte *elf_sh_pic_plt_en /* Return offset of the GOT id in PLT0 entry. */ #define elf_sh_plt0_gotid_offset(info) 24 -/* Return offset of the tempoline in PLT entry */ +/* Return offset of the temporary in PLT entry */ #define elf_sh_plt_temp_offset(info) 8 /* Return offset of the symbol in PLT entry. */ @@ -4805,7 +4805,7 @@ sh_elf_relocate_section (bfd *output_bfd } else if (! howto->partial_inplace) { - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); addend = rel->r_addend; } else if ((sec->flags & SEC_MERGE) @@ -6021,10 +6021,10 @@ sh_elf_get_relocated_section_contents (b static bfd_vma dtpoff_base (struct bfd_link_info *info) { - /* If tls_segment is NULL, we should have signalled an error already. */ - if (elf_hash_table (info)->tls_segment == NULL) + /* If tls_sec is NULL, we should have signalled an error already. */ + if (elf_hash_table (info)->tls_sec == NULL) return 0; - return elf_hash_table (info)->tls_segment->start; + return elf_hash_table (info)->tls_sec->vma; } /* Return the relocation value for R_SH_TLS_TPOFF32.. */ @@ -6032,12 +6032,12 @@ dtpoff_base (struct bfd_link_info *info) static bfd_vma tpoff (struct bfd_link_info *info, bfd_vma address) { - /* If tls_segment is NULL, we should have signalled an error already. */ - if (elf_hash_table (info)->tls_segment == NULL) + /* If tls_sec is NULL, we should have signalled an error already. */ + if (elf_hash_table (info)->tls_sec == NULL) return 0; /* SH TLS ABI is variant I and static TLS block start just after tcbhead structure which has 2 pointer fields. */ - return (address - dtpoff_base (info) + 8); + return address - elf_hash_table (info)->tls_sec->vma + 8; } static asection * @@ -6339,7 +6339,8 @@ sh_elf_copy_indirect_symbol (const struc dir->elf_link_hash_flags |= (ind->elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR - | ELF_LINK_HASH_REF_REGULAR_NONWEAK)); + | ELF_LINK_HASH_REF_REGULAR_NONWEAK + | ELF_LINK_HASH_NEEDS_PLT)); else _bfd_elf_link_hash_copy_indirect (bed, dir, ind); } @@ -6959,19 +6960,7 @@ sh_elf_merge_private_data (bfd *ibfd, bf static bfd_boolean sh_elf_object_p (bfd *abfd) { - struct sh_elf_obj_tdata *new_tdata; - bfd_size_type amt = sizeof (struct sh_elf_obj_tdata); - - if (!sh_elf_set_mach_from_flags (abfd)) - return FALSE; - - /* Allocate our special target data. */ - new_tdata = bfd_zalloc (abfd, amt); - if (new_tdata == NULL) - return FALSE; - new_tdata->root = *abfd->tdata.elf_obj_data; - abfd->tdata.any = new_tdata; - return TRUE; + return sh_elf_set_mach_from_flags (abfd); } /* Finish up dynamic symbol handling. We set the contents of various @@ -7555,7 +7544,6 @@ elf32_shlin_grok_psinfo (bfd *abfd, Elf_ #define elf_backend_plt_readonly 1 #define elf_backend_want_plt_sym 0 #define elf_backend_got_header_size 12 -#define elf_backend_plt_header_size PLT_ENTRY_SIZE #ifndef INCLUDE_SHMEDIA diff -uprN binutils-2.14.90.0.7/bfd/elf32-sh64.c binutils-2.14.90.0.8/bfd/elf32-sh64.c --- binutils-2.14.90.0.7/bfd/elf32-sh64.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-sh64.c 2004-01-14 13:07:43.000000000 -0800 @@ -59,8 +59,8 @@ static bfd_boolean sh64_elf_add_symbol_h (bfd *, struct bfd_link_info *, const Elf_Internal_Sym *, const char **, flagword *, asection **, bfd_vma *); static bfd_boolean sh64_elf_link_output_symbol_hook - (bfd *, struct bfd_link_info *, const char *, Elf_Internal_Sym *, - asection *); + (struct bfd_link_info *, const char *, Elf_Internal_Sym *, asection *, + struct elf_link_hash_entry *); static bfd_boolean sh64_backend_section_from_shdr (bfd *, Elf_Internal_Shdr *, const char *); static void sh64_elf_final_write_processing @@ -380,7 +380,7 @@ sh64_elf_add_symbol_hook (bfd *abfd, str { /* We want to do this for relocatable as well as final linking. */ if (ELF_ST_TYPE (sym->st_info) == STT_DATALABEL - && info->hash->creator->flavour == bfd_target_elf_flavour) + && is_elf_hash_table (info->hash)) { struct elf_link_hash_entry *h; @@ -470,11 +470,11 @@ sh64_elf_add_symbol_hook (bfd *abfd, str DataLabel symbol. */ bfd_boolean -sh64_elf_link_output_symbol_hook (bfd *abfd ATTRIBUTE_UNUSED, - struct bfd_link_info *info, +sh64_elf_link_output_symbol_hook (struct bfd_link_info *info, const char *cname, Elf_Internal_Sym *sym, - asection *input_sec ATTRIBUTE_UNUSED) + asection *input_sec ATTRIBUTE_UNUSED, + struct elf_link_hash_entry *h ATTRIBUTE_UNUSED) { char *name = (char *) cname; diff -uprN binutils-2.14.90.0.7/bfd/elf32-sparc.c binutils-2.14.90.0.8/bfd/elf32-sparc.c --- binutils-2.14.90.0.7/bfd/elf32-sparc.c 2003-08-21 08:28:48.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-sparc.c 2004-01-14 13:07:43.000000000 -0800 @@ -502,6 +502,35 @@ sparc_elf_lox10_reloc (abfd, return bfd_reloc_ok; } +/* Support for core dump NOTE sections. */ + +static bfd_boolean +elf32_sparc_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) +{ + switch (note->descsz) + { + default: + return FALSE; + + case 260: /* Solaris prpsinfo_t. */ + elf_tdata (abfd)->core_program + = _bfd_elfcore_strndup (abfd, note->descdata + 84, 16); + elf_tdata (abfd)->core_command + = _bfd_elfcore_strndup (abfd, note->descdata + 100, 80); + break; + + case 336: /* Solaris psinfo_t. */ + elf_tdata (abfd)->core_program + = _bfd_elfcore_strndup (abfd, note->descdata + 88, 16); + elf_tdata (abfd)->core_command + = _bfd_elfcore_strndup (abfd, note->descdata + 104, 80); + break; + } + + return TRUE; +} + + /* Functions for the SPARC ELF linker. */ /* The name of the dynamic interpreter. This is put in the .interp @@ -2082,10 +2111,10 @@ static bfd_vma dtpoff_base (info) struct bfd_link_info *info; { - /* If tls_segment is NULL, we should have signalled an error already. */ - if (elf_hash_table (info)->tls_segment == NULL) + /* If tls_sec is NULL, we should have signalled an error already. */ + if (elf_hash_table (info)->tls_sec == NULL) return 0; - return elf_hash_table (info)->tls_segment->start; + return elf_hash_table (info)->tls_sec->vma; } /* Return the relocation value for @tpoff relocation @@ -2096,14 +2125,12 @@ tpoff (info, address) struct bfd_link_info *info; bfd_vma address; { - struct elf_link_tls_segment *tls_segment - = elf_hash_table (info)->tls_segment; + struct elf_link_hash_table *htab = elf_hash_table (info); - /* If tls_segment is NULL, we should have signalled an error already. */ - if (tls_segment == NULL) + /* If tls_sec is NULL, we should have signalled an error already. */ + if (htab->tls_sec == NULL) return 0; - return -(align_power (tls_segment->size, tls_segment->align) - + tls_segment->start - address); + return address - htab->tls_size - htab->tls_sec->vma; } /* Relocate a SPARC ELF section. */ @@ -2182,7 +2209,7 @@ elf32_sparc_relocate_section (output_bfd { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -2459,16 +2486,8 @@ elf32_sparc_relocate_section (output_bfd if (is_plt) sec = htab->splt; - else if (h == NULL) - sec = local_sections[r_symndx]; - else - { - BFD_ASSERT (h->root.type == bfd_link_hash_defined - || (h->root.type - == bfd_link_hash_defweak)); - sec = h->root.u.def.section; - } - if (sec != NULL && bfd_is_abs_section (sec)) + + if (bfd_is_abs_section (sec)) indx = 0; else if (sec == NULL || sec->owner == NULL) { @@ -3350,15 +3369,6 @@ static bfd_boolean elf32_sparc_object_p (abfd) bfd *abfd; { - /* Allocate our special target data. */ - struct elf32_sparc_obj_tdata *new_tdata; - bfd_size_type amt = sizeof (struct elf32_sparc_obj_tdata); - new_tdata = bfd_zalloc (abfd, amt); - if (new_tdata == NULL) - return FALSE; - new_tdata->root = *abfd->tdata.elf_obj_data; - abfd->tdata.any = new_tdata; - if (elf_elfheader (abfd)->e_machine == EM_SPARC32PLUS) { if (elf_elfheader (abfd)->e_flags & EF_SPARC_SUN_US3) @@ -3470,6 +3480,7 @@ elf32_sparc_reloc_type_class (rela) elf32_sparc_final_write_processing #define elf_backend_gc_mark_hook elf32_sparc_gc_mark_hook #define elf_backend_gc_sweep_hook elf32_sparc_gc_sweep_hook +#define elf_backend_grok_psinfo elf32_sparc_grok_psinfo #define elf_backend_reloc_type_class elf32_sparc_reloc_type_class #define elf_backend_can_gc_sections 1 @@ -3478,7 +3489,6 @@ elf32_sparc_reloc_type_class (rela) #define elf_backend_plt_readonly 0 #define elf_backend_want_plt_sym 1 #define elf_backend_got_header_size 4 -#define elf_backend_plt_header_size (4*PLT_ENTRY_SIZE) #define elf_backend_rela_normal 1 #include "elf32-target.h" diff -uprN binutils-2.14.90.0.7/bfd/elf32-v850.c binutils-2.14.90.0.8/bfd/elf32-v850.c --- binutils-2.14.90.0.7/bfd/elf32-v850.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-v850.c 2004-01-14 13:07:43.000000000 -0800 @@ -76,8 +76,8 @@ static bfd_boolean v850_elf_add_symbol_h PARAMS ((bfd *, struct bfd_link_info *, const Elf_Internal_Sym *, const char **, flagword *, asection **, bfd_vma *)); static bfd_boolean v850_elf_link_output_symbol_hook - PARAMS ((bfd *, struct bfd_link_info *, const char *, - Elf_Internal_Sym *, asection *)); + PARAMS ((struct bfd_link_info *, const char *, Elf_Internal_Sym *, + asection *, struct elf_link_hash_entry *)); static bfd_boolean v850_elf_section_from_shdr PARAMS ((bfd *, Elf_Internal_Shdr *, const char *)); static bfd_boolean v850_elf_gc_sweep_hook @@ -893,7 +893,7 @@ find_remembered_hi16s_reloc (addend, alr /* Extract the address. */ addr = match->address; - /* Remeber if this entry has already been used before. */ + /* Remember if this entry has already been used before. */ if (already_found) * already_found = match->found; @@ -904,7 +904,7 @@ find_remembered_hi16s_reloc (addend, alr } /* FIXME: The code here probably ought to be removed and the code in reloc.c - allowed to do its stuff instead. At least for most of the relocs, anwyay. */ + allowed to do its stuff instead. At least for most of the relocs, anyway. */ static bfd_reloc_status_type v850_elf_perform_relocation (abfd, r_type, addend, address) @@ -1362,7 +1362,7 @@ v850_elf_reloc (abfd, reloc, symbol, dat if (reloc->address > isection->_cooked_size) return bfd_reloc_outofrange; - /* Work out which section the relocation is targetted at and the + /* Work out which section the relocation is targeted at and the initial relocation command value. */ if (reloc->howto->pc_relative) @@ -1681,7 +1681,7 @@ v850_elf_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); #if 0 { char * name; @@ -2213,12 +2213,12 @@ v850_elf_add_symbol_hook (abfd, info, sy } static bfd_boolean -v850_elf_link_output_symbol_hook (abfd, info, name, sym, input_sec) - bfd *abfd ATTRIBUTE_UNUSED; +v850_elf_link_output_symbol_hook (info, name, sym, input_sec, h) struct bfd_link_info *info ATTRIBUTE_UNUSED; const char *name ATTRIBUTE_UNUSED; Elf_Internal_Sym *sym; asection *input_sec; + struct elf_link_hash_entry *h ATTRIBUTE_UNUSED; { /* If we see a common symbol, which implies a relocatable link, then if a symbol was in a special common section in an input file, mark diff -uprN binutils-2.14.90.0.7/bfd/elf32-vax.c binutils-2.14.90.0.8/bfd/elf32-vax.c --- binutils-2.14.90.0.7/bfd/elf32-vax.c 2003-08-21 08:28:48.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-vax.c 2004-01-14 13:07:43.000000000 -0800 @@ -892,20 +892,21 @@ elf_vax_gc_sweep_hook (abfd, info, sec, Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; const Elf_Internal_Rela *rel, *relend; - unsigned long r_symndx; - struct elf_link_hash_entry *h; bfd *dynobj; - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - sym_hashes = elf_sym_hashes (abfd); - dynobj = elf_hash_table (info)->dynobj; if (dynobj == NULL) return TRUE; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + relend = relocs + sec->reloc_count; for (rel = relocs; rel < relend; rel++) { + unsigned long r_symndx; + struct elf_link_hash_entry *h; + switch (ELF32_R_TYPE (rel->r_info)) { case R_VAX_GOT32: @@ -1149,7 +1150,7 @@ elf_vax_size_dynamic_sections (output_bf if (elf_hash_table (info)->dynamic_sections_created) { /* Set the contents of the .interp section to the interpreter. */ - if (!info->shared) + if (info->executable) { s = bfd_get_section_by_name (dynobj, ".interp"); BFD_ASSERT (s != NULL); @@ -1338,7 +1339,6 @@ elf_vax_size_dynamic_sections (output_bf in regular objects. We allocated space for them in the check_relocs routine, but we won't fill them in in the relocate_section routine. */ -/*ARGSUSED*/ static bfd_boolean elf_vax_discard_copies (h, ignore) struct elf_vax_link_hash_entry *h; @@ -1366,7 +1366,6 @@ elf_vax_discard_copies (h, ignore) creating a shared object or executable, space in the .got and .rela.got will be reserved for the symbol. */ -/*ARGSUSED*/ static bfd_boolean elf_vax_instantiate_got_entries (h, infoptr) struct elf_link_hash_entry *h; @@ -1483,7 +1482,7 @@ elf_vax_relocate_section (output_bfd, in { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -1737,16 +1736,7 @@ elf_vax_relocate_section (output_bfd, in { long indx; - if (h == NULL) - sec = local_sections[r_symndx]; - else - { - BFD_ASSERT (h->root.type == bfd_link_hash_defined - || (h->root.type - == bfd_link_hash_defweak)); - sec = h->root.u.def.section; - } - if (sec != NULL && bfd_is_abs_section (sec)) + if (bfd_is_abs_section (sec)) indx = 0; else if (sec == NULL || sec->owner == NULL) { diff -uprN binutils-2.14.90.0.7/bfd/elf32-xstormy16.c binutils-2.14.90.0.8/bfd/elf32-xstormy16.c --- binutils-2.14.90.0.7/bfd/elf32-xstormy16.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf32-xstormy16.c 2004-01-14 13:07:43.000000000 -0800 @@ -845,7 +845,7 @@ xstormy16_elf_relocate_section (output_b { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); diff -uprN binutils-2.14.90.0.7/bfd/elf32-xtensa.c binutils-2.14.90.0.8/bfd/elf32-xtensa.c --- binutils-2.14.90.0.7/bfd/elf32-xtensa.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf32-xtensa.c 2004-01-14 13:07:43.000000000 -0800 @@ -47,9 +47,6 @@ static bfd_boolean elf_xtensa_check_relo const Elf_Internal_Rela *)); static void elf_xtensa_hide_symbol PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean)); -static void elf_xtensa_copy_indirect_symbol - PARAMS ((const struct elf_backend_data *, struct elf_link_hash_entry *, - struct elf_link_hash_entry *)); static asection *elf_xtensa_gc_mark_hook PARAMS ((asection *, struct bfd_link_info *, Elf_Internal_Rela *, struct elf_link_hash_entry *, Elf_Internal_Sym *)); @@ -63,7 +60,7 @@ static bfd_boolean elf_xtensa_adjust_dyn static bfd_boolean elf_xtensa_size_dynamic_sections PARAMS ((bfd *, struct bfd_link_info *)); static bfd_boolean elf_xtensa_modify_segment_map - PARAMS ((bfd *)); + PARAMS ((bfd *, struct bfd_link_info *)); static bfd_boolean elf_xtensa_relocate_section PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **)); @@ -796,19 +793,6 @@ elf_xtensa_hide_symbol (info, h, force_l } -static void -elf_xtensa_copy_indirect_symbol (bed, dir, ind) - const struct elf_backend_data *bed; - struct elf_link_hash_entry *dir, *ind; -{ - _bfd_elf_link_hash_copy_indirect (bed, dir, ind); - - /* The standard function doesn't copy the NEEDS_PLT flag. */ - dir->elf_link_hash_flags |= - (ind->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT); -} - - /* Return the section that should be marked against GC for a given relocation. */ @@ -1176,7 +1160,7 @@ elf_xtensa_size_dynamic_sections (output if (elf_hash_table (info)->dynamic_sections_created) { /* Set the contents of the .interp section to the interpreter. */ - if (! info->shared) + if (info->executable) { s = bfd_get_section_by_name (dynobj, ".interp"); if (s == NULL) @@ -1431,8 +1415,9 @@ elf_xtensa_size_dynamic_sections (output this and it probably ought to be moved into elf.c as well. */ static bfd_boolean -elf_xtensa_modify_segment_map (abfd) +elf_xtensa_modify_segment_map (abfd, info) bfd *abfd; + struct bfd_link_info *info ATTRIBUTE_UNUSED; { struct elf_segment_map **m_p; @@ -1729,7 +1714,7 @@ bfd_elf_xtensa_reloc (abfd, reloc_entry, / bfd_octets_per_byte (abfd))) return bfd_reloc_outofrange; - /* Work out which section the relocation is targetted at and the + /* Work out which section the relocation is targeted at and the initial relocation command value. */ /* Get symbol value. (Common symbols are special.) */ @@ -2004,7 +1989,7 @@ elf_xtensa_relocate_section (output_bfd, { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -4186,7 +4171,7 @@ analyze_relocations (link_info) expensive and unnecessary unless the target section is actually going to be relaxed. This pass identifies all such sections by checking if they have L32Rs pointing to them. In the process, the total number - of relocations targetting each section is also counted so that we + of relocations targeting each section is also counted so that we know how much space to allocate for source_relocs against each relaxable literal section. */ @@ -5850,7 +5835,6 @@ static struct bfd_elf_special_section co #define elf_backend_adjust_dynamic_symbol elf_xtensa_adjust_dynamic_symbol #define elf_backend_check_relocs elf_xtensa_check_relocs -#define elf_backend_copy_indirect_symbol elf_xtensa_copy_indirect_symbol #define elf_backend_create_dynamic_sections elf_xtensa_create_dynamic_sections #define elf_backend_discard_info elf_xtensa_discard_info #define elf_backend_ignore_discarded_relocs elf_xtensa_ignore_discarded_relocs diff -uprN binutils-2.14.90.0.7/bfd/elf64-alpha.c binutils-2.14.90.0.8/bfd/elf64-alpha.c --- binutils-2.14.90.0.7/bfd/elf64-alpha.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf64-alpha.c 2004-01-14 13:07:43.000000000 -0800 @@ -393,15 +393,6 @@ static bfd_boolean elf64_alpha_object_p (abfd) bfd *abfd; { - /* Allocate our special target data. */ - struct alpha_elf_obj_tdata *new_tdata; - bfd_size_type amt = sizeof (struct alpha_elf_obj_tdata); - new_tdata = bfd_zalloc (abfd, amt); - if (new_tdata == NULL) - return FALSE; - new_tdata->root = *abfd->tdata.elf_obj_data; - abfd->tdata.any = new_tdata; - /* Set the right machine number for an Alpha ELF file. */ return bfd_default_set_arch_mach (abfd, bfd_arch_alpha, 0); } @@ -1158,13 +1149,15 @@ elf64_alpha_info_to_howto (abfd, cache_p (r_type == R_ALPHA_TLSGD || r_type == R_ALPHA_TLSLDM ? 16 : 8) /* This is PT_TLS segment p_vaddr. */ -#define alpha_get_dtprel_base(tlss) \ - ((tlss)->start) +#define alpha_get_dtprel_base(info) \ + (elf_hash_table (info)->tls_sec->vma) /* Main program TLS (whose template starts at PT_TLS p_vaddr) is assigned offset round(16, PT_TLS p_align). */ -#define alpha_get_tprel_base(tlss) \ - ((tlss)->start - align_power ((bfd_vma) 16, (tlss)->align)) +#define alpha_get_tprel_base(info) \ + (elf_hash_table (info)->tls_sec->vma \ + - align_power ((bfd_vma) 16, \ + elf_hash_table (info)->tls_sec->alignment_power)) /* These functions do relaxation for Alpha ELF. @@ -1198,7 +1191,6 @@ struct alpha_relax_info Elf_Internal_Shdr *symtab_hdr; Elf_Internal_Rela *relocs, *relend; struct bfd_link_info *link_info; - struct elf_link_tls_segment *tls_segment; bfd_vma gp; bfd *gotobj; asection *tsec; @@ -1224,8 +1216,6 @@ static bfd_boolean elf64_alpha_relax_gpr static bfd_boolean elf64_alpha_relax_tls_get_addr PARAMS((struct alpha_relax_info *info, bfd_vma symval, Elf_Internal_Rela *irel, bfd_boolean)); -static struct elf_link_tls_segment *elf64_alpha_relax_find_tls_segment - PARAMS((struct alpha_relax_info *, struct elf_link_tls_segment *)); static bfd_boolean elf64_alpha_relax_section PARAMS((bfd *abfd, asection *sec, struct bfd_link_info *link_info, bfd_boolean *again)); @@ -1598,9 +1588,9 @@ elf64_alpha_relax_got_load (info, symval { bfd_vma dtp_base, tp_base; - BFD_ASSERT (info->tls_segment != NULL); - dtp_base = alpha_get_dtprel_base (info->tls_segment); - tp_base = alpha_get_tprel_base (info->tls_segment); + BFD_ASSERT (elf_hash_table (info->link_info)->tls_sec != NULL); + dtp_base = alpha_get_dtprel_base (info->link_info); + tp_base = alpha_get_tprel_base (info->link_info); disp = symval - (r_type == R_ALPHA_GOTDTPREL ? dtp_base : tp_base); } @@ -1845,8 +1835,8 @@ elf64_alpha_relax_tls_get_addr (info, sy bfd_vma tp_base; bfd_signed_vma disp; - BFD_ASSERT (info->tls_segment != NULL); - tp_base = alpha_get_tprel_base (info->tls_segment); + BFD_ASSERT (elf_hash_table (info->link_info)->tls_sec != NULL); + tp_base = alpha_get_tprel_base (info->link_info); disp = symval - tp_base; if (disp >= -0x8000 && disp < 0x8000) @@ -1961,53 +1951,6 @@ elf64_alpha_relax_tls_get_addr (info, sy return TRUE; } -static struct elf_link_tls_segment * -elf64_alpha_relax_find_tls_segment (info, seg) - struct alpha_relax_info *info; - struct elf_link_tls_segment *seg; -{ - bfd *output_bfd = info->sec->output_section->owner; - asection *o; - unsigned int align; - bfd_vma base, end; - - for (o = output_bfd->sections; o ; o = o->next) - if ((o->flags & SEC_THREAD_LOCAL) != 0 - && (o->flags & SEC_LOAD) != 0) - break; - if (!o) - return NULL; - - base = o->vma; - align = 0; - - do - { - bfd_vma size; - - if (bfd_get_section_alignment (output_bfd, o) > align) - align = bfd_get_section_alignment (output_bfd, o); - - size = o->_raw_size; - if (size == 0 && (o->flags & SEC_HAS_CONTENTS) == 0) - { - struct bfd_link_order *lo; - for (lo = o->link_order_head; lo ; lo = lo->next) - if (size < lo->offset + lo->size) - size = lo->offset + lo->size; - } - end = o->vma + size; - o = o->next; - } - while (o && (o->flags & SEC_THREAD_LOCAL)); - - seg->start = base; - seg->size = end - base; - seg->align = align; - - return seg; -} - static bfd_boolean elf64_alpha_relax_section (abfd, sec, link_info, again) bfd *abfd; @@ -2021,7 +1964,6 @@ elf64_alpha_relax_section (abfd, sec, li Elf_Internal_Sym *isymbuf = NULL; struct alpha_elf_got_entry **local_got_entries; struct alpha_relax_info info; - struct elf_link_tls_segment tls_segment; /* We are not currently changing any sizes, so only one pass. */ *again = FALSE; @@ -2079,11 +2021,6 @@ elf64_alpha_relax_section (abfd, sec, li goto error_return; } - /* Compute the TLS segment information. The version normally found in - elf_hash_table (link_info)->tls_segment isn't built until final_link. - ??? Probably should look into extracting this into a common function. */ - info.tls_segment = elf64_alpha_relax_find_tls_segment (&info, &tls_segment); - for (irel = internal_relocs; irel < irelend; irel++) { bfd_vma symval; @@ -2137,7 +2074,7 @@ elf64_alpha_relax_section (abfd, sec, li if (r_type == R_ALPHA_TLSLDM) { info.tsec = bfd_abs_section_ptr; - symval = alpha_get_tprel_base (info.tls_segment); + symval = alpha_get_tprel_base (info.link_info); } else { @@ -3694,7 +3631,7 @@ elf64_alpha_size_got_sections (info) if (this_got == NULL) continue; - /* We are assuming no merging has yet ocurred. */ + /* We are assuming no merging has yet occurred. */ BFD_ASSERT (this_got == i); if (alpha_elf_tdata (this_got)->total_got_size > MAX_GOT_SIZE) @@ -4294,7 +4231,6 @@ elf64_alpha_relocate_section (output_bfd Elf_Internal_Shdr *symtab_hdr; Elf_Internal_Rela *rel; Elf_Internal_Rela *relend; - struct elf_link_tls_segment *tls_segment; asection *sgot, *srel, *srelgot; bfd *dynobj, *gotobj; bfd_vma gp, tp_base, dtp_base; @@ -4348,11 +4284,10 @@ elf64_alpha_relocate_section (output_bfd local_got_entries = alpha_elf_tdata(input_bfd)->local_got_entries; - tls_segment = elf_hash_table (info)->tls_segment; - if (tls_segment) + if (elf_hash_table (info)->tls_sec != NULL) { - dtp_base = alpha_get_dtprel_base (tls_segment); - tp_base = alpha_get_tprel_base (tls_segment); + dtp_base = alpha_get_dtprel_base (info); + tp_base = alpha_get_tprel_base (info); } else dtp_base = tp_base = 0; @@ -4394,9 +4329,11 @@ elf64_alpha_relocate_section (output_bfd if (r_symndx < symtab_hdr->sh_info) { + asection *msec; sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - value = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + msec = sec; + value = _bfd_elf_rela_local_sym (output_bfd, sym, &msec, rel); /* If this is a tp-relative relocation against sym 0, this is hackery from relax_section. Force the value to @@ -4424,7 +4361,6 @@ elf64_alpha_relocate_section (output_bfd && !gotent->reloc_xlated) { struct alpha_elf_got_entry *ent; - asection *msec; for (ent = gotent; ent; ent = ent->next) { @@ -4674,13 +4610,13 @@ elf64_alpha_relocate_section (output_bfd } else if (r_type == R_ALPHA_DTPREL64) { - BFD_ASSERT(tls_segment != NULL); + BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL); value -= dtp_base; goto default_reloc; } else if (r_type == R_ALPHA_TPREL64) { - BFD_ASSERT(tls_segment != NULL); + BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL); if (!info->shared) { value -= tp_base; @@ -4760,7 +4696,7 @@ elf64_alpha_relocate_section (output_bfd value = 0; else { - BFD_ASSERT(tls_segment != NULL); + BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL); value -= dtp_base; } bfd_put_64 (output_bfd, value, @@ -4783,7 +4719,7 @@ elf64_alpha_relocate_section (output_bfd bfd_archive_filename (input_bfd), h->root.root.root.string); ret_val = FALSE; } - BFD_ASSERT(tls_segment != NULL); + BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL); value -= dtp_base; if (r_type == R_ALPHA_DTPRELHI) value = ((bfd_signed_vma) value >> 16) + ((value >> 15) & 1); @@ -4806,7 +4742,7 @@ elf64_alpha_relocate_section (output_bfd bfd_archive_filename (input_bfd), h->root.root.root.string); ret_val = FALSE; } - BFD_ASSERT(tls_segment != NULL); + BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL); value -= tp_base; if (r_type == R_ALPHA_TPRELHI) value = ((bfd_signed_vma) value >> 16) + ((value >> 15) & 1); @@ -4827,7 +4763,7 @@ elf64_alpha_relocate_section (output_bfd value = 0; else { - BFD_ASSERT(tls_segment != NULL); + BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL); if (r_type == R_ALPHA_GOTDTPREL) value -= dtp_base; else if (!info->shared) @@ -5600,7 +5536,6 @@ static const struct elf_size_info alpha_ #define elf_backend_plt_readonly 0 #define elf_backend_want_plt_sym 1 #define elf_backend_got_header_size 0 -#define elf_backend_plt_header_size PLT_HEADER_SIZE #include "elf64-target.h" diff -uprN binutils-2.14.90.0.7/bfd/elf64-hppa.c binutils-2.14.90.0.8/bfd/elf64-hppa.c --- binutils-2.14.90.0.7/bfd/elf64-hppa.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf64-hppa.c 2004-01-14 13:07:43.000000000 -0800 @@ -202,8 +202,8 @@ static bfd_boolean elf64_hppa_size_dynam PARAMS ((bfd *, struct bfd_link_info *)); static bfd_boolean elf64_hppa_link_output_symbol_hook - PARAMS ((bfd *abfd, struct bfd_link_info *, const char *, - Elf_Internal_Sym *, asection *input_sec)); + PARAMS ((struct bfd_link_info *, const char *, Elf_Internal_Sym *, + asection *, struct elf_link_hash_entry *)); static bfd_boolean elf64_hppa_finish_dynamic_symbol PARAMS ((bfd *, struct bfd_link_info *, @@ -213,7 +213,7 @@ static int elf64_hppa_additional_program PARAMS ((bfd *)); static bfd_boolean elf64_hppa_modify_segment_map - PARAMS ((bfd *)); + PARAMS ((bfd *, struct bfd_link_info *)); static enum elf_reloc_type_class elf64_hppa_reloc_type_class PARAMS ((const Elf_Internal_Rela *)); @@ -975,7 +975,7 @@ elf64_hppa_dynamic_symbol_p (h, info) return FALSE; } -/* Mark all funtions exported by this file so that we can later allocate +/* Mark all functions exported by this file so that we can later allocate entries in .opd for them. */ static bfd_boolean @@ -1211,7 +1211,7 @@ elf64_hppa_post_process_headers (abfd, l } /* Create function descriptor section (.opd). This section is called .opd - because it contains "official prodecure descriptors". The "official" + because it contains "official procedure descriptors". The "official" refers to the fact that these descriptors are used when taking the address of a procedure, thus ensuring a unique address for each procedure. */ @@ -1642,7 +1642,7 @@ elf64_hppa_size_dynamic_sections (output if (elf_hash_table (info)->dynamic_sections_created) { /* Set the contents of the .interp section to the interpreter. */ - if (! info->shared) + if (info->executable) { s = bfd_get_section_by_name (dynobj, ".interp"); BFD_ASSERT (s != NULL); @@ -1893,12 +1893,12 @@ elf64_hppa_size_dynamic_sections (output table. Ick. */ static bfd_boolean -elf64_hppa_link_output_symbol_hook (abfd, info, name, sym, input_sec) - bfd *abfd ATTRIBUTE_UNUSED; +elf64_hppa_link_output_symbol_hook (info, name, sym, input_sec, h) struct bfd_link_info *info; const char *name; Elf_Internal_Sym *sym; asection *input_sec ATTRIBUTE_UNUSED; + struct elf_link_hash_entry *h; { struct elf64_hppa_link_hash_table *hppa_info; struct elf64_hppa_dyn_hash_entry *dyn_h; @@ -1912,6 +1912,8 @@ elf64_hppa_link_output_symbol_hook (abfd hppa_info = elf64_hppa_hash_table (info); dyn_h = elf64_hppa_dyn_hash_lookup (&hppa_info->dyn_hash_table, name, FALSE, FALSE); + if (!dyn_h || dyn_h->h != h) + return TRUE; /* Function symbols for which we created .opd entries *may* have been munged by finish_dynamic_symbol and have to be un-munged here. @@ -1920,7 +1922,7 @@ elf64_hppa_link_output_symbol_hook (abfd into non-dynamic ones, so we initialize st_shndx to -1 in mark_exported_functions and check to see if it was overwritten here instead of just checking dyn_h->h->dynindx. */ - if (dyn_h && dyn_h->want_opd && dyn_h->st_shndx != -1) + if (dyn_h->want_opd && dyn_h->st_shndx != -1) { /* Restore the saved value and section index. */ sym->st_value = dyn_h->st_value; @@ -2281,7 +2283,7 @@ elf64_hppa_finalize_dlt (dyn_h, data) bfd_put_64 (sdlt->owner, value, sdlt->contents + dyn_h->dlt_offset); } - /* Create a relocation for the DLT entry assocated with this symbol. + /* Create a relocation for the DLT entry associated with this symbol. When building a shared library the symbol does not have to be dynamic. */ if (dyn_h->want_dlt && (elf64_hppa_dynamic_symbol_p (dyn_h->h, info) || info->shared)) @@ -2609,8 +2611,9 @@ elf64_hppa_additional_program_headers (a existence of a .interp section. */ static bfd_boolean -elf64_hppa_modify_segment_map (abfd) +elf64_hppa_modify_segment_map (abfd, info) bfd *abfd; + struct bfd_link_info *info ATTRIBUTE_UNUSED; { struct elf_segment_map *m; asection *s; @@ -2772,7 +2775,6 @@ const struct elf_size_info hppa64_elf_si #define elf_backend_plt_readonly 0 #define elf_backend_want_plt_sym 0 #define elf_backend_got_header_size 0 -#define elf_backend_plt_header_size 0 #define elf_backend_type_change_ok TRUE #define elf_backend_get_symbol_type elf64_hppa_elf_get_symbol_type #define elf_backend_reloc_type_class elf64_hppa_reloc_type_class diff -uprN binutils-2.14.90.0.7/bfd/elf64-mips.c binutils-2.14.90.0.8/bfd/elf64-mips.c --- binutils-2.14.90.0.7/bfd/elf64-mips.c 2003-08-21 08:28:48.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf64-mips.c 2004-01-14 13:07:43.000000000 -0800 @@ -62,79 +62,72 @@ Foundation, Inc., 59 Temple Place - Suit #include "ecoffswap.h" static void mips_elf64_swap_reloc_in - PARAMS ((bfd *, const Elf64_Mips_External_Rel *, - Elf64_Mips_Internal_Rela *)); + (bfd *, const Elf64_Mips_External_Rel *, Elf64_Mips_Internal_Rela *); static void mips_elf64_swap_reloca_in - PARAMS ((bfd *, const Elf64_Mips_External_Rela *, - Elf64_Mips_Internal_Rela *)); + (bfd *, const Elf64_Mips_External_Rela *, Elf64_Mips_Internal_Rela *); static void mips_elf64_swap_reloc_out - PARAMS ((bfd *, const Elf64_Mips_Internal_Rela *, - Elf64_Mips_External_Rel *)); + (bfd *, const Elf64_Mips_Internal_Rela *, Elf64_Mips_External_Rel *); static void mips_elf64_swap_reloca_out - PARAMS ((bfd *, const Elf64_Mips_Internal_Rela *, - Elf64_Mips_External_Rela *)); + (bfd *, const Elf64_Mips_Internal_Rela *, Elf64_Mips_External_Rela *); static void mips_elf64_be_swap_reloc_in - PARAMS ((bfd *, const bfd_byte *, Elf_Internal_Rela *)); + (bfd *, const bfd_byte *, Elf_Internal_Rela *); static void mips_elf64_be_swap_reloc_out - PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *)); + (bfd *, const Elf_Internal_Rela *, bfd_byte *); static void mips_elf64_be_swap_reloca_in - PARAMS ((bfd *, const bfd_byte *, Elf_Internal_Rela *)); + (bfd *, const bfd_byte *, Elf_Internal_Rela *); static void mips_elf64_be_swap_reloca_out - PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *)); + (bfd *, const Elf_Internal_Rela *, bfd_byte *); static reloc_howto_type *bfd_elf64_bfd_reloc_type_lookup - PARAMS ((bfd *, bfd_reloc_code_real_type)); + (bfd *, bfd_reloc_code_real_type); static reloc_howto_type *mips_elf64_rtype_to_howto - PARAMS ((unsigned int, bfd_boolean)); + (unsigned int, bfd_boolean); static void mips_elf64_info_to_howto_rel - PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); + (bfd *, arelent *, Elf_Internal_Rela *); static void mips_elf64_info_to_howto_rela - PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); + (bfd *, arelent *, Elf_Internal_Rela *); static long mips_elf64_get_reloc_upper_bound - PARAMS ((bfd *, asection *)); + (bfd *, asection *); static long mips_elf64_canonicalize_reloc - PARAMS ((bfd *, asection *, arelent **, asymbol **)); -static long mips_elf64_get_dynamic_reloc_upper_bound PARAMS ((bfd *)); + (bfd *, asection *, arelent **, asymbol **); +static long mips_elf64_get_dynamic_reloc_upper_bound + (bfd *); static long mips_elf64_canonicalize_dynamic_reloc - PARAMS ((bfd *, arelent **, asymbol **)); + (bfd *, arelent **, asymbol **); static bfd_boolean mips_elf64_slurp_one_reloc_table - PARAMS ((bfd *, asection *, Elf_Internal_Shdr *, bfd_size_type, - arelent *, asymbol **, bfd_boolean)); + (bfd *, asection *, Elf_Internal_Shdr *, bfd_size_type, arelent *, + asymbol **, bfd_boolean); static bfd_boolean mips_elf64_slurp_reloc_table - PARAMS ((bfd *, asection *, asymbol **, bfd_boolean)); + (bfd *, asection *, asymbol **, bfd_boolean); static void mips_elf64_write_relocs - PARAMS ((bfd *, asection *, PTR)); + (bfd *, asection *, void *); static void mips_elf64_write_rel - PARAMS((bfd *, asection *, Elf_Internal_Shdr *, int *, PTR)); + (bfd *, asection *, Elf_Internal_Shdr *, int *, void *); static void mips_elf64_write_rela - PARAMS((bfd *, asection *, Elf_Internal_Shdr *, int *, PTR)); -static bfd_reloc_status_type mips_elf64_hi16_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, asection *, Elf_Internal_Shdr *, int *, void *); static bfd_reloc_status_type mips_elf64_gprel16_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips_elf64_literal_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips_elf64_gprel32_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips_elf64_shift6_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static bfd_reloc_status_type mips_elf64_got16_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips16_jump_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips16_gprel_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_boolean mips_elf64_assign_gp - PARAMS ((bfd *, bfd_vma *)); + (bfd *, bfd_vma *); static bfd_reloc_status_type mips_elf64_final_gp - PARAMS ((bfd *, asymbol *, bfd_boolean, char **, bfd_vma *)); + (bfd *, asymbol *, bfd_boolean, char **, bfd_vma *); static bfd_boolean mips_elf64_object_p - PARAMS ((bfd *)); + (bfd *); static irix_compat_t elf64_mips_irix_compat - PARAMS ((bfd *)); + (bfd *); static bfd_boolean elf64_mips_grok_prstatus - PARAMS ((bfd *, Elf_Internal_Note *)); + (bfd *, Elf_Internal_Note *); static bfd_boolean elf64_mips_grok_psinfo - PARAMS ((bfd *, Elf_Internal_Note *)); + (bfd *, Elf_Internal_Note *); extern const bfd_target bfd_elf64_bigmips_vec; extern const bfd_target bfd_elf64_littlemips_vec; @@ -158,7 +151,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_NONE", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -173,7 +166,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -188,7 +181,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_32", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -203,7 +196,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_REL32", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -221,7 +214,7 @@ static reloc_howto_type mips_elf64_howto /* This needs complex overflow detection, because the upper 36 bits must match the PC + 4. */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_26", /* name */ TRUE, /* partial_inplace */ 0x03ffffff, /* src_mask */ @@ -233,13 +226,13 @@ static reloc_howto_type mips_elf64_howto /* High 16 bits of symbol value. */ HOWTO (R_MIPS_HI16, /* type */ - 0, /* rightshift */ + 16, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf64_hi16_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_HI16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -254,7 +247,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_LO16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -299,7 +292,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf64_got16_reloc, /* special_function */ + _bfd_mips_elf_got16_reloc, /* special_function */ "R_MIPS_GOT16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -314,7 +307,7 @@ static reloc_howto_type mips_elf64_howto TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_PC16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -329,7 +322,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -363,7 +356,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 6, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SHIFT5", /* name */ TRUE, /* partial_inplace */ 0x000007c0, /* src_mask */ @@ -393,7 +386,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_64", /* name */ TRUE, /* partial_inplace */ MINUS_ONE, /* src_mask */ @@ -408,7 +401,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_DISP", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -423,7 +416,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_PAGE", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -438,7 +431,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_OFST", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -453,7 +446,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_HI16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -468,14 +461,14 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_LO16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ - /* 64 bit substraction. */ + /* 64 bit subtraction. */ HOWTO (R_MIPS_SUB, /* type */ 0, /* rightshift */ 4, /* size (0 = byte, 1 = short, 2 = long) */ @@ -483,7 +476,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SUB", /* name */ TRUE, /* partial_inplace */ MINUS_ONE, /* src_mask */ @@ -499,7 +492,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_INSERT_A", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -516,7 +509,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_INSERT_B", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -532,7 +525,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_DELETE", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -556,7 +549,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_HI16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -571,7 +564,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_LO16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -586,7 +579,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SCN_DISP", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -600,7 +593,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_REL16", /* name */ TRUE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -620,7 +613,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_RELGOT", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -636,7 +629,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_JALR", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -656,7 +649,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_NONE", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -671,7 +664,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -686,7 +679,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_32", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -701,7 +694,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_REL32", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -719,7 +712,7 @@ static reloc_howto_type mips_elf64_howto /* This needs complex overflow detection, because the upper 36 bits must match the PC + 4. */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_26", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -734,7 +727,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_HI16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -749,7 +742,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_LO16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -794,7 +787,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf64_got16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -809,7 +802,7 @@ static reloc_howto_type mips_elf64_howto TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_PC16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -824,7 +817,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -858,7 +851,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 6, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SHIFT5", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -888,7 +881,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_64", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -903,7 +896,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_DISP", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -918,7 +911,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_PAGE", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -933,7 +926,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_OFST", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -948,7 +941,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_HI16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -963,14 +956,14 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_LO16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ - /* 64 bit substraction. */ + /* 64 bit subtraction. */ HOWTO (R_MIPS_SUB, /* type */ 0, /* rightshift */ 4, /* size (0 = byte, 1 = short, 2 = long) */ @@ -978,7 +971,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SUB", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -994,7 +987,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_INSERT_A", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1011,7 +1004,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_INSERT_B", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1027,7 +1020,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_DELETE", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1042,7 +1035,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_HIGHER", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1057,7 +1050,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_HIGHEST", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1072,7 +1065,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_HI16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1087,7 +1080,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_LO16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1102,7 +1095,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SCN_DISP", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1116,7 +1109,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_REL16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1136,7 +1129,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_RELGOT", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1152,7 +1145,7 @@ static reloc_howto_type mips_elf64_howto FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_JALR", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1236,7 +1229,7 @@ static reloc_howto_type elf_mips_gnu_rel TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GNU_REL16_S2", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1252,7 +1245,7 @@ static reloc_howto_type elf_mips_gnu_rel TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GNU_REL16_S2", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1262,10 +1255,8 @@ static reloc_howto_type elf_mips_gnu_rel /* Swap in a MIPS 64-bit Rel reloc. */ static void -mips_elf64_swap_reloc_in (abfd, src, dst) - bfd *abfd; - const Elf64_Mips_External_Rel *src; - Elf64_Mips_Internal_Rela *dst; +mips_elf64_swap_reloc_in (bfd *abfd, const Elf64_Mips_External_Rel *src, + Elf64_Mips_Internal_Rela *dst) { dst->r_offset = H_GET_64 (abfd, src->r_offset); dst->r_sym = H_GET_32 (abfd, src->r_sym); @@ -1279,10 +1270,8 @@ mips_elf64_swap_reloc_in (abfd, src, dst /* Swap in a MIPS 64-bit Rela reloc. */ static void -mips_elf64_swap_reloca_in (abfd, src, dst) - bfd *abfd; - const Elf64_Mips_External_Rela *src; - Elf64_Mips_Internal_Rela *dst; +mips_elf64_swap_reloca_in (bfd *abfd, const Elf64_Mips_External_Rela *src, + Elf64_Mips_Internal_Rela *dst) { dst->r_offset = H_GET_64 (abfd, src->r_offset); dst->r_sym = H_GET_32 (abfd, src->r_sym); @@ -1296,10 +1285,8 @@ mips_elf64_swap_reloca_in (abfd, src, ds /* Swap out a MIPS 64-bit Rel reloc. */ static void -mips_elf64_swap_reloc_out (abfd, src, dst) - bfd *abfd; - const Elf64_Mips_Internal_Rela *src; - Elf64_Mips_External_Rel *dst; +mips_elf64_swap_reloc_out (bfd *abfd, const Elf64_Mips_Internal_Rela *src, + Elf64_Mips_External_Rel *dst) { H_PUT_64 (abfd, src->r_offset, dst->r_offset); H_PUT_32 (abfd, src->r_sym, dst->r_sym); @@ -1312,10 +1299,8 @@ mips_elf64_swap_reloc_out (abfd, src, ds /* Swap out a MIPS 64-bit Rela reloc. */ static void -mips_elf64_swap_reloca_out (abfd, src, dst) - bfd *abfd; - const Elf64_Mips_Internal_Rela *src; - Elf64_Mips_External_Rela *dst; +mips_elf64_swap_reloca_out (bfd *abfd, const Elf64_Mips_Internal_Rela *src, + Elf64_Mips_External_Rela *dst) { H_PUT_64 (abfd, src->r_offset, dst->r_offset); H_PUT_32 (abfd, src->r_sym, dst->r_sym); @@ -1329,10 +1314,8 @@ mips_elf64_swap_reloca_out (abfd, src, d /* Swap in a MIPS 64-bit Rel reloc. */ static void -mips_elf64_be_swap_reloc_in (abfd, src, dst) - bfd *abfd; - const bfd_byte *src; - Elf_Internal_Rela *dst; +mips_elf64_be_swap_reloc_in (bfd *abfd, const bfd_byte *src, + Elf_Internal_Rela *dst) { Elf64_Mips_Internal_Rela mirel; @@ -1354,10 +1337,8 @@ mips_elf64_be_swap_reloc_in (abfd, src, /* Swap in a MIPS 64-bit Rela reloc. */ static void -mips_elf64_be_swap_reloca_in (abfd, src, dst) - bfd *abfd; - const bfd_byte *src; - Elf_Internal_Rela *dst; +mips_elf64_be_swap_reloca_in (bfd *abfd, const bfd_byte *src, + Elf_Internal_Rela *dst) { Elf64_Mips_Internal_Rela mirela; @@ -1379,10 +1360,8 @@ mips_elf64_be_swap_reloca_in (abfd, src, /* Swap out a MIPS 64-bit Rel reloc. */ static void -mips_elf64_be_swap_reloc_out (abfd, src, dst) - bfd *abfd; - const Elf_Internal_Rela *src; - bfd_byte *dst; +mips_elf64_be_swap_reloc_out (bfd *abfd, const Elf_Internal_Rela *src, + bfd_byte *dst) { Elf64_Mips_Internal_Rela mirel; @@ -1405,10 +1384,8 @@ mips_elf64_be_swap_reloc_out (abfd, src, /* Swap out a MIPS 64-bit Rela reloc. */ static void -mips_elf64_be_swap_reloca_out (abfd, src, dst) - bfd *abfd; - const Elf_Internal_Rela *src; - bfd_byte *dst; +mips_elf64_be_swap_reloca_out (bfd *abfd, const Elf_Internal_Rela *src, + bfd_byte *dst) { Elf64_Mips_Internal_Rela mirela; @@ -1430,84 +1407,11 @@ mips_elf64_be_swap_reloca_out (abfd, src (Elf64_Mips_External_Rela *) dst); } -/* Do a R_MIPS_HI16 relocation. */ - -static bfd_reloc_status_type -mips_elf64_hi16_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol; - PTR data ATTRIBUTE_UNUSED; - asection *input_section; - bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; -{ - /* If we're relocating, and this is an external symbol, we don't - want to change anything. */ - if (output_bfd != (bfd *) NULL - && (symbol->flags & BSF_SECTION_SYM) == 0 - && (symbol->flags & BSF_LOCAL) != 0) - { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } - - if (reloc_entry->howto->partial_inplace) - { - if (((reloc_entry->addend & 0xffff) + 0x8000) & ~0xffff) - reloc_entry->addend += 0x8000; - } - - return bfd_reloc_continue; -} - -/* Do a R_MIPS_GOT16 reloc. This is a reloc against the global offset - table used for PIC code. If the symbol is an external symbol, the - instruction is modified to contain the offset of the appropriate - entry in the global offset table. If the symbol is a section - symbol, the next reloc is a R_MIPS_LO16 reloc. The two 16 bit - addends are combined to form the real addend against the section - symbol; the GOT16 is modified to contain the offset of an entry in - the global offset table, and the LO16 is modified to offset it - appropriately. Thus an offset larger than 16 bits requires a - modified value in the global offset table. - - This implementation suffices for the assembler, but the linker does - not yet know how to create global offset tables. */ - -static bfd_reloc_status_type -mips_elf64_got16_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; -{ - /* If we're relocating, and this is a local symbol, we can handle it - just like an R_MIPS_HI16. */ - if (output_bfd != (bfd *) NULL - && ((symbol->flags & BSF_SECTION_SYM) != 0 - || (symbol->flags & BSF_LOCAL) == 0)) - return mips_elf64_hi16_reloc (abfd, reloc_entry, symbol, data, - input_section, output_bfd, error_message); - - - /* Otherwise we try to handle it as R_MIPS_GOT_DISP. */ - return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data, - input_section, output_bfd, error_message); -} - /* Set the GP value for OUTPUT_BFD. Returns FALSE if this is a dangerous relocation. */ static bfd_boolean -mips_elf64_assign_gp (output_bfd, pgp) - bfd *output_bfd; - bfd_vma *pgp; +mips_elf64_assign_gp (bfd *output_bfd, bfd_vma *pgp) { unsigned int count; asymbol **sym; @@ -1523,7 +1427,7 @@ mips_elf64_assign_gp (output_bfd, pgp) /* The linker script will have created a symbol named `_gp' with the appropriate value. */ - if (sym == (asymbol **) NULL) + if (sym == NULL) i = count; else { @@ -1559,12 +1463,8 @@ mips_elf64_assign_gp (output_bfd, pgp) external symbol if we are producing relocatable output. */ static bfd_reloc_status_type -mips_elf64_final_gp (output_bfd, symbol, relocatable, error_message, pgp) - bfd *output_bfd; - asymbol *symbol; - bfd_boolean relocatable; - char **error_message; - bfd_vma *pgp; +mips_elf64_final_gp (bfd *output_bfd, asymbol *symbol, bfd_boolean relocatable, + char **error_message, bfd_vma *pgp) { if (bfd_is_und_section (symbol->section) && ! relocatable) @@ -1599,15 +1499,9 @@ mips_elf64_final_gp (output_bfd, symbol, become the offset from the gp register. */ static bfd_reloc_status_type -mips_elf64_gprel16_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; +mips_elf64_gprel16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, bfd *output_bfd, + char **error_message) { bfd_boolean relocatable; bfd_reloc_status_type ret; @@ -1615,7 +1509,7 @@ mips_elf64_gprel16_reloc (abfd, reloc_en /* If we're relocating, and this is an external symbol, we don't want to change anything. */ - if (output_bfd != (bfd *) NULL + if (output_bfd != NULL && (symbol->flags & BSF_SECTION_SYM) == 0 && (symbol->flags & BSF_LOCAL) != 0) { @@ -1623,7 +1517,7 @@ mips_elf64_gprel16_reloc (abfd, reloc_en return bfd_reloc_ok; } - if (output_bfd != (bfd *) NULL) + if (output_bfd != NULL) relocatable = TRUE; else { @@ -1644,15 +1538,9 @@ mips_elf64_gprel16_reloc (abfd, reloc_en /* Do a R_MIPS_LITERAL relocation. */ static bfd_reloc_status_type -mips_elf64_literal_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; +mips_elf64_literal_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, bfd *output_bfd, + char **error_message) { bfd_boolean relocatable; bfd_reloc_status_type ret; @@ -1660,7 +1548,7 @@ mips_elf64_literal_reloc (abfd, reloc_en /* If we're relocating, and this is an external symbol, we don't want to change anything. */ - if (output_bfd != (bfd *) NULL + if (output_bfd != NULL && (symbol->flags & BSF_SECTION_SYM) == 0 && (symbol->flags & BSF_LOCAL) != 0) { @@ -1669,7 +1557,7 @@ mips_elf64_literal_reloc (abfd, reloc_en } /* FIXME: The entries in the .lit8 and .lit4 sections should be merged. */ - if (output_bfd != (bfd *) NULL) + if (output_bfd != NULL) relocatable = TRUE; else { @@ -1691,15 +1579,9 @@ mips_elf64_literal_reloc (abfd, reloc_en become the offset from the gp register. */ static bfd_reloc_status_type -mips_elf64_gprel32_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; +mips_elf64_gprel32_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, bfd *output_bfd, + char **error_message) { bfd_boolean relocatable; bfd_reloc_status_type ret; @@ -1709,7 +1591,7 @@ mips_elf64_gprel32_reloc (abfd, reloc_en /* If we're relocating, and this is an external symbol, we don't want to change anything. */ - if (output_bfd != (bfd *) NULL + if (output_bfd != NULL && (symbol->flags & BSF_SECTION_SYM) == 0 && (symbol->flags & BSF_LOCAL) != 0) { @@ -1718,7 +1600,7 @@ mips_elf64_gprel32_reloc (abfd, reloc_en return bfd_reloc_outofrange; } - if (output_bfd != (bfd *) NULL) + if (output_bfd != NULL) relocatable = TRUE; else { @@ -1770,49 +1652,30 @@ mips_elf64_gprel32_reloc (abfd, reloc_en the rest is at bits 6-10. The bitpos already got right by the howto. */ static bfd_reloc_status_type -mips_elf64_shift6_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol; - PTR data ATTRIBUTE_UNUSED; - asection *input_section; - bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; +mips_elf64_shift6_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, bfd *output_bfd, + char **error_message) { - /* If we're relocating, and this is an external symbol, we don't - want to change anything. */ - if (output_bfd != (bfd *) NULL - && (symbol->flags & BSF_SECTION_SYM) == 0 - && (symbol->flags & BSF_LOCAL) != 0) - { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } - if (reloc_entry->howto->partial_inplace) { reloc_entry->addend = ((reloc_entry->addend & 0x00007c0) | (reloc_entry->addend & 0x00000800) >> 9); } - return bfd_reloc_continue; + return _bfd_mips_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, + error_message); } /* Handle a mips16 jump. */ static bfd_reloc_status_type -mips16_jump_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol; - PTR data ATTRIBUTE_UNUSED; - asection *input_section; - bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; +mips16_jump_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry, + asymbol *symbol, void *data ATTRIBUTE_UNUSED, + asection *input_section, bfd *output_bfd, + char **error_message ATTRIBUTE_UNUSED) { - if (output_bfd != (bfd *) NULL + if (output_bfd != NULL && (symbol->flags & BSF_SECTION_SYM) == 0 && (! reloc_entry->howto->partial_inplace || reloc_entry->addend == 0)) @@ -1838,15 +1701,9 @@ mips16_jump_reloc (abfd, reloc_entry, sy /* Handle a mips16 GP relative reloc. */ static bfd_reloc_status_type -mips16_gprel_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; +mips16_gprel_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, bfd *output_bfd, + char **error_message) { bfd_boolean relocatable; bfd_reloc_status_type ret; @@ -1913,13 +1770,10 @@ mips16_gprel_reloc (abfd, reloc_entry, s if (reloc_entry->howto->partial_inplace) { bfd_put_16 (abfd, - (bfd_vma) ((extend & 0xf800) - | ((val >> 11) & 0x1f) - | (val & 0x7e0)), + (extend & 0xf800) | ((val >> 11) & 0x1f) | (val & 0x7e0), (bfd_byte *) data + reloc_entry->address); bfd_put_16 (abfd, - (bfd_vma) ((insn & 0xffe0) - | (val & 0x1f)), + (insn & 0xffe0) | (val & 0x1f), (bfd_byte *) data + reloc_entry->address + 2); } else @@ -1982,9 +1836,8 @@ static const struct elf_reloc_map mips_r /* Given a BFD reloc type, return a howto structure. */ static reloc_howto_type * -bfd_elf64_bfd_reloc_type_lookup (abfd, code) - bfd *abfd ATTRIBUTE_UNUSED; - bfd_reloc_code_real_type code; +bfd_elf64_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, + bfd_reloc_code_real_type code) { unsigned int i; /* FIXME: We default to RELA here instead of choosing the right @@ -2019,9 +1872,7 @@ bfd_elf64_bfd_reloc_type_lookup (abfd, c /* Given a MIPS Elf_Internal_Rel, fill in an arelent structure. */ static reloc_howto_type * -mips_elf64_rtype_to_howto (r_type, rela_p) - unsigned int r_type; - bfd_boolean rela_p; +mips_elf64_rtype_to_howto (unsigned int r_type, bfd_boolean rela_p) { switch (r_type) { @@ -2051,19 +1902,17 @@ mips_elf64_rtype_to_howto (r_type, rela_ /* Prevent relocation handling by bfd for MIPS ELF64. */ static void -mips_elf64_info_to_howto_rel (abfd, cache_ptr, dst) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *cache_ptr ATTRIBUTE_UNUSED; - Elf_Internal_Rela *dst ATTRIBUTE_UNUSED; +mips_elf64_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, + arelent *cache_ptr ATTRIBUTE_UNUSED, + Elf_Internal_Rela *dst ATTRIBUTE_UNUSED) { BFD_ASSERT (0); } static void -mips_elf64_info_to_howto_rela (abfd, cache_ptr, dst) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *cache_ptr ATTRIBUTE_UNUSED; - Elf_Internal_Rela *dst ATTRIBUTE_UNUSED; +mips_elf64_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, + arelent *cache_ptr ATTRIBUTE_UNUSED, + Elf_Internal_Rela *dst ATTRIBUTE_UNUSED) { BFD_ASSERT (0); } @@ -2072,16 +1921,13 @@ mips_elf64_info_to_howto_rela (abfd, cac to three relocs, we must tell the user to allocate more space. */ static long -mips_elf64_get_reloc_upper_bound (abfd, sec) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec; +mips_elf64_get_reloc_upper_bound (bfd *abfd ATTRIBUTE_UNUSED, asection *sec) { return (sec->reloc_count * 3 + 1) * sizeof (arelent *); } static long -mips_elf64_get_dynamic_reloc_upper_bound (abfd) - bfd *abfd; +mips_elf64_get_dynamic_reloc_upper_bound (bfd *abfd) { return _bfd_elf_get_dynamic_reloc_upper_bound (abfd) * 3; } @@ -2092,11 +1938,8 @@ mips_elf64_get_dynamic_reloc_upper_bound 3 to obtain the internal relocation count. */ static long -mips_elf64_canonicalize_reloc (abfd, section, relptr, symbols) - bfd *abfd; - sec_ptr section; - arelent **relptr; - asymbol **symbols; +mips_elf64_canonicalize_reloc (bfd *abfd, sec_ptr section, + arelent **relptr, asymbol **symbols) { arelent *tblptr; unsigned int i; @@ -2115,13 +1958,10 @@ mips_elf64_canonicalize_reloc (abfd, sec } static long -mips_elf64_canonicalize_dynamic_reloc (abfd, storage, syms) - bfd *abfd; - arelent **storage; - asymbol **syms; +mips_elf64_canonicalize_dynamic_reloc (bfd *abfd, arelent **storage, + asymbol **syms) { - bfd_boolean (*slurp_relocs) - PARAMS ((bfd *, asection *, asymbol **, bfd_boolean)); + bfd_boolean (*slurp_relocs) (bfd *, asection *, asymbol **, bfd_boolean); asection *s; long ret; @@ -2164,24 +2004,20 @@ mips_elf64_canonicalize_dynamic_reloc (a generic code seems to depend on this. */ static bfd_boolean -mips_elf64_slurp_one_reloc_table (abfd, asect, rel_hdr, reloc_count, - relents, symbols, dynamic) - bfd *abfd; - asection *asect; - Elf_Internal_Shdr *rel_hdr; - bfd_size_type reloc_count; - arelent *relents; - asymbol **symbols; - bfd_boolean dynamic; +mips_elf64_slurp_one_reloc_table (bfd *abfd, asection *asect, + Elf_Internal_Shdr *rel_hdr, + bfd_size_type reloc_count, + arelent *relents, asymbol **symbols, + bfd_boolean dynamic) { - PTR allocated = NULL; + void *allocated; bfd_byte *native_relocs; arelent *relent; bfd_vma i; int entsize; - reloc_howto_type *howto_table; + bfd_boolean rela_p; - allocated = (PTR) bfd_malloc (rel_hdr->sh_size); + allocated = bfd_malloc (rel_hdr->sh_size); if (allocated == NULL) return FALSE; @@ -2190,16 +2026,16 @@ mips_elf64_slurp_one_reloc_table (abfd, != rel_hdr->sh_size)) goto error_return; - native_relocs = (bfd_byte *) allocated; + native_relocs = allocated; entsize = rel_hdr->sh_entsize; BFD_ASSERT (entsize == sizeof (Elf64_Mips_External_Rel) || entsize == sizeof (Elf64_Mips_External_Rela)); if (entsize == sizeof (Elf64_Mips_External_Rel)) - howto_table = mips_elf64_howto_table_rel; + rela_p = FALSE; else - howto_table = mips_elf64_howto_table_rela; + rela_p = TRUE; for (i = 0, relent = relents; i < reloc_count; @@ -2312,7 +2148,7 @@ mips_elf64_slurp_one_reloc_table (abfd, relent->addend = rela.r_addend; - relent->howto = &howto_table[(int) type]; + relent->howto = mips_elf64_rtype_to_howto (type, rela_p); ++relent; } @@ -2338,11 +2174,8 @@ mips_elf64_slurp_one_reloc_table (abfd, zero before processing the relocs of a section. */ static bfd_boolean -mips_elf64_slurp_reloc_table (abfd, asect, symbols, dynamic) - bfd *abfd; - asection *asect; - asymbol **symbols; - bfd_boolean dynamic; +mips_elf64_slurp_reloc_table (bfd *abfd, asection *asect, + asymbol **symbols, bfd_boolean dynamic) { struct bfd_elf_section_data * const d = elf_section_data (asect); Elf_Internal_Shdr *rel_hdr; @@ -2388,7 +2221,7 @@ mips_elf64_slurp_reloc_table (abfd, asec /* Allocate space for 3 arelent structures for each Rel structure. */ amt = (reloc_count + reloc_count2) * 3 * sizeof (arelent); - relents = (arelent *) bfd_alloc (abfd, amt); + relents = bfd_alloc (abfd, amt); if (relents == NULL) return FALSE; @@ -2416,12 +2249,9 @@ mips_elf64_slurp_reloc_table (abfd, asec /* Write out the relocations. */ static void -mips_elf64_write_relocs (abfd, sec, data) - bfd *abfd; - asection *sec; - PTR data; +mips_elf64_write_relocs (bfd *abfd, asection *sec, void *data) { - bfd_boolean *failedp = (bfd_boolean *) data; + bfd_boolean *failedp = data; int count; Elf_Internal_Shdr *rel_hdr; unsigned int idx; @@ -2482,21 +2312,18 @@ mips_elf64_write_relocs (abfd, sec, data } static void -mips_elf64_write_rel (abfd, sec, rel_hdr, count, data) - bfd *abfd; - asection *sec; - Elf_Internal_Shdr *rel_hdr; - int *count; - PTR data; +mips_elf64_write_rel (bfd *abfd, asection *sec, + Elf_Internal_Shdr *rel_hdr, + int *count, void *data) { - bfd_boolean *failedp = (bfd_boolean *) data; + bfd_boolean *failedp = data; Elf64_Mips_External_Rel *ext_rel; unsigned int idx; asymbol *last_sym = 0; int last_sym_idx = 0; - rel_hdr->sh_size = (bfd_vma)(rel_hdr->sh_entsize * *count); - rel_hdr->contents = (PTR) bfd_alloc (abfd, rel_hdr->sh_size); + rel_hdr->sh_size = rel_hdr->sh_entsize * *count; + rel_hdr->contents = bfd_alloc (abfd, rel_hdr->sh_size); if (rel_hdr->contents == NULL) { *failedp = TRUE; @@ -2581,21 +2408,18 @@ mips_elf64_write_rel (abfd, sec, rel_hdr } static void -mips_elf64_write_rela (abfd, sec, rela_hdr, count, data) - bfd *abfd; - asection *sec; - Elf_Internal_Shdr *rela_hdr; - int *count; - PTR data; +mips_elf64_write_rela (bfd *abfd, asection *sec, + Elf_Internal_Shdr *rela_hdr, + int *count, void *data) { - bfd_boolean *failedp = (bfd_boolean *) data; + bfd_boolean *failedp = data; Elf64_Mips_External_Rela *ext_rela; unsigned int idx; asymbol *last_sym = 0; int last_sym_idx = 0; - rela_hdr->sh_size = (bfd_vma)(rela_hdr->sh_entsize * *count); - rela_hdr->contents = (PTR) bfd_alloc (abfd, rela_hdr->sh_size); + rela_hdr->sh_size = rela_hdr->sh_entsize * *count; + rela_hdr->contents = bfd_alloc (abfd, rela_hdr->sh_size); if (rela_hdr->contents == NULL) { *failedp = TRUE; @@ -2683,8 +2507,7 @@ mips_elf64_write_rela (abfd, sec, rela_h /* Set the right machine number for a MIPS ELF file. */ static bfd_boolean -mips_elf64_object_p (abfd) - bfd *abfd; +mips_elf64_object_p (bfd *abfd) { unsigned long mach; @@ -2702,8 +2525,7 @@ mips_elf64_object_p (abfd) /* Depending on the target vector we generate some version of Irix executables or "normal" MIPS ELF ABI executables. */ static irix_compat_t -elf64_mips_irix_compat (abfd) - bfd *abfd; +elf64_mips_irix_compat (bfd *abfd) { if ((abfd->xvec == &bfd_elf64_bigmips_vec) || (abfd->xvec == &bfd_elf64_littlemips_vec)) @@ -2714,9 +2536,7 @@ elf64_mips_irix_compat (abfd) /* Support for core dump NOTE sections. */ static bfd_boolean -elf64_mips_grok_prstatus (abfd, note) - bfd *abfd; - Elf_Internal_Note *note; +elf64_mips_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) { int offset; unsigned int raw_size; @@ -2746,9 +2566,7 @@ elf64_mips_grok_prstatus (abfd, note) } static bfd_boolean -elf64_mips_grok_psinfo (abfd, note) - bfd *abfd; - Elf_Internal_Note *note; +elf64_mips_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) { switch (note->descsz) { @@ -2858,11 +2676,6 @@ const struct elf_size_info mips_elf64_si #define ELF_ARCH bfd_arch_mips #define ELF_MACHINE_CODE EM_MIPS -/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses - a value of 0x1000, and we are compatible. - FIXME: How does this affect NewABI? */ -#define ELF_MAXPAGESIZE 0x1000 - #define elf_backend_collect TRUE #define elf_backend_type_change_ok TRUE #define elf_backend_can_gc_sections TRUE @@ -2913,7 +2726,6 @@ const struct elf_size_info mips_elf64_si #define elf_backend_grok_psinfo elf64_mips_grok_psinfo #define elf_backend_got_header_size (4 * MIPS_RESERVED_GOTNO) -#define elf_backend_plt_header_size 0 /* MIPS ELF64 can use a mixture of REL and RELA, but some Relocations work better/work only in RELA, so we default to this. */ @@ -2949,9 +2761,9 @@ const struct elf_size_info mips_elf64_si /* MIPS ELF64 archive functions. */ #define bfd_elf64_archive_functions extern bfd_boolean bfd_elf64_archive_slurp_armap - PARAMS ((bfd *)); + (bfd *); extern bfd_boolean bfd_elf64_archive_write_armap - PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int)); + (bfd *, unsigned int, struct orl *, unsigned int, int); #define bfd_elf64_archive_slurp_extended_name_table \ _bfd_archive_coff_slurp_extended_name_table #define bfd_elf64_archive_construct_extended_name_table \ @@ -2974,9 +2786,12 @@ extern bfd_boolean bfd_elf64_archive_wri #define TARGET_BIG_SYM bfd_elf64_bigmips_vec #define TARGET_BIG_NAME "elf64-bigmips" -#include "elf64-target.h" +/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses + a value of 0x1000, and we are compatible. + FIXME: How does this affect NewABI? */ +#define ELF_MAXPAGESIZE 0x1000 -#define INCLUDED_TARGET_FILE /* More a type of flag. */ +#include "elf64-target.h" /* The SYSV-style 'traditional' (n)64 NewABI. */ #undef TARGET_LITTLE_SYM @@ -2984,10 +2799,17 @@ extern bfd_boolean bfd_elf64_archive_wri #undef TARGET_BIG_SYM #undef TARGET_BIG_NAME +#undef ELF_MAXPAGESIZE + #define TARGET_LITTLE_SYM bfd_elf64_tradlittlemips_vec #define TARGET_LITTLE_NAME "elf64-tradlittlemips" #define TARGET_BIG_SYM bfd_elf64_tradbigmips_vec #define TARGET_BIG_NAME "elf64-tradbigmips" +/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses + page sizes of up to that limit, so we need to respect it. */ +#define ELF_MAXPAGESIZE 0x10000 +#define elf64_bed elf64_tradbed + /* Include the target file again for this target. */ #include "elf64-target.h" diff -uprN binutils-2.14.90.0.7/bfd/elf64-mmix.c binutils-2.14.90.0.8/bfd/elf64-mmix.c --- binutils-2.14.90.0.7/bfd/elf64-mmix.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf64-mmix.c 2004-01-14 13:07:43.000000000 -0800 @@ -157,8 +157,8 @@ struct bpo_greg_section_info }; static bfd_boolean mmix_elf_link_output_symbol_hook - PARAMS ((bfd *, struct bfd_link_info *, const char *, - Elf_Internal_Sym *, asection *)); + PARAMS ((struct bfd_link_info *, const char *, Elf_Internal_Sym *, + asection *, struct elf_link_hash_entry *)); static bfd_reloc_status_type mmix_elf_reloc PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); @@ -1280,7 +1280,7 @@ mmix_elf_reloc (abfd, reloc_entry, symbo if (reloc_entry->address > input_section->_cooked_size) return bfd_reloc_outofrange; - /* Work out which section the relocation is targetted at and the + /* Work out which section the relocation is targeted at and the initial relocation command value. */ /* Get symbol value. (Common symbols are special.) */ @@ -1472,7 +1472,7 @@ mmix_elf_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); @@ -2113,12 +2113,12 @@ _bfd_mmix_check_all_relocs (abfd, info) number. */ static bfd_boolean -mmix_elf_link_output_symbol_hook (abfd, info, name, sym, input_sec) - bfd *abfd ATTRIBUTE_UNUSED; +mmix_elf_link_output_symbol_hook (info, name, sym, input_sec, h) struct bfd_link_info *info ATTRIBUTE_UNUSED; const char *name ATTRIBUTE_UNUSED; Elf_Internal_Sym *sym; asection *input_sec; + struct elf_link_hash_entry *h ATTRIBUTE_UNUSED; { if (input_sec != NULL && input_sec->name != NULL diff -uprN binutils-2.14.90.0.7/bfd/elf64-ppc.c binutils-2.14.90.0.8/bfd/elf64-ppc.c --- binutils-2.14.90.0.7/bfd/elf64-ppc.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf64-ppc.c 2004-01-14 13:07:43.000000000 -0800 @@ -65,7 +65,6 @@ static bfd_reloc_status_type ppc64_elf_u #define elf_backend_plt_not_loaded 1 #define elf_backend_got_symbol_offset 0 #define elf_backend_got_header_size 8 -#define elf_backend_plt_header_size PLT_INITIAL_ENTRY_SIZE #define elf_backend_can_gc_sections 1 #define elf_backend_can_refcount 1 #define elf_backend_rela_normal 1 @@ -93,6 +92,7 @@ static bfd_reloc_status_type ppc64_elf_u #define elf_backend_finish_dynamic_symbol ppc64_elf_finish_dynamic_symbol #define elf_backend_reloc_type_class ppc64_elf_reloc_type_class #define elf_backend_finish_dynamic_sections ppc64_elf_finish_dynamic_sections +#define elf_backend_link_output_symbol_hook ppc64_elf_output_symbol_hook #define elf_backend_special_sections ppc64_elf_special_sections /* The name of the dynamic interpreter. This is put in the .interp @@ -2642,7 +2642,7 @@ struct plt_entry pointers must reference the descriptor. Thus, a function pointer initialized to the address of a function in a shared library will either require a copy reloc, or a dynamic reloc. Using a copy reloc - redefines the function desctriptor symbol to point to the copy. This + redefines the function descriptor symbol to point to the copy. This presents a problem as a plt entry for that function is also initialized from the function descriptor symbol and the copy reloc may not be initialized first. */ @@ -2763,6 +2763,9 @@ struct ppc_link_hash_entry unsigned int is_func_descriptor:1; unsigned int is_entry:1; + /* Whether global opd sym has been adjusted or not. */ + unsigned int adjust_done:1; + /* Contexts in which symbol is used in the GOT (or TOC). TLS_GD .. TLS_EXPLICIT bits are or'd into the mask as the corresponding relocs are encountered during check_relocs. @@ -2838,9 +2841,6 @@ struct ppc_link_hash_table asection *brlt; asection *relbrlt; - /* Short-cut to first output tls section. */ - asection *tls_sec; - /* Shortcut to .__tls_get_addr. */ struct elf_link_hash_entry *tls_get_addr; @@ -2975,6 +2975,7 @@ link_hash_newfunc (struct bfd_hash_entry eh->is_func = 0; eh->is_func_descriptor = 0; eh->is_entry = 0; + eh->adjust_done = 0; eh->tls_mask = 0; } @@ -3363,7 +3364,8 @@ ppc64_elf_copy_indirect_symbol edir->tls_mask |= eind->tls_mask; mask = (ELF_LINK_HASH_REF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR - | ELF_LINK_HASH_REF_REGULAR_NONWEAK | ELF_LINK_NON_GOT_REF); + | ELF_LINK_HASH_REF_REGULAR_NONWEAK | ELF_LINK_NON_GOT_REF + | ELF_LINK_HASH_NEEDS_PLT); /* If called to transfer flags for a weakdef during processing of elf_adjust_dynamic_symbol, don't copy ELF_LINK_NON_GOT_REF. We clear it ourselves for ELIMINATE_COPY_RELOCS. */ @@ -3588,6 +3590,15 @@ ppc64_elf_check_relocs (bfd *abfd, struc if (info->relocatable) return TRUE; + /* Don't do anything special with non-loaded, non-alloced sections. + In particular, any relocs in such sections should not affect GOT + and PLT reference counting (ie. we don't allow them to create GOT + or PLT entries), there's no possibility or desire to optimize TLS + relocs, and there's not much point in propagating relocs to shared + libs that the dynamic linker won't relocate. */ + if ((sec->flags & SEC_ALLOC) == 0) + return TRUE; + htab = ppc_hash_table (info); symtab_hdr = &elf_tdata (abfd)->symtab_hdr; @@ -3945,10 +3956,6 @@ ppc64_elf_check_relocs (bfd *abfd, struc if (NO_OPD_RELOCS && opd_sym_map != NULL) break; - /* Don't propagate relocs that the dynamic linker won't relocate. */ - if ((sec->flags & SEC_ALLOC) == 0) - break; - /* If we are creating a shared library, and this is a reloc against a global symbol, or a non PC relative reloc against a local symbol, then we need to copy the reloc @@ -4164,6 +4171,9 @@ ppc64_elf_gc_sweep_hook (bfd *abfd, stru struct got_entry **local_got_ents; const Elf_Internal_Rela *rel, *relend; + if ((sec->flags & SEC_ALLOC) == 0) + return TRUE; + elf_section_data (sec)->local_dynrel = NULL; htab = ppc_hash_table (info); @@ -4878,10 +4888,53 @@ get_tls_mask (char **tls_maskp, unsigned return 1; } +/* Adjust all global syms defined in opd sections. In gcc generated + code these will already have been done, but I suppose we have to + cater for all sorts of hand written assembly. */ + +static bfd_boolean +adjust_opd_syms (struct elf_link_hash_entry *h, void *inf ATTRIBUTE_UNUSED) +{ + struct ppc_link_hash_entry *eh; + asection *sym_sec; + long *opd_adjust; + + if (h->root.type == bfd_link_hash_indirect) + return TRUE; + + if (h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + if (h->root.type != bfd_link_hash_defined + && h->root.type != bfd_link_hash_defweak) + return TRUE; + + eh = (struct ppc_link_hash_entry *) h; + if (eh->adjust_done) + return TRUE; + + sym_sec = eh->elf.root.u.def.section; + if (sym_sec != NULL + && elf_section_data (sym_sec) != NULL + && (opd_adjust = ppc64_elf_section_data (sym_sec)->opd.adjust) != NULL) + { + eh->elf.root.u.def.value += opd_adjust[eh->elf.root.u.def.value / 24]; + eh->adjust_done = 1; + } + return TRUE; +} + +/* Remove unused Official Procedure Descriptor entries. Currently we + only remove those associated with functions in discarded link-once + sections, or weakly defined functions that have been overridden. It + would be possible to remove many more entries for statically linked + applications. */ + bfd_boolean ppc64_elf_edit_opd (bfd *obfd, struct bfd_link_info *info) { bfd *ibfd; + bfd_boolean some_edited = FALSE; for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) { @@ -5082,23 +5135,25 @@ ppc64_elf_edit_opd (bfd *obfd, struct bf if (h != NULL) { - /* Redefine the function descriptor symbol - to this location in the opd section. - We've checked above that opd relocs are - ordered. */ + /* Redefine the function descriptor symbol to + this location in the opd section. It is + necessary to update the value here rather + than using an array of adjustments as we do + for local symbols, because various places + in the generic ELF code use the value + stored in u.def.value. */ fdh->elf.root.u.def.value = wptr - sec->contents; - } - else - { - /* Local syms are a bit tricky. We could - tweak them as they can be cached, but - we'd need to look through the local syms - for the function descriptor sym which we - don't have at the moment. So keep an - array of adjustments. */ - adjust[rel->r_offset / 24] = wptr - rptr; + fdh->adjust_done = 1; } + /* Local syms are a bit tricky. We could + tweak them as they can be cached, but + we'd need to look through the local syms + for the function descriptor sym which we + don't have at the moment. So keep an + array of adjustments. */ + adjust[rel->r_offset / 24] = wptr - rptr; + if (wptr != rptr) memcpy (wptr, rptr, 24); wptr += 24; @@ -5156,6 +5211,7 @@ ppc64_elf_edit_opd (bfd *obfd, struct bf elf_section_data (sec)->rel_hdr.sh_size = sec->reloc_count * elf_section_data (sec)->rel_hdr.sh_entsize; BFD_ASSERT (elf_section_data (sec)->rel_hdr2 == NULL); + some_edited = TRUE; } else if (elf_section_data (sec)->relocs != relstart) free (relstart); @@ -5170,25 +5226,20 @@ ppc64_elf_edit_opd (bfd *obfd, struct bf } } + if (some_edited) + elf_link_hash_traverse (elf_hash_table (info), adjust_opd_syms, NULL); + return TRUE; } -/* Set htab->tls_sec. */ +/* Set htab->tls_get_addr and call the generic ELF tls_setup function. */ -bfd_boolean +asection * ppc64_elf_tls_setup (bfd *obfd, struct bfd_link_info *info) { - asection *tls; struct ppc_link_hash_table *htab; - for (tls = obfd->sections; tls != NULL; tls = tls->next) - if ((tls->flags & (SEC_THREAD_LOCAL | SEC_LOAD)) - == (SEC_THREAD_LOCAL | SEC_LOAD)) - break; - htab = ppc_hash_table (info); - htab->tls_sec = tls; - if (htab->tls_get_addr != NULL) { struct elf_link_hash_entry *h = htab->tls_get_addr; @@ -5200,7 +5251,7 @@ ppc64_elf_tls_setup (bfd *obfd, struct b htab->tls_get_addr = h; } - return tls != NULL; + return _bfd_elf_tls_setup (obfd, info); } /* Run through all the TLS relocs looking for optimization @@ -5273,7 +5324,17 @@ ppc64_elf_tls_optimize (bfd *obfd ATTRIB value = h->root.u.def.value; } else - value = sym->st_value; + { + value = sym->st_value; + + if (elf_section_data (sym_sec) != NULL) + { + long *adjust; + adjust = ppc64_elf_section_data (sym_sec)->opd.adjust; + if (adjust != NULL) + value += adjust[value / 24]; + } + } ok_tprel = FALSE; is_local = FALSE; @@ -5283,7 +5344,7 @@ ppc64_elf_tls_optimize (bfd *obfd ATTRIB is_local = TRUE; value += sym_sec->output_offset; value += sym_sec->output_section->vma; - value -= htab->tls_sec->vma; + value -= htab->elf.tls_sec->vma; ok_tprel = (value + TP_OFFSET + ((bfd_vma) 1 << 31) < (bfd_vma) 1 << 32); } @@ -5948,7 +6009,7 @@ ppc64_elf_size_dynamic_sections (bfd *ou } /* .plt is in the bss section. We don't initialise it. */ - if ((s->flags & SEC_LOAD) == 0) + if (s == htab->plt) continue; /* Allocate memory for the section contents. We use bfd_zalloc @@ -6081,8 +6142,9 @@ ppc_type_of_stub (asection *input_sec, } } - if (h->elf.root.type != bfd_link_hash_defined - && h->elf.root.type != bfd_link_hash_defweak) + if (!(h->elf.root.type == bfd_link_hash_defined + || h->elf.root.type == bfd_link_hash_defweak) + || h->elf.root.u.def.section->output_section == NULL) return ppc_stub_none; } @@ -6366,13 +6428,16 @@ static bfd_boolean ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) { struct ppc_stub_hash_entry *stub_entry; + struct bfd_link_info *info; struct ppc_link_hash_table *htab; bfd_vma off; int size; /* Massage our args to the form they really have. */ stub_entry = (struct ppc_stub_hash_entry *) gen_entry; - htab = in_arg; + info = in_arg; + + htab = ppc_hash_table (info); if (stub_entry->stub_type == ppc_stub_plt_call) { @@ -6439,6 +6504,9 @@ ppc_size_one_stub (struct bfd_hash_entry br_entry->iter = htab->stub_iteration; br_entry->offset = htab->brlt->_raw_size; htab->brlt->_raw_size += 8; + + if (info->shared) + htab->relbrlt->_raw_size += sizeof (Elf64_External_Rela); } stub_entry->stub_type += ppc_stub_plt_branch - ppc_stub_long_branch; @@ -6571,6 +6639,9 @@ toc_adjusting_stub_needed (struct bfd_li if ((isec->flags & SEC_LINKER_CREATED) != 0) return 0; + if (isec->_raw_size == 0) + return 0; + /* Hack for linux kernel. .fixup contains branches, but only back to the function that hit an exception. */ branch_ok = strcmp (isec->name, ".fixup") == 0; @@ -7019,8 +7090,13 @@ ppc64_elf_size_stubs (bfd *output_bfd, } htab->brlt->_raw_size = 0; htab->brlt->_cooked_size = 0; + if (info->shared) + { + htab->relbrlt->_raw_size = 0; + htab->relbrlt->_cooked_size = 0; + } - bfd_hash_traverse (&htab->stub_hash_table, ppc_size_one_stub, htab); + bfd_hash_traverse (&htab->stub_hash_table, ppc_size_one_stub, info); /* Ask the linker to do its stuff. */ (*htab->layout_sections_again) (); @@ -7223,6 +7299,13 @@ ppc64_elf_build_stubs (bfd_boolean emit_ if (htab->brlt->contents == NULL) return FALSE; } + if (info->shared && htab->relbrlt->_raw_size != 0) + { + htab->relbrlt->contents = bfd_zalloc (htab->relbrlt->owner, + htab->relbrlt->_raw_size); + if (htab->relbrlt->contents == NULL) + return FALSE; + } /* Build the stubs as directed by the stub hash table. */ bfd_hash_traverse (&htab->stub_hash_table, ppc_build_one_stub, info); @@ -7385,13 +7468,13 @@ ppc64_elf_relocate_section (bfd *output_ sec = local_sections[r_symndx]; sym_name = bfd_elf_local_sym_name (input_bfd, sym); sym_type = ELF64_ST_TYPE (sym->st_info); - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); if (elf_section_data (sec) != NULL) { long *opd_sym_adjust; opd_sym_adjust = ppc64_elf_section_data (sec)->opd.adjust; - if (opd_sym_adjust != NULL && sym->st_value % 24 == 0) + if (opd_sym_adjust != NULL) relocation += opd_sym_adjust[sym->st_value / 24]; } } @@ -7691,8 +7774,8 @@ ppc64_elf_relocate_section (bfd *output_ { /* Was an LD reloc. */ r_symndx = 0; - rel->r_addend = htab->tls_sec->vma + DTP_OFFSET; - rel[1].r_addend = htab->tls_sec->vma + DTP_OFFSET; + rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; + rel[1].r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; } else if (toc_symndx != 0) r_symndx = toc_symndx; @@ -8097,7 +8180,7 @@ ppc64_elf_relocate_section (bfd *output_ { outrel.r_addend += relocation; if (tls_type & (TLS_GD | TLS_DTPREL | TLS_TPREL)) - outrel.r_addend -= htab->tls_sec->vma; + outrel.r_addend -= htab->elf.tls_sec->vma; } loc = relgot->contents; loc += (relgot->reloc_count++ @@ -8114,7 +8197,7 @@ ppc64_elf_relocate_section (bfd *output_ relocation = 1; else if (tls_type != 0) { - relocation -= htab->tls_sec->vma + DTP_OFFSET; + relocation -= htab->elf.tls_sec->vma + DTP_OFFSET; if (tls_type == (TLS_TLS | TLS_TPREL)) relocation += DTP_OFFSET - TP_OFFSET; @@ -8178,7 +8261,9 @@ ppc64_elf_relocate_section (bfd *output_ relocation = TOCstart; if (r_symndx == 0) relocation += htab->stub_group[input_section->id].toc_off; - else if (sec != NULL && !unresolved_reloc) + else if (unresolved_reloc) + ; + else if (sec != NULL && sec->id <= htab->top_id) relocation += htab->stub_group[sec->id].toc_off; else unresolved_reloc = TRUE; @@ -8224,7 +8309,7 @@ ppc64_elf_relocate_section (bfd *output_ case R_PPC64_TPREL16_HIGHERA: case R_PPC64_TPREL16_HIGHEST: case R_PPC64_TPREL16_HIGHESTA: - addend -= htab->tls_sec->vma + TP_OFFSET; + addend -= htab->elf.tls_sec->vma + TP_OFFSET; if (info->shared) /* The TPREL16 relocs shouldn't really be used in shared libs as they will result in DT_TEXTREL being set, but @@ -8242,7 +8327,7 @@ ppc64_elf_relocate_section (bfd *output_ case R_PPC64_DTPREL16_HIGHERA: case R_PPC64_DTPREL16_HIGHEST: case R_PPC64_DTPREL16_HIGHESTA: - addend -= htab->tls_sec->vma + DTP_OFFSET; + addend -= htab->elf.tls_sec->vma + DTP_OFFSET; break; case R_PPC64_DTPMOD64: @@ -8251,11 +8336,11 @@ ppc64_elf_relocate_section (bfd *output_ goto dodyn; case R_PPC64_TPREL64: - addend -= htab->tls_sec->vma + TP_OFFSET; + addend -= htab->elf.tls_sec->vma + TP_OFFSET; goto dodyn; case R_PPC64_DTPREL64: - addend -= htab->tls_sec->vma + DTP_OFFSET; + addend -= htab->elf.tls_sec->vma + DTP_OFFSET; /* Fall thru */ /* Relocations that may need to be propagated if this is a @@ -8660,6 +8745,32 @@ ppc64_elf_relocate_section (bfd *output_ return ret; } +/* Adjust the value of any local symbols in opd sections. */ + +static bfd_boolean +ppc64_elf_output_symbol_hook (struct bfd_link_info *info, + const char *name ATTRIBUTE_UNUSED, + Elf_Internal_Sym *elfsym, + asection *input_sec, + struct elf_link_hash_entry *h) +{ + long *adjust; + bfd_vma value; + + if (h != NULL + || input_sec == NULL + || ppc64_elf_section_data (input_sec) == NULL + || (adjust = ppc64_elf_section_data (input_sec)->opd.adjust) == NULL) + return TRUE; + + value = elfsym->st_value - input_sec->output_offset; + if (!info->relocatable) + value -= input_sec->output_section->vma; + + elfsym->st_value += adjust[value / 24]; + return TRUE; +} + /* Finish up dynamic symbol handling. We set the contents of various dynamic sections here. */ diff -uprN binutils-2.14.90.0.7/bfd/elf64-ppc.h binutils-2.14.90.0.8/bfd/elf64-ppc.h --- binutils-2.14.90.0.7/bfd/elf64-ppc.h 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf64-ppc.h 2004-01-14 13:07:43.000000000 -0800 @@ -23,7 +23,7 @@ bfd_boolean ppc64_elf_mark_entry_syms (struct bfd_link_info *); bfd_boolean ppc64_elf_edit_opd (bfd *, struct bfd_link_info *); -bfd_boolean ppc64_elf_tls_setup +asection *ppc64_elf_tls_setup (bfd *, struct bfd_link_info *); bfd_boolean ppc64_elf_tls_optimize (bfd *, struct bfd_link_info *); diff -uprN binutils-2.14.90.0.7/bfd/elf64-s390.c binutils-2.14.90.0.8/bfd/elf64-s390.c --- binutils-2.14.90.0.7/bfd/elf64-s390.c 2003-08-21 08:28:48.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf64-s390.c 2004-01-14 13:07:43.000000000 -0800 @@ -638,14 +638,6 @@ static bfd_boolean elf_s390_object_p (abfd) bfd *abfd; { - /* Allocate our special target data. */ - struct elf_s390_obj_tdata *new_tdata; - bfd_size_type amt = sizeof (struct elf_s390_obj_tdata); - new_tdata = bfd_zalloc (abfd, amt); - if (new_tdata == NULL) - return FALSE; - new_tdata->root = *abfd->tdata.elf_obj_data; - abfd->tdata.any = new_tdata; /* Set the right machine number for an s390 elf32 file. */ return bfd_default_set_arch_mach (abfd, bfd_arch_s390, bfd_mach_s390_64); } @@ -867,7 +859,8 @@ elf_s390_copy_indirect_symbol (bed, dir, dir->elf_link_hash_flags |= (ind->elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR - | ELF_LINK_HASH_REF_REGULAR_NONWEAK)); + | ELF_LINK_HASH_REF_REGULAR_NONWEAK + | ELF_LINK_HASH_NEEDS_PLT)); else _bfd_elf_link_hash_copy_indirect (bed, dir, ind); } @@ -2186,10 +2179,10 @@ static bfd_vma dtpoff_base (info) struct bfd_link_info *info; { - /* If tls_segment is NULL, we should have signalled an error already. */ - if (elf_hash_table (info)->tls_segment == NULL) + /* If tls_sec is NULL, we should have signalled an error already. */ + if (elf_hash_table (info)->tls_sec == NULL) return 0; - return elf_hash_table (info)->tls_segment->start; + return elf_hash_table (info)->tls_sec->vma; } /* Return the relocation value for @tpoff relocation @@ -2200,14 +2193,12 @@ tpoff (info, address) struct bfd_link_info *info; bfd_vma address; { - struct elf_link_tls_segment *tls_segment - = elf_hash_table (info)->tls_segment; + struct elf_link_hash_table *htab = elf_hash_table (info); - /* If tls_segment is NULL, we should have signalled an error already. */ - if (tls_segment == NULL) + /* If tls_sec is NULL, we should have signalled an error already. */ + if (htab->tls_sec == NULL) return 0; - return (align_power (tls_segment->size, tls_segment->align) - + tls_segment->start - address); + return htab->tls_size + htab->tls_sec->vma - address; } /* Complain if TLS instruction relocation is against an invalid @@ -2297,7 +2288,7 @@ elf_s390_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -2607,9 +2598,41 @@ elf_s390_relocate_section (output_bfd, i else { /* This symbol is local, or marked to become local. */ - relocate = TRUE; - outrel.r_info = ELF64_R_INFO (0, R_390_RELATIVE); outrel.r_addend = relocation + rel->r_addend; + if (r_type == R_390_64) + { + relocate = TRUE; + outrel.r_info = ELF64_R_INFO (0, R_390_RELATIVE); + } + else + { + long sindx; + + if (bfd_is_abs_section (sec)) + sindx = 0; + else if (sec == NULL || sec->owner == NULL) + { + bfd_set_error(bfd_error_bad_value); + return FALSE; + } + else + { + asection *osec; + + osec = sec->output_section; + sindx = elf_section_data (osec)->dynindx; + BFD_ASSERT (sindx > 0); + + /* We are turning this relocation into one + against a section symbol, so subtract out + the output section's address but not the + offset of the input section in the output + section. */ + + outrel.r_addend -= osec->vma; + } + outrel.r_info = ELF64_R_INFO (sindx, r_type); + } } sreloc = elf_section_data (input_section)->sreloc; @@ -3411,7 +3434,6 @@ const struct elf_size_info s390_elf64_si #define elf_backend_plt_readonly 1 #define elf_backend_want_plt_sym 0 #define elf_backend_got_header_size 24 -#define elf_backend_plt_header_size PLT_ENTRY_SIZE #define elf_backend_rela_normal 1 #define elf_info_to_howto elf_s390_info_to_howto diff -uprN binutils-2.14.90.0.7/bfd/elf64-sh64.c binutils-2.14.90.0.8/bfd/elf64-sh64.c --- binutils-2.14.90.0.7/bfd/elf64-sh64.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elf64-sh64.c 2004-01-14 13:07:43.000000000 -0800 @@ -144,8 +144,8 @@ static bfd_boolean sh64_elf64_add_symbol (bfd *, struct bfd_link_info *, const Elf_Internal_Sym *, const char **, flagword *, asection **, bfd_vma *); static bfd_boolean sh64_elf64_link_output_symbol_hook - (bfd *, struct bfd_link_info *, const char *, Elf_Internal_Sym *, - asection *); + (struct bfd_link_info *, const char *, Elf_Internal_Sym *, asection *, + struct elf_link_hash_entry *); static bfd_boolean sh64_elf64_fake_sections (bfd *, Elf_Internal_Shdr *, asection *); static void sh64_elf64_final_write_processing @@ -1582,7 +1582,7 @@ sh_elf64_relocate_section (bfd *output_b } else if (! howto->partial_inplace) { - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); relocation |= ((sym->st_other & STO_SH5_ISA32) != 0); } else if ((sec->flags & SEC_MERGE) @@ -2892,7 +2892,7 @@ sh64_elf64_add_symbol_hook (bfd *abfd, s { /* We want to do this for relocatable as well as final linking. */ if (ELF_ST_TYPE (sym->st_info) == STT_DATALABEL - && info->hash->creator->flavour == bfd_target_elf_flavour) + && is_elf_hash_table (info->hash)) { struct elf_link_hash_entry *h; @@ -2982,11 +2982,11 @@ sh64_elf64_add_symbol_hook (bfd *abfd, s DataLabel symbol. */ static bfd_boolean -sh64_elf64_link_output_symbol_hook (bfd *abfd ATTRIBUTE_UNUSED, - struct bfd_link_info *info, +sh64_elf64_link_output_symbol_hook (struct bfd_link_info *info, const char *cname, Elf_Internal_Sym *sym, - asection *input_sec ATTRIBUTE_UNUSED) + asection *input_sec ATTRIBUTE_UNUSED, + struct elf_link_hash_entry *h ATTRIBUTE_UNUSED) { char *name = (char *) cname; @@ -4209,7 +4209,6 @@ static struct bfd_elf_special_section co #define elf_backend_plt_readonly 1 #define elf_backend_want_plt_sym 0 #define elf_backend_got_header_size 24 -#define elf_backend_plt_header_size PLT_ENTRY_SIZE #include "elf64-target.h" diff -uprN binutils-2.14.90.0.7/bfd/elf64-sparc.c binutils-2.14.90.0.8/bfd/elf64-sparc.c --- binutils-2.14.90.0.7/bfd/elf64-sparc.c 2003-08-21 08:28:48.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf64-sparc.c 2004-01-14 13:07:43.000000000 -0800 @@ -65,7 +65,8 @@ static bfd_boolean sparc64_elf_add_symbo const char **, flagword *, asection **, bfd_vma *)); static bfd_boolean sparc64_elf_output_arch_syms PARAMS ((bfd *, struct bfd_link_info *, PTR, - bfd_boolean (*) (PTR, const char *, Elf_Internal_Sym *, asection *))); + bfd_boolean (*) (PTR, const char *, Elf_Internal_Sym *, + asection *, struct elf_link_hash_entry *))); static void sparc64_elf_symbol_processing PARAMS ((bfd *, asymbol *)); @@ -1502,7 +1503,7 @@ sparc64_elf_add_symbol_hook (abfd, info, return TRUE; } -/* This function takes care of emiting STT_REGISTER symbols +/* This function takes care of emitting STT_REGISTER symbols which we cannot easily keep in the symbol hash table. */ static bfd_boolean @@ -1511,7 +1512,8 @@ sparc64_elf_output_arch_syms (output_bfd struct bfd_link_info *info; PTR finfo; bfd_boolean (*func) - PARAMS ((PTR, const char *, Elf_Internal_Sym *, asection *)); + PARAMS ((PTR, const char *, Elf_Internal_Sym *, asection *, + struct elf_link_hash_entry *)); { int reg; struct sparc64_elf_app_reg *app_regs = @@ -1557,7 +1559,8 @@ sparc64_elf_output_arch_syms (output_bfd sym.st_shndx = app_regs [reg].shndx; if (! (*func) (finfo, app_regs [reg].name, &sym, sym.st_shndx == SHN_ABS - ? bfd_abs_section_ptr : bfd_und_section_ptr)) + ? bfd_abs_section_ptr : bfd_und_section_ptr, + NULL)) return FALSE; } @@ -2070,7 +2073,7 @@ sparc64_elf_relocate_section (output_bfd { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -2247,16 +2250,8 @@ sparc64_elf_relocate_section (output_bfd if (is_plt) sec = splt; - else if (h == NULL) - sec = local_sections[r_symndx]; - else - { - BFD_ASSERT (h->root.type == bfd_link_hash_defined - || (h->root.type - == bfd_link_hash_defweak)); - sec = h->root.u.def.section; - } - if (sec != NULL && bfd_is_abs_section (sec)) + + if (bfd_is_abs_section (sec)) indx = 0; else if (sec == NULL || sec->owner == NULL) { @@ -3236,6 +3231,5 @@ const struct elf_size_info sparc64_elf_s #define elf_backend_plt_alignment 8 #define elf_backend_got_header_size 8 -#define elf_backend_plt_header_size PLT_HEADER_SIZE #include "elf64-target.h" diff -uprN binutils-2.14.90.0.7/bfd/elf64-x86-64.c binutils-2.14.90.0.8/bfd/elf64-x86-64.c --- binutils-2.14.90.0.7/bfd/elf64-x86-64.c 2003-08-21 08:28:48.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elf64-x86-64.c 2004-01-14 13:07:43.000000000 -0800 @@ -560,7 +560,8 @@ elf64_x86_64_copy_indirect_symbol (const dir->elf_link_hash_flags |= (ind->elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR - | ELF_LINK_HASH_REF_REGULAR_NONWEAK)); + | ELF_LINK_HASH_REF_REGULAR_NONWEAK + | ELF_LINK_HASH_NEEDS_PLT)); else _bfd_elf_link_hash_copy_indirect (bed, dir, ind); } @@ -578,14 +579,6 @@ elf64_x86_64_mkobject (bfd *abfd) static bfd_boolean elf64_x86_64_elf_object_p (bfd *abfd) { - /* Allocate our special target data. */ - struct elf64_x86_64_obj_tdata *new_tdata; - bfd_size_type amt = sizeof (struct elf64_x86_64_obj_tdata); - new_tdata = bfd_zalloc (abfd, amt); - if (new_tdata == NULL) - return FALSE; - new_tdata->root = *abfd->tdata.elf_obj_data; - abfd->tdata.any = new_tdata; /* Set the right machine number for an x86-64 elf64 file. */ bfd_default_set_arch_mach (abfd, bfd_arch_i386, bfd_mach_x86_64); return TRUE; @@ -1739,10 +1732,10 @@ elf64_x86_64_size_dynamic_sections (bfd static bfd_vma dtpoff_base (struct bfd_link_info *info) { - /* If tls_segment is NULL, we should have signalled an error already. */ - if (elf_hash_table (info)->tls_segment == NULL) + /* If tls_sec is NULL, we should have signalled an error already. */ + if (elf_hash_table (info)->tls_sec == NULL) return 0; - return elf_hash_table (info)->tls_segment->start; + return elf_hash_table (info)->tls_sec->vma; } /* Return the relocation value for @tpoff relocation @@ -1751,14 +1744,12 @@ dtpoff_base (struct bfd_link_info *info) static bfd_vma tpoff (struct bfd_link_info *info, bfd_vma address) { - struct elf_link_tls_segment *tls_segment - = elf_hash_table (info)->tls_segment; + struct elf_link_hash_table *htab = elf_hash_table (info); /* If tls_segment is NULL, we should have signalled an error already. */ - if (tls_segment == NULL) + if (htab->tls_sec == NULL) return 0; - return address - align_power (tls_segment->size, tls_segment->align) - - tls_segment->start; + return address - htab->tls_size - htab->tls_sec->vma; } /* Relocate an x86_64 ELF section. */ @@ -1823,7 +1814,7 @@ elf64_x86_64_relocate_section (bfd *outp sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } else { @@ -2048,16 +2039,7 @@ elf64_x86_64_relocate_section (bfd *outp { long sindx; - if (h == NULL) - sec = local_sections[r_symndx]; - else - { - BFD_ASSERT (h->root.type == bfd_link_hash_defined - || (h->root.type - == bfd_link_hash_defweak)); - sec = h->root.u.def.section; - } - if (sec != NULL && bfd_is_abs_section (sec)) + if (bfd_is_abs_section (sec)) sindx = 0; else if (sec == NULL || sec->owner == NULL) { @@ -2792,7 +2774,6 @@ elf64_x86_64_finish_dynamic_sections (bf #define elf_backend_plt_readonly 1 #define elf_backend_want_plt_sym 0 #define elf_backend_got_header_size (GOT_ENTRY_SIZE*3) -#define elf_backend_plt_header_size PLT_ENTRY_SIZE #define elf_backend_rela_normal 1 #define elf_info_to_howto elf64_x86_64_info_to_howto diff -uprN binutils-2.14.90.0.7/bfd/elflink.c binutils-2.14.90.0.8/bfd/elflink.c --- binutils-2.14.90.0.7/bfd/elflink.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elflink.c 2004-01-14 13:07:43.000000000 -0800 @@ -117,7 +117,7 @@ _bfd_elf_link_create_dynamic_sections (b struct bfd_link_hash_entry *bh; const struct elf_backend_data *bed; - if (! is_elf_hash_table (info)) + if (! is_elf_hash_table (info->hash)) return FALSE; if (elf_hash_table (info)->dynamic_sections_created) @@ -144,8 +144,7 @@ _bfd_elf_link_create_dynamic_sections (b return FALSE; } - if (! info->traditional_format - && info->hash->creator->flavour == bfd_target_elf_flavour) + if (! info->traditional_format) { s = bfd_make_section (abfd, ".eh_frame_hdr"); if (s == NULL @@ -353,9 +352,8 @@ _bfd_elf_link_record_dynamic_symbol (str if (h->dynindx == -1) { struct elf_strtab_hash *dynstr; - char *p, *alc; + char *p; const char *name; - bfd_boolean copy; bfd_size_type indx; /* XXX: The ABI draft says the linker must turn hidden and @@ -393,28 +391,18 @@ _bfd_elf_link_record_dynamic_symbol (str table. */ name = h->root.root.string; p = strchr (name, ELF_VER_CHR); - if (p == NULL) - { - alc = NULL; - copy = FALSE; - } - else - { - size_t len = p - name + 1; + if (p != NULL) + /* We know that the p points into writable memory. In fact, + there are only a few symbols that have read-only names, being + those like _GLOBAL_OFFSET_TABLE_ that are created specially + by the backends. Most symbols will have names pointing into + an ELF string table read from a file, or to objalloc memory. */ + *p = 0; - alc = bfd_malloc (len); - if (alc == NULL) - return FALSE; - memcpy (alc, name, len - 1); - alc[len - 1] = '\0'; - name = alc; - copy = TRUE; - } + indx = _bfd_elf_strtab_add (dynstr, name, p != NULL); - indx = _bfd_elf_strtab_add (dynstr, name, copy); - - if (alc != NULL) - free (alc); + if (p != NULL) + *p = ELF_VER_CHR; if (indx == (bfd_size_type) -1) return FALSE; @@ -435,7 +423,7 @@ bfd_elf_record_link_assignment (bfd *out { struct elf_link_hash_entry *h; - if (info->hash->creator->flavour != bfd_target_elf_flavour) + if (!is_elf_hash_table (info->hash)) return TRUE; h = elf_link_hash_lookup (elf_hash_table (info), name, TRUE, TRUE, FALSE); @@ -505,7 +493,7 @@ elf_link_record_local_dynamic_symbol (st Elf_External_Sym_Shndx eshndx; char esym[sizeof (Elf64_External_Sym)]; - if (! is_elf_hash_table (info)) + if (! is_elf_hash_table (info->hash)) return 0; /* See if the entry exists already. */ @@ -806,7 +794,7 @@ _bfd_elf_merge_symbol (bfd *abfd, else olddef = TRUE; - /* We need to rememeber if a symbol has a definition in a dynamic + /* We need to remember if a symbol has a definition in a dynamic object or is weak in all dynamic objects. Internal and hidden visibility will make it unavailable to dynamic objects. */ if (newdyn && (h->elf_link_hash_flags & ELF_LINK_DYNAMIC_DEF) == 0) @@ -869,7 +857,7 @@ _bfd_elf_merge_symbol (bfd *abfd, return TRUE; } - /* We need to treat weak definiton right, depending on if there is a + /* We need to treat weak definition right, depending on if there is a definition from a dynamic object. */ if (bind == STB_WEAK) { @@ -1138,7 +1126,7 @@ _bfd_elf_merge_symbol (bfd *abfd, h->size, abfd, bfd_link_hash_common, sym->st_size))) return FALSE; - /* If the predumed common symbol in the dynamic object is + /* If the presumed common symbol in the dynamic object is larger, pretend that the new symbol has its size. */ if (h->size > *pvalue) @@ -1268,7 +1256,7 @@ _bfd_elf_add_default_symbol (bfd *abfd, if (override) { - /* We are overridden by an old defition. We need to check if we + /* We are overridden by an old definition. We need to check if we need to create the indirect symbol from the default name. */ hi = elf_link_hash_lookup (elf_hash_table (info), name, TRUE, FALSE, FALSE); @@ -1427,7 +1415,7 @@ nondefault: { /* Here SHORTNAME is a versioned name, so we don't expect to see the type of override we do in the case above unless it is - overridden by a versioned definiton. */ + overridden by a versioned definition. */ if (hi->root.type != bfd_link_hash_defined && hi->root.type != bfd_link_hash_defweak) (*_bfd_error_handler) @@ -2217,7 +2205,7 @@ _bfd_elf_fix_symbol_flags (struct elf_li will force it local. */ if ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0 && eif->info->shared - && is_elf_hash_table (eif->info) + && is_elf_hash_table (eif->info->hash) && (eif->info->symbolic || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT) && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0) @@ -2287,7 +2275,7 @@ _bfd_elf_adjust_dynamic_symbol (struct e bfd *dynobj; const struct elf_backend_data *bed; - if (! is_elf_hash_table (eif->info)) + if (! is_elf_hash_table (eif->info->hash)) return FALSE; if (h->root.type == bfd_link_hash_warning) @@ -2530,3 +2518,31 @@ _bfd_elf_symbol_refs_local_p (struct elf dynamic linker will resolve them locally. */ return local_protected; } + +/* Caches some TLS segment info, and ensures that the TLS segment vma is + aligned. Returns the first TLS output section. */ + +struct bfd_section * +_bfd_elf_tls_setup (bfd *obfd, struct bfd_link_info *info) +{ + struct bfd_section *sec, *tls; + unsigned int align = 0; + + for (sec = obfd->sections; sec != NULL; sec = sec->next) + if ((sec->flags & SEC_THREAD_LOCAL) != 0) + break; + tls = sec; + + for (; sec != NULL && (sec->flags & SEC_THREAD_LOCAL) != 0; sec = sec->next) + if (sec->alignment_power > align) + align = sec->alignment_power; + + elf_hash_table (info)->tls_sec = tls; + + /* Ensure the alignment of the first section is the largest alignment, + so that the tls segment starts aligned. */ + if (tls != NULL) + tls->alignment_power = align; + + return tls; +} diff -uprN binutils-2.14.90.0.7/bfd/elflink.h binutils-2.14.90.0.8/bfd/elflink.h --- binutils-2.14.90.0.7/bfd/elflink.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elflink.h 2004-01-14 13:07:43.000000000 -0800 @@ -437,7 +437,9 @@ elf_link_add_object_symbols (bfd *abfd, /* You can't use -r against a dynamic object. Also, there's no hope of using a dynamic object which does not exactly match the format of the output file. */ - if (info->relocatable || info->hash->creator != abfd->xvec) + if (info->relocatable + || !is_elf_hash_table (hash_table) + || hash_table->root.creator != abfd->xvec) { bfd_set_error (bfd_error_invalid_operation); goto error_return; @@ -475,7 +477,7 @@ elf_link_add_object_symbols (bfd *abfd, fix is to keep track of what warnings we are supposed to emit, and then handle them all at the end of the link. */ - if (dynamic && abfd->xvec == info->hash->creator) + if (dynamic) { struct elf_link_hash_entry *h; @@ -531,15 +533,15 @@ elf_link_add_object_symbols (bfd *abfd, format. FIXME: If there are no input BFD's of the same format as the output, we can't make a shared library. */ if (info->shared - && is_elf_hash_table (info) - && ! hash_table->dynamic_sections_created - && abfd->xvec == info->hash->creator) + && is_elf_hash_table (hash_table) + && hash_table->root.creator == abfd->xvec + && ! hash_table->dynamic_sections_created) { if (! _bfd_elf_link_create_dynamic_sections (abfd, info)) goto error_return; } } - else if (! is_elf_hash_table (info)) + else if (!is_elf_hash_table (hash_table)) goto error_return; else { @@ -723,9 +725,8 @@ elf_link_add_object_symbols (bfd *abfd, /* If this is the first dynamic object found in the link, create the special sections required for dynamic linking. */ - if (! hash_table->dynamic_sections_created) - if (! _bfd_elf_link_create_dynamic_sections (abfd, info)) - goto error_return; + if (! _bfd_elf_link_create_dynamic_sections (abfd, info)) + goto error_return; if (add_needed) { @@ -875,7 +876,7 @@ elf_link_add_object_symbols (bfd *abfd, { /* This should be impossible, since ELF requires that all global symbols follow all local symbols, and that sh_info - point to the first global symbol. Unfortunatealy, Irix 5 + point to the first global symbol. Unfortunately, Irix 5 screws this up. */ continue; } @@ -968,7 +969,7 @@ elf_link_add_object_symbols (bfd *abfd, old_alignment = 0; old_bfd = NULL; - if (info->hash->creator->flavour == bfd_target_elf_flavour) + if (is_elf_hash_table (hash_table)) { Elf_Internal_Versym iver; unsigned int vernum = 0; @@ -1131,7 +1132,7 @@ elf_link_add_object_symbols (bfd *abfd, && definition && (flags & BSF_WEAK) != 0 && ELF_ST_TYPE (isym->st_info) != STT_FUNC - && info->hash->creator->flavour == bfd_target_elf_flavour + && is_elf_hash_table (hash_table) && h->weakdef == NULL) { /* Keep a list of all weak defined non function symbols from @@ -1167,14 +1168,14 @@ elf_link_add_object_symbols (bfd *abfd, h->root.u.c.p->alignment_power = old_alignment; } - if (info->hash->creator->flavour == bfd_target_elf_flavour) + if (is_elf_hash_table (hash_table)) { int old_flags; bfd_boolean dynsym; int new_flag; /* Check the alignment when a common symbol is involved. This - can change when a common symbol is overriden by a normal + can change when a common symbol is overridden by a normal definition or a common symbol is ignored due to the old normal definition. We need to make sure the maximum alignment is maintained. */ @@ -1380,9 +1381,6 @@ elf_link_add_object_symbols (bfd *abfd, bfd_size_type oldsize; bfd_size_type strindex; - if (! is_elf_hash_table (info)) - goto error_free_vers; - /* The symbol from a DT_NEEDED object is referenced from the regular object to create a dynamic executable. We have to make sure there is a DT_NEEDED entry for it. */ @@ -1446,7 +1444,7 @@ elf_link_add_object_symbols (bfd *abfd, shortname[amt] = '\0'; hi = (struct elf_link_hash_entry *) - bfd_link_hash_lookup (info->hash, shortname, + bfd_link_hash_lookup (&hash_table->root, shortname, FALSE, FALSE, FALSE); if (hi != NULL && hi->root.type == h->root.type @@ -1573,7 +1571,8 @@ elf_link_add_object_symbols (bfd *abfd, different format. It probably can't be done. */ check_relocs = get_elf_backend_data (abfd)->check_relocs; if (! dynamic - && abfd->xvec == info->hash->creator + && is_elf_hash_table (hash_table) + && hash_table->root.creator == abfd->xvec && check_relocs != NULL) { asection *o; @@ -1609,8 +1608,7 @@ elf_link_add_object_symbols (bfd *abfd, of the .stab/.stabstr sections. */ if (! dynamic && ! info->traditional_format - && info->hash->creator->flavour == bfd_target_elf_flavour - && is_elf_hash_table (info) + && is_elf_hash_table (hash_table) && (info->strip != strip_all && info->strip != strip_debugger)) { asection *stabstr; @@ -1643,8 +1641,9 @@ elf_link_add_object_symbols (bfd *abfd, } } - if (! info->relocatable && ! dynamic - && is_elf_hash_table (info)) + if (! info->relocatable + && ! dynamic + && is_elf_hash_table (hash_table)) { asection *s; @@ -1664,7 +1663,7 @@ elf_link_add_object_symbols (bfd *abfd, } } - if (is_elf_hash_table (info)) + if (is_elf_hash_table (hash_table)) { /* Add this bfd to the loaded list. */ struct elf_link_loaded_list *n; @@ -1702,7 +1701,7 @@ elf_add_dynamic_entry (struct bfd_link_i bfd_size_type newsize; bfd_byte *newcontents; - if (! is_elf_hash_table (info)) + if (! is_elf_hash_table (info->hash)) return FALSE; dynobj = elf_hash_table (info)->dynobj; @@ -1832,7 +1831,7 @@ compute_bucket_count (struct bfd_link_in # if 1 /* Variant 1: optimize for short chains. We add the squares - of all the chain lengths (which favous many small chain + of all the chain lengths (which favors many small chain over a few long chains). */ for (j = 0; j < i; ++j) max += counts[j] * counts[j]; @@ -1907,10 +1906,7 @@ NAME(bfd_elf,size_dynamic_sections) (bfd soname_indx = (bfd_size_type) -1; - if (info->hash->creator->flavour != bfd_target_elf_flavour) - return TRUE; - - if (! is_elf_hash_table (info)) + if (!is_elf_hash_table (info->hash)) return TRUE; if (info->execstack) @@ -1981,7 +1977,7 @@ NAME(bfd_elf,size_dynamic_sections) (bfd bfd_boolean all_defined; *sinterpptr = bfd_get_section_by_name (dynobj, ".interp"); - BFD_ASSERT (*sinterpptr != NULL || info->shared); + BFD_ASSERT (*sinterpptr != NULL || !info->executable); if (soname != NULL) { @@ -2056,7 +2052,7 @@ NAME(bfd_elf,size_dynamic_sections) (bfd return FALSE; } - /* Make all global versions with definiton. */ + /* Make all global versions with definition. */ for (t = verdefs; t != NULL; t = t->next) for (d = t->globals.list; d != NULL; d = d->next) if (!d->symver && d->symbol) @@ -2121,7 +2117,7 @@ NAME(bfd_elf,size_dynamic_sections) (bfd if (!info->allow_undefined_version) { - /* Check if all global versions have a definiton. */ + /* Check if all global versions have a definition. */ all_defined = TRUE; for (t = verdefs; t != NULL; t = t->next) for (d = t->globals.list; d != NULL; d = d->next) @@ -2804,8 +2800,6 @@ struct elf_final_link_info asection *hash_sec; /* symbol version section (.gnu.version). */ asection *symver_sec; - /* first SHF_TLS section (if any). */ - asection *first_tls_sec; /* Buffer large enough to hold contents of any section. */ bfd_byte *contents; /* Buffer large enough to hold external relocs of any section. */ @@ -2839,7 +2833,8 @@ struct elf_final_link_info }; static bfd_boolean elf_link_output_sym - (struct elf_final_link_info *, const char *, Elf_Internal_Sym *, asection *); + (struct elf_final_link_info *, const char *, Elf_Internal_Sym *, asection *, + struct elf_link_hash_entry *); static bfd_boolean elf_link_flush_output_syms (struct elf_final_link_info *); static bfd_boolean elf_link_output_extsym @@ -3114,7 +3109,7 @@ elf_bfd_final_link (bfd *abfd, struct bf asection *reldyn = 0; bfd_size_type amt; - if (! is_elf_hash_table (info)) + if (! is_elf_hash_table (info->hash)) return FALSE; if (info->shared) @@ -3160,14 +3155,6 @@ elf_bfd_final_link (bfd *abfd, struct bf finfo.symshndxbuf = NULL; finfo.symbuf_count = 0; finfo.shndxbuf_size = 0; - finfo.first_tls_sec = NULL; - for (o = abfd->sections; o != NULL; o = o->next) - if ((o->flags & SEC_THREAD_LOCAL) != 0 - && (o->flags & SEC_LOAD) != 0) - { - finfo.first_tls_sec = o; - break; - } /* Count up the number of relocations we will output for each output section, so that we know the sizes of the reloc sections. We @@ -3421,7 +3408,8 @@ elf_bfd_final_link (bfd *abfd, struct bf elfsym.st_info = 0; elfsym.st_other = 0; elfsym.st_shndx = SHN_UNDEF; - if (! elf_link_output_sym (&finfo, NULL, &elfsym, bfd_und_section_ptr)) + if (! elf_link_output_sym (&finfo, NULL, &elfsym, bfd_und_section_ptr, + NULL)) goto error_return; } @@ -3437,7 +3425,7 @@ elf_bfd_final_link (bfd *abfd, struct bf elfsym.st_other = 0; elfsym.st_shndx = SHN_ABS; if (! elf_link_output_sym (&finfo, bfd_get_filename (abfd), - &elfsym, bfd_abs_section_ptr)) + &elfsym, bfd_abs_section_ptr, NULL)) goto error_return; #endif @@ -3462,7 +3450,7 @@ elf_bfd_final_link (bfd *abfd, struct bf elfsym.st_value = 0; else elfsym.st_value = o->vma; - if (! elf_link_output_sym (&finfo, NULL, &elfsym, o)) + if (! elf_link_output_sym (&finfo, NULL, &elfsym, o, NULL)) goto error_return; if (i == SHN_LORESERVE - 1) i += SHN_HIRESERVE + 1 - SHN_LORESERVE; @@ -3525,38 +3513,30 @@ elf_bfd_final_link (bfd *abfd, struct bf goto error_return; } - if (finfo.first_tls_sec) + if (elf_hash_table (info)->tls_sec) { - unsigned int align = 0; - bfd_vma base = finfo.first_tls_sec->vma, end = 0; + bfd_vma base, end = 0; asection *sec; - for (sec = finfo.first_tls_sec; + for (sec = elf_hash_table (info)->tls_sec; sec && (sec->flags & SEC_THREAD_LOCAL); sec = sec->next) { bfd_vma size = sec->_raw_size; - if (bfd_get_section_alignment (abfd, sec) > align) - align = bfd_get_section_alignment (abfd, sec); - if (sec->_raw_size == 0 && (sec->flags & SEC_HAS_CONTENTS) == 0) + if (size == 0 && (sec->flags & SEC_HAS_CONTENTS) == 0) { struct bfd_link_order *o; - size = 0; for (o = sec->link_order_head; o != NULL; o = o->next) if (size < o->offset + o->size) size = o->offset + o->size; } end = sec->vma + size; } - elf_hash_table (info)->tls_segment - = bfd_zalloc (abfd, sizeof (struct elf_link_tls_segment)); - if (elf_hash_table (info)->tls_segment == NULL) - goto error_return; - elf_hash_table (info)->tls_segment->start = base; - elf_hash_table (info)->tls_segment->size = end - base; - elf_hash_table (info)->tls_segment->align = align; + base = elf_hash_table (info)->tls_sec->vma; + end = align_power (end, elf_hash_table (info)->tls_sec->alignment_power); + elf_hash_table (info)->tls_size = end - base; } /* Since ELF permits relocations to be against local symbols, we @@ -3724,7 +3704,8 @@ elf_bfd_final_link (bfd *abfd, struct bf if (bed->elf_backend_output_arch_syms) { typedef bfd_boolean (*out_sym_func) - (void *, const char *, Elf_Internal_Sym *, asection *); + (void *, const char *, Elf_Internal_Sym *, asection *, + struct elf_link_hash_entry *); if (! ((*bed->elf_backend_output_arch_syms) (abfd, info, &finfo, (out_sym_func) elf_link_output_sym))) @@ -4108,20 +4089,20 @@ static bfd_boolean elf_link_output_sym (struct elf_final_link_info *finfo, const char *name, Elf_Internal_Sym *elfsym, - asection *input_sec) + asection *input_sec, + struct elf_link_hash_entry *h) { Elf_External_Sym *dest; Elf_External_Sym_Shndx *destshndx; bfd_boolean (*output_symbol_hook) - (bfd *, struct bfd_link_info *info, const char *, - Elf_Internal_Sym *, asection *); + (struct bfd_link_info *, const char *, Elf_Internal_Sym *, asection *, + struct elf_link_hash_entry *); output_symbol_hook = get_elf_backend_data (finfo->output_bfd)-> elf_backend_link_output_symbol_hook; if (output_symbol_hook != NULL) { - if (! ((*output_symbol_hook) - (finfo->output_bfd, finfo->info, name, elfsym, input_sec))) + if (! (*output_symbol_hook) (finfo->info, name, elfsym, input_sec, h)) return FALSE; } @@ -4206,7 +4187,7 @@ elf_link_check_versioned_symbol (struct bfd *abfd; struct elf_link_loaded_list *loaded; - if (info->hash->creator->flavour != bfd_target_elf_flavour) + if (!is_elf_hash_table (info->hash)) return FALSE; switch (h->root.type) @@ -4503,8 +4484,8 @@ elf_link_output_extsym (struct elf_link_ { /* STT_TLS symbols are relative to PT_TLS segment base. */ - BFD_ASSERT (finfo->first_tls_sec != NULL); - sym.st_value -= finfo->first_tls_sec->vma; + BFD_ASSERT (elf_hash_table (finfo->info)->tls_sec != NULL); + sym.st_value -= elf_hash_table (finfo->info)->tls_sec->vma; } } } @@ -4662,7 +4643,7 @@ elf_link_output_extsym (struct elf_link_ h->indx = bfd_get_symcount (finfo->output_bfd); - if (! elf_link_output_sym (finfo, h->root.root.string, &sym, input_sec)) + if (! elf_link_output_sym (finfo, h->root.root.string, &sym, input_sec, h)) { eoinfo->failed = TRUE; return FALSE; @@ -4862,12 +4843,12 @@ elf_link_input_bfd (struct elf_final_lin if (ELF_ST_TYPE (osym.st_info) == STT_TLS) { /* STT_TLS symbols are relative to PT_TLS segment base. */ - BFD_ASSERT (finfo->first_tls_sec != NULL); - osym.st_value -= finfo->first_tls_sec->vma; + BFD_ASSERT (elf_hash_table (finfo->info)->tls_sec != NULL); + osym.st_value -= elf_hash_table (finfo->info)->tls_sec->vma; } } - if (! elf_link_output_sym (finfo, name, &osym, isec)) + if (! elf_link_output_sym (finfo, name, &osym, isec, NULL)) return FALSE; } @@ -5219,15 +5200,18 @@ elf_link_input_bfd (struct elf_final_lin { /* STT_TLS symbols are relative to PT_TLS segment base. */ - BFD_ASSERT (finfo->first_tls_sec != NULL); - sym.st_value -= finfo->first_tls_sec->vma; + BFD_ASSERT (elf_hash_table (finfo->info) + ->tls_sec != NULL); + sym.st_value -= (elf_hash_table (finfo->info) + ->tls_sec->vma); } } finfo->indices[r_symndx] = bfd_get_symcount (output_bfd); - if (! elf_link_output_sym (finfo, name, &sym, sec)) + if (! elf_link_output_sym (finfo, name, &sym, sec, + NULL)) return FALSE; } @@ -5690,7 +5674,7 @@ elf_gc_sweep_symbol (struct elf_link_has return TRUE; } -/* Propogate collected vtable information. This is called through +/* Propagate collected vtable information. This is called through elf_link_hash_traverse. */ static bfd_boolean @@ -5813,9 +5797,14 @@ elf_gc_sections (bfd *abfd, struct bfd_l struct elf_link_hash_entry *h, Elf_Internal_Sym *); if (!get_elf_backend_data (abfd)->can_gc_sections - || info->relocatable || info->emitrelocations + || info->relocatable + || info->emitrelocations + || !is_elf_hash_table (info->hash) || elf_hash_table (info)->dynamic_sections_created) - return TRUE; + { + (*_bfd_error_handler)(_("Warning: gc-sections option ignored")); + return TRUE; + } /* Apply transitive closure to the vtable entry usage info. */ elf_link_hash_traverse (elf_hash_table (info), @@ -5856,7 +5845,7 @@ elf_gc_sections (bfd *abfd, struct bfd_l return TRUE; } -/* Called from check_relocs to record the existance of a VTINHERIT reloc. */ +/* Called from check_relocs to record the existence of a VTINHERIT reloc. */ bfd_boolean elf_gc_record_vtinherit (bfd *abfd, @@ -5912,7 +5901,7 @@ elf_gc_record_vtinherit (bfd *abfd, return TRUE; } -/* Called from check_relocs to record the existance of a VTENTRY reloc. */ +/* Called from check_relocs to record the existence of a VTENTRY reloc. */ bfd_boolean elf_gc_record_vtentry (bfd *abfd ATTRIBUTE_UNUSED, @@ -5989,6 +5978,9 @@ elf_gc_common_finalize_got_offsets (bfd const struct elf_backend_data *bed = get_elf_backend_data (abfd); bfd_vma gotoff; + if (! is_elf_hash_table (info->hash)) + return FALSE; + /* The GOT offset is relative to the .got section, but the GOT header is put into the .got.plt section, if the backend uses it. */ if (bed->want_got_plt) @@ -6195,8 +6187,7 @@ elf_bfd_discard_info (bfd *output_bfd, s bfd_boolean ret = FALSE; if (info->traditional_format - || info->hash->creator->flavour != bfd_target_elf_flavour - || ! is_elf_hash_table (info)) + || !is_elf_hash_table (info->hash)) return FALSE; for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link_next) diff -uprN binutils-2.14.90.0.7/bfd/elfn32-mips.c binutils-2.14.90.0.8/bfd/elfn32-mips.c --- binutils-2.14.90.0.7/bfd/elfn32-mips.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elfn32-mips.c 2004-01-14 13:07:43.000000000 -0800 @@ -47,59 +47,46 @@ Foundation, Inc., 59 Temple Place - Suit #define ECOFF_SIGNED_32 #include "ecoffswap.h" -static bfd_reloc_status_type mips_elf_generic_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static bfd_reloc_status_type mips_elf_hi16_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static bfd_reloc_status_type mips_elf_lo16_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static bfd_reloc_status_type mips_elf_got16_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); static bfd_boolean mips_elf_assign_gp - PARAMS ((bfd *, bfd_vma *)); + (bfd *, bfd_vma *); static bfd_reloc_status_type mips_elf_final_gp - PARAMS ((bfd *, asymbol *, bfd_boolean, char **, bfd_vma *)); + (bfd *, asymbol *, bfd_boolean, char **, bfd_vma *); static bfd_reloc_status_type mips_elf_gprel16_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips_elf_literal_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips_elf_gprel32_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type gprel32_with_gp - PARAMS ((bfd *, asymbol *, arelent *, asection *, bfd_boolean, PTR, - bfd_vma)); + (bfd *, asymbol *, arelent *, asection *, bfd_boolean, void *, bfd_vma); static bfd_reloc_status_type mips_elf_shift6_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips16_jump_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type mips16_gprel_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup - PARAMS ((bfd *, bfd_reloc_code_real_type)); + (bfd *, bfd_reloc_code_real_type); static reloc_howto_type *mips_elf_n32_rtype_to_howto - PARAMS ((unsigned int, bfd_boolean)); + (unsigned int, bfd_boolean); static void mips_info_to_howto_rel - PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); + (bfd *, arelent *, Elf_Internal_Rela *); static void mips_info_to_howto_rela - PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); + (bfd *, arelent *, Elf_Internal_Rela *); static bfd_boolean mips_elf_sym_is_global - PARAMS ((bfd *, asymbol *)); + (bfd *, asymbol *); static bfd_boolean mips_elf_n32_object_p - PARAMS ((bfd *)); + (bfd *); static bfd_boolean elf32_mips_grok_prstatus - PARAMS ((bfd *, Elf_Internal_Note *)); + (bfd *, Elf_Internal_Note *); static bfd_boolean elf32_mips_grok_psinfo - PARAMS ((bfd *, Elf_Internal_Note *)); + (bfd *, Elf_Internal_Note *); static irix_compat_t elf_n32_mips_irix_compat - PARAMS ((bfd *)); + (bfd *); extern const bfd_target bfd_elf32_nbigmips_vec; extern const bfd_target bfd_elf32_nlittlemips_vec; -static asection *prev_reloc_section = NULL; -static bfd_vma prev_reloc_address = -1; -static bfd_vma prev_reloc_addend = 0; - /* Nonzero if ABFD is using the N32 ABI. */ #define ABI_N32_P(abfd) \ ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI2) != 0) @@ -127,7 +114,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_NONE", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -142,7 +129,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -157,7 +144,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_32", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -172,7 +159,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_REL32", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -190,7 +177,7 @@ static reloc_howto_type elf_mips_howto_t /* This needs complex overflow detection, because the upper four bits must match the PC + 4. */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_26", /* name */ TRUE, /* partial_inplace */ 0x03ffffff, /* src_mask */ @@ -202,13 +189,13 @@ static reloc_howto_type elf_mips_howto_t /* High 16 bits of symbol value. */ HOWTO (R_MIPS_HI16, /* type */ - 0, /* rightshift */ + 16, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_hi16_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_HI16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -223,7 +210,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_lo16_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_LO16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -268,7 +255,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_got16_reloc, /* special_function */ + _bfd_mips_elf_got16_reloc, /* special_function */ "R_MIPS_GOT16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -283,7 +270,7 @@ static reloc_howto_type elf_mips_howto_t TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_PC16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -298,7 +285,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -334,7 +321,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 6, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SHIFT5", /* name */ TRUE, /* partial_inplace */ 0x000007c0, /* src_mask */ @@ -364,7 +351,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_64", /* name */ TRUE, /* partial_inplace */ MINUS_ONE, /* src_mask */ @@ -379,7 +366,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_DISP", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -394,7 +381,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_PAGE", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -409,7 +396,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_OFST", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -424,7 +411,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_HI16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -439,7 +426,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_LO16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -454,7 +441,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SUB", /* name */ TRUE, /* partial_inplace */ MINUS_ONE, /* src_mask */ @@ -470,7 +457,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_INSERT_A", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -487,7 +474,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_INSERT_B", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -503,7 +490,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_DELETE", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -527,7 +514,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_HI16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -542,7 +529,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_LO16", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -557,7 +544,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SCN_DISP", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -571,7 +558,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_REL16", /* name */ TRUE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -591,7 +578,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_RELGOT", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -607,7 +594,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_JALR", /* name */ FALSE, /* partial_inplace */ 0x00000000, /* src_mask */ @@ -627,7 +614,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_NONE", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -642,7 +629,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -657,7 +644,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_32", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -672,7 +659,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_REL32", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -690,7 +677,7 @@ static reloc_howto_type elf_mips_howto_t /* This needs complex overflow detection, because the upper 36 bits must match the PC + 4. */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_26", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -705,7 +692,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_HI16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -720,7 +707,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_LO16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -765,7 +752,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_got16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -780,7 +767,7 @@ static reloc_howto_type elf_mips_howto_t TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_PC16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -795,7 +782,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -829,7 +816,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 6, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SHIFT5", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -859,7 +846,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_64", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -874,7 +861,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_DISP", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -889,7 +876,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_PAGE", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -904,7 +891,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_OFST", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -919,7 +906,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_HI16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -934,14 +921,14 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_LO16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ - /* 64 bit substraction. */ + /* 64 bit subtraction. */ HOWTO (R_MIPS_SUB, /* type */ 0, /* rightshift */ 4, /* size (0 = byte, 1 = short, 2 = long) */ @@ -949,7 +936,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SUB", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -965,7 +952,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_INSERT_A", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -982,7 +969,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_INSERT_B", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -998,7 +985,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_DELETE", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1013,7 +1000,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_HIGHER", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1028,7 +1015,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_HIGHEST", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1043,7 +1030,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_HI16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1058,7 +1045,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_LO16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1073,7 +1060,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_SCN_DISP", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1088,7 +1075,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_REL16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1108,7 +1095,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_RELGOT", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1124,7 +1111,7 @@ static reloc_howto_type elf_mips_howto_t FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_JALR", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -1208,7 +1195,7 @@ static reloc_howto_type elf_mips_gnu_rel TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GNU_REL16_S2", /* name */ TRUE, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1224,254 +1211,18 @@ static reloc_howto_type elf_mips_gnu_rel TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_GNU_REL16_S2", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ 0x0000ffff, /* dst_mask */ TRUE); /* pcrel_offset */ -/* This is derived from bfd_elf_generic_reloc. NewABI allows us to have - several relocations against the same address. The addend is derived - from the addends of preceding relocations. If we don't need to - do something special, we simply keep track of the addend. */ - -#define GET_RELOC_ADDEND(obfd, sym, entry, sec) \ -{ \ - /* If we're relocating, and this is an external symbol, we don't \ - want to change anything. */ \ - if ((obfd) != (bfd *) NULL \ - && ((sym)->flags & BSF_SECTION_SYM) == 0 \ - && (! (entry)->howto->partial_inplace \ - || (entry)->addend == 0)) \ - { \ - (entry)->address += (sec)->output_offset; \ - return bfd_reloc_ok; \ - } \ - \ - /* The addend of combined relocs is remembered and left for \ - subsequent relocs. */ \ - if (prev_reloc_address != (entry)->address \ - || prev_reloc_section != (sec)) \ - { \ - prev_reloc_section = (sec); \ - prev_reloc_address = (entry)->address; \ - prev_reloc_addend = (entry)->addend; \ - } \ - else \ - (entry)->addend = prev_reloc_addend; \ -} - -#define SET_RELOC_ADDEND(entry) \ -{ \ - prev_reloc_addend = (entry)->addend; \ -} - -static bfd_reloc_status_type -mips_elf_generic_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol; - PTR data ATTRIBUTE_UNUSED; - asection *input_section; - bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; -{ - GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section) - - return bfd_reloc_continue; -} - -/* Do a R_MIPS_HI16 relocation. This has to be done in combination - with a R_MIPS_LO16 reloc, because there is a carry from the LO16 to - the HI16. Here we just save the information we need; we do the - actual relocation when we see the LO16. - - MIPS ELF requires that the LO16 immediately follow the HI16. As a - GNU extension, for non-pc-relative relocations, we permit an - arbitrary number of HI16 relocs to be associated with a single LO16 - reloc. This extension permits gcc to output the HI and LO relocs - itself. - - This cannot be done for PC-relative relocations because both the HI16 - and LO16 parts of the relocations must be done relative to the LO16 - part, and there can be carry to or borrow from the HI16 part. */ - -struct mips_hi16 -{ - struct mips_hi16 *next; - bfd_byte *addr; - bfd_vma addend; -}; - -/* FIXME: This should not be a static variable. */ - -static struct mips_hi16 *mips_hi16_list; - -static bfd_reloc_status_type -mips_elf_hi16_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; -{ - bfd_reloc_status_type ret; - bfd_vma relocation; - struct mips_hi16 *n; - - GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section) - - ret = bfd_reloc_ok; - - if (bfd_is_und_section (symbol->section) && output_bfd == (bfd *) NULL) - ret = bfd_reloc_undefined; - - if (bfd_is_com_section (symbol->section)) - relocation = 0; - else - relocation = symbol->value; - - relocation += symbol->section->output_section->vma; - relocation += symbol->section->output_offset; - relocation += reloc_entry->addend; - - if (reloc_entry->address > input_section->_cooked_size) - return bfd_reloc_outofrange; - - /* Save the information, and let LO16 do the actual relocation. */ - n = (struct mips_hi16 *) bfd_malloc ((bfd_size_type) sizeof *n); - if (n == NULL) - return bfd_reloc_outofrange; - n->addr = (bfd_byte *) data + reloc_entry->address; - n->addend = relocation; - n->next = mips_hi16_list; - mips_hi16_list = n; - - if (output_bfd != (bfd *) NULL) - reloc_entry->address += input_section->output_offset; - - return ret; -} - -/* Do a R_MIPS_LO16 relocation. This is a straightforward 16 bit - inplace relocation; this function exists in order to do the - R_MIPS_HI16 relocation described above. */ - -static bfd_reloc_status_type -mips_elf_lo16_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; -{ - if (mips_hi16_list != NULL) - { - struct mips_hi16 *l; - - l = mips_hi16_list; - while (l != NULL) - { - unsigned long insn; - unsigned long val; - unsigned long vallo; - struct mips_hi16 *next; - - /* Do the HI16 relocation. Note that we actually don't need - to know anything about the LO16 itself, except where to - find the low 16 bits of the addend needed by the LO16. */ - insn = bfd_get_32 (abfd, l->addr); - vallo = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address); - - /* The low order 16 bits are always treated as a signed - value. */ - vallo = ((vallo & 0xffff) ^ 0x8000) - 0x8000; - val = ((insn & 0xffff) << 16) + vallo; - val += l->addend; - - /* If PC-relative, we need to subtract out the address of the LO - half of the HI/LO. (The actual relocation is relative - to that instruction.) */ - if (reloc_entry->howto->pc_relative) - val -= reloc_entry->address; - - /* At this point, "val" has the value of the combined HI/LO - pair. If the low order 16 bits (which will be used for - the LO16 insn) are negative, then we will need an - adjustment for the high order 16 bits. */ - val += 0x8000; - val = (val >> 16) & 0xffff; - - insn &= ~ (bfd_vma) 0xffff; - insn |= val; - bfd_put_32 (abfd, (bfd_vma) insn, l->addr); - - next = l->next; - free (l); - l = next; - } - - mips_hi16_list = NULL; - } - - /* Now do the LO16 reloc in the usual way. */ - return mips_elf_generic_reloc (abfd, reloc_entry, symbol, data, - input_section, output_bfd, error_message); -} - -/* Do a R_MIPS_GOT16 reloc. This is a reloc against the global offset - table used for PIC code. If the symbol is an external symbol, the - instruction is modified to contain the offset of the appropriate - entry in the global offset table. If the symbol is a section - symbol, the next reloc is a R_MIPS_LO16 reloc. The two 16 bit - addends are combined to form the real addend against the section - symbol; the GOT16 is modified to contain the offset of an entry in - the global offset table, and the LO16 is modified to offset it - appropriately. Thus an offset larger than 16 bits requires a - modified value in the global offset table. - - This implementation suffices for the assembler, but the linker does - not yet know how to create global offset tables. */ - -static bfd_reloc_status_type -mips_elf_got16_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; -{ - /* If we're relocating, and this is a local symbol, we can handle it - just like an R_MIPS_HI16. */ - if (output_bfd != (bfd *) NULL - && ((symbol->flags & BSF_SECTION_SYM) != 0 - || (symbol->flags & BSF_LOCAL) == 0)) - return mips_elf_hi16_reloc (abfd, reloc_entry, symbol, data, - input_section, output_bfd, error_message); - - /* Otherwise we try to handle it as R_MIPS_GOT_DISP. */ - return mips_elf_generic_reloc (abfd, reloc_entry, symbol, data, - input_section, output_bfd, error_message); -} - /* Set the GP value for OUTPUT_BFD. Returns FALSE if this is a dangerous relocation. */ static bfd_boolean -mips_elf_assign_gp (output_bfd, pgp) - bfd *output_bfd; - bfd_vma *pgp; +mips_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp) { unsigned int count; asymbol **sym; @@ -1487,7 +1238,7 @@ mips_elf_assign_gp (output_bfd, pgp) /* The linker script will have created a symbol named `_gp' with the appropriate value. */ - if (sym == (asymbol **) NULL) + if (sym == NULL) i = count; else { @@ -1523,12 +1274,8 @@ mips_elf_assign_gp (output_bfd, pgp) external symbol if we are producing relocatable output. */ static bfd_reloc_status_type -mips_elf_final_gp (output_bfd, symbol, relocatable, error_message, pgp) - bfd *output_bfd; - asymbol *symbol; - bfd_boolean relocatable; - char **error_message; - bfd_vma *pgp; +mips_elf_final_gp (bfd *output_bfd, asymbol *symbol, bfd_boolean relocatable, + char **error_message, bfd_vma *pgp) { if (bfd_is_und_section (symbol->section) && ! relocatable) @@ -1563,23 +1310,16 @@ mips_elf_final_gp (output_bfd, symbol, r become the offset from the gp register. */ static bfd_reloc_status_type -mips_elf_gprel16_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol; - PTR data ATTRIBUTE_UNUSED; - asection *input_section; - bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; +mips_elf_gprel16_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry, + asymbol *symbol, void *data ATTRIBUTE_UNUSED, + asection *input_section, bfd *output_bfd, + char **error_message ATTRIBUTE_UNUSED) { bfd_boolean relocatable; bfd_reloc_status_type ret; bfd_vma gp; - GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section) - - if (output_bfd != (bfd *) NULL) + if (output_bfd != NULL) relocatable = TRUE; else { @@ -1600,24 +1340,16 @@ mips_elf_gprel16_reloc (abfd, reloc_entr /* Do a R_MIPS_LITERAL relocation. */ static bfd_reloc_status_type -mips_elf_literal_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; +mips_elf_literal_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, bfd *output_bfd, + char **error_message) { bfd_boolean relocatable; bfd_reloc_status_type ret; bfd_vma gp; - GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section) - /* FIXME: The entries in the .lit8 and .lit4 sections should be merged. */ - if (output_bfd != (bfd *) NULL) + if (output_bfd != NULL) relocatable = TRUE; else { @@ -1639,24 +1371,16 @@ mips_elf_literal_reloc (abfd, reloc_entr become the offset from the gp register. */ static bfd_reloc_status_type -mips_elf_gprel32_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; +mips_elf_gprel32_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, bfd *output_bfd, + char **error_message) { bfd_boolean relocatable; bfd_reloc_status_type ret; bfd_vma gp; - GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section) - /* R_MIPS_GPREL32 relocations are defined for local symbols only. */ - if (output_bfd != (bfd *) NULL + if (output_bfd != NULL && (symbol->flags & BSF_SECTION_SYM) == 0 && (symbol->flags & BSF_LOCAL) != 0) { @@ -1665,7 +1389,7 @@ mips_elf_gprel32_reloc (abfd, reloc_entr return bfd_reloc_outofrange; } - if (output_bfd != (bfd *) NULL) + if (output_bfd != NULL) { relocatable = TRUE; gp = _bfd_get_gp_value (output_bfd); @@ -1686,15 +1410,9 @@ mips_elf_gprel32_reloc (abfd, reloc_entr } static bfd_reloc_status_type -gprel32_with_gp (abfd, symbol, reloc_entry, input_section, relocatable, data, - gp) - bfd *abfd; - asymbol *symbol; - arelent *reloc_entry; - asection *input_section; - bfd_boolean relocatable; - PTR data; - bfd_vma gp; +gprel32_with_gp (bfd *abfd, asymbol *symbol, arelent *reloc_entry, + asection *input_section, bfd_boolean relocatable, + void *data, bfd_vma gp) { bfd_vma relocation; unsigned long val; @@ -1725,7 +1443,7 @@ gprel32_with_gp (abfd, symbol, reloc_ent || (symbol->flags & BSF_SECTION_SYM) != 0) val += relocation - gp; - bfd_put_32 (abfd, (bfd_vma) val, (bfd_byte *) data + reloc_entry->address); + bfd_put_32 (abfd, val, (bfd_byte *) data + reloc_entry->address); if (relocatable) reloc_entry->address += input_section->output_offset; @@ -1737,46 +1455,33 @@ gprel32_with_gp (abfd, symbol, reloc_ent the rest is at bits 6-10. The bitpos already got right by the howto. */ static bfd_reloc_status_type -mips_elf_shift6_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol; - PTR data ATTRIBUTE_UNUSED; - asection *input_section; - bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; +mips_elf_shift6_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, bfd *output_bfd, + char **error_message) { - GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section) - if (reloc_entry->howto->partial_inplace) { reloc_entry->addend = ((reloc_entry->addend & 0x00007c0) | (reloc_entry->addend & 0x00000800) >> 9); } - SET_RELOC_ADDEND (reloc_entry) - - return bfd_reloc_continue; + return _bfd_mips_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, + error_message); } /* Handle a mips16 jump. */ static bfd_reloc_status_type -mips16_jump_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol; - PTR data ATTRIBUTE_UNUSED; - asection *input_section; - bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; +mips16_jump_reloc (bfd *abfd ATTRIBUTE_UNUSED, + arelent *reloc_entry ATTRIBUTE_UNUSED, + asymbol *symbol ATTRIBUTE_UNUSED, + void *data ATTRIBUTE_UNUSED, + asection *input_section, bfd *output_bfd ATTRIBUTE_UNUSED, + char **error_message ATTRIBUTE_UNUSED) { static bfd_boolean warned = FALSE; - GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section) - /* FIXME. */ if (! warned) (*_bfd_error_handler) @@ -1790,15 +1495,9 @@ mips16_jump_reloc (abfd, reloc_entry, sy /* Handle a mips16 GP relative reloc. */ static bfd_reloc_status_type -mips16_gprel_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; +mips16_gprel_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, bfd *output_bfd, + char **error_message) { bfd_boolean relocatable; bfd_reloc_status_type ret; @@ -1808,8 +1507,6 @@ mips16_gprel_reloc (abfd, reloc_entry, s bfd_signed_vma val; bfd_vma relocation; - GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section) - if (output_bfd != NULL) relocatable = TRUE; else @@ -1857,13 +1554,10 @@ mips16_gprel_reloc (abfd, reloc_entry, s if (reloc_entry->howto->partial_inplace) { bfd_put_16 (abfd, - (bfd_vma) ((extend & 0xf800) - | ((val >> 11) & 0x1f) - | (val & 0x7e0)), + (extend & 0xf800) | ((val >> 11) & 0x1f) | (val & 0x7e0), (bfd_byte *) data + reloc_entry->address); bfd_put_16 (abfd, - (bfd_vma) ((insn & 0xffe0) - | (val & 0x1f)), + (insn & 0xffe0) | (val & 0x1f), (bfd_byte *) data + reloc_entry->address + 2); } else @@ -1876,9 +1570,6 @@ mips16_gprel_reloc (abfd, reloc_entry, s return bfd_reloc_ok; } - -#undef GET_RELOC_ADDEND -#undef SET_RELOC_ADDEND /* A mapping from BFD reloc types to MIPS ELF reloc types. */ @@ -1929,9 +1620,8 @@ static const struct elf_reloc_map mips_r /* Given a BFD reloc type, return a howto structure. */ static reloc_howto_type * -bfd_elf32_bfd_reloc_type_lookup (abfd, code) - bfd *abfd ATTRIBUTE_UNUSED; - bfd_reloc_code_real_type code; +bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, + bfd_reloc_code_real_type code) { unsigned int i; /* FIXME: We default to RELA here instead of choosing the right @@ -1966,9 +1656,7 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, c /* Given a MIPS Elf_Internal_Rel, fill in an arelent structure. */ static reloc_howto_type * -mips_elf_n32_rtype_to_howto (r_type, rela_p) - unsigned int r_type; - bfd_boolean rela_p; +mips_elf_n32_rtype_to_howto (unsigned int r_type, bfd_boolean rela_p) { switch (r_type) { @@ -1998,10 +1686,7 @@ mips_elf_n32_rtype_to_howto (r_type, rel /* Given a MIPS Elf_Internal_Rel, fill in an arelent structure. */ static void -mips_info_to_howto_rel (abfd, cache_ptr, dst) - bfd *abfd; - arelent *cache_ptr; - Elf_Internal_Rela *dst; +mips_info_to_howto_rel (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst) { unsigned int r_type; @@ -2021,10 +1706,8 @@ mips_info_to_howto_rel (abfd, cache_ptr, /* Given a MIPS Elf_Internal_Rela, fill in an arelent structure. */ static void -mips_info_to_howto_rela (abfd, cache_ptr, dst) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *cache_ptr; - Elf_Internal_Rela *dst; +mips_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, + arelent *cache_ptr, Elf_Internal_Rela *dst) { unsigned int r_type; @@ -2040,9 +1723,7 @@ mips_info_to_howto_rela (abfd, cache_ptr and externally visible symbols. */ static bfd_boolean -mips_elf_sym_is_global (abfd, sym) - bfd *abfd ATTRIBUTE_UNUSED; - asymbol *sym; +mips_elf_sym_is_global (bfd *abfd ATTRIBUTE_UNUSED, asymbol *sym) { if (SGI_COMPAT (abfd)) return (sym->flags & BSF_SECTION_SYM) == 0; @@ -2055,8 +1736,7 @@ mips_elf_sym_is_global (abfd, sym) /* Set the right machine number for a MIPS ELF file. */ static bfd_boolean -mips_elf_n32_object_p (abfd) - bfd *abfd; +mips_elf_n32_object_p (bfd *abfd) { unsigned long mach; @@ -2077,9 +1757,7 @@ mips_elf_n32_object_p (abfd) /* Support for core dump NOTE sections. */ static bfd_boolean -elf32_mips_grok_prstatus (abfd, note) - bfd *abfd; - Elf_Internal_Note *note; +elf32_mips_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) { int offset; unsigned int raw_size; @@ -2109,9 +1787,7 @@ elf32_mips_grok_prstatus (abfd, note) } static bfd_boolean -elf32_mips_grok_psinfo (abfd, note) - bfd *abfd; - Elf_Internal_Note *note; +elf32_mips_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) { switch (note->descsz) { @@ -2143,8 +1819,7 @@ elf32_mips_grok_psinfo (abfd, note) /* Depending on the target vector we generate some version of Irix executables or "normal" MIPS ELF ABI executables. */ static irix_compat_t -elf_n32_mips_irix_compat (abfd) - bfd *abfd; +elf_n32_mips_irix_compat (bfd *abfd) { if ((abfd->xvec == &bfd_elf32_nbigmips_vec) || (abfd->xvec == &bfd_elf32_nlittlemips_vec)) @@ -2198,11 +1873,6 @@ static const struct ecoff_debug_swap mip #define ELF_ARCH bfd_arch_mips #define ELF_MACHINE_CODE EM_MIPS -/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses - a value of 0x1000, and we are compatible. - FIXME: How does this affect NewABI? */ -#define ELF_MAXPAGESIZE 0x1000 - #define elf_backend_collect TRUE #define elf_backend_type_change_ok TRUE #define elf_backend_can_gc_sections TRUE @@ -2248,7 +1918,6 @@ static const struct ecoff_debug_swap mip #define elf_backend_ecoff_debug_swap &mips_elf32_ecoff_debug_swap #define elf_backend_got_header_size (4 * MIPS_RESERVED_GOTNO) -#define elf_backend_plt_header_size 0 /* MIPS n32 ELF can use a mixture of REL and RELA, but some Relocations work better/work only in RELA, so we default to this. */ @@ -2285,20 +1954,30 @@ static const struct ecoff_debug_swap mip #define TARGET_BIG_SYM bfd_elf32_nbigmips_vec #define TARGET_BIG_NAME "elf32-nbigmips" +/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses + a value of 0x1000, and we are compatible. + FIXME: How does this affect NewABI? */ +#define ELF_MAXPAGESIZE 0x1000 + #include "elf32-target.h" /* Support for traditional mips targets using n32 ABI. */ -#define INCLUDED_TARGET_FILE /* More a type of flag. */ - #undef TARGET_LITTLE_SYM #undef TARGET_LITTLE_NAME #undef TARGET_BIG_SYM #undef TARGET_BIG_NAME +#undef ELF_MAXPAGESIZE + #define TARGET_LITTLE_SYM bfd_elf32_ntradlittlemips_vec #define TARGET_LITTLE_NAME "elf32-ntradlittlemips" #define TARGET_BIG_SYM bfd_elf32_ntradbigmips_vec #define TARGET_BIG_NAME "elf32-ntradbigmips" +/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses + page sizes of up to that limit, so we need to respect it. */ +#define ELF_MAXPAGESIZE 0x10000 +#define elf32_bed elf32_tradbed + /* Include the target file again for this target. */ #include "elf32-target.h" diff -uprN binutils-2.14.90.0.7/bfd/elfxx-ia64.c binutils-2.14.90.0.8/bfd/elfxx-ia64.c --- binutils-2.14.90.0.7/bfd/elfxx-ia64.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elfxx-ia64.c 2004-01-14 13:07:43.000000000 -0800 @@ -24,6 +24,8 @@ #include "elf-bfd.h" #include "opcode/ia64.h" #include "elf/ia64.h" +#include "objalloc.h" +#include "hashtab.h" /* THE RULES for all the stuff the linker creates -- @@ -51,7 +53,7 @@ descriptor for a MIN_PLT entry, and requires one IPLT reloc. MIN_PLT Created by PLTOFF entries against dynamic symbols. This - does not reqire dynamic relocations. */ + does not require dynamic relocations. */ #define NELEMS(a) ((int) (sizeof (a) / sizeof ((a)[0]))) @@ -79,7 +81,7 @@ struct elfNN_ia64_dyn_sym_info bfd_vma dtpmod_offset; bfd_vma dtprel_offset; - /* The symbol table entry, if any, that this was derrived from. */ + /* The symbol table entry, if any, that this was derived from. */ struct elf_link_hash_entry *h; /* Used to count non-got, non-plt relocations for delayed sizing @@ -115,7 +117,8 @@ struct elfNN_ia64_dyn_sym_info struct elfNN_ia64_local_hash_entry { - struct bfd_hash_entry root; + int id; + unsigned int r_sym; struct elfNN_ia64_dyn_sym_info *info; /* TRUE if this hash entry's addends was translated for @@ -123,12 +126,6 @@ struct elfNN_ia64_local_hash_entry unsigned sec_merge_done : 1; }; -struct elfNN_ia64_local_hash_table -{ - struct bfd_hash_table root; - /* No additional fields for now. */ -}; - struct elfNN_ia64_link_hash_entry { struct elf_link_hash_entry root; @@ -153,7 +150,8 @@ struct elfNN_ia64_link_hash_table unsigned self_dtpmod_done : 1;/* has self DTPMOD entry been finished? */ bfd_vma self_dtpmod_offset; /* .got offset to self DTPMOD entry */ - struct elfNN_ia64_local_hash_table loc_hash_table; + htab_t loc_hash_table; + void *loc_hash_memory; }; struct elfNN_ia64_allocate_data @@ -196,17 +194,11 @@ static bfd_boolean elfNN_ia64_add_symbol static int elfNN_ia64_additional_program_headers PARAMS ((bfd *abfd)); static bfd_boolean elfNN_ia64_modify_segment_map - PARAMS ((bfd *)); + PARAMS ((bfd *, struct bfd_link_info *)); static bfd_boolean elfNN_ia64_is_local_label_name PARAMS ((bfd *abfd, const char *name)); static bfd_boolean elfNN_ia64_dynamic_symbol_p PARAMS ((struct elf_link_hash_entry *h, struct bfd_link_info *info, int)); -static bfd_boolean elfNN_ia64_local_hash_table_init - PARAMS ((struct elfNN_ia64_local_hash_table *ht, bfd *abfd, - new_hash_entry_func new)); -static struct bfd_hash_entry *elfNN_ia64_new_loc_hash_entry - PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table, - const char *string)); static struct bfd_hash_entry *elfNN_ia64_new_elf_hash_entry PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table, const char *string)); @@ -215,15 +207,17 @@ static void elfNN_ia64_hash_copy_indirec struct elf_link_hash_entry *)); static void elfNN_ia64_hash_hide_symbol PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean)); +static hashval_t elfNN_ia64_local_htab_hash PARAMS ((const void *)); +static int elfNN_ia64_local_htab_eq PARAMS ((const void *ptr1, + const void *ptr2)); static struct bfd_link_hash_table *elfNN_ia64_hash_table_create PARAMS ((bfd *abfd)); -static struct elfNN_ia64_local_hash_entry *elfNN_ia64_local_hash_lookup - PARAMS ((struct elfNN_ia64_local_hash_table *table, const char *string, - bfd_boolean create, bfd_boolean copy)); +static void elfNN_ia64_hash_table_free + PARAMS ((struct bfd_link_hash_table *hash)); static bfd_boolean elfNN_ia64_global_dyn_sym_thunk PARAMS ((struct bfd_hash_entry *, PTR)); -static bfd_boolean elfNN_ia64_local_dyn_sym_thunk - PARAMS ((struct bfd_hash_entry *, PTR)); +static int elfNN_ia64_local_dyn_sym_thunk + PARAMS ((void **, PTR)); static void elfNN_ia64_dyn_sym_traverse PARAMS ((struct elfNN_ia64_link_hash_table *ia64_info, bfd_boolean (*func) (struct elfNN_ia64_dyn_sym_info *, PTR), @@ -713,14 +707,14 @@ elfNN_ia64_relax_section (abfd, sec, lin *again = FALSE; /* Don't even try to relax for non-ELF outputs. */ - if (link_info->hash->creator->flavour != bfd_target_elf_flavour) + if (!is_elf_hash_table (link_info->hash)) return FALSE; /* Nothing to do if there are no relocations or there is no need for the relax finalize pass. */ if ((sec->flags & SEC_RELOC) == 0 || sec->reloc_count == 0 - || (link_info->relax_finalizing + || (!link_info->need_relax_finalize && sec->need_finalize_relax == 0)) return TRUE; @@ -771,14 +765,14 @@ elfNN_ia64_relax_section (abfd, sec, lin case R_IA64_PCREL21BI: case R_IA64_PCREL21M: case R_IA64_PCREL21F: - if (link_info->relax_finalizing) + if (!link_info->need_relax_finalize) continue; is_branch = TRUE; break; case R_IA64_LTOFF22X: case R_IA64_LDXMOV: - if (!link_info->relax_finalizing) + if (link_info->need_relax_finalize) { sec->need_finalize_relax = 1; continue; @@ -810,7 +804,7 @@ elfNN_ia64_relax_section (abfd, sec, lin isym = isymbuf + ELFNN_R_SYM (irel->r_info); if (isym->st_shndx == SHN_UNDEF) - continue; /* We can't do anthing with undefined symbols. */ + continue; /* We can't do anything with undefined symbols. */ else if (isym->st_shndx == SHN_ABS) tsec = bfd_abs_section_ptr; else if (isym->st_shndx == SHN_COMMON) @@ -858,7 +852,7 @@ elfNN_ia64_relax_section (abfd, sec, lin else { - /* We can't do anthing with undefined symbols. */ + /* We can't do anything with undefined symbols. */ if (h->root.type == bfd_link_hash_undefined || h->root.type == bfd_link_hash_undefweak) continue; @@ -882,6 +876,8 @@ elfNN_ia64_relax_section (abfd, sec, lin if (is_branch) { + bfd_signed_vma offset; + reladdr = (sec->output_section->vma + sec->output_offset + roff) & (bfd_vma) -4; @@ -917,6 +913,13 @@ elfNN_ia64_relax_section (abfd, sec, lin /* Resize the current section to make room for the new branch. */ trampoff = (sec->_cooked_size + 15) & (bfd_vma) -16; + + /* If trampoline is out of range, there is nothing we + can do. */ + offset = trampoff - (roff & (bfd_vma) -4); + if (offset < -0x1000000 || offset > 0x0FFFFF0) + continue; + amt = trampoff + size; contents = (bfd_byte *) bfd_realloc (contents, amt); if (contents == NULL) @@ -963,14 +966,18 @@ elfNN_ia64_relax_section (abfd, sec, lin } else { + /* If trampoline is out of range, there is nothing we + can do. */ + offset = f->trampoff - (roff & (bfd_vma) -4); + if (offset < -0x1000000 || offset > 0x0FFFFF0) + continue; + /* Nop out the reloc, since we're finalizing things here. */ irel->r_info = ELFNN_R_INFO (0, R_IA64_NONE); } - /* Fix up the existing branch to hit the trampoline. Hope like - hell this doesn't overflow too. */ - if (elfNN_ia64_install_value (abfd, contents + roff, - f->trampoff - (roff & (bfd_vma) -4), + /* Fix up the existing branch to hit the trampoline. */ + if (elfNN_ia64_install_value (abfd, contents + roff, offset, r_type) != bfd_reloc_ok) goto error_return; @@ -1079,7 +1086,7 @@ elfNN_ia64_relax_section (abfd, sec, lin /* ??? Resize .rela.got too. */ } - if (link_info->relax_finalizing) + if (!link_info->need_relax_finalize) sec->need_finalize_relax = 0; *again = changed_contents || changed_relocs; @@ -1411,8 +1418,9 @@ elfNN_ia64_additional_program_headers (a } static bfd_boolean -elfNN_ia64_modify_segment_map (abfd) +elfNN_ia64_modify_segment_map (abfd, info) bfd *abfd; + struct bfd_link_info *info ATTRIBUTE_UNUSED; { struct elf_segment_map *m, **pm; Elf_Internal_Shdr *hdr; @@ -1552,44 +1560,6 @@ elfNN_ia64_dynamic_symbol_p (h, info, r_ return _bfd_elf_dynamic_symbol_p (h, info, ignore_protected); } -static bfd_boolean -elfNN_ia64_local_hash_table_init (ht, abfd, new) - struct elfNN_ia64_local_hash_table *ht; - bfd *abfd ATTRIBUTE_UNUSED; - new_hash_entry_func new; -{ - memset (ht, 0, sizeof (*ht)); - return bfd_hash_table_init (&ht->root, new); -} - -static struct bfd_hash_entry* -elfNN_ia64_new_loc_hash_entry (entry, table, string) - struct bfd_hash_entry *entry; - struct bfd_hash_table *table; - const char *string; -{ - struct elfNN_ia64_local_hash_entry *ret; - ret = (struct elfNN_ia64_local_hash_entry *) entry; - - /* Allocate the structure if it has not already been allocated by a - subclass. */ - if (!ret) - ret = bfd_hash_allocate (table, sizeof (*ret)); - - if (!ret) - return 0; - - /* Initialize our local data. All zeros, and definitely easier - than setting a handful of bit fields. */ - memset (ret, 0, sizeof (*ret)); - - /* Call the allocation method of the superclass. */ - ret = ((struct elfNN_ia64_local_hash_entry *) - bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table, string)); - - return (struct bfd_hash_entry *) ret; -} - static struct bfd_hash_entry* elfNN_ia64_new_elf_hash_entry (entry, table, string) struct bfd_hash_entry *entry; @@ -1636,7 +1606,8 @@ elfNN_ia64_hash_copy_indirect (bed, xdir (ind->root.elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR - | ELF_LINK_HASH_REF_REGULAR_NONWEAK)); + | ELF_LINK_HASH_REF_REGULAR_NONWEAK + | ELF_LINK_HASH_NEEDS_PLT)); if (ind->root.root.type != bfd_link_hash_indirect) return; @@ -1689,6 +1660,33 @@ elfNN_ia64_hash_hide_symbol (info, xh, f } } +/* Compute a hash of a local hash entry. */ + +static hashval_t +elfNN_ia64_local_htab_hash (ptr) + const void *ptr; +{ + struct elfNN_ia64_local_hash_entry *entry + = (struct elfNN_ia64_local_hash_entry *) ptr; + + return (((entry->id & 0xff) << 24) | ((entry->id & 0xff00) << 8)) + ^ entry->r_sym ^ (entry->id >> 16); +} + +/* Compare local hash entries. */ + +static int +elfNN_ia64_local_htab_eq (ptr1, ptr2) + const void *ptr1, *ptr2; +{ + struct elfNN_ia64_local_hash_entry *entry1 + = (struct elfNN_ia64_local_hash_entry *) ptr1; + struct elfNN_ia64_local_hash_entry *entry2 + = (struct elfNN_ia64_local_hash_entry *) ptr2; + + return entry1->id == entry2->id && entry1->r_sym == entry2->r_sym; +} + /* Create the derived linker hash table. The IA-64 ELF port uses this derived hash table to keep information specific to the IA-64 ElF linker (without using static variables). */ @@ -1710,8 +1708,10 @@ elfNN_ia64_hash_table_create (abfd) return 0; } - if (!elfNN_ia64_local_hash_table_init (&ret->loc_hash_table, abfd, - elfNN_ia64_new_loc_hash_entry)) + ret->loc_hash_table = htab_try_create (1024, elfNN_ia64_local_htab_hash, + elfNN_ia64_local_htab_eq, NULL); + ret->loc_hash_memory = objalloc_create (); + if (!ret->loc_hash_table || !ret->loc_hash_memory) { free (ret); return 0; @@ -1720,16 +1720,19 @@ elfNN_ia64_hash_table_create (abfd) return &ret->root.root; } -/* Look up an entry in a Alpha ELF linker hash table. */ +/* Destroy IA-64 linker hash table. */ -static INLINE struct elfNN_ia64_local_hash_entry * -elfNN_ia64_local_hash_lookup(table, string, create, copy) - struct elfNN_ia64_local_hash_table *table; - const char *string; - bfd_boolean create, copy; +static void +elfNN_ia64_hash_table_free (hash) + struct bfd_link_hash_table *hash; { - return ((struct elfNN_ia64_local_hash_entry *) - bfd_hash_lookup (&table->root, string, create, copy)); + struct elfNN_ia64_link_hash_table *ia64_info + = (struct elfNN_ia64_link_hash_table *) hash; + if (ia64_info->loc_hash_table) + htab_delete (ia64_info->loc_hash_table); + if (ia64_info->loc_hash_memory) + objalloc_free ((struct objalloc *) ia64_info->loc_hash_memory); + _bfd_generic_link_hash_table_free (hash); } /* Traverse both local and global hash tables. */ @@ -1761,20 +1764,20 @@ elfNN_ia64_global_dyn_sym_thunk (xentry, } static bfd_boolean -elfNN_ia64_local_dyn_sym_thunk (xentry, xdata) - struct bfd_hash_entry *xentry; +elfNN_ia64_local_dyn_sym_thunk (slot, xdata) + void **slot; PTR xdata; { struct elfNN_ia64_local_hash_entry *entry - = (struct elfNN_ia64_local_hash_entry *) xentry; + = (struct elfNN_ia64_local_hash_entry *) *slot; struct elfNN_ia64_dyn_sym_traverse_data *data = (struct elfNN_ia64_dyn_sym_traverse_data *) xdata; struct elfNN_ia64_dyn_sym_info *dyn_i; for (dyn_i = entry->info; dyn_i; dyn_i = dyn_i->next) if (! (*data->func) (dyn_i, data->data)) - return FALSE; - return TRUE; + return 0; + return 1; } static void @@ -1790,8 +1793,8 @@ elfNN_ia64_dyn_sym_traverse (ia64_info, elf_link_hash_traverse (&ia64_info->root, elfNN_ia64_global_dyn_sym_thunk, &xdata); - bfd_hash_traverse (&ia64_info->loc_hash_table.root, - elfNN_ia64_local_dyn_sym_thunk, &xdata); + htab_traverse (ia64_info->loc_hash_table, + elfNN_ia64_local_dyn_sym_thunk, &xdata); } static bfd_boolean @@ -1853,22 +1856,33 @@ get_local_sym_hash (ia64_info, abfd, rel const Elf_Internal_Rela *rel; bfd_boolean create; { - struct elfNN_ia64_local_hash_entry *ret; + struct elfNN_ia64_local_hash_entry e, *ret; asection *sec = abfd->sections; - char addr_name [34]; + hashval_t h = (((sec->id & 0xff) << 24) | ((sec->id & 0xff00) << 8)) + ^ ELFNN_R_SYM (rel->r_info) ^ (sec->id >> 16); + void **slot; + + e.id = sec->id; + e.r_sym = ELFNN_R_SYM (rel->r_info); + slot = htab_find_slot_with_hash (ia64_info->loc_hash_table, &e, h, + create ? INSERT : NO_INSERT); - BFD_ASSERT ((sizeof (sec->id)*2 + 1 + sizeof (unsigned long)*2 + 1) <= 34); - BFD_ASSERT (sec); - - /* Construct a string for use in the elfNN_ia64_local_hash_table. - name describes what was once anonymous memory. */ + if (!slot) + return NULL; - sprintf (addr_name, "%x:%lx", - sec->id, (unsigned long) ELFNN_R_SYM (rel->r_info)); + if (*slot) + return (struct elfNN_ia64_local_hash_entry *) *slot; - /* Collect the canonical entry data for this address. */ - ret = elfNN_ia64_local_hash_lookup (&ia64_info->loc_hash_table, - addr_name, create, create); + ret = (struct elfNN_ia64_local_hash_entry *) + objalloc_alloc ((struct objalloc *) ia64_info->loc_hash_memory, + sizeof (struct elfNN_ia64_local_hash_entry)); + if (ret) + { + memset (ret, 0, sizeof (*ret)); + ret->id = sec->id; + ret->r_sym = ELFNN_R_SYM (rel->r_info); + *slot = ret; + } return ret; } @@ -1953,7 +1967,7 @@ get_got (abfd, info, ia64_info) } /* Create function descriptor section (.opd). This section is called .opd - because it contains "official prodecure descriptors". The "official" + because it contains "official procedure descriptors". The "official" refers to the fact that these descriptors are used when taking the address of a procedure, thus ensuring a unique address for each procedure. */ @@ -1993,9 +2007,9 @@ get_fptr (abfd, info, ia64_info) if (info->pie) { asection *fptr_rel; - fptr_rel = bfd_make_section(abfd, ".rela.opd"); + fptr_rel = bfd_make_section(dynobj, ".rela.opd"); if (fptr_rel == NULL - || !bfd_set_section_flags (abfd, fptr_rel, + || !bfd_set_section_flags (dynobj, fptr_rel, (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY @@ -2928,6 +2942,15 @@ elfNN_ia64_size_dynamic_sections (output if (strip) ia64_info->fptr_sec = NULL; } + else if (sec == ia64_info->rel_fptr_sec) + { + if (strip) + ia64_info->rel_fptr_sec = NULL; + else + /* We use the reloc_count field as a counter if we need to + copy relocs into the output file. */ + sec->reloc_count = 0; + } else if (sec == ia64_info->plt_sec) { if (strip) @@ -3545,12 +3568,10 @@ static bfd_vma elfNN_ia64_tprel_base (info) struct bfd_link_info *info; { - struct elf_link_tls_segment *tls_segment - = elf_hash_table (info)->tls_segment; + asection *tls_sec = elf_hash_table (info)->tls_sec; - BFD_ASSERT (tls_segment != NULL); - return (tls_segment->start - - align_power ((bfd_vma) 16, tls_segment->align)); + BFD_ASSERT (tls_sec != NULL); + return tls_sec->vma - align_power ((bfd_vma) 16, tls_sec->alignment_power); } /* Return the base VMA address which should be subtracted from real addresses @@ -3561,8 +3582,8 @@ static bfd_vma elfNN_ia64_dtprel_base (info) struct bfd_link_info *info; { - BFD_ASSERT (elf_hash_table (info)->tls_segment != NULL); - return elf_hash_table (info)->tls_segment->start; + BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL); + return elf_hash_table (info)->tls_sec->vma; } /* Called through qsort to sort the .IA_64.unwind section during a @@ -3849,9 +3870,11 @@ elfNN_ia64_relocate_section (output_bfd, if (r_symndx < symtab_hdr->sh_info) { /* Reloc against local symbol. */ + asection *msec; sym = local_syms + r_symndx; sym_sec = local_sections[r_symndx]; - value = _bfd_elf_rela_local_sym (output_bfd, sym, sym_sec, rel); + msec = sym_sec; + value = _bfd_elf_rela_local_sym (output_bfd, sym, &msec, rel); if ((sym_sec->flags & SEC_MERGE) && ELF_ST_TYPE (sym->st_info) == STT_SECTION && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE) @@ -3862,7 +3885,6 @@ elfNN_ia64_relocate_section (output_bfd, if (loc_h && ! loc_h->sec_merge_done) { struct elfNN_ia64_dyn_sym_info *dynent; - asection *msec; for (dynent = loc_h->info; dynent; dynent = dynent->next) { @@ -4871,6 +4893,8 @@ elfNN_hpux_backend_symbol_processing (bf /* Stuff for the BFD linker: */ #define bfd_elfNN_bfd_link_hash_table_create \ elfNN_ia64_hash_table_create +#define bfd_elfNN_bfd_link_hash_table_free \ + elfNN_ia64_hash_table_free #define elf_backend_create_dynamic_sections \ elfNN_ia64_create_dynamic_sections #define elf_backend_check_relocs \ @@ -4899,7 +4923,6 @@ elfNN_hpux_backend_symbol_processing (bf #define elf_backend_want_plt_sym 0 #define elf_backend_plt_alignment 5 #define elf_backend_got_header_size 0 -#define elf_backend_plt_header_size PLT_HEADER_SIZE #define elf_backend_want_got_plt 1 #define elf_backend_may_use_rel_p 1 #define elf_backend_may_use_rela_p 1 diff -uprN binutils-2.14.90.0.7/bfd/elfxx-mips.c binutils-2.14.90.0.8/bfd/elfxx-mips.c --- binutils-2.14.90.0.7/bfd/elfxx-mips.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elfxx-mips.c 2004-01-14 13:07:43.000000000 -0800 @@ -370,114 +370,137 @@ typedef struct runtime_pdr { #define rpdNil ((pRPDR) 0) static struct bfd_hash_entry *mips_elf_link_hash_newfunc - PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *)); + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); static void ecoff_swap_rpdr_out - PARAMS ((bfd *, const RPDR *, struct rpdr_ext *)); + (bfd *, const RPDR *, struct rpdr_ext *); static bfd_boolean mips_elf_create_procedure_table - PARAMS ((PTR, bfd *, struct bfd_link_info *, asection *, - struct ecoff_debug_info *)); + (void *, bfd *, struct bfd_link_info *, asection *, + struct ecoff_debug_info *); static bfd_boolean mips_elf_check_mips16_stubs - PARAMS ((struct mips_elf_link_hash_entry *, PTR)); + (struct mips_elf_link_hash_entry *, void *); static void bfd_mips_elf32_swap_gptab_in - PARAMS ((bfd *, const Elf32_External_gptab *, Elf32_gptab *)); + (bfd *, const Elf32_External_gptab *, Elf32_gptab *); static void bfd_mips_elf32_swap_gptab_out - PARAMS ((bfd *, const Elf32_gptab *, Elf32_External_gptab *)); + (bfd *, const Elf32_gptab *, Elf32_External_gptab *); static void bfd_elf32_swap_compact_rel_out - PARAMS ((bfd *, const Elf32_compact_rel *, Elf32_External_compact_rel *)); + (bfd *, const Elf32_compact_rel *, Elf32_External_compact_rel *); static void bfd_elf32_swap_crinfo_out - PARAMS ((bfd *, const Elf32_crinfo *, Elf32_External_crinfo *)); + (bfd *, const Elf32_crinfo *, Elf32_External_crinfo *); static int sort_dynamic_relocs - PARAMS ((const void *, const void *)); + (const void *, const void *); static int sort_dynamic_relocs_64 - PARAMS ((const void *, const void *)); + (const void *, const void *); static bfd_boolean mips_elf_output_extsym - PARAMS ((struct mips_elf_link_hash_entry *, PTR)); -static int gptab_compare PARAMS ((const void *, const void *)); -static asection * mips_elf_rel_dyn_section PARAMS ((bfd *, bfd_boolean)); -static asection * mips_elf_got_section PARAMS ((bfd *, bfd_boolean)); + (struct mips_elf_link_hash_entry *, void *); +static int gptab_compare + (const void *, const void *); +static asection *mips_elf_rel_dyn_section + (bfd *, bfd_boolean); +static asection *mips_elf_got_section + (bfd *, bfd_boolean); static struct mips_got_info *mips_elf_got_info - PARAMS ((bfd *, asection **)); -static long mips_elf_get_global_gotsym_index PARAMS ((bfd *abfd)); + (bfd *, asection **); +static long mips_elf_get_global_gotsym_index + (bfd *abfd); static bfd_vma mips_elf_local_got_index - PARAMS ((bfd *, bfd *, struct bfd_link_info *, bfd_vma)); + (bfd *, bfd *, struct bfd_link_info *, bfd_vma); static bfd_vma mips_elf_global_got_index - PARAMS ((bfd *, bfd *, struct elf_link_hash_entry *)); + (bfd *, bfd *, struct elf_link_hash_entry *); static bfd_vma mips_elf_got_page - PARAMS ((bfd *, bfd *, struct bfd_link_info *, bfd_vma, bfd_vma *)); + (bfd *, bfd *, struct bfd_link_info *, bfd_vma, bfd_vma *); static bfd_vma mips_elf_got16_entry - PARAMS ((bfd *, bfd *, struct bfd_link_info *, bfd_vma, bfd_boolean)); + (bfd *, bfd *, struct bfd_link_info *, bfd_vma, bfd_boolean); static bfd_vma mips_elf_got_offset_from_index - PARAMS ((bfd *, bfd *, bfd *, bfd_vma)); + (bfd *, bfd *, bfd *, bfd_vma); static struct mips_got_entry *mips_elf_create_local_got_entry - PARAMS ((bfd *, bfd *, struct mips_got_info *, asection *, bfd_vma)); + (bfd *, bfd *, struct mips_got_info *, asection *, bfd_vma); static bfd_boolean mips_elf_sort_hash_table - PARAMS ((struct bfd_link_info *, unsigned long)); + (struct bfd_link_info *, unsigned long); static bfd_boolean mips_elf_sort_hash_table_f - PARAMS ((struct mips_elf_link_hash_entry *, PTR)); + (struct mips_elf_link_hash_entry *, void *); static bfd_boolean mips_elf_record_local_got_symbol - PARAMS ((bfd *, long, bfd_vma, struct mips_got_info *)); + (bfd *, long, bfd_vma, struct mips_got_info *); static bfd_boolean mips_elf_record_global_got_symbol - PARAMS ((struct elf_link_hash_entry *, bfd *, struct bfd_link_info *, - struct mips_got_info *)); + (struct elf_link_hash_entry *, bfd *, struct bfd_link_info *, + struct mips_got_info *); static const Elf_Internal_Rela *mips_elf_next_relocation - PARAMS ((bfd *, unsigned int, const Elf_Internal_Rela *, - const Elf_Internal_Rela *)); + (bfd *, unsigned int, const Elf_Internal_Rela *, const Elf_Internal_Rela *); static bfd_boolean mips_elf_local_relocation_p - PARAMS ((bfd *, const Elf_Internal_Rela *, asection **, bfd_boolean)); -static bfd_boolean mips_elf_overflow_p PARAMS ((bfd_vma, int)); -static bfd_vma mips_elf_high PARAMS ((bfd_vma)); -static bfd_vma mips_elf_higher PARAMS ((bfd_vma)); -static bfd_vma mips_elf_highest PARAMS ((bfd_vma)); + (bfd *, const Elf_Internal_Rela *, asection **, bfd_boolean); +static bfd_boolean mips_elf_overflow_p + (bfd_vma, int); +static bfd_vma mips_elf_high + (bfd_vma); +static bfd_vma mips_elf_higher + (bfd_vma); +static bfd_vma mips_elf_highest + (bfd_vma); static bfd_boolean mips_elf_create_compact_rel_section - PARAMS ((bfd *, struct bfd_link_info *)); + (bfd *, struct bfd_link_info *); static bfd_boolean mips_elf_create_got_section - PARAMS ((bfd *, struct bfd_link_info *, bfd_boolean)); + (bfd *, struct bfd_link_info *, bfd_boolean); static bfd_reloc_status_type mips_elf_calculate_relocation - PARAMS ((bfd *, bfd *, asection *, struct bfd_link_info *, - const Elf_Internal_Rela *, bfd_vma, reloc_howto_type *, - Elf_Internal_Sym *, asection **, bfd_vma *, const char **, - bfd_boolean *, bfd_boolean)); + (bfd *, bfd *, asection *, struct bfd_link_info *, + const Elf_Internal_Rela *, bfd_vma, reloc_howto_type *, + Elf_Internal_Sym *, asection **, bfd_vma *, const char **, + bfd_boolean *, bfd_boolean); static bfd_vma mips_elf_obtain_contents - PARAMS ((reloc_howto_type *, const Elf_Internal_Rela *, bfd *, bfd_byte *)); + (reloc_howto_type *, const Elf_Internal_Rela *, bfd *, bfd_byte *); static bfd_boolean mips_elf_perform_relocation - PARAMS ((struct bfd_link_info *, reloc_howto_type *, - const Elf_Internal_Rela *, bfd_vma, bfd *, asection *, bfd_byte *, - bfd_boolean)); + (struct bfd_link_info *, reloc_howto_type *, const Elf_Internal_Rela *, + bfd_vma, bfd *, asection *, bfd_byte *, bfd_boolean); static bfd_boolean mips_elf_stub_section_p - PARAMS ((bfd *, asection *)); + (bfd *, asection *); static void mips_elf_allocate_dynamic_relocations - PARAMS ((bfd *, unsigned int)); + (bfd *, unsigned int); static bfd_boolean mips_elf_create_dynamic_relocation - PARAMS ((bfd *, struct bfd_link_info *, const Elf_Internal_Rela *, - struct mips_elf_link_hash_entry *, asection *, - bfd_vma, bfd_vma *, asection *)); -static void mips_set_isa_flags PARAMS ((bfd *)); -static INLINE char* elf_mips_abi_name PARAMS ((bfd *)); + (bfd *, struct bfd_link_info *, const Elf_Internal_Rela *, + struct mips_elf_link_hash_entry *, asection *, bfd_vma, + bfd_vma *, asection *); +static void mips_set_isa_flags + (bfd *); +static INLINE char *elf_mips_abi_name + (bfd *); static void mips_elf_irix6_finish_dynamic_symbol - PARAMS ((bfd *, const char *, Elf_Internal_Sym *)); -static bfd_boolean mips_mach_extends_p PARAMS ((unsigned long, unsigned long)); -static bfd_boolean mips_32bit_flags_p PARAMS ((flagword)); -static INLINE hashval_t mips_elf_hash_bfd_vma PARAMS ((bfd_vma)); -static hashval_t mips_elf_got_entry_hash PARAMS ((const PTR)); -static int mips_elf_got_entry_eq PARAMS ((const PTR, const PTR)); + (bfd *, const char *, Elf_Internal_Sym *); +static bfd_boolean mips_mach_extends_p + (unsigned long, unsigned long); +static bfd_boolean mips_32bit_flags_p + (flagword); +static INLINE hashval_t mips_elf_hash_bfd_vma + (bfd_vma); +static hashval_t mips_elf_got_entry_hash + (const void *); +static int mips_elf_got_entry_eq + (const void *, const void *); static bfd_boolean mips_elf_multi_got - PARAMS ((bfd *, struct bfd_link_info *, struct mips_got_info *, - asection *, bfd_size_type)); -static hashval_t mips_elf_multi_got_entry_hash PARAMS ((const PTR)); -static int mips_elf_multi_got_entry_eq PARAMS ((const PTR, const PTR)); -static hashval_t mips_elf_bfd2got_entry_hash PARAMS ((const PTR)); -static int mips_elf_bfd2got_entry_eq PARAMS ((const PTR, const PTR)); -static int mips_elf_make_got_per_bfd PARAMS ((void **, void *)); -static int mips_elf_merge_gots PARAMS ((void **, void *)); -static int mips_elf_set_global_got_offset PARAMS ((void**, void *)); -static int mips_elf_resolve_final_got_entry PARAMS ((void**, void *)); + (bfd *, struct bfd_link_info *, struct mips_got_info *, + asection *, bfd_size_type); +static hashval_t mips_elf_multi_got_entry_hash + (const void *); +static int mips_elf_multi_got_entry_eq + (const void *, const void *); +static hashval_t mips_elf_bfd2got_entry_hash + (const void *); +static int mips_elf_bfd2got_entry_eq + (const void *, const void *); +static int mips_elf_make_got_per_bfd + (void **, void *); +static int mips_elf_merge_gots + (void **, void *); +static int mips_elf_set_global_got_offset + (void **, void *); +static int mips_elf_set_no_stub + (void **, void *); +static int mips_elf_resolve_final_got_entry + (void **, void *); static void mips_elf_resolve_final_got_entries - PARAMS ((struct mips_got_info *)); + (struct mips_got_info *); static bfd_vma mips_elf_adjust_gp - PARAMS ((bfd *, struct mips_got_info *, bfd *)); + (bfd *, struct mips_got_info *, bfd *); static struct mips_got_info *mips_elf_got_for_ibfd - PARAMS ((struct mips_got_info *, bfd *)); + (struct mips_got_info *, bfd *); /* This will be used when we sort the dynamic relocation records. */ static bfd *reldyn_sorting_bfd; @@ -542,15 +565,15 @@ static bfd *reldyn_sorting_bfd; /* Add a dynamic symbol table-entry. */ #ifdef BFD64 -#define MIPS_ELF_ADD_DYNAMIC_ENTRY(info, tag, val) \ - (ABI_64_P (elf_hash_table (info)->dynobj) \ - ? bfd_elf64_add_dynamic_entry (info, (bfd_vma) tag, (bfd_vma) val) \ - : bfd_elf32_add_dynamic_entry (info, (bfd_vma) tag, (bfd_vma) val)) +#define MIPS_ELF_ADD_DYNAMIC_ENTRY(info, tag, val) \ + (ABI_64_P (elf_hash_table (info)->dynobj) \ + ? bfd_elf64_add_dynamic_entry (info, tag, val) \ + : bfd_elf32_add_dynamic_entry (info, tag, val)) #else -#define MIPS_ELF_ADD_DYNAMIC_ENTRY(info, tag, val) \ - (ABI_64_P (elf_hash_table (info)->dynobj) \ - ? (abort (), FALSE) \ - : bfd_elf32_add_dynamic_entry (info, (bfd_vma) tag, (bfd_vma) val)) +#define MIPS_ELF_ADD_DYNAMIC_ENTRY(info, tag, val) \ + (ABI_64_P (elf_hash_table (info)->dynobj) \ + ? (abort (), FALSE) \ + : bfd_elf32_add_dynamic_entry (info, tag, val)) #endif #define MIPS_ELF_RTYPE_TO_HOWTO(abfd, rtype, rela) \ @@ -680,7 +703,7 @@ static bfd *reldyn_sorting_bfd; #define mips_elf_link_hash_traverse(table, func, info) \ (elf_link_hash_traverse \ (&(table)->root, \ - (bfd_boolean (*) PARAMS ((struct elf_link_hash_entry *, PTR))) (func), \ + (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func), \ (info))) /* Get the MIPS ELF linker hash table from a link_info structure. */ @@ -691,28 +714,24 @@ static bfd *reldyn_sorting_bfd; /* Create an entry in a MIPS ELF linker hash table. */ static struct bfd_hash_entry * -mips_elf_link_hash_newfunc (entry, table, string) - struct bfd_hash_entry *entry; - struct bfd_hash_table *table; - const char *string; +mips_elf_link_hash_newfunc (struct bfd_hash_entry *entry, + struct bfd_hash_table *table, const char *string) { struct mips_elf_link_hash_entry *ret = (struct mips_elf_link_hash_entry *) entry; /* Allocate the structure if it has not already been allocated by a subclass. */ - if (ret == (struct mips_elf_link_hash_entry *) NULL) - ret = ((struct mips_elf_link_hash_entry *) - bfd_hash_allocate (table, - sizeof (struct mips_elf_link_hash_entry))); - if (ret == (struct mips_elf_link_hash_entry *) NULL) + if (ret == NULL) + ret = bfd_hash_allocate (table, sizeof (struct mips_elf_link_hash_entry)); + if (ret == NULL) return (struct bfd_hash_entry *) ret; /* Call the allocation method of the superclass. */ ret = ((struct mips_elf_link_hash_entry *) _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret, table, string)); - if (ret != (struct mips_elf_link_hash_entry *) NULL) + if (ret != NULL) { /* Set local fields. */ memset (&ret->esym, 0, sizeof (EXTR)); @@ -733,17 +752,15 @@ mips_elf_link_hash_newfunc (entry, table } bfd_boolean -_bfd_mips_elf_new_section_hook (abfd, sec) - bfd *abfd; - asection *sec; +_bfd_mips_elf_new_section_hook (bfd *abfd, asection *sec) { struct _mips_elf_section_data *sdata; bfd_size_type amt = sizeof (*sdata); - sdata = (struct _mips_elf_section_data *) bfd_zalloc (abfd, amt); + sdata = bfd_zalloc (abfd, amt); if (sdata == NULL) return FALSE; - sec->used_by_bfd = (PTR) sdata; + sec->used_by_bfd = sdata; return _bfd_elf_new_section_hook (abfd, sec); } @@ -752,23 +769,21 @@ _bfd_mips_elf_new_section_hook (abfd, se ecoff_debug_info structure. */ bfd_boolean -_bfd_mips_elf_read_ecoff_info (abfd, section, debug) - bfd *abfd; - asection *section; - struct ecoff_debug_info *debug; +_bfd_mips_elf_read_ecoff_info (bfd *abfd, asection *section, + struct ecoff_debug_info *debug) { HDRR *symhdr; const struct ecoff_debug_swap *swap; - char *ext_hdr = NULL; + char *ext_hdr; swap = get_elf_backend_data (abfd)->elf_backend_ecoff_debug_swap; memset (debug, 0, sizeof (*debug)); - ext_hdr = (char *) bfd_malloc (swap->external_hdr_size); + ext_hdr = bfd_malloc (swap->external_hdr_size); if (ext_hdr == NULL && swap->external_hdr_size != 0) goto error_return; - if (! bfd_get_section_contents (abfd, section, ext_hdr, (file_ptr) 0, + if (! bfd_get_section_contents (abfd, section, ext_hdr, 0, swap->external_hdr_size)) goto error_return; @@ -783,26 +798,26 @@ _bfd_mips_elf_read_ecoff_info (abfd, sec else \ { \ bfd_size_type amt = (bfd_size_type) size * symhdr->count; \ - debug->ptr = (type) bfd_malloc (amt); \ + debug->ptr = bfd_malloc (amt); \ if (debug->ptr == NULL) \ goto error_return; \ - if (bfd_seek (abfd, (file_ptr) symhdr->offset, SEEK_SET) != 0 \ + if (bfd_seek (abfd, symhdr->offset, SEEK_SET) != 0 \ || bfd_bread (debug->ptr, amt, abfd) != amt) \ goto error_return; \ } READ (line, cbLineOffset, cbLine, sizeof (unsigned char), unsigned char *); - READ (external_dnr, cbDnOffset, idnMax, swap->external_dnr_size, PTR); - READ (external_pdr, cbPdOffset, ipdMax, swap->external_pdr_size, PTR); - READ (external_sym, cbSymOffset, isymMax, swap->external_sym_size, PTR); - READ (external_opt, cbOptOffset, ioptMax, swap->external_opt_size, PTR); + READ (external_dnr, cbDnOffset, idnMax, swap->external_dnr_size, void *); + READ (external_pdr, cbPdOffset, ipdMax, swap->external_pdr_size, void *); + READ (external_sym, cbSymOffset, isymMax, swap->external_sym_size, void *); + READ (external_opt, cbOptOffset, ioptMax, swap->external_opt_size, void *); READ (external_aux, cbAuxOffset, iauxMax, sizeof (union aux_ext), union aux_ext *); READ (ss, cbSsOffset, issMax, sizeof (char), char *); READ (ssext, cbSsExtOffset, issExtMax, sizeof (char), char *); - READ (external_fdr, cbFdOffset, ifdMax, swap->external_fdr_size, PTR); - READ (external_rfd, cbRfdOffset, crfd, swap->external_rfd_size, PTR); - READ (external_ext, cbExtOffset, iextMax, swap->external_ext_size, PTR); + READ (external_fdr, cbFdOffset, ifdMax, swap->external_fdr_size, void *); + READ (external_rfd, cbRfdOffset, crfd, swap->external_rfd_size, void *); + READ (external_ext, cbExtOffset, iextMax, swap->external_ext_size, void *); #undef READ debug->fdr = NULL; @@ -841,10 +856,7 @@ _bfd_mips_elf_read_ecoff_info (abfd, sec /* Swap RPDR (runtime procedure table entry) for output. */ static void -ecoff_swap_rpdr_out (abfd, in, ex) - bfd *abfd; - const RPDR *in; - struct rpdr_ext *ex; +ecoff_swap_rpdr_out (bfd *abfd, const RPDR *in, struct rpdr_ext *ex) { H_PUT_S32 (abfd, in->adr, ex->p_adr); H_PUT_32 (abfd, in->regmask, ex->p_regmask); @@ -865,18 +877,15 @@ ecoff_swap_rpdr_out (abfd, in, ex) /* Create a runtime procedure table from the .mdebug section. */ static bfd_boolean -mips_elf_create_procedure_table (handle, abfd, info, s, debug) - PTR handle; - bfd *abfd; - struct bfd_link_info *info; - asection *s; - struct ecoff_debug_info *debug; +mips_elf_create_procedure_table (void *handle, bfd *abfd, + struct bfd_link_info *info, asection *s, + struct ecoff_debug_info *debug) { const struct ecoff_debug_swap *swap; HDRR *hdr = &debug->symbolic_header; RPDR *rpdr, *rp; struct rpdr_ext *erp; - PTR rtproc; + void *rtproc; struct pdr_ext *epdr; struct sym_ext *esym; char *ss, **sv; @@ -903,44 +912,44 @@ mips_elf_create_procedure_table (handle, { size = swap->external_pdr_size; - epdr = (struct pdr_ext *) bfd_malloc (size * count); + epdr = bfd_malloc (size * count); if (epdr == NULL) goto error_return; - if (! _bfd_ecoff_get_accumulated_pdr (handle, (PTR) epdr)) + if (! _bfd_ecoff_get_accumulated_pdr (handle, (bfd_byte *) epdr)) goto error_return; size = sizeof (RPDR); - rp = rpdr = (RPDR *) bfd_malloc (size * count); + rp = rpdr = bfd_malloc (size * count); if (rpdr == NULL) goto error_return; size = sizeof (char *); - sv = (char **) bfd_malloc (size * count); + sv = bfd_malloc (size * count); if (sv == NULL) goto error_return; count = hdr->isymMax; size = swap->external_sym_size; - esym = (struct sym_ext *) bfd_malloc (size * count); + esym = bfd_malloc (size * count); if (esym == NULL) goto error_return; - if (! _bfd_ecoff_get_accumulated_sym (handle, (PTR) esym)) + if (! _bfd_ecoff_get_accumulated_sym (handle, (bfd_byte *) esym)) goto error_return; count = hdr->issMax; - ss = (char *) bfd_malloc (count); + ss = bfd_malloc (count); if (ss == NULL) goto error_return; - if (! _bfd_ecoff_get_accumulated_ss (handle, (PTR) ss)) + if (! _bfd_ecoff_get_accumulated_ss (handle, ss)) goto error_return; count = hdr->ipdMax; for (i = 0; i < (unsigned long) count; i++, rp++) { - (*swap->swap_pdr_in) (abfd, (PTR) (epdr + i), &pdr); - (*swap->swap_sym_in) (abfd, (PTR) &esym[pdr.isym], &sym); + (*swap->swap_pdr_in) (abfd, epdr + i, &pdr); + (*swap->swap_sym_in) (abfd, &esym[pdr.isym], &sym); rp->adr = sym.value; rp->regmask = pdr.regmask; rp->regoffset = pdr.regoffset; @@ -957,7 +966,7 @@ mips_elf_create_procedure_table (handle, size = sizeof (struct rpdr_ext) * (count + 2) + sindex; size = BFD_ALIGN (size, 16); - rtproc = (PTR) bfd_alloc (abfd, size); + rtproc = bfd_alloc (abfd, size); if (rtproc == NULL) { mips_elf_hash_table (info)->procedure_count = 0; @@ -966,7 +975,7 @@ mips_elf_create_procedure_table (handle, mips_elf_hash_table (info)->procedure_count = count + 2; - erp = (struct rpdr_ext *) rtproc; + erp = rtproc; memset (erp, 0, sizeof (struct rpdr_ext)); erp++; str = (char *) rtproc + sizeof (struct rpdr_ext) * (count + 2); @@ -982,11 +991,11 @@ mips_elf_create_procedure_table (handle, /* Set the size and contents of .rtproc section. */ s->_raw_size = size; - s->contents = (bfd_byte *) rtproc; + s->contents = rtproc; /* Skip this section later on (I don't think this currently matters, but someday it might). */ - s->link_order_head = (struct bfd_link_order *) NULL; + s->link_order_head = NULL; if (epdr != NULL) free (epdr); @@ -1019,9 +1028,8 @@ mips_elf_create_procedure_table (handle, discard them. */ static bfd_boolean -mips_elf_check_mips16_stubs (h, data) - struct mips_elf_link_hash_entry *h; - PTR data ATTRIBUTE_UNUSED; +mips_elf_check_mips16_stubs (struct mips_elf_link_hash_entry *h, + void *data ATTRIBUTE_UNUSED) { if (h->root.root.type == bfd_link_hash_warning) h = (struct mips_elf_link_hash_entry *) h->root.root.u.i.link; @@ -1069,19 +1077,13 @@ mips_elf_check_mips16_stubs (h, data) } bfd_reloc_status_type -_bfd_mips_elf_gprel16_with_gp (abfd, symbol, reloc_entry, input_section, - relocatable, data, gp) - bfd *abfd; - asymbol *symbol; - arelent *reloc_entry; - asection *input_section; - bfd_boolean relocatable; - PTR data; - bfd_vma gp; +_bfd_mips_elf_gprel16_with_gp (bfd *abfd, asymbol *symbol, + arelent *reloc_entry, asection *input_section, + bfd_boolean relocatable, void *data, bfd_vma gp) { bfd_vma relocation; - unsigned long insn = 0; bfd_signed_vma val; + bfd_reloc_status_type status; if (bfd_is_com_section (symbol->section)) relocation = 0; @@ -1097,13 +1099,7 @@ _bfd_mips_elf_gprel16_with_gp (abfd, sym /* Set val to the offset into the section or symbol. */ val = reloc_entry->addend; - if (reloc_entry->howto->partial_inplace) - { - insn = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address); - val += insn & 0xffff; - } - - _bfd_mips_elf_sign_extend(val, 16); + _bfd_mips_elf_sign_extend (val, 16); /* Adjust val for the final section location and GP value. If we are producing relocatable output, we don't want to do this for @@ -1114,17 +1110,215 @@ _bfd_mips_elf_gprel16_with_gp (abfd, sym if (reloc_entry->howto->partial_inplace) { - insn = (insn & ~0xffff) | (val & 0xffff); - bfd_put_32 (abfd, (bfd_vma) insn, - (bfd_byte *) data + reloc_entry->address); + status = _bfd_relocate_contents (reloc_entry->howto, abfd, val, + (bfd_byte *) data + + reloc_entry->address); + if (status != bfd_reloc_ok) + return status; } else reloc_entry->addend = val; if (relocatable) reloc_entry->address += input_section->output_offset; - else if (((val & ~0xffff) != ~0xffff) && ((val & ~0xffff) != 0)) - return bfd_reloc_overflow; + + return bfd_reloc_ok; +} + +/* Used to store a REL high-part relocation such as R_MIPS_HI16 or + R_MIPS_GOT16. REL is the relocation, INPUT_SECTION is the section + that contains the relocation field and DATA points to the start of + INPUT_SECTION. */ + +struct mips_hi16 +{ + struct mips_hi16 *next; + bfd_byte *data; + asection *input_section; + arelent rel; +}; + +/* FIXME: This should not be a static variable. */ + +static struct mips_hi16 *mips_hi16_list; + +/* A howto special_function for REL *HI16 relocations. We can only + calculate the correct value once we've seen the partnering + *LO16 relocation, so just save the information for later. + + The ABI requires that the *LO16 immediately follow the *HI16. + However, as a GNU extension, we permit an arbitrary number of + *HI16s to be associated with a single *LO16. This significantly + simplies the relocation handling in gcc. */ + +bfd_reloc_status_type +_bfd_mips_elf_hi16_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry, + asymbol *symbol ATTRIBUTE_UNUSED, void *data, + asection *input_section, bfd *output_bfd, + char **error_message ATTRIBUTE_UNUSED) +{ + struct mips_hi16 *n; + + if (reloc_entry->address > input_section->_cooked_size) + return bfd_reloc_outofrange; + + n = bfd_malloc (sizeof *n); + if (n == NULL) + return bfd_reloc_outofrange; + + n->next = mips_hi16_list; + n->data = data; + n->input_section = input_section; + n->rel = *reloc_entry; + mips_hi16_list = n; + + if (output_bfd != NULL) + reloc_entry->address += input_section->output_offset; + + return bfd_reloc_ok; +} + +/* A howto special_function for REL R_MIPS_GOT16 relocations. This is just + like any other 16-bit relocation when applied to global symbols, but is + treated in the same as R_MIPS_HI16 when applied to local symbols. */ + +bfd_reloc_status_type +_bfd_mips_elf_got16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, + bfd *output_bfd, char **error_message) +{ + if ((symbol->flags & (BSF_GLOBAL | BSF_WEAK)) != 0 + || bfd_is_und_section (bfd_get_section (symbol)) + || bfd_is_com_section (bfd_get_section (symbol))) + /* The relocation is against a global symbol. */ + return _bfd_mips_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, + error_message); + + return _bfd_mips_elf_hi16_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); +} + +/* A howto special_function for REL *LO16 relocations. The *LO16 itself + is a straightforward 16 bit inplace relocation, but we must deal with + any partnering high-part relocations as well. */ + +bfd_reloc_status_type +_bfd_mips_elf_lo16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, + void *data, asection *input_section, + bfd *output_bfd, char **error_message) +{ + bfd_vma vallo; + + if (reloc_entry->address > input_section->_cooked_size) + return bfd_reloc_outofrange; + + vallo = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address); + while (mips_hi16_list != NULL) + { + bfd_reloc_status_type ret; + struct mips_hi16 *hi; + + hi = mips_hi16_list; + + /* R_MIPS_GOT16 relocations are something of a special case. We + want to install the addend in the same way as for a R_MIPS_HI16 + relocation (with a rightshift of 16). However, since GOT16 + relocations can also be used with global symbols, their howto + has a rightshift of 0. */ + if (hi->rel.howto->type == R_MIPS_GOT16) + hi->rel.howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, R_MIPS_HI16, FALSE); + + /* VALLO is a signed 16-bit number. Bias it by 0x8000 so that any + carry or borrow will induce a change of +1 or -1 in the high part. */ + hi->rel.addend += (vallo + 0x8000) & 0xffff; + + /* R_MIPS_GNU_REL_HI16 relocations are relative to the address of the + lo16 relocation, not their own address. If we're calculating the + final value, and hence subtracting the "PC", subtract the offset + of the lo16 relocation from here. */ + if (output_bfd == NULL && hi->rel.howto->type == R_MIPS_GNU_REL_HI16) + hi->rel.addend -= reloc_entry->address - hi->rel.address; + + ret = _bfd_mips_elf_generic_reloc (abfd, &hi->rel, symbol, hi->data, + hi->input_section, output_bfd, + error_message); + if (ret != bfd_reloc_ok) + return ret; + + mips_hi16_list = hi->next; + free (hi); + } + + return _bfd_mips_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, + error_message); +} + +/* A generic howto special_function. This calculates and installs the + relocation itself, thus avoiding the oft-discussed problems in + bfd_perform_relocation and bfd_install_relocation. */ + +bfd_reloc_status_type +_bfd_mips_elf_generic_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry, + asymbol *symbol, void *data ATTRIBUTE_UNUSED, + asection *input_section, bfd *output_bfd, + char **error_message ATTRIBUTE_UNUSED) +{ + bfd_signed_vma val; + bfd_reloc_status_type status; + bfd_boolean relocatable; + + relocatable = (output_bfd != NULL); + + if (reloc_entry->address > input_section->_cooked_size) + return bfd_reloc_outofrange; + + /* Build up the field adjustment in VAL. */ + val = 0; + if (!relocatable || (symbol->flags & BSF_SECTION_SYM) != 0) + { + /* Either we're calculating the final field value or we have a + relocation against a section symbol. Add in the section's + offset or address. */ + val += symbol->section->output_section->vma; + val += symbol->section->output_offset; + } + + if (!relocatable) + { + /* We're calculating the final field value. Add in the symbol's value + and, if pc-relative, subtract the address of the field itself. */ + val += symbol->value; + if (reloc_entry->howto->pc_relative) + { + val -= input_section->output_section->vma; + val -= input_section->output_offset; + val -= reloc_entry->address; + } + } + + /* VAL is now the final adjustment. If we're keeping this relocation + in the output file, and if the relocation uses a separate addend, + we just need to add VAL to that addend. Otherwise we need to add + VAL to the relocation field itself. */ + if (relocatable && !reloc_entry->howto->partial_inplace) + reloc_entry->addend += val; + else + { + /* Add in the separate addend, if any. */ + val += reloc_entry->addend; + + /* Add VAL to the relocation field. */ + status = _bfd_relocate_contents (reloc_entry->howto, abfd, val, + (bfd_byte *) data + + reloc_entry->address); + if (status != bfd_reloc_ok) + return status; + } + + if (relocatable) + reloc_entry->address += input_section->output_offset; return bfd_reloc_ok; } @@ -1133,30 +1327,24 @@ _bfd_mips_elf_gprel16_with_gp (abfd, sym on the equivalence of the two elements of the union. */ static void -bfd_mips_elf32_swap_gptab_in (abfd, ex, in) - bfd *abfd; - const Elf32_External_gptab *ex; - Elf32_gptab *in; +bfd_mips_elf32_swap_gptab_in (bfd *abfd, const Elf32_External_gptab *ex, + Elf32_gptab *in) { in->gt_entry.gt_g_value = H_GET_32 (abfd, ex->gt_entry.gt_g_value); in->gt_entry.gt_bytes = H_GET_32 (abfd, ex->gt_entry.gt_bytes); } static void -bfd_mips_elf32_swap_gptab_out (abfd, in, ex) - bfd *abfd; - const Elf32_gptab *in; - Elf32_External_gptab *ex; +bfd_mips_elf32_swap_gptab_out (bfd *abfd, const Elf32_gptab *in, + Elf32_External_gptab *ex) { H_PUT_32 (abfd, in->gt_entry.gt_g_value, ex->gt_entry.gt_g_value); H_PUT_32 (abfd, in->gt_entry.gt_bytes, ex->gt_entry.gt_bytes); } static void -bfd_elf32_swap_compact_rel_out (abfd, in, ex) - bfd *abfd; - const Elf32_compact_rel *in; - Elf32_External_compact_rel *ex; +bfd_elf32_swap_compact_rel_out (bfd *abfd, const Elf32_compact_rel *in, + Elf32_External_compact_rel *ex) { H_PUT_32 (abfd, in->id1, ex->id1); H_PUT_32 (abfd, in->num, ex->num); @@ -1167,10 +1355,8 @@ bfd_elf32_swap_compact_rel_out (abfd, in } static void -bfd_elf32_swap_crinfo_out (abfd, in, ex) - bfd *abfd; - const Elf32_crinfo *in; - Elf32_External_crinfo *ex; +bfd_elf32_swap_crinfo_out (bfd *abfd, const Elf32_crinfo *in, + Elf32_External_crinfo *ex) { unsigned long l; @@ -1188,10 +1374,8 @@ bfd_elf32_swap_crinfo_out (abfd, in, ex) BFD, so they are globally visible. */ void -bfd_mips_elf32_swap_reginfo_in (abfd, ex, in) - bfd *abfd; - const Elf32_External_RegInfo *ex; - Elf32_RegInfo *in; +bfd_mips_elf32_swap_reginfo_in (bfd *abfd, const Elf32_External_RegInfo *ex, + Elf32_RegInfo *in) { in->ri_gprmask = H_GET_32 (abfd, ex->ri_gprmask); in->ri_cprmask[0] = H_GET_32 (abfd, ex->ri_cprmask[0]); @@ -1202,10 +1386,8 @@ bfd_mips_elf32_swap_reginfo_in (abfd, ex } void -bfd_mips_elf32_swap_reginfo_out (abfd, in, ex) - bfd *abfd; - const Elf32_RegInfo *in; - Elf32_External_RegInfo *ex; +bfd_mips_elf32_swap_reginfo_out (bfd *abfd, const Elf32_RegInfo *in, + Elf32_External_RegInfo *ex) { H_PUT_32 (abfd, in->ri_gprmask, ex->ri_gprmask); H_PUT_32 (abfd, in->ri_cprmask[0], ex->ri_cprmask[0]); @@ -1222,10 +1404,8 @@ bfd_mips_elf32_swap_reginfo_out (abfd, i without worrying about whether the 64 bit ABI has been included. */ void -bfd_mips_elf64_swap_reginfo_in (abfd, ex, in) - bfd *abfd; - const Elf64_External_RegInfo *ex; - Elf64_Internal_RegInfo *in; +bfd_mips_elf64_swap_reginfo_in (bfd *abfd, const Elf64_External_RegInfo *ex, + Elf64_Internal_RegInfo *in) { in->ri_gprmask = H_GET_32 (abfd, ex->ri_gprmask); in->ri_pad = H_GET_32 (abfd, ex->ri_pad); @@ -1237,10 +1417,8 @@ bfd_mips_elf64_swap_reginfo_in (abfd, ex } void -bfd_mips_elf64_swap_reginfo_out (abfd, in, ex) - bfd *abfd; - const Elf64_Internal_RegInfo *in; - Elf64_External_RegInfo *ex; +bfd_mips_elf64_swap_reginfo_out (bfd *abfd, const Elf64_Internal_RegInfo *in, + Elf64_External_RegInfo *ex) { H_PUT_32 (abfd, in->ri_gprmask, ex->ri_gprmask); H_PUT_32 (abfd, in->ri_pad, ex->ri_pad); @@ -1254,10 +1432,8 @@ bfd_mips_elf64_swap_reginfo_out (abfd, i /* Swap in an options header. */ void -bfd_mips_elf_swap_options_in (abfd, ex, in) - bfd *abfd; - const Elf_External_Options *ex; - Elf_Internal_Options *in; +bfd_mips_elf_swap_options_in (bfd *abfd, const Elf_External_Options *ex, + Elf_Internal_Options *in) { in->kind = H_GET_8 (abfd, ex->kind); in->size = H_GET_8 (abfd, ex->size); @@ -1268,10 +1444,8 @@ bfd_mips_elf_swap_options_in (abfd, ex, /* Swap out an options header. */ void -bfd_mips_elf_swap_options_out (abfd, in, ex) - bfd *abfd; - const Elf_Internal_Options *in; - Elf_External_Options *ex; +bfd_mips_elf_swap_options_out (bfd *abfd, const Elf_Internal_Options *in, + Elf_External_Options *ex) { H_PUT_8 (abfd, in->kind, ex->kind); H_PUT_8 (abfd, in->size, ex->size); @@ -1283,9 +1457,7 @@ bfd_mips_elf_swap_options_out (abfd, in, entries by increasing r_symndx value. */ static int -sort_dynamic_relocs (arg1, arg2) - const PTR arg1; - const PTR arg2; +sort_dynamic_relocs (const void *arg1, const void *arg2) { Elf_Internal_Rela int_reloc1; Elf_Internal_Rela int_reloc2; @@ -1299,9 +1471,7 @@ sort_dynamic_relocs (arg1, arg2) /* Like sort_dynamic_relocs, but used for elf64 relocations. */ static int -sort_dynamic_relocs_64 (arg1, arg2) - const PTR arg1; - const PTR arg2; +sort_dynamic_relocs_64 (const void *arg1, const void *arg2) { Elf_Internal_Rela int_reloc1[3]; Elf_Internal_Rela int_reloc2[3]; @@ -1331,11 +1501,9 @@ sort_dynamic_relocs_64 (arg1, arg2) when generating a final executable. */ static bfd_boolean -mips_elf_output_extsym (h, data) - struct mips_elf_link_hash_entry *h; - PTR data; +mips_elf_output_extsym (struct mips_elf_link_hash_entry *h, void *data) { - struct extsym_info *einfo = (struct extsym_info *) data; + struct extsym_info *einfo = data; bfd_boolean strip; asection *sec, *output_section; @@ -1513,12 +1681,10 @@ mips_elf_output_extsym (h, data) /* A comparison routine used to sort .gptab entries. */ static int -gptab_compare (p1, p2) - const PTR p1; - const PTR p2; +gptab_compare (const void *p1, const void *p2) { - const Elf32_gptab *a1 = (const Elf32_gptab *) p1; - const Elf32_gptab *a2 = (const Elf32_gptab *) p2; + const Elf32_gptab *a1 = p1; + const Elf32_gptab *a2 = p2; return a1->gt_entry.gt_g_value - a2->gt_entry.gt_g_value; } @@ -1529,8 +1695,7 @@ gptab_compare (p1, p2) hash number. */ static INLINE hashval_t -mips_elf_hash_bfd_vma (addr) - bfd_vma addr; +mips_elf_hash_bfd_vma (bfd_vma addr) { #ifdef BFD64 return addr + (addr >> 32); @@ -1544,8 +1709,7 @@ mips_elf_hash_bfd_vma (addr) union members. */ static hashval_t -mips_elf_got_entry_hash (entry_) - const PTR entry_; +mips_elf_got_entry_hash (const void *entry_) { const struct mips_got_entry *entry = (struct mips_got_entry *)entry_; @@ -1557,9 +1721,7 @@ mips_elf_got_entry_hash (entry_) } static int -mips_elf_got_entry_eq (entry1, entry2) - const PTR entry1; - const PTR entry2; +mips_elf_got_entry_eq (const void *entry1, const void *entry2) { const struct mips_got_entry *e1 = (struct mips_got_entry *)entry1; const struct mips_got_entry *e2 = (struct mips_got_entry *)entry2; @@ -1576,8 +1738,7 @@ mips_elf_got_entry_eq (entry1, entry2) accordingly. */ static hashval_t -mips_elf_multi_got_entry_hash (entry_) - const PTR entry_; +mips_elf_multi_got_entry_hash (const void *entry_) { const struct mips_got_entry *entry = (struct mips_got_entry *)entry_; @@ -1591,9 +1752,7 @@ mips_elf_multi_got_entry_hash (entry_) } static int -mips_elf_multi_got_entry_eq (entry1, entry2) - const PTR entry1; - const PTR entry2; +mips_elf_multi_got_entry_eq (const void *entry1, const void *entry2) { const struct mips_got_entry *e1 = (struct mips_got_entry *)entry1; const struct mips_got_entry *e2 = (struct mips_got_entry *)entry2; @@ -1608,9 +1767,7 @@ mips_elf_multi_got_entry_eq (entry1, ent /* Returns the dynamic relocation section for DYNOBJ. */ static asection * -mips_elf_rel_dyn_section (dynobj, create_p) - bfd *dynobj; - bfd_boolean create_p; +mips_elf_rel_dyn_section (bfd *dynobj, bfd_boolean create_p) { static const char dname[] = ".rel.dyn"; asection *sreloc; @@ -1637,9 +1794,7 @@ mips_elf_rel_dyn_section (dynobj, create /* Returns the GOT section for ABFD. */ static asection * -mips_elf_got_section (abfd, maybe_excluded) - bfd *abfd; - bfd_boolean maybe_excluded; +mips_elf_got_section (bfd *abfd, bfd_boolean maybe_excluded) { asection *sgot = bfd_get_section_by_name (abfd, ".got"); if (sgot == NULL @@ -1653,9 +1808,7 @@ mips_elf_got_section (abfd, maybe_exclud section. */ static struct mips_got_info * -mips_elf_got_info (abfd, sgotp) - bfd *abfd; - asection **sgotp; +mips_elf_got_info (bfd *abfd, asection **sgotp) { asection *sgot; struct mips_got_info *g; @@ -1675,8 +1828,7 @@ mips_elf_got_info (abfd, sgotp) /* Obtain the lowest dynamic index of a symbol that was assigned a global GOT entry. */ static long -mips_elf_get_global_gotsym_index (abfd) - bfd *abfd; +mips_elf_get_global_gotsym_index (bfd *abfd) { asection *sgot; struct mips_got_info *g; @@ -1700,10 +1852,8 @@ mips_elf_get_global_gotsym_index (abfd) -1 if no satisfactory GOT offset can be found. */ static bfd_vma -mips_elf_local_got_index (abfd, ibfd, info, value) - bfd *abfd, *ibfd; - struct bfd_link_info *info; - bfd_vma value; +mips_elf_local_got_index (bfd *abfd, bfd *ibfd, struct bfd_link_info *info, + bfd_vma value) { asection *sgot; struct mips_got_info *g; @@ -1721,9 +1871,7 @@ mips_elf_local_got_index (abfd, ibfd, in /* Returns the GOT index for the global symbol indicated by H. */ static bfd_vma -mips_elf_global_got_index (abfd, ibfd, h) - bfd *abfd, *ibfd; - struct elf_link_hash_entry *h; +mips_elf_global_got_index (bfd *abfd, bfd *ibfd, struct elf_link_hash_entry *h) { bfd_vma index; asection *sgot; @@ -1744,7 +1892,7 @@ mips_elf_global_got_index (abfd, ibfd, h e.symndx = -1; e.d.h = (struct mips_elf_link_hash_entry *)h; - p = (struct mips_got_entry *) htab_find (g->got_entries, &e); + p = htab_find (g->got_entries, &e); BFD_ASSERT (p->gotidx > 0); return p->gotidx; @@ -1773,11 +1921,8 @@ mips_elf_global_got_index (abfd, ibfd, h OFFSETP, if it is non-NULL. */ static bfd_vma -mips_elf_got_page (abfd, ibfd, info, value, offsetp) - bfd *abfd, *ibfd; - struct bfd_link_info *info; - bfd_vma value; - bfd_vma *offsetp; +mips_elf_got_page (bfd *abfd, bfd *ibfd, struct bfd_link_info *info, + bfd_vma value, bfd_vma *offsetp) { asection *sgot; struct mips_got_info *g; @@ -1805,11 +1950,8 @@ mips_elf_got_page (abfd, ibfd, info, val for value. Return the index into the GOT for this entry. */ static bfd_vma -mips_elf_got16_entry (abfd, ibfd, info, value, external) - bfd *abfd, *ibfd; - struct bfd_link_info *info; - bfd_vma value; - bfd_boolean external; +mips_elf_got16_entry (bfd *abfd, bfd *ibfd, struct bfd_link_info *info, + bfd_vma value, bfd_boolean external) { asection *sgot; struct mips_got_info *g; @@ -1837,11 +1979,8 @@ mips_elf_got16_entry (abfd, ibfd, info, in the GOT. */ static bfd_vma -mips_elf_got_offset_from_index (dynobj, output_bfd, input_bfd, index) - bfd *dynobj; - bfd *output_bfd; - bfd *input_bfd; - bfd_vma index; +mips_elf_got_offset_from_index (bfd *dynobj, bfd *output_bfd, + bfd *input_bfd, bfd_vma index) { asection *sgot; bfd_vma gp; @@ -1858,11 +1997,9 @@ mips_elf_got_offset_from_index (dynobj, or -1 if it could not be created. */ static struct mips_got_entry * -mips_elf_create_local_got_entry (abfd, ibfd, gg, sgot, value) - bfd *abfd, *ibfd; - struct mips_got_info *gg; - asection *sgot; - bfd_vma value; +mips_elf_create_local_got_entry (bfd *abfd, bfd *ibfd, + struct mips_got_info *gg, + asection *sgot, bfd_vma value) { struct mips_got_entry entry, **loc; struct mips_got_info *g; @@ -1916,9 +2053,7 @@ mips_elf_create_local_got_entry (abfd, i section symbols are added and the count is higher. */ static bfd_boolean -mips_elf_sort_hash_table (info, max_local) - struct bfd_link_info *info; - unsigned long max_local; +mips_elf_sort_hash_table (struct bfd_link_info *info, unsigned long max_local) { struct mips_elf_hash_sort_data hsd; struct mips_got_info *g; @@ -1963,12 +2098,9 @@ mips_elf_sort_hash_table (info, max_loca index. */ static bfd_boolean -mips_elf_sort_hash_table_f (h, data) - struct mips_elf_link_hash_entry *h; - PTR data; +mips_elf_sort_hash_table_f (struct mips_elf_link_hash_entry *h, void *data) { - struct mips_elf_hash_sort_data *hsd - = (struct mips_elf_hash_sort_data *) data; + struct mips_elf_hash_sort_data *hsd = data; if (h->root.root.type == bfd_link_hash_warning) h = (struct mips_elf_link_hash_entry *) h->root.root.u.i.link; @@ -2004,11 +2136,9 @@ mips_elf_sort_hash_table_f (h, data) posterity. */ static bfd_boolean -mips_elf_record_global_got_symbol (h, abfd, info, g) - struct elf_link_hash_entry *h; - bfd *abfd; - struct bfd_link_info *info; - struct mips_got_info *g; +mips_elf_record_global_got_symbol (struct elf_link_hash_entry *h, + bfd *abfd, struct bfd_link_info *info, + struct mips_got_info *g) { struct mips_got_entry entry, **loc; @@ -2062,11 +2192,8 @@ mips_elf_record_global_got_symbol (h, ab SYMNDX in input bfd ABDF, plus ADDEND. */ static bfd_boolean -mips_elf_record_local_got_symbol (abfd, symndx, addend, g) - bfd *abfd; - long symndx; - bfd_vma addend; - struct mips_got_info *g; +mips_elf_record_local_got_symbol (bfd *abfd, long symndx, bfd_vma addend, + struct mips_got_info *g) { struct mips_got_entry entry, **loc; @@ -2094,8 +2221,7 @@ mips_elf_record_local_got_symbol (abfd, /* Compute the hash value of the bfd in a bfd2got hash entry. */ static hashval_t -mips_elf_bfd2got_entry_hash (entry_) - const PTR entry_; +mips_elf_bfd2got_entry_hash (const void *entry_) { const struct mips_elf_bfd2got_hash *entry = (struct mips_elf_bfd2got_hash *)entry_; @@ -2106,9 +2232,7 @@ mips_elf_bfd2got_entry_hash (entry_) /* Check whether two hash entries have the same bfd. */ static int -mips_elf_bfd2got_entry_eq (entry1, entry2) - const PTR entry1; - const PTR entry2; +mips_elf_bfd2got_entry_eq (const void *entry1, const void *entry2) { const struct mips_elf_bfd2got_hash *e1 = (const struct mips_elf_bfd2got_hash *)entry1; @@ -2122,9 +2246,7 @@ mips_elf_bfd2got_entry_eq (entry1, entry be the master GOT data. */ static struct mips_got_info * -mips_elf_got_for_ibfd (g, ibfd) - struct mips_got_info *g; - bfd *ibfd; +mips_elf_got_for_ibfd (struct mips_got_info *g, bfd *ibfd) { struct mips_elf_bfd2got_hash e, *p; @@ -2132,7 +2254,7 @@ mips_elf_got_for_ibfd (g, ibfd) return g; e.bfd = ibfd; - p = (struct mips_elf_bfd2got_hash *) htab_find (g->bfd2got, &e); + p = htab_find (g->bfd2got, &e); return p ? p->g : NULL; } @@ -2141,9 +2263,7 @@ mips_elf_got_for_ibfd (g, ibfd) bfd requires. */ static int -mips_elf_make_got_per_bfd (entryp, p) - void **entryp; - void *p; +mips_elf_make_got_per_bfd (void **entryp, void *p) { struct mips_got_entry *entry = (struct mips_got_entry *)*entryp; struct mips_elf_got_per_bfd_arg *arg = (struct mips_elf_got_per_bfd_arg *)p; @@ -2187,8 +2307,7 @@ mips_elf_make_got_per_bfd (entryp, p) g->local_gotno = 0; g->assigned_gotno = -1; g->got_entries = htab_try_create (1, mips_elf_multi_got_entry_hash, - mips_elf_multi_got_entry_eq, - (htab_del) NULL); + mips_elf_multi_got_entry_eq, NULL); if (g->got_entries == NULL) { arg->obfd = 0; @@ -2222,9 +2341,7 @@ mips_elf_make_got_per_bfd (entryp, p) and then make make the new got current. */ static int -mips_elf_merge_gots (bfd2got_, p) - void **bfd2got_; - void *p; +mips_elf_merge_gots (void **bfd2got_, void *p) { struct mips_elf_bfd2got_hash *bfd2got = (struct mips_elf_bfd2got_hash *)*bfd2got_; @@ -2263,7 +2380,7 @@ mips_elf_merge_gots (bfd2got_, p) got entries, since they're all in the master got_entries hash table anyway. */ - BFD_ASSERT (old_lcount + lcount == arg->primary->local_gotno); + BFD_ASSERT (old_lcount + lcount >= arg->primary->local_gotno); BFD_ASSERT (old_gcount + gcount >= arg->primary->global_gotno); arg->primary_count = arg->primary->local_gotno @@ -2287,7 +2404,7 @@ mips_elf_merge_gots (bfd2got_, p) htab_delete (g->got_entries); - BFD_ASSERT (old_lcount + lcount == arg->current->local_gotno); + BFD_ASSERT (old_lcount + lcount >= arg->current->local_gotno); BFD_ASSERT (old_gcount + gcount >= arg->current->global_gotno); arg->current_count = arg->current->local_gotno @@ -2318,12 +2435,10 @@ mips_elf_merge_gots (bfd2got_, p) first available global GOT entry in G. VALUE must contain the size of a GOT entry in bytes. For each global GOT entry that requires a dynamic relocation, NEEDED_RELOCS is incremented, and the symbol is - marked as not elligible for lazy resolution through a function + marked as not eligible for lazy resolution through a function stub. */ static int -mips_elf_set_global_got_offset (entryp, p) - void **entryp; - void *p; +mips_elf_set_global_got_offset (void **entryp, void *p) { struct mips_got_entry *entry = (struct mips_got_entry *)*entryp; struct mips_elf_set_global_got_offset_arg *arg @@ -2338,10 +2453,6 @@ mips_elf_set_global_got_offset (entryp, BFD_ASSERT (g->global_gotsym == NULL); entry->gotidx = arg->value * (long) g->assigned_gotno++; - /* We can't do lazy update of GOT entries for - non-primary GOTs since the PLT entries don't use the - right offsets, so punt at it for now. */ - entry->d.h->no_fn_stub = TRUE; if (arg->info->shared || (elf_hash_table (arg->info)->dynamic_sections_created && ((entry->d.h->root.elf_link_hash_flags @@ -2357,6 +2468,21 @@ mips_elf_set_global_got_offset (entryp, return 1; } +/* Mark any global symbols referenced in the GOT we are iterating over + as inelligible for lazy resolution stubs. */ +static int +mips_elf_set_no_stub (void **entryp, void *p ATTRIBUTE_UNUSED) +{ + struct mips_got_entry *entry = (struct mips_got_entry *)*entryp; + + if (entry->abfd != NULL + && entry->symndx == -1 + && entry->d.h->root.dynindx != -1) + entry->d.h->no_fn_stub = TRUE; + + return 1; +} + /* Follow indirect and warning hash entries so that each got entry points to the final symbol definition. P must point to a pointer to the hash table we're traversing. Since this traversal may @@ -2364,9 +2490,7 @@ mips_elf_set_global_got_offset (entryp, we've made a potentially-destructive change to the hash table, so the traversal must be restarted. */ static int -mips_elf_resolve_final_got_entry (entryp, p) - void **entryp; - void *p; +mips_elf_resolve_final_got_entry (void **entryp, void *p) { struct mips_got_entry *entry = (struct mips_got_entry *)*entryp; htab_t got_entries = *(htab_t *)p; @@ -2408,8 +2532,7 @@ mips_elf_resolve_final_got_entry (entryp /* Turn indirect got entries in a got_entries table into their final locations. */ static void -mips_elf_resolve_final_got_entries (g) - struct mips_got_info *g; +mips_elf_resolve_final_got_entries (struct mips_got_info *g) { htab_t got_entries; @@ -2427,10 +2550,7 @@ mips_elf_resolve_final_got_entries (g) /* Return the offset of an input bfd IBFD's GOT from the beginning of the primary GOT. */ static bfd_vma -mips_elf_adjust_gp (abfd, g, ibfd) - bfd *abfd; - struct mips_got_info *g; - bfd *ibfd; +mips_elf_adjust_gp (bfd *abfd, struct mips_got_info *g, bfd *ibfd) { if (g->bfd2got == NULL) return 0; @@ -2450,12 +2570,9 @@ mips_elf_adjust_gp (abfd, g, ibfd) a sequence of GOTs, each one 16-bit addressable. */ static bfd_boolean -mips_elf_multi_got (abfd, info, g, got, pages) - bfd *abfd; - struct bfd_link_info *info; - struct mips_got_info *g; - asection *got; - bfd_size_type pages; +mips_elf_multi_got (bfd *abfd, struct bfd_link_info *info, + struct mips_got_info *g, asection *got, + bfd_size_type pages) { struct mips_elf_got_per_bfd_arg got_per_bfd_arg; struct mips_elf_set_global_got_offset_arg set_got_offset_arg; @@ -2463,8 +2580,7 @@ mips_elf_multi_got (abfd, info, g, got, unsigned int assign; g->bfd2got = htab_try_create (1, mips_elf_bfd2got_entry_hash, - mips_elf_bfd2got_entry_eq, - (htab_del) NULL); + mips_elf_bfd2got_entry_eq, NULL); if (g->bfd2got == NULL) return FALSE; @@ -2509,7 +2625,7 @@ mips_elf_multi_got (abfd, info, g, got, g->next->assigned_gotno = 0; g->next->got_entries = htab_try_create (1, mips_elf_multi_got_entry_hash, mips_elf_multi_got_entry_eq, - (htab_del) NULL); + NULL); if (g->next->got_entries == NULL) return FALSE; g->next->bfd2got = NULL; @@ -2624,6 +2740,11 @@ mips_elf_multi_got (abfd, info, g, got, g->next = gg->next; gg->next = g; g = gn; + + /* Mark global symbols in every non-primary GOT as ineligible for + stubs. */ + if (g) + htab_traverse (g->got_entries, mips_elf_set_no_stub, NULL); } while (g); @@ -2638,11 +2759,9 @@ mips_elf_multi_got (abfd, info, g, got, RELOCATION. RELEND is one-past-the-end of the relocation table. */ static const Elf_Internal_Rela * -mips_elf_next_relocation (abfd, r_type, relocation, relend) - bfd *abfd ATTRIBUTE_UNUSED; - unsigned int r_type; - const Elf_Internal_Rela *relocation; - const Elf_Internal_Rela *relend; +mips_elf_next_relocation (bfd *abfd ATTRIBUTE_UNUSED, unsigned int r_type, + const Elf_Internal_Rela *relocation, + const Elf_Internal_Rela *relend) { /* According to the MIPS ELF ABI, the R_MIPS_LO16 relocation must be immediately following. However, for the IRIX6 ABI, the next @@ -2666,12 +2785,10 @@ mips_elf_next_relocation (abfd, r_type, /* Return whether a relocation is against a local symbol. */ static bfd_boolean -mips_elf_local_relocation_p (input_bfd, relocation, local_sections, - check_forced) - bfd *input_bfd; - const Elf_Internal_Rela *relocation; - asection **local_sections; - bfd_boolean check_forced; +mips_elf_local_relocation_p (bfd *input_bfd, + const Elf_Internal_Rela *relocation, + asection **local_sections, + bfd_boolean check_forced) { unsigned long r_symndx; Elf_Internal_Shdr *symtab_hdr; @@ -2707,9 +2824,7 @@ mips_elf_local_relocation_p (input_bfd, /* Sign-extend VALUE, which has the indicated number of BITS. */ bfd_vma -_bfd_mips_elf_sign_extend (value, bits) - bfd_vma value; - int bits; +_bfd_mips_elf_sign_extend (bfd_vma value, int bits) { if (value & ((bfd_vma) 1 << (bits - 1))) /* VALUE is negative. */ @@ -2719,13 +2834,11 @@ _bfd_mips_elf_sign_extend (value, bits) } /* Return non-zero if the indicated VALUE has overflowed the maximum - range expressable by a signed number with the indicated number of + range expressible by a signed number with the indicated number of BITS. */ static bfd_boolean -mips_elf_overflow_p (value, bits) - bfd_vma value; - int bits; +mips_elf_overflow_p (bfd_vma value, int bits) { bfd_signed_vma svalue = (bfd_signed_vma) value; @@ -2743,8 +2856,7 @@ mips_elf_overflow_p (value, bits) /* Calculate the %high function. */ static bfd_vma -mips_elf_high (value) - bfd_vma value; +mips_elf_high (bfd_vma value) { return ((value + (bfd_vma) 0x8000) >> 16) & 0xffff; } @@ -2752,8 +2864,7 @@ mips_elf_high (value) /* Calculate the %higher function. */ static bfd_vma -mips_elf_higher (value) - bfd_vma value ATTRIBUTE_UNUSED; +mips_elf_higher (bfd_vma value ATTRIBUTE_UNUSED) { #ifdef BFD64 return ((value + (bfd_vma) 0x80008000) >> 32) & 0xffff; @@ -2766,8 +2877,7 @@ mips_elf_higher (value) /* Calculate the %highest function. */ static bfd_vma -mips_elf_highest (value) - bfd_vma value ATTRIBUTE_UNUSED; +mips_elf_highest (bfd_vma value ATTRIBUTE_UNUSED) { #ifdef BFD64 return ((value + (((bfd_vma) 0x8000 << 32) | 0x80008000)) >> 48) & 0xffff; @@ -2780,9 +2890,8 @@ mips_elf_highest (value) /* Create the .compact_rel section. */ static bfd_boolean -mips_elf_create_compact_rel_section (abfd, info) - bfd *abfd; - struct bfd_link_info *info ATTRIBUTE_UNUSED; +mips_elf_create_compact_rel_section + (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED) { flagword flags; register asection *s; @@ -2808,10 +2917,8 @@ mips_elf_create_compact_rel_section (abf /* Create the .got section to hold the global offset table. */ static bfd_boolean -mips_elf_create_got_section (abfd, info, maybe_exclude) - bfd *abfd; - struct bfd_link_info *info; - bfd_boolean maybe_exclude; +mips_elf_create_got_section (bfd *abfd, struct bfd_link_info *info, + bfd_boolean maybe_exclude) { flagword flags; register asection *s; @@ -2849,8 +2956,7 @@ mips_elf_create_got_section (abfd, info, bh = NULL; if (! (_bfd_generic_link_add_one_symbol (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s, - (bfd_vma) 0, (const char *) NULL, FALSE, - get_elf_backend_data (abfd)->collect, &bh))) + 0, NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh))) return FALSE; h = (struct elf_link_hash_entry *) bh; @@ -2863,7 +2969,7 @@ mips_elf_create_got_section (abfd, info, return FALSE; amt = sizeof (struct mips_got_info); - g = (struct mips_got_info *) bfd_alloc (abfd, amt); + g = bfd_alloc (abfd, amt); if (g == NULL) return FALSE; g->global_gotsym = NULL; @@ -2873,8 +2979,7 @@ mips_elf_create_got_section (abfd, info, g->bfd2got = NULL; g->next = NULL; g->got_entries = htab_try_create (1, mips_elf_got_entry_hash, - mips_elf_got_entry_eq, - (htab_del) NULL); + mips_elf_got_entry_eq, NULL); if (g->got_entries == NULL) return FALSE; mips_elf_section_data (s)->u.got_info = g; @@ -2898,23 +3003,15 @@ mips_elf_create_got_section (abfd, info, overflow occurs, and bfd_reloc_ok to indicate success. */ static bfd_reloc_status_type -mips_elf_calculate_relocation (abfd, input_bfd, input_section, info, - relocation, addend, howto, local_syms, - local_sections, valuep, namep, - require_jalxp, save_addend) - bfd *abfd; - bfd *input_bfd; - asection *input_section; - struct bfd_link_info *info; - const Elf_Internal_Rela *relocation; - bfd_vma addend; - reloc_howto_type *howto; - Elf_Internal_Sym *local_syms; - asection **local_sections; - bfd_vma *valuep; - const char **namep; - bfd_boolean *require_jalxp; - bfd_boolean save_addend; +mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, + asection *input_section, + struct bfd_link_info *info, + const Elf_Internal_Rela *relocation, + bfd_vma addend, reloc_howto_type *howto, + Elf_Internal_Sym *local_syms, + asection **local_sections, bfd_vma *valuep, + const char **namep, bfd_boolean *require_jalxp, + bfd_boolean save_addend) { /* The eventual value we will return. */ bfd_vma value; @@ -3299,7 +3396,7 @@ mips_elf_calculate_relocation (abfd, inp break; case R_MIPS_GNU_REL16_S2: - value = symbol + _bfd_mips_elf_sign_extend (addend << 2, 18) - p; + value = symbol + _bfd_mips_elf_sign_extend (addend, 18) - p; overflowed_p = mips_elf_overflow_p (value, 18); value = (value >> 2) & howto->dst_mask; break; @@ -3322,9 +3419,9 @@ mips_elf_calculate_relocation (abfd, inp R_MIPS_26 case here. */ case R_MIPS_26: if (local_p) - value = (((addend << 2) | ((p + 4) & 0xf0000000)) + symbol) >> 2; + value = ((addend | ((p + 4) & 0xf0000000)) + symbol) >> 2; else - value = (_bfd_mips_elf_sign_extend (addend << 2, 28) + symbol) >> 2; + value = (_bfd_mips_elf_sign_extend (addend, 28) + symbol) >> 2; value &= howto->dst_mask; break; @@ -3518,11 +3615,9 @@ mips_elf_calculate_relocation (abfd, inp /* Obtain the field relocated by RELOCATION. */ static bfd_vma -mips_elf_obtain_contents (howto, relocation, input_bfd, contents) - reloc_howto_type *howto; - const Elf_Internal_Rela *relocation; - bfd *input_bfd; - bfd_byte *contents; +mips_elf_obtain_contents (reloc_howto_type *howto, + const Elf_Internal_Rela *relocation, + bfd *input_bfd, bfd_byte *contents) { bfd_vma x; bfd_byte *location = contents + relocation->r_offset; @@ -3550,16 +3645,12 @@ mips_elf_obtain_contents (howto, relocat Returns FALSE if anything goes wrong. */ static bfd_boolean -mips_elf_perform_relocation (info, howto, relocation, value, input_bfd, - input_section, contents, require_jalx) - struct bfd_link_info *info; - reloc_howto_type *howto; - const Elf_Internal_Rela *relocation; - bfd_vma value; - bfd *input_bfd; - asection *input_section; - bfd_byte *contents; - bfd_boolean require_jalx; +mips_elf_perform_relocation (struct bfd_link_info *info, + reloc_howto_type *howto, + const Elf_Internal_Rela *relocation, + bfd_vma value, bfd *input_bfd, + asection *input_section, bfd_byte *contents, + bfd_boolean require_jalx) { bfd_vma x; bfd_byte *location; @@ -3721,9 +3812,7 @@ mips_elf_perform_relocation (info, howto /* Returns TRUE if SECTION is a MIPS16 stub section. */ static bfd_boolean -mips_elf_stub_section_p (abfd, section) - bfd *abfd ATTRIBUTE_UNUSED; - asection *section; +mips_elf_stub_section_p (bfd *abfd ATTRIBUTE_UNUSED, asection *section) { const char *name = bfd_get_section_name (abfd, section); @@ -3735,9 +3824,7 @@ mips_elf_stub_section_p (abfd, section) /* Add room for N relocations to the .rel.dyn section in ABFD. */ static void -mips_elf_allocate_dynamic_relocations (abfd, n) - bfd *abfd; - unsigned int n; +mips_elf_allocate_dynamic_relocations (bfd *abfd, unsigned int n) { asection *s; @@ -3759,16 +3846,12 @@ mips_elf_allocate_dynamic_relocations (a caller should store the result in place of the original addend. */ static bfd_boolean -mips_elf_create_dynamic_relocation (output_bfd, info, rel, h, sec, - symbol, addendp, input_section) - bfd *output_bfd; - struct bfd_link_info *info; - const Elf_Internal_Rela *rel; - struct mips_elf_link_hash_entry *h; - asection *sec; - bfd_vma symbol; - bfd_vma *addendp; - asection *input_section; +mips_elf_create_dynamic_relocation (bfd *output_bfd, + struct bfd_link_info *info, + const Elf_Internal_Rela *rel, + struct mips_elf_link_hash_entry *h, + asection *sec, bfd_vma symbol, + bfd_vma *addendp, asection *input_section) { Elf_Internal_Rela outrel[3]; bfd_boolean skip; @@ -3917,12 +4000,11 @@ mips_elf_create_dynamic_relocation (outp invocation if ABI_64_P, and here we should generate an additional relocation record with R_MIPS_64 by itself for a NULL symbol before this relocation record. */ - outrel[1].r_info = ELF_R_INFO (output_bfd, (unsigned long) 0, + outrel[1].r_info = ELF_R_INFO (output_bfd, 0, ABI_64_P (output_bfd) ? R_MIPS_64 : R_MIPS_NONE); - outrel[2].r_info = ELF_R_INFO (output_bfd, (unsigned long) 0, - R_MIPS_NONE); + outrel[2].r_info = ELF_R_INFO (output_bfd, 0, R_MIPS_NONE); /* Adjust the output offset of the relocation to reference the correct location in the output file. */ @@ -3993,8 +4075,7 @@ mips_elf_create_dynamic_relocation (outp /* Return the MACH for a MIPS e_flags value. */ unsigned long -_bfd_elf_mips_mach (flags) - flagword flags; +_bfd_elf_mips_mach (flagword flags) { switch (flags & EF_MIPS_MACH) { @@ -4073,8 +4154,7 @@ _bfd_elf_mips_mach (flags) /* Return printable name for ABI. */ static INLINE char * -elf_mips_abi_name (abfd) - bfd *abfd; +elf_mips_abi_name (bfd *abfd) { flagword flags; @@ -4121,9 +4201,7 @@ static asymbol *mips_elf_acom_symbol_ptr This is used for both the 32-bit and the 64-bit ABI. */ void -_bfd_mips_elf_symbol_processing (abfd, asym) - bfd *abfd; - asymbol *asym; +_bfd_mips_elf_symbol_processing (bfd *abfd, asymbol *asym) { elf_symbol_type *elfsym; @@ -4199,9 +4277,7 @@ _bfd_mips_elf_symbol_processing (abfd, a a better way. */ bfd_boolean -_bfd_mips_elf_section_processing (abfd, hdr) - bfd *abfd; - Elf_Internal_Shdr *hdr; +_bfd_mips_elf_section_processing (bfd *abfd, Elf_Internal_Shdr *hdr) { if (hdr->sh_type == SHT_MIPS_REGINFO && hdr->sh_size > 0) @@ -4216,7 +4292,7 @@ _bfd_mips_elf_section_processing (abfd, SEEK_SET) != 0) return FALSE; H_PUT_32 (abfd, elf_gp (abfd), buf); - if (bfd_bwrite (buf, (bfd_size_type) 4, abfd) != 4) + if (bfd_bwrite (buf, 4, abfd) != 4) return FALSE; } @@ -4255,7 +4331,7 @@ _bfd_mips_elf_section_processing (abfd, SEEK_SET) != 0) return FALSE; H_PUT_64 (abfd, elf_gp (abfd), buf); - if (bfd_bwrite (buf, (bfd_size_type) 8, abfd) != 8) + if (bfd_bwrite (buf, 8, abfd) != 8) return FALSE; } else if (intopt.kind == ODK_REGINFO) @@ -4270,7 +4346,7 @@ _bfd_mips_elf_section_processing (abfd, SEEK_SET) != 0) return FALSE; H_PUT_32 (abfd, elf_gp (abfd), buf); - if (bfd_bwrite (buf, (bfd_size_type) 4, abfd) != 4) + if (bfd_bwrite (buf, 4, abfd) != 4) return FALSE; } l += intopt.size; @@ -4327,10 +4403,8 @@ _bfd_mips_elf_section_processing (abfd, how to. */ bfd_boolean -_bfd_mips_elf_section_from_shdr (abfd, hdr, name) - bfd *abfd; - Elf_Internal_Shdr *hdr; - const char *name; +_bfd_mips_elf_section_from_shdr (bfd *abfd, Elf_Internal_Shdr *hdr, + const char *name) { flagword flags = 0; @@ -4425,9 +4499,8 @@ _bfd_mips_elf_section_from_shdr (abfd, h Elf32_External_RegInfo ext; Elf32_RegInfo s; - if (! bfd_get_section_contents (abfd, hdr->bfd_section, (PTR) &ext, - (file_ptr) 0, - (bfd_size_type) sizeof ext)) + if (! bfd_get_section_contents (abfd, hdr->bfd_section, + &ext, 0, sizeof ext)) return FALSE; bfd_mips_elf32_swap_reginfo_in (abfd, &ext, &s); elf_gp (abfd) = s.ri_gp_value; @@ -4441,11 +4514,11 @@ _bfd_mips_elf_section_from_shdr (abfd, h { bfd_byte *contents, *l, *lend; - contents = (bfd_byte *) bfd_malloc (hdr->sh_size); + contents = bfd_malloc (hdr->sh_size); if (contents == NULL) return FALSE; if (! bfd_get_section_contents (abfd, hdr->bfd_section, contents, - (file_ptr) 0, hdr->sh_size)) + 0, hdr->sh_size)) { free (contents); return FALSE; @@ -4493,10 +4566,7 @@ _bfd_mips_elf_section_from_shdr (abfd, h used by both the 32-bit and the 64-bit ABI. */ bfd_boolean -_bfd_mips_elf_fake_sections (abfd, hdr, sec) - bfd *abfd; - Elf_Internal_Shdr *hdr; - asection *sec; +_bfd_mips_elf_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec) { register const char *name; @@ -4618,10 +4688,8 @@ _bfd_mips_elf_fake_sections (abfd, hdr, the .scommon section. */ bfd_boolean -_bfd_mips_elf_section_from_bfd_section (abfd, sec, retval) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec; - int *retval; +_bfd_mips_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED, + asection *sec, int *retval) { if (strcmp (bfd_get_section_name (abfd, sec), ".scommon") == 0) { @@ -4640,14 +4708,10 @@ _bfd_mips_elf_section_from_bfd_section ( file. We must handle the special MIPS section numbers here. */ bfd_boolean -_bfd_mips_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp) - bfd *abfd; - struct bfd_link_info *info; - const Elf_Internal_Sym *sym; - const char **namep; - flagword *flagsp ATTRIBUTE_UNUSED; - asection **secp; - bfd_vma *valp; +_bfd_mips_elf_add_symbol_hook (bfd *abfd, struct bfd_link_info *info, + const Elf_Internal_Sym *sym, const char **namep, + flagword *flagsp ATTRIBUTE_UNUSED, + asection **secp, bfd_vma *valp) { if (SGI_COMPAT (abfd) && (abfd->flags & DYNAMIC) != 0 @@ -4769,8 +4833,7 @@ _bfd_mips_elf_add_symbol_hook (abfd, inf /* Mark __rld_obj_head as dynamic. */ bh = NULL; if (! (_bfd_generic_link_add_one_symbol - (info, abfd, *namep, BSF_GLOBAL, *secp, - (bfd_vma) *valp, (const char *) NULL, FALSE, + (info, abfd, *namep, BSF_GLOBAL, *secp, *valp, NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh))) return FALSE; @@ -4799,12 +4862,10 @@ _bfd_mips_elf_add_symbol_hook (abfd, inf also where we undo the increment of the value for a mips16 symbol. */ bfd_boolean -_bfd_mips_elf_link_output_symbol_hook (abfd, info, name, sym, input_sec) - bfd *abfd ATTRIBUTE_UNUSED; - struct bfd_link_info *info ATTRIBUTE_UNUSED; - const char *name ATTRIBUTE_UNUSED; - Elf_Internal_Sym *sym; - asection *input_sec; +_bfd_mips_elf_link_output_symbol_hook + (struct bfd_link_info *info ATTRIBUTE_UNUSED, + const char *name ATTRIBUTE_UNUSED, Elf_Internal_Sym *sym, + asection *input_sec, struct elf_link_hash_entry *h ATTRIBUTE_UNUSED) { /* If we see a common symbol, which implies a relocatable link, then if a symbol was small common in an input file, mark it as small @@ -4825,9 +4886,7 @@ _bfd_mips_elf_link_output_symbol_hook (a /* Create dynamic sections when linking against a dynamic object. */ bfd_boolean -_bfd_mips_elf_create_dynamic_sections (abfd, info) - bfd *abfd; - struct bfd_link_info *info; +_bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) { struct elf_link_hash_entry *h; struct bfd_link_hash_entry *bh; @@ -4887,9 +4946,8 @@ _bfd_mips_elf_create_dynamic_sections (a { bh = NULL; if (! (_bfd_generic_link_add_one_symbol - (info, abfd, *namep, BSF_GLOBAL, bfd_und_section_ptr, - (bfd_vma) 0, (const char *) NULL, FALSE, - get_elf_backend_data (abfd)->collect, &bh))) + (info, abfd, *namep, BSF_GLOBAL, bfd_und_section_ptr, 0, + NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh))) return FALSE; h = (struct elf_link_hash_entry *) bh; @@ -4933,9 +4991,8 @@ _bfd_mips_elf_create_dynamic_sections (a name = SGI_COMPAT (abfd) ? "_DYNAMIC_LINK" : "_DYNAMIC_LINKING"; bh = NULL; if (!(_bfd_generic_link_add_one_symbol - (info, abfd, name, BSF_GLOBAL, bfd_abs_section_ptr, - (bfd_vma) 0, (const char *) NULL, FALSE, - get_elf_backend_data (abfd)->collect, &bh))) + (info, abfd, name, BSF_GLOBAL, bfd_abs_section_ptr, 0, + NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh))) return FALSE; h = (struct elf_link_hash_entry *) bh; @@ -4958,8 +5015,7 @@ _bfd_mips_elf_create_dynamic_sections (a name = SGI_COMPAT (abfd) ? "__rld_map" : "__RLD_MAP"; bh = NULL; if (!(_bfd_generic_link_add_one_symbol - (info, abfd, name, BSF_GLOBAL, s, - (bfd_vma) 0, (const char *) NULL, FALSE, + (info, abfd, name, BSF_GLOBAL, s, 0, NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh))) return FALSE; @@ -4980,11 +5036,8 @@ _bfd_mips_elf_create_dynamic_sections (a allocate space in the global offset table. */ bfd_boolean -_bfd_mips_elf_check_relocs (abfd, info, sec, relocs) - bfd *abfd; - struct bfd_link_info *info; - asection *sec; - const Elf_Internal_Rela *relocs; +_bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, + asection *sec, const Elf_Internal_Rela *relocs) { const char *name; bfd *dynobj; @@ -5043,8 +5096,7 @@ _bfd_mips_elf_check_relocs (abfd, info, continue; sec_relocs - = _bfd_elf_link_read_relocs (abfd, o, (PTR) NULL, - (Elf_Internal_Rela *) NULL, + = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL, info->keep_memory); if (sec_relocs == NULL) return FALSE; @@ -5086,7 +5138,7 @@ _bfd_mips_elf_check_relocs (abfd, info, else symcount = symtab_hdr->sh_info; amt = symcount * sizeof (asection *); - n = (asection **) bfd_zalloc (abfd, amt); + n = bfd_zalloc (abfd, amt); if (n == NULL) return FALSE; elf_tdata (abfd)->local_stubs = n; @@ -5476,11 +5528,9 @@ _bfd_mips_elf_check_relocs (abfd, info, } bfd_boolean -_bfd_mips_relax_section (abfd, sec, link_info, again) - bfd *abfd; - asection *sec; - struct bfd_link_info *link_info; - bfd_boolean *again; +_bfd_mips_relax_section (bfd *abfd, asection *sec, + struct bfd_link_info *link_info, + bfd_boolean *again) { Elf_Internal_Rela *internal_relocs; Elf_Internal_Rela *irel, *irelend; @@ -5498,8 +5548,7 @@ _bfd_mips_relax_section (abfd, sec, link if (link_info->relocatable) return TRUE; - internal_relocs = _bfd_elf_link_read_relocs (abfd, sec, (PTR) NULL, - (Elf_Internal_Rela *) NULL, + internal_relocs = _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL, link_info->keep_memory); if (internal_relocs == NULL) return TRUE; @@ -5608,13 +5657,13 @@ _bfd_mips_relax_section (abfd, sec, link contents = elf_section_data (sec)->this_hdr.contents; else { - contents = (bfd_byte *) bfd_malloc (sec->_raw_size); + contents = bfd_malloc (sec->_raw_size); if (contents == NULL) goto relax_return; free_contents = contents; if (! bfd_get_section_contents (abfd, sec, contents, - (file_ptr) 0, sec->_raw_size)) + 0, sec->_raw_size)) goto relax_return; } } @@ -5661,9 +5710,8 @@ _bfd_mips_relax_section (abfd, sec, link understand. */ bfd_boolean -_bfd_mips_elf_adjust_dynamic_symbol (info, h) - struct bfd_link_info *info; - struct elf_link_hash_entry *h; +_bfd_mips_elf_adjust_dynamic_symbol (struct bfd_link_info *info, + struct elf_link_hash_entry *h) { bfd *dynobj; struct mips_elf_link_hash_entry *hmips; @@ -5764,9 +5812,8 @@ _bfd_mips_elf_adjust_dynamic_symbol (inf check for any mips16 stub sections that we can discard. */ bfd_boolean -_bfd_mips_elf_always_size_sections (output_bfd, info) - bfd *output_bfd; - struct bfd_link_info *info; +_bfd_mips_elf_always_size_sections (bfd *output_bfd, + struct bfd_link_info *info) { asection *ri; @@ -5781,14 +5828,12 @@ _bfd_mips_elf_always_size_sections (outp /* The .reginfo section has a fixed size. */ ri = bfd_get_section_by_name (output_bfd, ".reginfo"); if (ri != NULL) - bfd_set_section_size (output_bfd, ri, - (bfd_size_type) sizeof (Elf32_External_RegInfo)); + bfd_set_section_size (output_bfd, ri, sizeof (Elf32_External_RegInfo)); if (! (info->relocatable || ! mips_elf_hash_table (info)->mips16_stubs_seen)) mips_elf_link_hash_traverse (mips_elf_hash_table (info), - mips_elf_check_mips16_stubs, - (PTR) NULL); + mips_elf_check_mips16_stubs, NULL); dynobj = elf_hash_table (info)->dynobj; if (dynobj == NULL) @@ -5857,9 +5902,8 @@ _bfd_mips_elf_always_size_sections (outp /* Set the sizes of the dynamic sections. */ bfd_boolean -_bfd_mips_elf_size_dynamic_sections (output_bfd, info) - bfd *output_bfd; - struct bfd_link_info *info; +_bfd_mips_elf_size_dynamic_sections (bfd *output_bfd, + struct bfd_link_info *info) { bfd *dynobj; asection *s; @@ -5871,7 +5915,7 @@ _bfd_mips_elf_size_dynamic_sections (out if (elf_hash_table (info)->dynamic_sections_created) { /* Set the contents of the .interp section to the interpreter. */ - if (! info->shared) + if (info->executable) { s = bfd_get_section_by_name (dynobj, ".interp"); BFD_ASSERT (s != NULL); @@ -6028,7 +6072,7 @@ _bfd_mips_elf_size_dynamic_sections (out } /* Allocate memory for the section contents. */ - s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->_raw_size); + s->contents = bfd_zalloc (dynobj, s->_raw_size); if (s->contents == NULL && s->_raw_size != 0) { bfd_set_error (bfd_error_no_memory); @@ -6143,16 +6187,11 @@ _bfd_mips_elf_size_dynamic_sections (out /* Relocate a MIPS ELF section. */ bfd_boolean -_bfd_mips_elf_relocate_section (output_bfd, info, input_bfd, input_section, - contents, relocs, local_syms, local_sections) - bfd *output_bfd; - struct bfd_link_info *info; - bfd *input_bfd; - asection *input_section; - bfd_byte *contents; - Elf_Internal_Rela *relocs; - Elf_Internal_Sym *local_syms; - asection **local_sections; +_bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, + bfd *input_bfd, asection *input_section, + bfd_byte *contents, Elf_Internal_Rela *relocs, + Elf_Internal_Sym *local_syms, + asection **local_sections) { Elf_Internal_Rela *rel; const Elf_Internal_Rela *relend; @@ -6172,7 +6211,7 @@ _bfd_mips_elf_relocate_section (output_b REL relocation. */ bfd_boolean rela_relocation_p = TRUE; unsigned int r_type = ELF_R_TYPE (output_bfd, rel->r_info); - const char * msg = (const char *) NULL; + const char *msg; /* Find the relocation howto for this relocation. */ if (r_type == R_MIPS_64 && ! NEWABI_P (input_bfd)) @@ -6221,7 +6260,6 @@ _bfd_mips_elf_relocate_section (output_b addend = mips_elf_obtain_contents (howto, rel, input_bfd, contents); addend &= howto->src_mask; - addend <<= howto->rightshift; /* For some kinds of relocations, the ADDEND is a combination of the addend stored in two different @@ -6285,6 +6323,8 @@ _bfd_mips_elf_relocate_section (output_b | ((addend & 0x7e00000) >> 16) | (addend & 0x1f)); } + else + addend <<= howto->rightshift; } else addend = rel->r_addend; @@ -6324,33 +6364,25 @@ _bfd_mips_elf_relocate_section (output_b /* Adjust the addend appropriately. */ addend += local_sections[r_symndx]->output_offset; - if (howto->partial_inplace) + if (rela_relocation_p) + /* If this is a RELA relocation, just update the addend. */ + rel->r_addend = addend; + else { - /* If the relocation is for a R_MIPS_HI16 or R_MIPS_GOT16, - then we only want to write out the high-order 16 bits. - The subsequent R_MIPS_LO16 will handle the low-order bits. - */ - if (r_type == R_MIPS_HI16 || r_type == R_MIPS_GOT16 + if (r_type == R_MIPS_HI16 + || r_type == R_MIPS_GOT16 || r_type == R_MIPS_GNU_REL_HI16) addend = mips_elf_high (addend); else if (r_type == R_MIPS_HIGHER) addend = mips_elf_higher (addend); else if (r_type == R_MIPS_HIGHEST) addend = mips_elf_highest (addend); - } + else + addend >>= howto->rightshift; - if (rela_relocation_p) - /* If this is a RELA relocation, just update the addend. - We have to cast away constness for REL. */ - rel->r_addend = addend; - else - { - /* Otherwise, we have to write the value back out. Note - that we use the source mask, rather than the - destination mask because the place to which we are - writing will be source of the addend in the final - link. */ - addend >>= howto->rightshift; + /* We use the source mask, rather than the destination + mask because the place to which we are writing will be + source of the addend in the final link. */ addend &= howto->src_mask; if (r_type == R_MIPS_64 && ! NEWABI_P (output_bfd)) @@ -6414,8 +6446,6 @@ _bfd_mips_elf_relocate_section (output_b else use_saved_addend_p = FALSE; - addend >>= howto->rightshift; - /* Figure out what value we are supposed to relocate. */ switch (mips_elf_calculate_relocation (output_bfd, input_bfd, input_section, info, rel, @@ -6450,7 +6480,7 @@ _bfd_mips_elf_relocate_section (output_b { BFD_ASSERT (name != NULL); if (! ((*info->callbacks->reloc_overflow) - (info, name, howto->name, (bfd_vma) 0, + (info, name, howto->name, 0, input_bfd, input_section, rel->r_offset))) return FALSE; } @@ -6531,10 +6561,8 @@ _bfd_mips_elf_relocate_section (output_b adjust it appropriately now. */ static void -mips_elf_irix6_finish_dynamic_symbol (abfd, name, sym) - bfd *abfd ATTRIBUTE_UNUSED; - const char *name; - Elf_Internal_Sym *sym; +mips_elf_irix6_finish_dynamic_symbol (bfd *abfd ATTRIBUTE_UNUSED, + const char *name, Elf_Internal_Sym *sym) { /* The linker script takes care of providing names and values for these, but we must place them into the right sections. */ @@ -6583,11 +6611,10 @@ mips_elf_irix6_finish_dynamic_symbol (ab dynamic sections here. */ bfd_boolean -_bfd_mips_elf_finish_dynamic_symbol (output_bfd, info, h, sym) - bfd *output_bfd; - struct bfd_link_info *info; - struct elf_link_hash_entry *h; - Elf_Internal_Sym *sym; +_bfd_mips_elf_finish_dynamic_symbol (bfd *output_bfd, + struct bfd_link_info *info, + struct elf_link_hash_entry *h, + Elf_Internal_Sym *sym) { bfd *dynobj; bfd_vma gval; @@ -6660,10 +6687,8 @@ _bfd_mips_elf_finish_dynamic_symbol (out if (g->next && h->dynindx != -1) { struct mips_got_entry e, *p; + bfd_vma entry; bfd_vma offset; - bfd_vma value; - Elf_Internal_Rela rel[3]; - bfd_vma addend = 0; gg = g; @@ -6671,18 +6696,6 @@ _bfd_mips_elf_finish_dynamic_symbol (out e.symndx = -1; e.d.h = (struct mips_elf_link_hash_entry *)h; - if (info->shared - || h->root.type == bfd_link_hash_undefined - || h->root.type == bfd_link_hash_undefweak) - value = 0; - else if (sym->st_value) - value = sym->st_value; - else - value = h->root.u.def.value; - - memset (rel, 0, sizeof (rel)); - rel[0].r_info = ELF_R_INFO (output_bfd, 0, R_MIPS_REL32); - for (g = g->next; g->next != gg; g = g->next) { if (g->got_entries @@ -6690,22 +6703,37 @@ _bfd_mips_elf_finish_dynamic_symbol (out &e))) { offset = p->gotidx; - rel[0].r_offset = rel[1].r_offset = rel[2].r_offset = offset; - - MIPS_ELF_PUT_WORD (output_bfd, value, sgot->contents + offset); + if (info->shared + || (elf_hash_table (info)->dynamic_sections_created + && p->d.h != NULL + && ((p->d.h->root.elf_link_hash_flags + & ELF_LINK_HASH_DEF_DYNAMIC) != 0) + && ((p->d.h->root.elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0))) + { + /* Create an R_MIPS_REL32 relocation for this entry. Due to + the various compatibility problems, it's easier to mock + up an R_MIPS_32 or R_MIPS_64 relocation and leave + mips_elf_create_dynamic_relocation to calculate the + appropriate addend. */ + Elf_Internal_Rela rel[3]; + + memset (rel, 0, sizeof (rel)); + if (ABI_64_P (output_bfd)) + rel[0].r_info = ELF_R_INFO (output_bfd, 0, R_MIPS_64); + else + rel[0].r_info = ELF_R_INFO (output_bfd, 0, R_MIPS_32); + rel[0].r_offset = rel[1].r_offset = rel[2].r_offset = offset; - if ((info->shared - || (elf_hash_table (info)->dynamic_sections_created - && p->d.h != NULL - && ((p->d.h->root.elf_link_hash_flags - & ELF_LINK_HASH_DEF_DYNAMIC) != 0) - && ((p->d.h->root.elf_link_hash_flags - & ELF_LINK_HASH_DEF_REGULAR) == 0))) - && ! (mips_elf_create_dynamic_relocation - (output_bfd, info, rel, - e.d.h, NULL, value, &addend, sgot))) - return FALSE; - BFD_ASSERT (addend == 0); + entry = 0; + if (! (mips_elf_create_dynamic_relocation + (output_bfd, info, rel, + e.d.h, NULL, sym->st_value, &entry, sgot))) + return FALSE; + } + else + entry = sym->st_value; + MIPS_ELF_PUT_WORD (output_bfd, entry, sgot->contents + offset); } } } @@ -6767,7 +6795,7 @@ _bfd_mips_elf_finish_dynamic_symbol (out asection *s = bfd_get_section_by_name (dynobj, ".rld_map"); BFD_ASSERT (s != NULL); sym->st_value = s->output_section->vma + s->output_offset; - bfd_put_32 (output_bfd, (bfd_vma) 0, s->contents); + bfd_put_32 (output_bfd, 0, s->contents); if (mips_elf_hash_table (info)->rld_value == 0) mips_elf_hash_table (info)->rld_value = sym->st_value; } @@ -6794,9 +6822,8 @@ _bfd_mips_elf_finish_dynamic_symbol (out /* Finish up the dynamic sections. */ bfd_boolean -_bfd_mips_elf_finish_dynamic_sections (output_bfd, info) - bfd *output_bfd; - struct bfd_link_info *info; +_bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd, + struct bfd_link_info *info) { bfd *dynobj; asection *sdyn; @@ -6966,8 +6993,8 @@ _bfd_mips_elf_finish_dynamic_sections (o This isn't the case of IRIX rld. */ if (sgot != NULL && sgot->_raw_size > 0) { - MIPS_ELF_PUT_WORD (output_bfd, (bfd_vma) 0, sgot->contents); - MIPS_ELF_PUT_WORD (output_bfd, (bfd_vma) 0x80000000, + MIPS_ELF_PUT_WORD (output_bfd, 0, sgot->contents); + MIPS_ELF_PUT_WORD (output_bfd, 0x80000000, sgot->contents + MIPS_ELF_GOT_SIZE (output_bfd)); } @@ -6988,9 +7015,9 @@ _bfd_mips_elf_finish_dynamic_sections (o { bfd_vma index = g->next->local_gotno + g->next->global_gotno; - MIPS_ELF_PUT_WORD (output_bfd, (bfd_vma) 0, sgot->contents + MIPS_ELF_PUT_WORD (output_bfd, 0, sgot->contents + index++ * MIPS_ELF_GOT_SIZE (output_bfd)); - MIPS_ELF_PUT_WORD (output_bfd, (bfd_vma) 0x80000000, sgot->contents + MIPS_ELF_PUT_WORD (output_bfd, 0x80000000, sgot->contents + index++ * MIPS_ELF_GOT_SIZE (output_bfd)); if (! info->shared) @@ -7056,12 +7083,10 @@ _bfd_mips_elf_finish_dynamic_sections (o reldyn_sorting_bfd = output_bfd; if (ABI_64_P (output_bfd)) - qsort ((Elf64_External_Rel *) s->contents + 1, - (size_t) s->reloc_count - 1, + qsort ((Elf64_External_Rel *) s->contents + 1, s->reloc_count - 1, sizeof (Elf64_Mips_External_Rel), sort_dynamic_relocs_64); else - qsort ((Elf32_External_Rel *) s->contents + 1, - (size_t) s->reloc_count - 1, + qsort ((Elf32_External_Rel *) s->contents + 1, s->reloc_count - 1, sizeof (Elf32_External_Rel), sort_dynamic_relocs); } } @@ -7073,8 +7098,7 @@ _bfd_mips_elf_finish_dynamic_sections (o /* Set ABFD's EF_MIPS_ARCH and EF_MIPS_MACH flags. */ static void -mips_set_isa_flags (abfd) - bfd *abfd; +mips_set_isa_flags (bfd *abfd) { flagword val; @@ -7171,9 +7195,8 @@ mips_set_isa_flags (abfd) number. This is used by both the 32-bit and the 64-bit ABI. */ void -_bfd_mips_elf_final_write_processing (abfd, linker) - bfd *abfd; - bfd_boolean linker ATTRIBUTE_UNUSED; +_bfd_mips_elf_final_write_processing (bfd *abfd, + bfd_boolean linker ATTRIBUTE_UNUSED) { unsigned int i; Elf_Internal_Shdr **hdrpp; @@ -7259,8 +7282,7 @@ _bfd_mips_elf_final_write_processing (ab segments. */ int -_bfd_mips_elf_additional_program_headers (abfd) - bfd *abfd; +_bfd_mips_elf_additional_program_headers (bfd *abfd) { asection *s; int ret = 0; @@ -7288,8 +7310,8 @@ _bfd_mips_elf_additional_program_headers /* Modify the segment map for an IRIX5 executable. */ bfd_boolean -_bfd_mips_elf_modify_segment_map (abfd) - bfd *abfd; +_bfd_mips_elf_modify_segment_map (bfd *abfd, + struct bfd_link_info *info ATTRIBUTE_UNUSED) { asection *s; struct elf_segment_map *m, **pm; @@ -7306,7 +7328,7 @@ _bfd_mips_elf_modify_segment_map (abfd) if (m == NULL) { amt = sizeof *m; - m = (struct elf_segment_map *) bfd_zalloc (abfd, amt); + m = bfd_zalloc (abfd, amt); if (m == NULL) return FALSE; @@ -7378,7 +7400,7 @@ _bfd_mips_elf_modify_segment_map (abfd) if (m == NULL) { amt = sizeof *m; - m = (struct elf_segment_map *) bfd_zalloc (abfd, amt); + m = bfd_zalloc (abfd, amt); if (m == NULL) return FALSE; @@ -7469,7 +7491,7 @@ _bfd_mips_elf_modify_segment_map (abfd) ++c; amt = sizeof *n + (bfd_size_type) (c - 1) * sizeof (asection *); - n = (struct elf_segment_map *) bfd_zalloc (abfd, amt); + n = bfd_zalloc (abfd, amt); if (n == NULL) return FALSE; *n = *m; @@ -7500,12 +7522,11 @@ _bfd_mips_elf_modify_segment_map (abfd) relocation. */ asection * -_bfd_mips_elf_gc_mark_hook (sec, info, rel, h, sym) - asection *sec; - struct bfd_link_info *info ATTRIBUTE_UNUSED; - Elf_Internal_Rela *rel; - struct elf_link_hash_entry *h; - Elf_Internal_Sym *sym; +_bfd_mips_elf_gc_mark_hook (asection *sec, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + Elf_Internal_Rela *rel, + struct elf_link_hash_entry *h, + Elf_Internal_Sym *sym) { /* ??? Do mips16 stub sections need to be handled special? */ @@ -7541,11 +7562,10 @@ _bfd_mips_elf_gc_mark_hook (sec, info, r /* Update the got entry reference counts for the section being removed. */ bfd_boolean -_bfd_mips_elf_gc_sweep_hook (abfd, info, sec, relocs) - bfd *abfd ATTRIBUTE_UNUSED; - struct bfd_link_info *info ATTRIBUTE_UNUSED; - asection *sec ATTRIBUTE_UNUSED; - const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED; +_bfd_mips_elf_gc_sweep_hook (bfd *abfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + asection *sec ATTRIBUTE_UNUSED, + const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED) { #if 0 Elf_Internal_Shdr *symtab_hdr; @@ -7591,9 +7611,9 @@ _bfd_mips_elf_gc_sweep_hook (abfd, info, _bfd_elf_link_hash_copy_indirect copy the flags for us. */ void -_bfd_mips_elf_copy_indirect_symbol (bed, dir, ind) - const struct elf_backend_data *bed; - struct elf_link_hash_entry *dir, *ind; +_bfd_mips_elf_copy_indirect_symbol (const struct elf_backend_data *bed, + struct elf_link_hash_entry *dir, + struct elf_link_hash_entry *ind) { struct mips_elf_link_hash_entry *dirmips, *indmips; @@ -7612,10 +7632,9 @@ _bfd_mips_elf_copy_indirect_symbol (bed, } void -_bfd_mips_elf_hide_symbol (info, entry, force_local) - struct bfd_link_info *info; - struct elf_link_hash_entry *entry; - bfd_boolean force_local; +_bfd_mips_elf_hide_symbol (struct bfd_link_info *info, + struct elf_link_hash_entry *entry, + bfd_boolean force_local) { bfd *dynobj; asection *got; @@ -7687,10 +7706,8 @@ _bfd_mips_elf_hide_symbol (info, entry, #define PDR_SIZE 32 bfd_boolean -_bfd_mips_elf_discard_info (abfd, cookie, info) - bfd *abfd; - struct elf_reloc_cookie *cookie; - struct bfd_link_info *info; +_bfd_mips_elf_discard_info (bfd *abfd, struct elf_reloc_cookie *cookie, + struct bfd_link_info *info) { asection *o; bfd_boolean ret = FALSE; @@ -7712,8 +7729,7 @@ _bfd_mips_elf_discard_info (abfd, cookie if (! tdata) return FALSE; - cookie->rels = _bfd_elf_link_read_relocs (abfd, o, (PTR) NULL, - (Elf_Internal_Rela *) NULL, + cookie->rels = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL, info->keep_memory); if (!cookie->rels) { @@ -7749,8 +7765,7 @@ _bfd_mips_elf_discard_info (abfd, cookie } bfd_boolean -_bfd_mips_elf_ignore_discarded_relocs (sec) - asection *sec; +_bfd_mips_elf_ignore_discarded_relocs (asection *sec) { if (strcmp (sec->name, ".pdr") == 0) return TRUE; @@ -7758,10 +7773,8 @@ _bfd_mips_elf_ignore_discarded_relocs (s } bfd_boolean -_bfd_mips_elf_write_section (output_bfd, sec, contents) - bfd *output_bfd; - asection *sec; - bfd_byte *contents; +_bfd_mips_elf_write_section (bfd *output_bfd, asection *sec, + bfd_byte *contents) { bfd_byte *to, *from, *end; int i; @@ -7785,8 +7798,7 @@ _bfd_mips_elf_write_section (output_bfd, to += PDR_SIZE; } bfd_set_section_contents (output_bfd, sec->output_section, contents, - (file_ptr) sec->output_offset, - sec->_cooked_size); + sec->output_offset, sec->_cooked_size); return TRUE; } @@ -7800,15 +7812,11 @@ struct mips_elf_find_line }; bfd_boolean -_bfd_mips_elf_find_nearest_line (abfd, section, symbols, offset, filename_ptr, - functionname_ptr, line_ptr) - bfd *abfd; - asection *section; - asymbol **symbols; - bfd_vma offset; - const char **filename_ptr; - const char **functionname_ptr; - unsigned int *line_ptr; +_bfd_mips_elf_find_nearest_line (bfd *abfd, asection *section, + asymbol **symbols, bfd_vma offset, + const char **filename_ptr, + const char **functionname_ptr, + unsigned int *line_ptr) { asection *msec; @@ -7819,8 +7827,7 @@ _bfd_mips_elf_find_nearest_line (abfd, s if (_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset, filename_ptr, functionname_ptr, - line_ptr, - (unsigned) (ABI_64_P (abfd) ? 8 : 0), + line_ptr, ABI_64_P (abfd) ? 8 : 0, &elf_tdata (abfd)->dwarf2_find_line_info)) return TRUE; @@ -7848,7 +7855,7 @@ _bfd_mips_elf_find_nearest_line (abfd, s struct fdr *fdr_ptr; bfd_size_type amt = sizeof (struct mips_elf_find_line); - fi = (struct mips_elf_find_line *) bfd_zalloc (abfd, amt); + fi = bfd_zalloc (abfd, amt); if (fi == NULL) { msec->flags = origflags; @@ -7863,7 +7870,7 @@ _bfd_mips_elf_find_nearest_line (abfd, s /* Swap in the FDR information. */ amt = fi->d.symbolic_header.ifdMax * sizeof (struct fdr); - fi->d.fdr = (struct fdr *) bfd_alloc (abfd, amt); + fi->d.fdr = bfd_alloc (abfd, amt); if (fi->d.fdr == NULL) { msec->flags = origflags; @@ -7875,7 +7882,7 @@ _bfd_mips_elf_find_nearest_line (abfd, s fraw_end = (fraw_src + fi->d.symbolic_header.ifdMax * external_fdr_size); for (; fraw_src < fraw_end; fraw_src += external_fdr_size, fdr_ptr++) - (*swap->swap_fdr_in) (abfd, (PTR) fraw_src, fdr_ptr); + (*swap->swap_fdr_in) (abfd, fraw_src, fdr_ptr); elf_tdata (abfd)->find_line_info = fi; @@ -7910,12 +7917,9 @@ _bfd_mips_elf_find_nearest_line (abfd, s GP value in the section_processing routine. */ bfd_boolean -_bfd_mips_elf_set_section_contents (abfd, section, location, offset, count) - bfd *abfd; - sec_ptr section; - PTR location; - file_ptr offset; - bfd_size_type count; +_bfd_mips_elf_set_section_contents (bfd *abfd, sec_ptr section, + const void *location, + file_ptr offset, bfd_size_type count) { if (strcmp (section->name, MIPS_ELF_OPTIONS_SECTION_NAME (abfd)) == 0) { @@ -7924,7 +7928,7 @@ _bfd_mips_elf_set_section_contents (abfd if (elf_section_data (section) == NULL) { bfd_size_type amt = sizeof (struct bfd_elf_section_data); - section->used_by_bfd = (PTR) bfd_zalloc (abfd, amt); + section->used_by_bfd = bfd_zalloc (abfd, amt); if (elf_section_data (section) == NULL) return FALSE; } @@ -7937,13 +7941,13 @@ _bfd_mips_elf_set_section_contents (abfd size = section->_cooked_size; else size = section->_raw_size; - c = (bfd_byte *) bfd_zalloc (abfd, size); + c = bfd_zalloc (abfd, size); if (c == NULL) return FALSE; mips_elf_section_data (section)->u.tdata = c; } - memcpy (c + offset, location, (size_t) count); + memcpy (c + offset, location, count); } return _bfd_elf_set_section_contents (abfd, section, location, offset, @@ -7954,14 +7958,13 @@ _bfd_mips_elf_set_section_contents (abfd MIPS relocations need to be handled specially. Sigh. */ bfd_byte * -_bfd_elf_mips_get_relocated_section_contents (abfd, link_info, link_order, - data, relocatable, symbols) - bfd *abfd; - struct bfd_link_info *link_info; - struct bfd_link_order *link_order; - bfd_byte *data; - bfd_boolean relocatable; - asymbol **symbols; +_bfd_elf_mips_get_relocated_section_contents + (bfd *abfd, + struct bfd_link_info *link_info, + struct bfd_link_order *link_order, + bfd_byte *data, + bfd_boolean relocatable, + asymbol **symbols) { /* Get enough memory to hold the stuff */ bfd *input_bfd = link_order->u.indirect.section->owner; @@ -7974,15 +7977,12 @@ _bfd_elf_mips_get_relocated_section_cont if (reloc_size < 0) goto error_return; - reloc_vector = (arelent **) bfd_malloc ((bfd_size_type) reloc_size); + reloc_vector = bfd_malloc (reloc_size); if (reloc_vector == NULL && reloc_size != 0) goto error_return; /* read in the section */ - if (!bfd_get_section_contents (input_bfd, - input_section, - (PTR) data, - (file_ptr) 0, + if (!bfd_get_section_contents (input_bfd, input_section, data, 0, input_section->_raw_size)) goto error_return; @@ -8045,10 +8045,9 @@ _bfd_elf_mips_get_relocated_section_cont gp_found = 0; } /* end mips */ - for (parent = reloc_vector; *parent != (arelent *) NULL; - parent++) + for (parent = reloc_vector; *parent != NULL; parent++) { - char *error_message = (char *) NULL; + char *error_message = NULL; bfd_reloc_status_type r; /* Specific to MIPS: Deal with relocation types that require @@ -8069,16 +8068,13 @@ _bfd_elf_mips_get_relocated_section_cont /* bypass special_function call */ r = _bfd_mips_elf_gprel16_with_gp (input_bfd, sym, *parent, input_section, relocatable, - (PTR) data, gp); + data, gp); goto skip_bfd_perform_relocation; } /* end mips specific stuff */ - r = bfd_perform_relocation (input_bfd, - *parent, - (PTR) data, - input_section, - relocatable ? abfd : (bfd *) NULL, + r = bfd_perform_relocation (input_bfd, *parent, data, input_section, + relocatable ? abfd : NULL, &error_message); skip_bfd_perform_relocation: @@ -8103,7 +8099,7 @@ _bfd_elf_mips_get_relocated_section_cont goto error_return; break; case bfd_reloc_dangerous: - BFD_ASSERT (error_message != (char *) NULL); + BFD_ASSERT (error_message != NULL); if (!((*link_info->callbacks->reloc_dangerous) (link_info, error_message, input_bfd, input_section, (*parent)->address))) @@ -8138,14 +8134,13 @@ error_return: /* Create a MIPS ELF linker hash table. */ struct bfd_link_hash_table * -_bfd_mips_elf_link_hash_table_create (abfd) - bfd *abfd; +_bfd_mips_elf_link_hash_table_create (bfd *abfd) { struct mips_elf_link_hash_table *ret; bfd_size_type amt = sizeof (struct mips_elf_link_hash_table); - ret = (struct mips_elf_link_hash_table *) bfd_malloc (amt); - if (ret == (struct mips_elf_link_hash_table *) NULL) + ret = bfd_malloc (amt); + if (ret == NULL) return NULL; if (! _bfd_elf_link_hash_table_init (&ret->root, abfd, @@ -8174,9 +8169,7 @@ _bfd_mips_elf_link_hash_table_create (ab sections together, not write them all out sequentially. */ bfd_boolean -_bfd_mips_elf_final_link (abfd, info) - bfd *abfd; - struct bfd_link_info *info; +_bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info) { asection **secpp; asection *o; @@ -8188,7 +8181,7 @@ _bfd_mips_elf_final_link (abfd, info) const struct ecoff_debug_swap *swap = get_elf_backend_data (abfd)->elf_backend_ecoff_debug_swap; HDRR *symhdr = &debug.symbolic_header; - PTR mdebug_handle = NULL; + void *mdebug_handle = NULL; asection *s; EXTR esym; unsigned int i; @@ -8284,8 +8277,7 @@ _bfd_mips_elf_final_link (abfd, info) struct bfd_link_hash_entry *h; h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE); - if (h != (struct bfd_link_hash_entry *) NULL - && h->type == bfd_link_hash_defined) + if (h != NULL && h->type == bfd_link_hash_defined) elf_gp (abfd) = (h->u.def.value + h->u.def.section->output_section->vma + h->u.def.section->output_offset); @@ -8294,7 +8286,7 @@ _bfd_mips_elf_final_link (abfd, info) bfd_vma lo = MINUS_ONE; /* Find the GP-relative section with the lowest offset. */ - for (o = abfd->sections; o != (asection *) NULL; o = o->next) + for (o = abfd->sections; o != NULL; o = o->next) if (o->vma < lo && (elf_section_data (o)->this_hdr.sh_flags & SHF_MIPS_GPREL)) lo = o->vma; @@ -8316,7 +8308,7 @@ _bfd_mips_elf_final_link (abfd, info) mdebug_sec = NULL; gptab_data_sec = NULL; gptab_bss_sec = NULL; - for (o = abfd->sections; o != (asection *) NULL; o = o->next) + for (o = abfd->sections; o != NULL; o = o->next) { if (strcmp (o->name, ".reginfo") == 0) { @@ -8325,9 +8317,7 @@ _bfd_mips_elf_final_link (abfd, info) /* We have found the .reginfo section in the output file. Look through all the link_orders comprising it and merge the information together. */ - for (p = o->link_order_head; - p != (struct bfd_link_order *) NULL; - p = p->next) + for (p = o->link_order_head; p != NULL; p = p->next) { asection *input_section; bfd *input_bfd; @@ -8350,9 +8340,7 @@ _bfd_mips_elf_final_link (abfd, info) input_section->_raw_size = sizeof (Elf32_External_RegInfo); if (! bfd_get_section_contents (input_bfd, input_section, - (PTR) &ext, - (file_ptr) 0, - (bfd_size_type) sizeof ext)) + &ext, 0, sizeof ext)) return FALSE; bfd_mips_elf32_swap_reginfo_in (input_bfd, &ext, &sub); @@ -8377,7 +8365,7 @@ _bfd_mips_elf_final_link (abfd, info) /* Skip this section later on (I don't think this currently matters, but someday it might). */ - o->link_order_head = (struct bfd_link_order *) NULL; + o->link_order_head = NULL; reginfo_sec = o; } @@ -8421,7 +8409,7 @@ _bfd_mips_elf_final_link (abfd, info) debug.external_ext = debug.external_ext_end = NULL; mdebug_handle = bfd_ecoff_debug_init (abfd, &debug, swap, info); - if (mdebug_handle == (PTR) NULL) + if (mdebug_handle == NULL) return FALSE; esym.jmptbl = 0; @@ -8450,9 +8438,7 @@ _bfd_mips_elf_final_link (abfd, info) return FALSE; } - for (p = o->link_order_head; - p != (struct bfd_link_order *) NULL; - p = p->next) + for (p = o->link_order_head; p != NULL; p = p->next) { asection *input_section; bfd *input_bfd; @@ -8514,7 +8500,7 @@ _bfd_mips_elf_final_link (abfd, info) const char *name; struct mips_elf_link_hash_entry *h; - (*input_swap->swap_ext_in) (input_bfd, (PTR) eraw_src, &ext); + (*input_swap->swap_ext_in) (input_bfd, eraw_src, &ext); if (ext.asym.sc == scNil || ext.asym.sc == scUndefined || ext.asym.sc == scSUndefined) @@ -8583,8 +8569,7 @@ _bfd_mips_elf_final_link (abfd, info) einfo.swap = swap; einfo.failed = FALSE; mips_elf_link_hash_traverse (mips_elf_hash_table (info), - mips_elf_output_extsym, - (PTR) &einfo); + mips_elf_output_extsym, &einfo); if (einfo.failed) return FALSE; @@ -8593,7 +8578,7 @@ _bfd_mips_elf_final_link (abfd, info) /* Skip this section later on (I don't think this currently matters, but someday it might). */ - o->link_order_head = (struct bfd_link_order *) NULL; + o->link_order_head = NULL; mdebug_sec = o; } @@ -8612,9 +8597,7 @@ _bfd_mips_elf_final_link (abfd, info) not used in executables files. */ if (! info->relocatable) { - for (p = o->link_order_head; - p != (struct bfd_link_order *) NULL; - p = p->next) + for (p = o->link_order_head; p != NULL; p = p->next) { asection *input_section; @@ -8634,7 +8617,7 @@ _bfd_mips_elf_final_link (abfd, info) /* Skip this section later on (I don't think this currently matters, but someday it might). */ - o->link_order_head = (struct bfd_link_order *) NULL; + o->link_order_head = NULL; /* Really remove the section. */ for (secpp = &abfd->sections; @@ -8681,16 +8664,14 @@ _bfd_mips_elf_final_link (abfd, info) /* Set up the first entry. */ c = 1; amt = c * sizeof (Elf32_gptab); - tab = (Elf32_gptab *) bfd_malloc (amt); + tab = bfd_malloc (amt); if (tab == NULL) return FALSE; tab[0].gt_header.gt_current_g_value = elf_gp_size (abfd); tab[0].gt_header.gt_unused = 0; /* Combine the input sections. */ - for (p = o->link_order_head; - p != (struct bfd_link_order *) NULL; - p = p->next) + for (p = o->link_order_head; p != NULL; p = p->next) { asection *input_section; bfd *input_bfd; @@ -8725,9 +8706,8 @@ _bfd_mips_elf_final_link (abfd, info) unsigned int look; if (! (bfd_get_section_contents - (input_bfd, input_section, (PTR) &ext_gptab, - (file_ptr) gpentry, - (bfd_size_type) sizeof (Elf32_External_gptab)))) + (input_bfd, input_section, &ext_gptab, gpentry, + sizeof (Elf32_External_gptab)))) { free (tab); return FALSE; @@ -8755,7 +8735,7 @@ _bfd_mips_elf_final_link (abfd, info) /* We need a new table entry. */ amt = (bfd_size_type) (c + 1) * sizeof (Elf32_gptab); - new_tab = (Elf32_gptab *) bfd_realloc ((PTR) tab, amt); + new_tab = bfd_realloc (tab, amt); if (new_tab == NULL) { free (tab); @@ -8798,7 +8778,7 @@ _bfd_mips_elf_final_link (abfd, info) /* Swap out the table. */ amt = (bfd_size_type) c * sizeof (Elf32_External_gptab); - ext_tab = (Elf32_External_gptab *) bfd_alloc (abfd, amt); + ext_tab = bfd_alloc (abfd, amt); if (ext_tab == NULL) { free (tab); @@ -8814,7 +8794,7 @@ _bfd_mips_elf_final_link (abfd, info) /* Skip this section later on (I don't think this currently matters, but someday it might). */ - o->link_order_head = (struct bfd_link_order *) NULL; + o->link_order_head = NULL; } } @@ -8824,18 +8804,16 @@ _bfd_mips_elf_final_link (abfd, info) /* Now write out the computed sections. */ - if (reginfo_sec != (asection *) NULL) + if (reginfo_sec != NULL) { Elf32_External_RegInfo ext; bfd_mips_elf32_swap_reginfo_out (abfd, ®info, &ext); - if (! bfd_set_section_contents (abfd, reginfo_sec, (PTR) &ext, - (file_ptr) 0, - (bfd_size_type) sizeof ext)) + if (! bfd_set_section_contents (abfd, reginfo_sec, &ext, 0, sizeof ext)) return FALSE; } - if (mdebug_sec != (asection *) NULL) + if (mdebug_sec != NULL) { BFD_ASSERT (abfd->output_has_begun); if (! bfd_ecoff_write_accumulated_debug (mdebug_handle, abfd, &debug, @@ -8846,21 +8824,19 @@ _bfd_mips_elf_final_link (abfd, info) bfd_ecoff_debug_free (mdebug_handle, abfd, &debug, swap, info); } - if (gptab_data_sec != (asection *) NULL) + if (gptab_data_sec != NULL) { if (! bfd_set_section_contents (abfd, gptab_data_sec, gptab_data_sec->contents, - (file_ptr) 0, - gptab_data_sec->_raw_size)) + 0, gptab_data_sec->_raw_size)) return FALSE; } - if (gptab_bss_sec != (asection *) NULL) + if (gptab_bss_sec != NULL) { if (! bfd_set_section_contents (abfd, gptab_bss_sec, gptab_bss_sec->contents, - (file_ptr) 0, - gptab_bss_sec->_raw_size)) + 0, gptab_bss_sec->_raw_size)) return FALSE; } @@ -8871,8 +8847,7 @@ _bfd_mips_elf_final_link (abfd, info) { if (! bfd_set_section_contents (abfd, rtproc_sec, rtproc_sec->contents, - (file_ptr) 0, - rtproc_sec->_raw_size)) + 0, rtproc_sec->_raw_size)) return FALSE; } } @@ -8944,8 +8919,7 @@ static const struct mips_mach_extension /* Return true if bfd machine EXTENSION is an extension of machine BASE. */ static bfd_boolean -mips_mach_extends_p (base, extension) - unsigned long base, extension; +mips_mach_extends_p (unsigned long base, unsigned long extension) { size_t i; @@ -8960,8 +8934,7 @@ mips_mach_extends_p (base, extension) /* Return true if the given ELF header flags describe a 32-bit binary. */ static bfd_boolean -mips_32bit_flags_p (flags) - flagword flags; +mips_32bit_flags_p (flagword flags) { return ((flags & EF_MIPS_32BITMODE) != 0 || (flags & EF_MIPS_ABI) == E_MIPS_ABI_O32 @@ -8977,9 +8950,7 @@ mips_32bit_flags_p (flags) object file when linking. */ bfd_boolean -_bfd_mips_elf_merge_private_bfd_data (ibfd, obfd) - bfd *ibfd; - bfd *obfd; +_bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd) { flagword old_flags; flagword new_flags; @@ -9184,9 +9155,7 @@ _bfd_mips_elf_merge_private_bfd_data (ib /* Function to keep MIPS specific file flags like as EF_MIPS_PIC. */ bfd_boolean -_bfd_mips_elf_set_private_flags (abfd, flags) - bfd *abfd; - flagword flags; +_bfd_mips_elf_set_private_flags (bfd *abfd, flagword flags) { BFD_ASSERT (!elf_flags_init (abfd) || elf_elfheader (abfd)->e_flags == flags); @@ -9197,11 +9166,9 @@ _bfd_mips_elf_set_private_flags (abfd, f } bfd_boolean -_bfd_mips_elf_print_private_bfd_data (abfd, ptr) - bfd *abfd; - PTR ptr; +_bfd_mips_elf_print_private_bfd_data (bfd *abfd, void *ptr) { - FILE *file = (FILE *) ptr; + FILE *file = ptr; BFD_ASSERT (abfd != NULL && ptr != NULL); diff -uprN binutils-2.14.90.0.7/bfd/elfxx-mips.h binutils-2.14.90.0.8/bfd/elfxx-mips.h --- binutils-2.14.90.0.7/bfd/elfxx-mips.h 2003-08-21 08:28:48.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/elfxx-mips.h 2004-01-14 13:07:43.000000000 -0800 @@ -21,97 +21,102 @@ Foundation, Inc., 59 Temple Place - Suit #include "elf/internal.h" extern bfd_boolean _bfd_mips_elf_new_section_hook - PARAMS ((bfd *, asection *)); + (bfd *, asection *); extern void _bfd_mips_elf_symbol_processing - PARAMS ((bfd *, asymbol *)); + (bfd *, asymbol *); extern bfd_boolean _bfd_mips_elf_section_processing - PARAMS ((bfd *, Elf_Internal_Shdr *)); + (bfd *, Elf_Internal_Shdr *); extern bfd_boolean _bfd_mips_elf_section_from_shdr - PARAMS ((bfd *, Elf_Internal_Shdr *, const char *)); + (bfd *, Elf_Internal_Shdr *, const char *); extern bfd_boolean _bfd_mips_elf_fake_sections - PARAMS ((bfd *, Elf_Internal_Shdr *, asection *)); + (bfd *, Elf_Internal_Shdr *, asection *); extern bfd_boolean _bfd_mips_elf_section_from_bfd_section - PARAMS ((bfd *, asection *, int *)); + (bfd *, asection *, int *); extern bfd_boolean _bfd_mips_elf_add_symbol_hook - PARAMS ((bfd *, struct bfd_link_info *, const Elf_Internal_Sym *, - const char **, flagword *, asection **, bfd_vma *)); + (bfd *, struct bfd_link_info *, const Elf_Internal_Sym *, + const char **, flagword *, asection **, bfd_vma *); extern bfd_boolean _bfd_mips_elf_link_output_symbol_hook - PARAMS ((bfd *, struct bfd_link_info *, const char *, Elf_Internal_Sym *, - asection *)); + (struct bfd_link_info *, const char *, Elf_Internal_Sym *, + asection *, struct elf_link_hash_entry *); extern bfd_boolean _bfd_mips_elf_create_dynamic_sections - PARAMS ((bfd *, struct bfd_link_info *)); + (bfd *, struct bfd_link_info *); extern bfd_boolean _bfd_mips_elf_check_relocs - PARAMS ((bfd *, struct bfd_link_info *, asection *, - const Elf_Internal_Rela *)); + (bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *); extern bfd_boolean _bfd_mips_elf_adjust_dynamic_symbol - PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); + (struct bfd_link_info *, struct elf_link_hash_entry *); extern bfd_boolean _bfd_mips_elf_always_size_sections - PARAMS ((bfd *, struct bfd_link_info *)); + (bfd *, struct bfd_link_info *); extern bfd_boolean _bfd_mips_elf_size_dynamic_sections - PARAMS ((bfd *, struct bfd_link_info *)); + (bfd *, struct bfd_link_info *); extern bfd_boolean _bfd_mips_elf_relocate_section - PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, - Elf_Internal_Rela *, Elf_Internal_Sym *, asection **)); + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, + Elf_Internal_Rela *, Elf_Internal_Sym *, asection **); extern bfd_boolean _bfd_mips_elf_finish_dynamic_symbol - PARAMS ((bfd *, struct bfd_link_info *, struct elf_link_hash_entry *, - Elf_Internal_Sym *)); + (bfd *, struct bfd_link_info *, struct elf_link_hash_entry *, + Elf_Internal_Sym *); extern bfd_boolean _bfd_mips_elf_finish_dynamic_sections - PARAMS ((bfd *, struct bfd_link_info *)); + (bfd *, struct bfd_link_info *); extern void _bfd_mips_elf_final_write_processing - PARAMS ((bfd *, bfd_boolean)); + (bfd *, bfd_boolean); extern int _bfd_mips_elf_additional_program_headers - PARAMS ((bfd *)); + (bfd *); extern bfd_boolean _bfd_mips_elf_modify_segment_map - PARAMS ((bfd *)); + (bfd *, struct bfd_link_info *); extern asection * _bfd_mips_elf_gc_mark_hook - PARAMS ((asection *, struct bfd_link_info *, Elf_Internal_Rela *, - struct elf_link_hash_entry *, Elf_Internal_Sym *)); + (asection *, struct bfd_link_info *, Elf_Internal_Rela *, + struct elf_link_hash_entry *, Elf_Internal_Sym *); extern bfd_boolean _bfd_mips_elf_gc_sweep_hook - PARAMS ((bfd *, struct bfd_link_info *, asection *, - const Elf_Internal_Rela *)); + (bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *); extern void _bfd_mips_elf_copy_indirect_symbol - PARAMS ((const struct elf_backend_data *, struct elf_link_hash_entry *, - struct elf_link_hash_entry *)); + (const struct elf_backend_data *, struct elf_link_hash_entry *, + struct elf_link_hash_entry *); extern void _bfd_mips_elf_hide_symbol - PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean)); + (struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean); extern bfd_boolean _bfd_mips_elf_ignore_discarded_relocs - PARAMS ((asection *)); + (asection *); extern bfd_boolean _bfd_mips_elf_find_nearest_line - PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **, - const char **, unsigned int *)); + (bfd *, asection *, asymbol **, bfd_vma, const char **, + const char **, unsigned int *); extern bfd_boolean _bfd_mips_elf_set_section_contents - PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); + (bfd *, asection *, const void *, file_ptr, bfd_size_type); extern bfd_byte *_bfd_elf_mips_get_relocated_section_contents - PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, - bfd_byte *, bfd_boolean, asymbol **)); + (bfd *, struct bfd_link_info *, struct bfd_link_order *, + bfd_byte *, bfd_boolean, asymbol **); extern struct bfd_link_hash_table *_bfd_mips_elf_link_hash_table_create - PARAMS ((bfd *)); + (bfd *); extern bfd_boolean _bfd_mips_elf_final_link - PARAMS ((bfd *, struct bfd_link_info *)); + (bfd *, struct bfd_link_info *); extern bfd_boolean _bfd_mips_elf_merge_private_bfd_data - PARAMS ((bfd *, bfd *)); + (bfd *, bfd *); extern bfd_boolean _bfd_mips_elf_set_private_flags - PARAMS ((bfd *, flagword)); + (bfd *, flagword); extern bfd_boolean _bfd_mips_elf_print_private_bfd_data - PARAMS ((bfd *, PTR)); + (bfd *, void *); extern bfd_boolean _bfd_mips_elf_discard_info - PARAMS ((bfd *, struct elf_reloc_cookie *, struct bfd_link_info *)); + (bfd *, struct elf_reloc_cookie *, struct bfd_link_info *); extern bfd_boolean _bfd_mips_elf_write_section - PARAMS ((bfd *, asection *, bfd_byte *)); + (bfd *, asection *, bfd_byte *); extern bfd_boolean _bfd_mips_elf_read_ecoff_info - PARAMS ((bfd *, asection *, struct ecoff_debug_info *)); + (bfd *, asection *, struct ecoff_debug_info *); extern bfd_reloc_status_type _bfd_mips_elf_gprel16_with_gp - PARAMS ((bfd *, asymbol *, arelent *, asection *, bfd_boolean, PTR, - bfd_vma)); + (bfd *, asymbol *, arelent *, asection *, bfd_boolean, void *, bfd_vma); extern bfd_reloc_status_type _bfd_mips_elf32_gprel16_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); +extern bfd_reloc_status_type _bfd_mips_elf_hi16_reloc + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); +extern bfd_reloc_status_type _bfd_mips_elf_got16_reloc + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); +extern bfd_reloc_status_type _bfd_mips_elf_lo16_reloc + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); +extern bfd_reloc_status_type _bfd_mips_elf_generic_reloc + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); extern unsigned long _bfd_elf_mips_mach - PARAMS ((flagword)); + (flagword); extern bfd_boolean _bfd_mips_relax_section - PARAMS ((bfd *, asection *, struct bfd_link_info *, bfd_boolean *)); + (bfd *, asection *, struct bfd_link_info *, bfd_boolean *); extern bfd_vma _bfd_mips_elf_sign_extend - PARAMS ((bfd_vma, int)); + (bfd_vma, int); extern struct bfd_elf_special_section const _bfd_mips_elf_special_sections[]; #define elf_backend_special_sections _bfd_mips_elf_special_sections diff -uprN binutils-2.14.90.0.7/bfd/elfxx-target.h binutils-2.14.90.0.8/bfd/elfxx-target.h --- binutils-2.14.90.0.7/bfd/elfxx-target.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/elfxx-target.h 2004-01-14 13:07:43.000000000 -0800 @@ -343,9 +343,6 @@ #ifndef elf_backend_got_header_size #define elf_backend_got_header_size 0 #endif -#ifndef elf_backend_plt_header_size -#define elf_backend_plt_header_size 0 -#endif #ifndef elf_backend_post_process_headers #define elf_backend_post_process_headers NULL #endif @@ -507,7 +504,6 @@ static const struct elf_backend_data elf elf_backend_special_sections, elf_backend_got_symbol_offset, elf_backend_got_header_size, - elf_backend_plt_header_size, elf_backend_collect, elf_backend_type_change_ok, elf_backend_may_use_rel_p, diff -uprN binutils-2.14.90.0.7/bfd/format.c binutils-2.14.90.0.8/bfd/format.c --- binutils-2.14.90.0.7/bfd/format.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/format.c 2004-01-14 13:07:43.000000000 -0800 @@ -425,7 +425,7 @@ bfd_format_string (bfd_format format) switch (format) { case bfd_object: - return "object"; /* Linker/assember/compiler output. */ + return "object"; /* Linker/assembler/compiler output. */ case bfd_archive: return "archive"; /* Object archive file. */ case bfd_core: diff -uprN binutils-2.14.90.0.7/bfd/gen-aout.c binutils-2.14.90.0.8/bfd/gen-aout.c --- binutils-2.14.90.0.7/bfd/gen-aout.c 2002-10-29 20:09:13.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/gen-aout.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* Generate parameters for an a.out system. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 2001 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 2001, 2002 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/hash.c binutils-2.14.90.0.8/bfd/hash.c --- binutils-2.14.90.0.7/bfd/hash.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/hash.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* hash.c -- hash table routines for BFD - Copyright 1993, 1994, 1995, 1997, 1999, 2001, 2002 + Copyright 1993, 1994, 1995, 1997, 1999, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Steve Chamberlain @@ -446,7 +446,6 @@ bfd_hash_replace (table, old, nw) /* Base method for creating a new hash table entry. */ -/*ARGSUSED*/ struct bfd_hash_entry * bfd_hash_newfunc (entry, table, string) struct bfd_hash_entry *entry; diff -uprN binutils-2.14.90.0.7/bfd/hp300hpux.c binutils-2.14.90.0.8/bfd/hp300hpux.c --- binutils-2.14.90.0.7/bfd/hp300hpux.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/hp300hpux.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD backend for hp-ux 9000/300 - Copyright 1990, 1991, 1993, 1994, 1995, 1997, 2000, 2001, 2002 + Copyright 1990, 1991, 1993, 1994, 1995, 1997, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Glenn Engel. @@ -475,7 +475,7 @@ NAME (aout,swap_exec_header_in) (abfd, r /***************************************************************/ /* check the header to see if it was generated by a bfd output */ - /* this is detected rather bizarely by requiring a bunch of */ + /* this is detected rather bizarrely by requiring a bunch of */ /* header fields to be zero and an old unused field (now used) */ /* to be set. */ /***************************************************************/ @@ -588,7 +588,7 @@ MY (slurp_symbol_table) (abfd) assignment to the strings pointer is done after we're thru using the nlist so we don't overwrite anything important. */ - /* OK, now walk the new symtable, cacheing symbol properties */ + /* OK, now walk the new symtable, caching symbol properties */ { aout_symbol_type *cache_ptr = cached; aout_symbol_type cache_save; @@ -611,7 +611,7 @@ MY (slurp_symbol_table) (abfd) return FALSE; /********************************************************/ - /* for hpux, the 'lenght' value indicates the length of */ + /* for hpux, the 'length' value indicates the length of */ /* the symbol name which follows the nlist entry. */ /********************************************************/ if (length) diff -uprN binutils-2.14.90.0.7/bfd/hppabsd-core.c binutils-2.14.90.0.8/bfd/hppabsd-core.c --- binutils-2.14.90.0.7/bfd/hppabsd-core.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/hppabsd-core.c 2004-01-14 13:07:43.000000000 -0800 @@ -213,7 +213,6 @@ hppabsd_core_core_file_failing_command ( return core_command (abfd); } -/* ARGSUSED */ static int hppabsd_core_core_file_failing_signal (abfd) bfd *abfd; @@ -221,7 +220,6 @@ hppabsd_core_core_file_failing_signal (a return core_signal (abfd); } -/* ARGSUSED */ static bfd_boolean hppabsd_core_core_file_matches_executable_p (core_bfd, exec_bfd) bfd *core_bfd, *exec_bfd; diff -uprN binutils-2.14.90.0.7/bfd/hpux-core.c binutils-2.14.90.0.8/bfd/hpux-core.c --- binutils-2.14.90.0.7/bfd/hpux-core.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/hpux-core.c 2004-01-14 13:07:43.000000000 -0800 @@ -327,7 +327,6 @@ hpux_core_core_file_failing_command (abf return core_command (abfd); } -/* ARGSUSED */ static int hpux_core_core_file_failing_signal (abfd) bfd *abfd; @@ -335,7 +334,6 @@ hpux_core_core_file_failing_signal (abfd return core_signal (abfd); } -/* ARGSUSED */ static bfd_boolean hpux_core_core_file_matches_executable_p (core_bfd, exec_bfd) bfd *core_bfd ATTRIBUTE_UNUSED; diff -uprN binutils-2.14.90.0.7/bfd/i386linux.c binutils-2.14.90.0.8/bfd/i386linux.c --- binutils-2.14.90.0.7/bfd/i386linux.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/i386linux.c 2004-01-14 13:07:43.000000000 -0800 @@ -112,7 +112,7 @@ i386linux_write_object_contents (abfd) #endif /* This special symbol is a set vector that contains a list of - pointers to fixup tables. It will be present in any dynamicly + pointers to fixup tables. It will be present in any dynamically linked file. The linker generated fixup table should also be added to the list, and it should always appear in the second slot (the first one is a dummy with a magic number that is defined in diff -uprN binutils-2.14.90.0.7/bfd/i386msdos.c binutils-2.14.90.0.8/bfd/i386msdos.c --- binutils-2.14.90.0.7/bfd/i386msdos.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/i386msdos.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,6 +1,6 @@ /* BFD back-end for MS-DOS executables. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2001, 2002 - Free Software Foundation, Inc. + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2001, 2002, + 2003 Free Software Foundation, Inc. Written by Bryan Ford of the University of Utah. Contributed by the Center for Software Science at the @@ -61,7 +61,7 @@ static int msdos_sizeof_headers static bfd_boolean msdos_write_object_contents PARAMS ((bfd *)); static bfd_boolean msdos_set_section_contents - PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, sec_ptr, const PTR, file_ptr, bfd_size_type)); static int msdos_sizeof_headers (abfd, exec) @@ -139,7 +139,7 @@ static bfd_boolean msdos_set_section_contents (abfd, section, location, offset, count) bfd *abfd; sec_ptr section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { diff -uprN binutils-2.14.90.0.7/bfd/ieee.c binutils-2.14.90.0.8/bfd/ieee.c --- binutils-2.14.90.0.7/bfd/ieee.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/ieee.c 2004-01-14 13:07:43.000000000 -0800 @@ -160,7 +160,7 @@ static bfd_boolean ieee_write_data_part static bfd_boolean init_for_output PARAMS ((bfd *)); static bfd_boolean ieee_set_section_contents - PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, sec_ptr, const PTR, file_ptr, bfd_size_type)); static bfd_boolean ieee_write_external_part PARAMS ((bfd *)); static bfd_boolean ieee_write_me_part @@ -1043,7 +1043,7 @@ ieee_slurp_external_symbols (abfd) (void) must_parse_int (&(ieee->h)); /* Fetch the default size if not resolved. */ size = must_parse_int (&(ieee->h)); - /* Fetch the defautlt value if available. */ + /* Fetch the default value if available. */ if (! parse_int (&(ieee->h), &value)) { value = 0; @@ -1639,7 +1639,7 @@ ieee_object_p (abfd) const bfd_arch_info_type *arch; char family[10]; - /* IEEE does not specify the format of the processor identificaton + /* IEEE does not specify the format of the processor identification string, so the compiler is free to put in it whatever it wants. We try here to recognize different processors belonging to the m68k family. Code for other processors can be added here. */ @@ -3440,7 +3440,7 @@ static bfd_boolean ieee_set_section_contents (abfd, section, location, offset, count) bfd *abfd; sec_ptr section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { diff -uprN binutils-2.14.90.0.7/bfd/ihex.c binutils-2.14.90.0.8/bfd/ihex.c --- binutils-2.14.90.0.7/bfd/ihex.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/ihex.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD back-end for Intel Hex objects. - Copyright 1995, 1996, 1998, 1999, 2000, 2001, 2002 + Copyright 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Ian Lance Taylor of Cygnus Support . @@ -142,7 +142,7 @@ static bfd_boolean ihex_read_section static bfd_boolean ihex_get_section_contents PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); static bfd_boolean ihex_set_section_contents - PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, file_ptr, bfd_size_type)); static bfd_boolean ihex_write_record PARAMS ((bfd *, size_t, unsigned int, unsigned int, bfd_byte *)); static bfd_boolean ihex_write_object_contents @@ -699,7 +699,7 @@ static bfd_boolean ihex_set_section_contents (abfd, section, location, offset, count) bfd *abfd; asection *section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { @@ -948,7 +948,6 @@ ihex_set_arch_mach (abfd, arch, mach) /* Get the size of the headers, for the linker. */ -/*ARGSUSED*/ static int ihex_sizeof_headers (abfd, exec) bfd *abfd ATTRIBUTE_UNUSED; diff -uprN binutils-2.14.90.0.7/bfd/init.c binutils-2.14.90.0.8/bfd/init.c --- binutils-2.14.90.0.7/bfd/init.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/init.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* bfd initialization stuff - Copyright 1990, 1991, 1992, 1993, 1994, 1995 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 2003 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support. diff -uprN binutils-2.14.90.0.7/bfd/libaout.h binutils-2.14.90.0.8/bfd/libaout.h --- binutils-2.14.90.0.7/bfd/libaout.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/libaout.h 2004-01-14 13:07:43.000000000 -0800 @@ -1,6 +1,6 @@ /* BFD back-end data structures for a.out (and similar) files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002 + 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Cygnus Support. @@ -513,7 +513,7 @@ extern bfd_boolean NAME(aout,new_section PARAMS ((bfd *, asection *)); extern bfd_boolean NAME(aout,set_section_contents) - PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, sec_ptr, const PTR, file_ptr, bfd_size_type)); extern asymbol * NAME(aout,make_empty_symbol) PARAMS ((bfd *)); diff -uprN binutils-2.14.90.0.7/bfd/libbfd-in.h binutils-2.14.90.0.8/bfd/libbfd-in.h --- binutils-2.14.90.0.7/bfd/libbfd-in.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/libbfd-in.h 2004-01-14 13:07:43.000000000 -0800 @@ -326,7 +326,7 @@ extern bfd_boolean _bfd_archive_coff_con ((bfd_boolean (*) (bfd *, enum bfd_architecture, unsigned long)) \ bfd_false) #define _bfd_nowrite_set_section_contents \ - ((bfd_boolean (*) (bfd *, asection *, void *, file_ptr, bfd_size_type)) \ + ((bfd_boolean (*) (bfd *, asection *, const void *, file_ptr, bfd_size_type)) \ bfd_false) /* Generic routines to use for BFD_JUMP_TABLE_WRITE. Use @@ -334,7 +334,7 @@ extern bfd_boolean _bfd_archive_coff_con #define _bfd_generic_set_arch_mach bfd_default_set_arch_mach extern bfd_boolean _bfd_generic_set_section_contents - (bfd *, asection *, void *, file_ptr, bfd_size_type); + (bfd *, asection *, const void *, file_ptr, bfd_size_type); /* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not support linking. Use BFD_JUMP_TABLE_LINK (_bfd_nolink). */ diff -uprN binutils-2.14.90.0.7/bfd/libbfd.c binutils-2.14.90.0.8/bfd/libbfd.c --- binutils-2.14.90.0.7/bfd/libbfd.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/libbfd.c 2004-01-14 13:07:43.000000000 -0800 @@ -771,7 +771,7 @@ _bfd_generic_get_section_contents_in_win bfd_boolean _bfd_generic_set_section_contents (bfd *abfd, sec_ptr section, - void *location, + const void *location, file_ptr offset, bfd_size_type count) { diff -uprN binutils-2.14.90.0.7/bfd/libbfd.h binutils-2.14.90.0.8/bfd/libbfd.h --- binutils-2.14.90.0.7/bfd/libbfd.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/libbfd.h 2004-01-14 13:07:43.000000000 -0800 @@ -331,7 +331,7 @@ extern bfd_boolean _bfd_archive_coff_con ((bfd_boolean (*) (bfd *, enum bfd_architecture, unsigned long)) \ bfd_false) #define _bfd_nowrite_set_section_contents \ - ((bfd_boolean (*) (bfd *, asection *, void *, file_ptr, bfd_size_type)) \ + ((bfd_boolean (*) (bfd *, asection *, const void *, file_ptr, bfd_size_type)) \ bfd_false) /* Generic routines to use for BFD_JUMP_TABLE_WRITE. Use @@ -339,7 +339,7 @@ extern bfd_boolean _bfd_archive_coff_con #define _bfd_generic_set_arch_mach bfd_default_set_arch_mach extern bfd_boolean _bfd_generic_set_section_contents - (bfd *, asection *, void *, file_ptr, bfd_size_type); + (bfd *, asection *, const void *, file_ptr, bfd_size_type); /* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not support linking. Use BFD_JUMP_TABLE_LINK (_bfd_nolink). */ @@ -864,6 +864,20 @@ static const char *const bfd_reloc_code_ "BFD_RELOC_FRV_GPREL32", "BFD_RELOC_FRV_GPRELHI", "BFD_RELOC_FRV_GPRELLO", + "BFD_RELOC_FRV_GOT12", + "BFD_RELOC_FRV_GOTHI", + "BFD_RELOC_FRV_GOTLO", + "BFD_RELOC_FRV_FUNCDESC", + "BFD_RELOC_FRV_FUNCDESC_GOT12", + "BFD_RELOC_FRV_FUNCDESC_GOTHI", + "BFD_RELOC_FRV_FUNCDESC_GOTLO", + "BFD_RELOC_FRV_FUNCDESC_VALUE", + "BFD_RELOC_FRV_FUNCDESC_GOTOFF12", + "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI", + "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO", + "BFD_RELOC_FRV_GOTOFF12", + "BFD_RELOC_FRV_GOTOFFHI", + "BFD_RELOC_FRV_GOTOFFLO", "BFD_RELOC_MN10300_GOTOFF24", "BFD_RELOC_MN10300_GOT32", @@ -1168,6 +1182,20 @@ static const char *const bfd_reloc_code_ "BFD_RELOC_M32R_HI16_SLO", "BFD_RELOC_M32R_LO16", "BFD_RELOC_M32R_SDA16", + "BFD_RELOC_M32R_GOT24", + "BFD_RELOC_M32R_26_PLTREL", + "BFD_RELOC_M32R_COPY", + "BFD_RELOC_M32R_GLOB_DAT", + "BFD_RELOC_M32R_JMP_SLOT", + "BFD_RELOC_M32R_RELATIVE", + "BFD_RELOC_M32R_GOTOFF", + "BFD_RELOC_M32R_GOTPC24", + "BFD_RELOC_M32R_GOT16_HI_ULO", + "BFD_RELOC_M32R_GOT16_HI_SLO", + "BFD_RELOC_M32R_GOT16_LO", + "BFD_RELOC_M32R_GOTPC_HI_ULO", + "BFD_RELOC_M32R_GOTPC_HI_SLO", + "BFD_RELOC_M32R_GOTPC_LO", "BFD_RELOC_V850_9_PCREL", "BFD_RELOC_V850_22_PCREL", "BFD_RELOC_V850_SDA_16_16_OFFSET", diff -uprN binutils-2.14.90.0.7/bfd/libecoff.h binutils-2.14.90.0.8/bfd/libecoff.h --- binutils-2.14.90.0.7/bfd/libecoff.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/libecoff.h 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD ECOFF object file private structure. - Copyright 1993, 1994, 1995, 1996, 1999, 2001, 2002 + Copyright 1993, 1994, 1995, 1996, 1999, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. @@ -324,7 +324,7 @@ extern long _bfd_ecoff_canonicalize_relo extern bfd_boolean _bfd_ecoff_set_arch_mach PARAMS ((bfd *, enum bfd_architecture, unsigned long)); extern bfd_boolean _bfd_ecoff_set_section_contents - PARAMS ((bfd *, asection *, PTR location, file_ptr, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR location, file_ptr, bfd_size_type)); extern int _bfd_ecoff_sizeof_headers PARAMS ((bfd *abfd, bfd_boolean reloc)); /* ecoff_bfd_get_relocated_section_contents defined by backend. */ diff -uprN binutils-2.14.90.0.7/bfd/libnlm.h binutils-2.14.90.0.8/bfd/libnlm.h --- binutils-2.14.90.0.7/bfd/libnlm.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/libnlm.h 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD back-end data structures for NLM (NetWare Loadable Modules) files. - Copyright 1993, 1994, 2001, 2002 Free Software Foundation, Inc. + Copyright 1993, 1994, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -76,7 +76,7 @@ extern const bfd_target *nlmNAME(object_ extern bfd_boolean nlmNAME(set_arch_mach) PARAMS ((bfd *, enum bfd_architecture, unsigned long)); extern bfd_boolean nlmNAME(set_section_contents) - PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, file_ptr, bfd_size_type)); extern bfd_boolean nlmNAME(write_object_contents) PARAMS ((bfd *)); @@ -188,7 +188,8 @@ struct nlm_backend_data /* To make objcopy to an i386 NLM work, the i386 backend needs a chance to work over the relocs. This is a bit icky. */ bfd_boolean (*nlm_mangle_relocs) - PARAMS ((bfd *, asection *, PTR data, bfd_vma offset, bfd_size_type count)); + PARAMS ((bfd *, asection *, const PTR data, bfd_vma offset, + bfd_size_type count)); /* Read an import record from abfd. It would be nice if this were in a machine-dependent format, but it doesn't seem to be. */ bfd_boolean (*nlm_read_import) PARAMS ((bfd *, nlmNAME(symbol_type) *)); diff -uprN binutils-2.14.90.0.7/bfd/linker.c binutils-2.14.90.0.8/bfd/linker.c --- binutils-2.14.90.0.7/bfd/linker.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/linker.c 2004-01-14 13:07:43.000000000 -0800 @@ -455,7 +455,7 @@ _bfd_link_hash_newfunc (struct bfd_hash_ /* Initialize the local fields. */ h->type = bfd_link_hash_new; - h->next = NULL; + h->und_next = NULL; } return entry; @@ -614,9 +614,9 @@ void bfd_link_add_undef (struct bfd_link_hash_table *table, struct bfd_link_hash_entry *h) { - BFD_ASSERT (h->next == NULL); + BFD_ASSERT (h->und_next == NULL); if (table->undefs_tail != NULL) - table->undefs_tail->next = h; + table->undefs_tail->und_next = h; if (table->undefs == NULL) table->undefs = h; table->undefs_tail = h; @@ -786,7 +786,7 @@ generic_link_add_object_symbols (bfd *ab bfd_boolean collect) { bfd_size_type symcount; - struct symbol_cache_entry **outsyms; + struct bfd_symbol **outsyms; if (! generic_link_read_symbols (abfd)) return FALSE; @@ -988,9 +988,9 @@ _bfd_generic_link_add_archive_symbols us to lose track of whether the symbol has been referenced). */ if (*pundef != info->hash->undefs_tail) - *pundef = (*pundef)->next; + *pundef = (*pundef)->und_next; else - pundef = &(*pundef)->next; + pundef = &(*pundef)->und_next; continue; } @@ -1013,7 +1013,7 @@ _bfd_generic_link_add_archive_symbols } if (arh == NULL) { - pundef = &(*pundef)->next; + pundef = &(*pundef)->und_next; continue; } } @@ -1062,7 +1062,7 @@ _bfd_generic_link_add_archive_symbols } } - pundef = &(*pundef)->next; + pundef = &(*pundef)->und_next; } archive_hash_table_free (&arsym_hash); @@ -1692,8 +1692,8 @@ _bfd_generic_link_add_one_symbol (struct case REF: /* A reference to a defined symbol. */ - if (h->next == NULL && info->hash->undefs_tail != h) - h->next = h; + if (h->und_next == NULL && info->hash->undefs_tail != h) + h->und_next = h; break; case BIG: @@ -1879,8 +1879,8 @@ _bfd_generic_link_add_one_symbol (struct case REFC: /* A reference to an indirect symbol. */ - if (h->next == NULL && info->hash->undefs_tail != h) - h->next = h; + if (h->und_next == NULL && info->hash->undefs_tail != h) + h->und_next = h; h = h->u.i.link; cycle = TRUE; break; @@ -1895,10 +1895,10 @@ _bfd_generic_link_add_one_symbol (struct case CWARN: /* Warn if this symbol has been referenced already, otherwise add a warning. A symbol has been referenced if - the next field is not NULL, or it is the tail of the + the und_next field is not NULL, or it is the tail of the undefined symbol list. The REF case above helps to ensure this. */ - if (h->next != NULL || info->hash->undefs_tail == h) + if (h->und_next != NULL || info->hash->undefs_tail == h) { if (! (*info->callbacks->warning) (info, string, h->root.string, hash_entry_bfd (h), NULL, 0)) diff -uprN binutils-2.14.90.0.7/bfd/m68klinux.c binutils-2.14.90.0.8/bfd/m68klinux.c --- binutils-2.14.90.0.7/bfd/m68klinux.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/m68klinux.c 2004-01-14 13:07:43.000000000 -0800 @@ -113,7 +113,7 @@ m68klinux_write_object_contents (abfd) #endif /* This special symbol is a set vector that contains a list of - pointers to fixup tables. It will be present in any dynamicly + pointers to fixup tables. It will be present in any dynamically linked file. The linker generated fixup table should also be added to the list, and it should always appear in the second slot (the first one is a dummy with a magic number that is defined in diff -uprN binutils-2.14.90.0.7/bfd/mach-o.c binutils-2.14.90.0.8/bfd/mach-o.c --- binutils-2.14.90.0.7/bfd/mach-o.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/mach-o.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* Mach-O support for BFD. - Copyright 1999, 2000, 2001, 2002 + Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/mach-o.h binutils-2.14.90.0.8/bfd/mach-o.h --- binutils-2.14.90.0.7/bfd/mach-o.h 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/mach-o.h 2004-01-14 13:07:43.000000000 -0800 @@ -74,11 +74,11 @@ typedef enum bfd_mach_o_load_command_typ BFD_MACH_O_LC_FVMFILE = 0x9, /* Fixed VM file inclusion. */ BFD_MACH_O_LC_PREPAGE = 0xa, /* Prepage command (internal use). */ BFD_MACH_O_LC_DYSYMTAB = 0xb, /* Dynamic link-edit symbol table info. */ - BFD_MACH_O_LC_LOAD_DYLIB = 0xc, /* Load a dynamicly linked shared library. */ - BFD_MACH_O_LC_ID_DYLIB = 0xd, /* Dynamicly linked shared lib identification. */ + BFD_MACH_O_LC_LOAD_DYLIB = 0xc, /* Load a dynamically linked shared library. */ + BFD_MACH_O_LC_ID_DYLIB = 0xd, /* Dynamically linked shared lib identification. */ BFD_MACH_O_LC_LOAD_DYLINKER = 0xe, /* Load a dynamic linker. */ BFD_MACH_O_LC_ID_DYLINKER = 0xf, /* Dynamic linker identification. */ - BFD_MACH_O_LC_PREBOUND_DYLIB = 0x10,/* Modules prebound for a dynamicly. */ + BFD_MACH_O_LC_PREBOUND_DYLIB = 0x10,/* Modules prebound for a dynamically. */ BFD_MACH_O_LC_ROUTINES = 0x11, /* Image routines. */ BFD_MACH_O_LC_SUB_FRAMEWORK = 0x12, /* Sub framework. */ BFD_MACH_O_LC_SUB_UMBRELLA = 0x13, /* Sub umbrella. */ @@ -86,7 +86,7 @@ typedef enum bfd_mach_o_load_command_typ BFD_MACH_O_LC_SUB_LIBRARY = 0x15, /* Sub library. */ BFD_MACH_O_LC_TWOLEVEL_HINTS = 0x16,/* Two-level namespace lookup hints. */ BFD_MACH_O_LC_PREBIND_CKSUM = 0x17, /* Prebind checksum. */ - /* Load a dynamicly linked shared library that is allowed to be + /* Load a dynamically linked shared library that is allowed to be missing (weak). */ BFD_MACH_O_LC_LOAD_WEAK_DYLIB = 0x18 } @@ -231,7 +231,7 @@ typedef struct bfd_mach_o_symtab_command bfd_mach_o_symtab_command; /* This is the second set of the symbolic information which is used to support - the data structures for the dynamicly link editor. + the data structures for the dynamically link editor. The original set of symbolic information in the symtab_command which contains the symbol and string tables must also be present when this load command is @@ -250,7 +250,7 @@ bfd_mach_o_symtab_command; reference symbol table indirect symbol table The first three tables above (the table of contents, module table and - reference symbol table) are only present if the file is a dynamicly linked + reference symbol table) are only present if the file is a dynamically linked shared library. For executable and object modules, which are files containing only one module, the information that would be in these three tables is determined as follows: @@ -259,7 +259,7 @@ bfd_mach_o_symtab_command; file is part of the module. reference symbol table - is the defined and undefined external symbols - For dynamicly linked shared library files this load command also contains + For dynamically linked shared library files this load command also contains offsets and sizes to the pool of relocation entries for all sections separated into two groups: external relocation entries @@ -281,7 +281,7 @@ typedef struct bfd_mach_o_dysymtab_comma The last two groups are used by the dynamic binding process to do the binding (indirectly through the module table and the reference symbol - table when this is a dynamicly linked shared library file). */ + table when this is a dynamically linked shared library file). */ unsigned long ilocalsym; /* Index to local symbols. */ unsigned long nlocalsym; /* Number of local symbols. */ @@ -293,7 +293,7 @@ typedef struct bfd_mach_o_dysymtab_comma /* For the for the dynamic binding process to find which module a symbol is defined in the table of contents is used (analogous to the ranlib structure in an archive) which maps defined external symbols to modules - they are defined in. This exists only in a dynamicly linked shared + they are defined in. This exists only in a dynamically linked shared library file. For executable and object modules the defined external symbols are sorted by name and is use as the table of contents. */ @@ -304,7 +304,7 @@ typedef struct bfd_mach_o_dysymtab_comma table must reflect the modules that the file was created from. This is done by having a module table that has indexes and counts into the merged tables for each module. The module structure that these two entries - refer to is described below. This exists only in a dynamicly linked + refer to is described below. This exists only in a dynamically linked shared library file. For executable and object modules the file only contains one module so everything in the file belongs to the module. */ @@ -315,7 +315,7 @@ typedef struct bfd_mach_o_dysymtab_comma indicates the external references (defined and undefined) each module makes. For each module there is an offset and a count into the reference symbol table for the symbols that the module references. - This exists only in a dynamicly linked shared library file. For + This exists only in a dynamically linked shared library file. For executable and object modules the defined external symbols and the undefined external symbols indicates the external references. */ @@ -363,7 +363,7 @@ typedef struct bfd_mach_o_dysymtab_comma /* All the local relocation entries are grouped together (they are not grouped by their module since they are only used if the object is moved - from it staticly link edited address). */ + from it statically link edited address). */ unsigned long locreloff; /* Offset to local relocation entries. */ unsigned long nlocrel; /* Number of local relocation entries. */ diff -uprN binutils-2.14.90.0.7/bfd/merge.c binutils-2.14.90.0.8/bfd/merge.c --- binutils-2.14.90.0.7/bfd/merge.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/merge.c 2004-01-14 13:07:43.000000000 -0800 @@ -34,7 +34,7 @@ struct sec_merge_sec_info; struct sec_merge_hash_entry { struct bfd_hash_entry root; - /* Length of this entry. */ + /* Length of this entry. This includes the zero terminator. */ unsigned int len; /* Start of this string needs to be aligned to alignment octets (not 1 << align). */ @@ -43,8 +43,6 @@ struct sec_merge_hash_entry { /* Index within the merged section. */ bfd_size_type index; - /* Entity size (if present in suffix hash tables). */ - unsigned int entsize; /* Entry this is a suffix of (if alignment is 0). */ struct sec_merge_hash_entry *suffix; } u; @@ -205,9 +203,12 @@ sec_merge_hash_lookup (struct sec_merge_ alignment, we need to insert another copy. */ if (hashp->alignment < alignment) { - /* Mark the less aligned copy as deleted. */ - hashp->len = 0; - hashp->alignment = 0; + if (create) + { + /* Mark the less aligned copy as deleted. */ + hashp->len = 0; + hashp->alignment = 0; + } break; } return hashp; @@ -287,7 +288,7 @@ sec_merge_add (struct sec_merge_hash *ta } static bfd_boolean -sec_merge_emit (register bfd *abfd, struct sec_merge_hash_entry *entry) +sec_merge_emit (bfd *abfd, struct sec_merge_hash_entry *entry) { struct sec_merge_sec_info *secinfo = entry->secinfo; asection *sec = secinfo->sec; @@ -420,79 +421,6 @@ _bfd_merge_section (bfd *abfd, void **ps return FALSE; } -/* Compare two sec_merge_hash_entry structures. This is called via qsort. */ - -static int -cmplengthentry (const void *a, const void *b) -{ - struct sec_merge_hash_entry * A = *(struct sec_merge_hash_entry **) a; - struct sec_merge_hash_entry * B = *(struct sec_merge_hash_entry **) b; - - if (A->len < B->len) - return 1; - else if (A->len > B->len) - return -1; - - return memcmp (A->root.string, B->root.string, A->len); -} - -static int -last4_eq (const void *a, const void *b) -{ - struct sec_merge_hash_entry * A = (struct sec_merge_hash_entry *) a; - struct sec_merge_hash_entry * B = (struct sec_merge_hash_entry *) b; - - if (memcmp (A->root.string + A->len - 5 * A->u.entsize, - B->root.string + B->len - 5 * A->u.entsize, - 4 * A->u.entsize) != 0) - /* This was a hashtable collision. */ - return 0; - - if (A->len <= B->len) - /* B cannot be a suffix of A unless A is equal to B, which is guaranteed - not to be equal by the hash table. */ - return 0; - - if (A->alignment < B->alignment - || ((A->len - B->len) & (B->alignment - 1))) - /* The suffix is not sufficiently aligned. */ - return 0; - - return memcmp (A->root.string + (A->len - B->len), - B->root.string, B->len - 5 * A->u.entsize) == 0; -} - -static int -last_eq (const void *a, const void *b) -{ - struct sec_merge_hash_entry * A = (struct sec_merge_hash_entry *) a; - struct sec_merge_hash_entry * B = (struct sec_merge_hash_entry *) b; - - if (B->len >= 5 * A->u.entsize) - /* Longer strings are just pushed into the hash table, - they'll be used when looking up for very short strings. */ - return 0; - - if (memcmp (A->root.string + A->len - 2 * A->u.entsize, - B->root.string + B->len - 2 * A->u.entsize, - A->u.entsize) != 0) - /* This was a hashtable collision. */ - return 0; - - if (A->len <= B->len) - /* B cannot be a suffix of A unless A is equal to B, which is guaranteed - not to be equal by the hash table. */ - return 0; - - if (A->alignment < B->alignment - || ((A->len - B->len) & (B->alignment - 1))) - /* The suffix is not sufficiently aligned. */ - return 0; - - return memcmp (A->root.string + (A->len - B->len), - B->root.string, B->len - 2 * A->u.entsize) == 0; -} - /* Record one section into the hash table. */ static bfd_boolean record_section (struct sec_merge_info *sinfo, @@ -534,7 +462,7 @@ record_section (struct sec_merge_info *s goto error_return; } p++; - } + } } else { @@ -576,18 +504,81 @@ error_return: return FALSE; } +static int +strrevcmp (const void *a, const void *b) +{ + struct sec_merge_hash_entry *A = *(struct sec_merge_hash_entry **) a; + struct sec_merge_hash_entry *B = *(struct sec_merge_hash_entry **) b; + unsigned int lenA = A->len; + unsigned int lenB = B->len; + const unsigned char *s = A->root.string + lenA - 1; + const unsigned char *t = B->root.string + lenB - 1; + int l = lenA < lenB ? lenA : lenB; + + while (l) + { + if (*s != *t) + return (int) *s - (int) *t; + s--; + t--; + l--; + } + return lenA - lenB; +} + +/* Like strrevcmp, but for the case where all strings have the same + alignment > entsize. */ + +static int +strrevcmp_align (const void *a, const void *b) +{ + struct sec_merge_hash_entry *A = *(struct sec_merge_hash_entry **) a; + struct sec_merge_hash_entry *B = *(struct sec_merge_hash_entry **) b; + unsigned int lenA = A->len; + unsigned int lenB = B->len; + const unsigned char *s = A->root.string + lenA - 1; + const unsigned char *t = B->root.string + lenB - 1; + int l = lenA < lenB ? lenA : lenB; + int tail_align = (lenA & (A->alignment - 1)) - (lenB & (A->alignment - 1)); + + if (tail_align != 0) + return tail_align; + + while (l) + { + if (*s != *t) + return (int) *s - (int) *t; + s--; + t--; + l--; + } + return lenA - lenB; +} + +static inline int +is_suffix (const struct sec_merge_hash_entry *A, + const struct sec_merge_hash_entry *B) +{ + if (A->len <= B->len) + /* B cannot be a suffix of A unless A is equal to B, which is guaranteed + not to be equal by the hash table. */ + return 0; + + return memcmp (A->root.string + (A->len - B->len), + B->root.string, B->len) == 0; +} + /* This is a helper function for _bfd_merge_sections. It attempts to merge strings matching suffixes of longer strings. */ static void merge_strings (struct sec_merge_info *sinfo) { - struct sec_merge_hash_entry **array, **a, **end, *e; + struct sec_merge_hash_entry **array, **a, *e; struct sec_merge_sec_info *secinfo; - htab_t lasttab = NULL, last4tab = NULL; bfd_size_type size, amt; + unsigned int alignment = 0; - /* Now sort the strings by length, longest first. */ - array = NULL; + /* Now sort the strings */ amt = sinfo->htab->size * sizeof (struct sec_merge_hash_entry *); array = (struct sec_merge_hash_entry **) bfd_malloc (amt); if (array == NULL) @@ -595,90 +586,50 @@ merge_strings (struct sec_merge_info *si for (e = sinfo->htab->first, a = array; e; e = e->next) if (e->alignment) - *a++ = e; + { + *a++ = e; + /* Adjust the length to not include the zero terminator. */ + e->len -= sinfo->htab->entsize; + if (alignment != e->alignment) + { + if (alignment == 0) + alignment = e->alignment; + else + alignment = (unsigned) -1; + } + } sinfo->htab->size = a - array; - - qsort (array, (size_t) sinfo->htab->size, - sizeof (struct sec_merge_hash_entry *), cmplengthentry); - - last4tab = htab_create_alloc ((size_t) sinfo->htab->size * 4, - NULL, last4_eq, NULL, calloc, free); - lasttab = htab_create_alloc ((size_t) sinfo->htab->size * 4, - NULL, last_eq, NULL, calloc, free); - if (lasttab == NULL || last4tab == NULL) - goto alloc_failure; - - /* Now insert the strings into hash tables (strings with last 4 characters - and strings with last character equal), look for longer strings which - we're suffix of. */ - for (a = array, end = array + sinfo->htab->size; a < end; a++) - { - register hashval_t hash; - unsigned int c; - unsigned int i; - const unsigned char *s; - void **p; - - e = *a; - e->u.entsize = sinfo->htab->entsize; - if (e->len <= e->u.entsize) - break; - if (e->len > 4 * e->u.entsize) - { - s = (const unsigned char *) (e->root.string + e->len - e->u.entsize); - hash = 0; - for (i = 0; i < 4 * e->u.entsize; i++) + if (sinfo->htab->size != 0) + { + qsort (array, (size_t) sinfo->htab->size, + sizeof (struct sec_merge_hash_entry *), + (alignment != (unsigned) -1 && alignment > sinfo->htab->entsize + ? strrevcmp_align : strrevcmp)); + + /* Loop over the sorted array and merge suffixes */ + e = *--a; + e->len += sinfo->htab->entsize; + while (--a >= array) + { + struct sec_merge_hash_entry *cmp = *a; + + cmp->len += sinfo->htab->entsize; + if (e->alignment >= cmp->alignment + && !((e->len - cmp->len) & (cmp->alignment - 1)) + && is_suffix (e, cmp)) { - c = *--s; - hash += c + (c << 17); - hash ^= hash >> 2; - } - p = htab_find_slot_with_hash (last4tab, e, hash, INSERT); - if (p == NULL) - goto alloc_failure; - if (*p) - { - struct sec_merge_hash_entry *ent; - - ent = (struct sec_merge_hash_entry *) *p; - e->u.suffix = ent; - e->alignment = 0; - continue; + cmp->u.suffix = e; + cmp->alignment = 0; } else - *p = e; - } - s = (const unsigned char *) (e->root.string + e->len - e->u.entsize); - hash = 0; - for (i = 0; i < e->u.entsize; i++) - { - c = *--s; - hash += c + (c << 17); - hash ^= hash >> 2; + e = cmp; } - p = htab_find_slot_with_hash (lasttab, e, hash, INSERT); - if (p == NULL) - goto alloc_failure; - if (*p) - { - struct sec_merge_hash_entry *ent; - - ent = (struct sec_merge_hash_entry *) *p; - e->u.suffix = ent; - e->alignment = 0; - } - else - *p = e; } alloc_failure: if (array) free (array); - if (lasttab) - htab_delete (lasttab); - if (last4tab) - htab_delete (last4tab); /* Now assign positions to the strings we want to keep. */ size = 0; diff -uprN binutils-2.14.90.0.7/bfd/mipsbsd.c binutils-2.14.90.0.8/bfd/mipsbsd.c --- binutils-2.14.90.0.7/bfd/mipsbsd.c 2003-03-19 09:19:13.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/mipsbsd.c 2004-01-14 13:07:43.000000000 -0800 @@ -70,7 +70,7 @@ static bfd_boolean MY(write_object_conte #include "aout-target.h" static bfd_reloc_status_type mips_fix_jmp_addr - PARAMS ((bfd *, arelent *, struct symbol_cache_entry *, PTR, asection *, + PARAMS ((bfd *, arelent *, struct bfd_symbol *, PTR, asection *, bfd *, char **)); static reloc_howto_type *MY(reloc_howto_type_lookup) PARAMS ((bfd *, bfd_reloc_code_real_type)); @@ -203,7 +203,7 @@ mips_fix_jmp_addr (abfd, reloc_entry, sy error_message) bfd *abfd ATTRIBUTE_UNUSED; arelent *reloc_entry; - struct symbol_cache_entry *symbol; + struct bfd_symbol *symbol; PTR data ATTRIBUTE_UNUSED; asection *input_section; bfd *output_bfd; @@ -220,7 +220,7 @@ mips_fix_jmp_addr (abfd, reloc_entry, sy && (symbol->flags & BSF_WEAK) == 0) return bfd_reloc_undefined; - /* Work out which section the relocation is targetted at and the + /* Work out which section the relocation is targeted at and the initial relocation command value. */ if (bfd_is_com_section (symbol->section)) relocation = 0; @@ -271,7 +271,7 @@ mips_fix_hi16_s (abfd, reloc_entry, symb && (symbol->flags & BSF_WEAK) == 0) return bfd_reloc_undefined; - /* Work out which section the relocation is targetted at and the + /* Work out which section the relocation is targeted at and the initial relocation command value. */ if (bfd_is_com_section (symbol->section)) relocation = 0; diff -uprN binutils-2.14.90.0.7/bfd/mmo.c binutils-2.14.90.0.8/bfd/mmo.c --- binutils-2.14.90.0.7/bfd/mmo.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/mmo.c 2004-01-14 13:07:43.000000000 -0800 @@ -408,7 +408,7 @@ static void mmo_get_symbol_info static void mmo_print_symbol PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type)); static bfd_boolean mmo_set_section_contents - PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, sec_ptr, const PTR, file_ptr, bfd_size_type)); static int mmo_sizeof_headers PARAMS ((bfd *, bfd_boolean)); static long mmo_get_reloc_upper_bound @@ -2613,7 +2613,7 @@ static bfd_boolean mmo_set_section_contents (abfd, sec, location, offset, bytes_to_do) bfd *abfd ATTRIBUTE_UNUSED; sec_ptr sec; - PTR location; + const PTR location; file_ptr offset; bfd_size_type bytes_to_do; { diff -uprN binutils-2.14.90.0.7/bfd/netbsd-core.c binutils-2.14.90.0.8/bfd/netbsd-core.c --- binutils-2.14.90.0.7/bfd/netbsd-core.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/netbsd-core.c 2004-01-14 13:07:43.000000000 -0800 @@ -53,7 +53,6 @@ static void swap_abort /* Handle NetBSD-style core dump file. */ -/* ARGSUSED */ static const bfd_target * netbsd_core_file_p (abfd) bfd *abfd; @@ -179,7 +178,6 @@ netbsd_core_file_failing_command (abfd) return abfd->tdata.netbsd_core_data->core.c_name; } -/* ARGSUSED */ static int netbsd_core_file_failing_signal (abfd) bfd *abfd; @@ -188,7 +186,6 @@ netbsd_core_file_failing_signal (abfd) return abfd->tdata.netbsd_core_data->core.c_signo; } -/* ARGSUSED */ static bfd_boolean netbsd_core_file_matches_executable_p (core_bfd, exec_bfd) bfd *core_bfd ATTRIBUTE_UNUSED; diff -uprN binutils-2.14.90.0.7/bfd/nlm-target.h binutils-2.14.90.0.8/bfd/nlm-target.h --- binutils-2.14.90.0.7/bfd/nlm-target.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/nlm-target.h 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* Target definitions for 32/64-bit NLM (NetWare Loadable Module) - Copyright 1993, 1994, 1998, 1999, 2000, 2001, 2002 + Copyright 1993, 1994, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/nlm.c binutils-2.14.90.0.8/bfd/nlm.c --- binutils-2.14.90.0.7/bfd/nlm.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/nlm.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* NLM (NetWare Loadable Module) executable support for BFD. - Copyright 1993, 1994, 2001, 2002 Free Software Foundation, Inc. + Copyright 1993, 1994, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. diff -uprN binutils-2.14.90.0.7/bfd/nlm32-alpha.c binutils-2.14.90.0.8/bfd/nlm32-alpha.c --- binutils-2.14.90.0.7/bfd/nlm32-alpha.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/nlm32-alpha.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,6 @@ /* Support for 32-bit Alpha NLM (NetWare Loadable Module) - Copyright 1993, 1994, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright 1993, 1994, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -40,7 +41,7 @@ static bfd_boolean nlm_alpha_write_prefi static bfd_boolean nlm_alpha_read_reloc PARAMS ((bfd *, nlmNAME(symbol_type) *, asection **, arelent *)); static bfd_boolean nlm_alpha_mangle_relocs - PARAMS ((bfd *, asection *, PTR, bfd_vma, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, bfd_vma, bfd_size_type)); static bfd_boolean nlm_alpha_read_import PARAMS ((bfd *, nlmNAME(symbol_type) *)); static bfd_boolean nlm_alpha_write_import @@ -96,6 +97,8 @@ nlm_alpha_write_prefix (abfd) return TRUE; } +#define ONES(n) (((bfd_vma) 1 << ((n) - 1) << 1) - 1) + /* How to process the various reloc types. */ static reloc_howto_type nlm32_alpha_howto_table[] = @@ -143,8 +146,8 @@ static reloc_howto_type nlm32_alpha_howt 0, /* special_function */ "REFQUAD", /* name */ TRUE, /* partial_inplace */ - 0xffffffffffffffff, /* src_mask */ - 0xffffffffffffffff, /* dst_mask */ + ONES (64), /* src_mask */ + ONES (64), /* dst_mask */ FALSE), /* pcrel_offset */ /* A 32 bit GP relative offset. This is just like REFLONG except @@ -303,8 +306,8 @@ static reloc_howto_type nlm32_alpha_howt 0, /* special_function */ "SREL64", /* name */ TRUE, /* partial_inplace */ - 0xffffffffffffffff, /* src_mask */ - 0xffffffffffffffff, /* dst_mask */ + ONES (64), /* src_mask */ + ONES (64), /* dst_mask */ FALSE), /* pcrel_offset */ /* Push a value on the reloc evaluation stack. */ @@ -335,7 +338,7 @@ static reloc_howto_type nlm32_alpha_howt "OP_STORE", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ - 0xffffffffffffffff, /* dst_mask */ + ONES (64), /* dst_mask */ FALSE), /* pcrel_offset */ /* Subtract the reloc address from the value on the top of the @@ -605,7 +608,7 @@ static bfd_boolean nlm_alpha_mangle_relocs (abfd, sec, data, offset, count) bfd *abfd ATTRIBUTE_UNUSED; asection *sec ATTRIBUTE_UNUSED; - PTR data ATTRIBUTE_UNUSED; + const PTR data ATTRIBUTE_UNUSED; bfd_vma offset ATTRIBUTE_UNUSED; bfd_size_type count ATTRIBUTE_UNUSED; { diff -uprN binutils-2.14.90.0.7/bfd/nlm32-i386.c binutils-2.14.90.0.8/bfd/nlm32-i386.c --- binutils-2.14.90.0.7/bfd/nlm32-i386.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/nlm32-i386.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,6 @@ /* Support for 32-bit i386 NLM (NetWare Loadable Module) - Copyright 1993, 1994, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright 1993, 1994, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -33,7 +34,7 @@ static bfd_boolean nlm_i386_read_reloc static bfd_boolean nlm_i386_write_import PARAMS ((bfd *, asection *, arelent *)); static bfd_boolean nlm_i386_mangle_relocs - PARAMS ((bfd *, asection *, PTR, bfd_vma, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, bfd_vma, bfd_size_type)); static bfd_boolean nlm_i386_read_import PARAMS ((bfd *, nlmNAME(symbol_type) *)); static bfd_boolean nlm_i386_write_external @@ -247,7 +248,7 @@ static bfd_boolean nlm_i386_mangle_relocs (abfd, sec, data, offset, count) bfd *abfd; asection *sec; - PTR data; + const PTR data; bfd_vma offset; bfd_size_type count; { diff -uprN binutils-2.14.90.0.7/bfd/nlm32-ppc.c binutils-2.14.90.0.8/bfd/nlm32-ppc.c --- binutils-2.14.90.0.7/bfd/nlm32-ppc.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/nlm32-ppc.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,6 @@ /* Support for 32-bit PowerPC NLM (NetWare Loadable Module) - Copyright 1994, 1995, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright 1994, 1995, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -41,7 +42,7 @@ static bfd_boolean nlm_powerpc_write_pre static bfd_boolean nlm_powerpc_read_reloc PARAMS ((bfd *, nlmNAME(symbol_type) *, asection **, arelent *)); static bfd_boolean nlm_powerpc_mangle_relocs - PARAMS ((bfd *, asection *, PTR, bfd_vma, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, bfd_vma, bfd_size_type)); static bfd_boolean nlm_powerpc_read_import PARAMS ((bfd *, nlmNAME(symbol_type) *)); @@ -641,7 +642,7 @@ static bfd_boolean nlm_powerpc_mangle_relocs (abfd, sec, data, offset, count) bfd *abfd ATTRIBUTE_UNUSED; asection *sec ATTRIBUTE_UNUSED; - PTR data ATTRIBUTE_UNUSED; + const PTR data ATTRIBUTE_UNUSED; bfd_vma offset ATTRIBUTE_UNUSED; bfd_size_type count ATTRIBUTE_UNUSED; { diff -uprN binutils-2.14.90.0.7/bfd/nlm32-sparc.c binutils-2.14.90.0.8/bfd/nlm32-sparc.c --- binutils-2.14.90.0.7/bfd/nlm32-sparc.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/nlm32-sparc.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,6 @@ /* Support for 32-bit SPARC NLM (NetWare Loadable Module) - Copyright 1993, 1994, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright 1993, 1994, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -33,7 +34,7 @@ static bfd_boolean nlm_sparc_read_reloc static bfd_boolean nlm_sparc_write_reloc PARAMS ((bfd *, asection *, arelent *)); static bfd_boolean nlm_sparc_mangle_relocs - PARAMS ((bfd *, asection *, PTR, bfd_vma, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, bfd_vma, bfd_size_type)); static bfd_boolean nlm_sparc_read_import PARAMS ((bfd *, nlmNAME(symbol_type) *)); static bfd_boolean nlm_sparc_write_import @@ -237,7 +238,7 @@ static bfd_boolean nlm_sparc_mangle_relocs (abfd, sec, data, offset, count) bfd *abfd ATTRIBUTE_UNUSED; asection *sec ATTRIBUTE_UNUSED; - PTR data ATTRIBUTE_UNUSED; + const PTR data ATTRIBUTE_UNUSED; bfd_vma offset ATTRIBUTE_UNUSED; bfd_size_type count ATTRIBUTE_UNUSED; { diff -uprN binutils-2.14.90.0.7/bfd/nlmcode.h binutils-2.14.90.0.8/bfd/nlmcode.h --- binutils-2.14.90.0.7/bfd/nlmcode.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/nlmcode.h 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* NLM (NetWare Loadable Module) executable support for BFD. - Copyright 1993, 1994, 1995, 1998, 2000, 2001, 2002 + Copyright 1993, 1994, 1995, 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Fred Fish @ Cygnus Support, using ELF support as the @@ -1568,7 +1568,7 @@ bfd_boolean nlm_set_section_contents (abfd, section, location, offset, count) bfd *abfd; asection *section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { @@ -1586,7 +1586,7 @@ nlm_set_section_contents (abfd, section, if (section->reloc_count != 0) { bfd_boolean (*mangle_relocs_func) - PARAMS ((bfd *, asection *, PTR, bfd_vma, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, bfd_vma, bfd_size_type)); mangle_relocs_func = nlm_mangle_relocs_func (abfd); if (mangle_relocs_func != NULL) diff -uprN binutils-2.14.90.0.7/bfd/oasys.c binutils-2.14.90.0.8/bfd/oasys.c --- binutils-2.14.90.0.7/bfd/oasys.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/oasys.c 2004-01-14 13:07:43.000000000 -0800 @@ -70,7 +70,7 @@ static int comp static bfd_boolean oasys_write_object_contents PARAMS ((bfd *)); static bfd_boolean oasys_set_section_contents - PARAMS ((bfd *, sec_ptr, void *, file_ptr, bfd_size_type)); + PARAMS ((bfd *, sec_ptr, const void *, file_ptr, bfd_size_type)); static asymbol *oasys_make_empty_symbol PARAMS ((bfd *)); static bfd *oasys_openr_next_archived_file @@ -324,7 +324,7 @@ oasys_archive_p (abfd) /* There isn't a magic number in an Oasys archive, so the best we - can do to verify reasnableness is to make sure that the values in + can do to verify reasonableness is to make sure that the values in the header are too weird */ @@ -1346,7 +1346,7 @@ static bfd_boolean oasys_set_section_contents (abfd, section, location, offset, count) bfd *abfd; sec_ptr section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { diff -uprN binutils-2.14.90.0.7/bfd/opncls.c binutils-2.14.90.0.8/bfd/opncls.c --- binutils-2.14.90.0.7/bfd/opncls.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/opncls.c 2004-01-14 13:07:43.000000000 -0800 @@ -201,7 +201,7 @@ DESCRIPTION descriptors for other opens), with the supplied @var{fd} used as an initial file descriptor (but subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the returned BFD. The default - is to assume no cacheing; the file descriptor will remain open + is to assume no caching; the file descriptor will remain open until <>, and will not be affected by BFD operations on other files. diff -uprN binutils-2.14.90.0.7/bfd/osf-core.c binutils-2.14.90.0.8/bfd/osf-core.c --- binutils-2.14.90.0.7/bfd/osf-core.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/osf-core.c 2004-01-14 13:07:43.000000000 -0800 @@ -164,7 +164,6 @@ osf_core_core_file_failing_command (abfd return core_command (abfd); } -/* ARGSUSED */ static int osf_core_core_file_failing_signal (abfd) bfd *abfd; @@ -172,7 +171,6 @@ osf_core_core_file_failing_signal (abfd) return core_signal (abfd); } -/* ARGSUSED */ static bfd_boolean osf_core_core_file_matches_executable_p (core_bfd, exec_bfd) bfd *core_bfd ATTRIBUTE_UNUSED; diff -uprN binutils-2.14.90.0.7/bfd/pdp11.c binutils-2.14.90.0.8/bfd/pdp11.c --- binutils-2.14.90.0.7/bfd/pdp11.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/pdp11.c 2004-01-14 13:07:43.000000000 -0800 @@ -1429,7 +1429,7 @@ bfd_boolean NAME(aout,set_section_contents) (abfd, section, location, offset, count) bfd *abfd; sec_ptr section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { @@ -2469,7 +2469,6 @@ NAME(aout,get_symbol_info) (abfd, symbol } } -/*ARGSUSED*/ void NAME(aout,print_symbol) (abfd, afile, symbol, how) bfd * abfd; diff -uprN binutils-2.14.90.0.7/bfd/peXXigen.c binutils-2.14.90.0.8/bfd/peXXigen.c --- binutils-2.14.90.0.7/bfd/peXXigen.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/peXXigen.c 2004-01-14 13:07:43.000000000 -0800 @@ -570,8 +570,7 @@ _bfd_XXi_swap_aouthdr_out (abfd, in, out struct internal_extra_pe_aouthdr *extra = &pe->pe_opthdr; PEAOUTHDR *aouthdr_out = (PEAOUTHDR *) out; bfd_vma sa, fa, ib; - IMAGE_DATA_DIRECTORY idata2, idata5; - + IMAGE_DATA_DIRECTORY idata2, idata5, tls; if (pe->force_minimum_alignment) { @@ -590,6 +589,7 @@ _bfd_XXi_swap_aouthdr_out (abfd, in, out idata2 = pe->pe_opthdr.DataDirectory[1]; idata5 = pe->pe_opthdr.DataDirectory[12]; + tls = pe->pe_opthdr.DataDirectory[9]; if (aouthdr_in->tsize) { @@ -641,10 +641,11 @@ _bfd_XXi_swap_aouthdr_out (abfd, in, out a final link is going to be performed, it can overwrite them. */ extra->DataDirectory[1] = idata2; extra->DataDirectory[12] = idata5; + extra->DataDirectory[9] = tls; if (extra->DataDirectory[1].VirtualAddress == 0) /* Until other .idata fixes are made (pending patch), the entry for - .idata is needed for backwards compatability. FIXME. */ + .idata is needed for backwards compatibility. FIXME. */ add_data_entry (abfd, extra, 1, ".idata", ib); /* For some reason, the virtual size (which is what's set by @@ -942,23 +943,59 @@ _bfd_XXi_swap_scnhdr_out (abfd, in, out) PUT_SCNHDR_LNNOPTR (abfd, scnhdr_int->s_lnnoptr, scnhdr_ext->s_lnnoptr); - /* Extra flags must be set when dealing with NT. All sections should also - have the IMAGE_SCN_MEM_READ (0x40000000) flag set. In addition, the - .text section must have IMAGE_SCN_MEM_EXECUTE (0x20000000) and the data - sections (.idata, .data, .bss, .CRT) must have IMAGE_SCN_MEM_WRITE set - (this is especially important when dealing with the .idata section since - the addresses for routines from .dlls must be overwritten). If .reloc - section data is ever generated, we must add IMAGE_SCN_MEM_DISCARDABLE - (0x02000000). Also, the resource data should also be read and - writable. */ - - /* FIXME: alignment is also encoded in this field, at least on ppc (krk) */ - /* FIXME: even worse, I don't see how to get the original alignment field*/ - /* back... */ - { + /* Extra flags must be set when dealing with PE. All sections should also + have the IMAGE_SCN_MEM_READ (0x40000000) flag set. In addition, the + .text section must have IMAGE_SCN_MEM_EXECUTE (0x20000000) and the data + sections (.idata, .data, .bss, .CRT) must have IMAGE_SCN_MEM_WRITE set + (this is especially important when dealing with the .idata section since + the addresses for routines from .dlls must be overwritten). If .reloc + section data is ever generated, we must add IMAGE_SCN_MEM_DISCARDABLE + (0x02000000). Also, the resource data should also be read and + writable. */ + + /* FIXME: Alignment is also encoded in this field, at least on PPC and + ARM-WINCE. Although - how do we get the original alignment field + back ? */ + + typedef struct + { + const char * section_name; + unsigned long must_have; + } + pe_required_section_flags; + + pe_required_section_flags known_sections [] = + { + { ".arch", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_DISCARDABLE | IMAGE_SCN_ALIGN_8BYTES }, + { ".bss", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_UNINITIALIZED_DATA | IMAGE_SCN_MEM_WRITE }, + { ".data", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_WRITE }, + { ".edata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA }, + { ".idata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_WRITE }, + { ".pdata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA }, + { ".rdata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA }, + { ".reloc", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_DISCARDABLE }, + { ".rsrc", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_WRITE }, + { ".text" , IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE }, + { ".tls", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_WRITE }, + { ".xdata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA }, + { NULL, 0} + }; + + pe_required_section_flags * p; int flags = scnhdr_int->s_flags; + for (p = known_sections; p->section_name; p++) + if (strcmp (scnhdr_int->s_name, p->section_name) == 0) + { + /* We have defaulted to adding the IMAGE_SCN_MEM_WRITE flag, but now + we know exactly what this specific section wants so we remove it + and then allow the must_have field to add it back in if necessary. */ + flags &= ~IMAGE_SCN_MEM_WRITE; + flags |= p->must_have; + break; + } + H_PUT_32 (abfd, flags, scnhdr_ext->s_flags); } @@ -968,7 +1005,7 @@ _bfd_XXi_swap_scnhdr_out (abfd, in, out) && strcmp (scnhdr_int->s_name, ".text") == 0) { /* By inference from looking at MS output, the 32 bit field - which is the combintion of the number_of_relocs and + which is the combination of the number_of_relocs and number_of_linenos is used for the line number count in executables. A 16-bit field won't do for cc1. The MS document says that the number of relocs is zero for @@ -2025,7 +2062,19 @@ _bfd_XXi_final_link_postscript (abfd, pf + h1->root.u.def.section->output_offset) - pe_data (abfd)->pe_opthdr.DataDirectory[12].VirtualAddress); } - + + h1 = coff_link_hash_lookup (coff_hash_table (info), + "__tls_used", FALSE, FALSE, TRUE); + if (h1 != NULL) + { + pe_data (abfd)->pe_opthdr.DataDirectory[9].VirtualAddress = + (h1->root.u.def.value + + h1->root.u.def.section->output_section->vma + + h1->root.u.def.section->output_offset + - pe_data (abfd)->pe_opthdr.ImageBase); + pe_data (abfd)->pe_opthdr.DataDirectory[9].Size = 0x18; + } + /* If we couldn't find idata$2, we either have an excessively trivial program or are in DEEP trouble; we have to assume trivial program.... */ diff -uprN binutils-2.14.90.0.7/bfd/peicode.h binutils-2.14.90.0.8/bfd/peicode.h --- binutils-2.14.90.0.7/bfd/peicode.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/peicode.h 2004-01-14 13:07:43.000000000 -0800 @@ -135,7 +135,7 @@ static asection_ptr pe_ILF_make_a_ static void pe_ILF_make_a_reloc PARAMS ((pe_ILF_vars *, bfd_vma, bfd_reloc_code_real_type, asection_ptr)); static void pe_ILF_make_a_symbol PARAMS ((pe_ILF_vars *, const char *, const char *, asection_ptr, flagword)); static void pe_ILF_save_relocs PARAMS ((pe_ILF_vars *, asection_ptr)); -static void pe_ILF_make_a_symbol_reloc PARAMS ((pe_ILF_vars *, bfd_vma, bfd_reloc_code_real_type, struct symbol_cache_entry **, unsigned int)); +static void pe_ILF_make_a_symbol_reloc PARAMS ((pe_ILF_vars *, bfd_vma, bfd_reloc_code_real_type, struct bfd_symbol **, unsigned int)); static bfd_boolean pe_ILF_build_a_bfd PARAMS ((bfd *, unsigned int, bfd_byte *, bfd_byte *, unsigned int, unsigned int)); static const bfd_target * pe_ILF_object_p PARAMS ((bfd *)); static const bfd_target * pe_bfd_object_p PARAMS ((bfd *)); @@ -470,7 +470,7 @@ static void pe_ILF_make_a_symbol_reloc (pe_ILF_vars * vars, bfd_vma address, bfd_reloc_code_real_type reloc, - struct symbol_cache_entry ** sym, + struct bfd_symbol ** sym, unsigned int sym_index) { arelent * entry; @@ -902,10 +902,40 @@ pe_ILF_build_a_bfd (bfd * abfd symbol = symbol_name; if (import_name_type != IMPORT_NAME) - /* Skip any prefix in symbol_name. */ - while (*symbol == '@' || * symbol == '?' || * symbol == '_') - ++ symbol; - + { + bfd_boolean skipped_leading_underscore = FALSE; + bfd_boolean skipped_leading_at = FALSE; + bfd_boolean skipped_leading_question_mark = FALSE; + bfd_boolean check_again; + + /* Skip any prefix in symbol_name. */ + -- symbol; + do + { + check_again = FALSE; + ++ symbol; + + switch (*symbol) + { + case '@': + if (! skipped_leading_at) + check_again = skipped_leading_at = TRUE; + break; + case '?': + if (! skipped_leading_question_mark) + check_again = skipped_leading_question_mark = TRUE; + break; + case '_': + if (! skipped_leading_underscore) + check_again = skipped_leading_underscore = TRUE; + break; + default: + break; + } + } + while (check_again); + } + if (import_name_type == IMPORT_NAME_UNDECORATE) { /* Truncate at the first '@' */ @@ -967,11 +997,11 @@ pe_ILF_build_a_bfd (bfd * abfd if (magic == MIPS_ARCH_MAGIC_WINCE) { pe_ILF_make_a_symbol_reloc (&vars, (bfd_vma) 0, BFD_RELOC_HI16_S, - (struct symbol_cache_entry **) imp_sym, + (struct bfd_symbol **) imp_sym, imp_index); pe_ILF_make_a_reloc (&vars, (bfd_vma) 0, BFD_RELOC_LO16, text); pe_ILF_make_a_symbol_reloc (&vars, (bfd_vma) 4, BFD_RELOC_LO16, - (struct symbol_cache_entry **) imp_sym, + (struct bfd_symbol **) imp_sym, imp_index); } else Binary files binutils-2.14.90.0.7/bfd/po/da.gmo and binutils-2.14.90.0.8/bfd/po/da.gmo differ Binary files binutils-2.14.90.0.7/bfd/po/es.gmo and binutils-2.14.90.0.8/bfd/po/es.gmo differ Binary files binutils-2.14.90.0.7/bfd/po/fr.gmo and binutils-2.14.90.0.8/bfd/po/fr.gmo differ diff -uprN binutils-2.14.90.0.7/bfd/po/ro.po binutils-2.14.90.0.8/bfd/po/ro.po --- binutils-2.14.90.0.7/bfd/po/ro.po 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/po/ro.po 2004-01-14 13:07:44.000000000 -0800 @@ -0,0 +1,3026 @@ +# Mesajele în limba românã pentru pachetul bfd. +# Copyright (C) 2003 Free Software Foundation, Inc. +# Eugen Hoanca , 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: bfd 2.14rel030712\n" +"POT-Creation-Date: 2003-07-11 13:53+0930\n" +"PO-Revision-Date: 2003-11-25 08:39+0200\n" +"Last-Translator: Eugen Hoanca \n" +"Language-Team: Romanian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aout-adobe.c:204 +#, c-format +msgid "%s: Unknown section type in a.out.adobe file: %x\n" +msgstr "%s: Tip secþiune necunoscut în fiºier adobe a.out: %x\n" + +#: aout-cris.c:207 +#, c-format +msgid "%s: Invalid relocation type exported: %d" +msgstr "%s: Tip de relocare exportat invalid: %d" + +#: aout-cris.c:251 +#, c-format +msgid "%s: Invalid relocation type imported: %d" +msgstr "%s: Tip de relocare importat invalid: %d" + +#: aout-cris.c:262 +#, c-format +msgid "%s: Bad relocation record imported: %d" +msgstr "%s: Înregistrare de relocare greºitã importatã: %d" + +#: aoutx.h:1295 aoutx.h:1716 +#, c-format +msgid "%s: can not represent section `%s' in a.out object file format" +msgstr "%s: nu se poate reprezenta secþiunea `%s' în format de fiºier obiect a.out" + +#: aoutx.h:1682 +#, c-format +msgid "%s: can not represent section for symbol `%s' in a.out object file format" +msgstr "%s: nu se poate reprezenta secþiunea pentru simbolul `%s' în formatul de fiºier obiect a.out" + +#: aoutx.h:1684 +msgid "*unknown*" +msgstr "*necunoscut*" + +#: aoutx.h:3776 +#, c-format +msgid "%s: relocatable link from %s to %s not supported" +msgstr "%s: legãtura relocalizabilã din %s cãtre %s nesuportatã" + +#: archive.c:1751 +msgid "Warning: writing archive was slow: rewriting timestamp\n" +msgstr "Avertisment: scrierea arhivei a fost lentã: se rescrie marcajul de timp(timestamp)\n" + +#: archive.c:2014 +msgid "Reading archive file mod timestamp" +msgstr "Citirea fiºierului arhivã mod marcaj de timp" + +#: archive.c:2040 +msgid "Writing updated armap timestamp" +msgstr "Scriere marcaj de timp armap înnoit" + +#: bfd.c:280 +msgid "No error" +msgstr "Nici o eroare" + +#: bfd.c:281 +msgid "System call error" +msgstr "Eroare apel sistem" + +#: bfd.c:282 +msgid "Invalid bfd target" +msgstr "Þintã bfd invalidã" + +#: bfd.c:283 +msgid "File in wrong format" +msgstr "Fiºier în format eronat" + +#: bfd.c:284 +msgid "Archive object file in wrong format" +msgstr "Fiºier obiect arhivã în format eronat" + +#: bfd.c:285 +msgid "Invalid operation" +msgstr "Operaþie invalidã" + +#: bfd.c:286 +msgid "Memory exhausted" +msgstr "Memorie plinã" + +#: bfd.c:287 +msgid "No symbols" +msgstr "Nici un simbol" + +#: bfd.c:288 +msgid "Archive has no index; run ranlib to add one" +msgstr "Arhiva nu are nici un index.; rulaþi ranlib pentru a adãuga unul" + +#: bfd.c:289 +msgid "No more archived files" +msgstr "Nu mai existã fiºiere arhivate" + +#: bfd.c:290 +msgid "Malformed archive" +msgstr "Arhivã malformatã" + +#: bfd.c:291 +msgid "File format not recognized" +msgstr "Formatul de fiºier nu a fost recunoscut" + +#: bfd.c:292 +msgid "File format is ambiguous" +msgstr "Formatul de fiºier este ambiguu" + +#: bfd.c:293 +msgid "Section has no contents" +msgstr "Secþiunea nu are conþinut" + +#: bfd.c:294 +msgid "Nonrepresentable section on output" +msgstr "Secþiune de output nereprezentabilã" + +#: bfd.c:295 +msgid "Symbol needs debug section which does not exist" +msgstr "Simbolul necesitã secþiune de debug care nu existã" + +#: bfd.c:296 +msgid "Bad value" +msgstr "Valoare eronatã" + +#: bfd.c:297 +msgid "File truncated" +msgstr "Fiºier trunchiat" + +#: bfd.c:298 +msgid "File too big" +msgstr "Fiºier prea mare" + +#: bfd.c:299 +msgid "#" +msgstr "#" + +#: bfd.c:687 +#, c-format +msgid "BFD %s assertion fail %s:%d" +msgstr "Aserþiunea BFD %s a eºuat %s:%d" + +#: bfd.c:703 +#, c-format +msgid "BFD %s internal error, aborting at %s line %d in %s\n" +msgstr "Eroare interna BFD %s, se renunþã la %s linia %d în %s\n" + +#: bfd.c:707 +#, c-format +msgid "BFD %s internal error, aborting at %s line %d\n" +msgstr "Eroare internã BFD %s, se renunþã la %s linia %d\n" + +#: bfd.c:709 +msgid "Please report this bug.\n" +msgstr "Vã rugãm raportaþi acest bug.\n" + +#: bfdwin.c:202 +#, c-format +msgid "not mapping: data=%lx mapped=%d\n" +msgstr "nu se mapeazã: data=%lx mapat =%d\n" + +#: bfdwin.c:205 +msgid "not mapping: env var not set\n" +msgstr "nu se mapeazã: variabila env nu este setatã\n" + +#: binary.c:306 +#, c-format +msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." +msgstr "Avertisment: Scrierea secþiunii `%s' spre offset de fiºier imens (sau negativ) 0x%lx" + +#: coff-a29k.c:120 +msgid "Missing IHCONST" +msgstr "IHCONST lipsã" + +#: coff-a29k.c:181 +msgid "Missing IHIHALF" +msgstr "IHHALF lipsã" + +#: coff-a29k.c:213 coff-or32.c:236 +msgid "Unrecognized reloc" +msgstr "Reloc necunoscut" + +#: coff-a29k.c:409 +msgid "missing IHCONST reloc" +msgstr "IHCONST reloc lipsã" + +#: coff-a29k.c:499 +msgid "missing IHIHALF reloc" +msgstr "IHIHALF reloc lipsã" + +#: coff-alpha.c:884 coff-alpha.c:921 coff-alpha.c:1992 coff-mips.c:1397 +msgid "GP relative relocation used when GP not defined" +msgstr "Relocare relativã GP folositã când GP nu este definit" + +#: coff-alpha.c:1488 +msgid "using multiple gp values" +msgstr "folosire de valori multiple gp" + +#: coff-arm.c:1066 elf32-arm.h:294 +#, c-format +msgid "%s: unable to find THUMB glue '%s' for `%s'" +msgstr "%s: nu s-a putut gãsi legãtura(glue) THUMB `%s' pentru `%s'" + +#: coff-arm.c:1096 elf32-arm.h:329 +#, c-format +msgid "%s: unable to find ARM glue '%s' for `%s'" +msgstr "%s: nu s-a putut gãsi legãtura(glue) ARM `%s' pentru `%s'" + +#: coff-arm.c:1394 coff-arm.c:1489 elf32-arm.h:892 elf32-arm.h:999 +#, c-format +msgid "%s(%s): warning: interworking not enabled." +msgstr "%s(%s): avertisment: interlucrul(interworking) nu este activat" + +#: coff-arm.c:1398 elf32-arm.h:1002 +#, c-format +msgid " first occurrence: %s: arm call to thumb" +msgstr " prima gãsire: %s: apelare braþ(arm) cãtre deget(thumb)" + +#: coff-arm.c:1493 elf32-arm.h:895 +#, c-format +msgid " first occurrence: %s: thumb call to arm" +msgstr " prima gãsire: %s: apelare deget(thumb) cãtre braþ(arm)" + +#: coff-arm.c:1496 +msgid " consider relinking with --support-old-code enabled" +msgstr " luaþi în considerare relinkuirea cu --support-old-code activat" + +#: coff-arm.c:1788 coff-tic80.c:687 cofflink.c:3038 +#, c-format +msgid "%s: bad reloc address 0x%lx in section `%s'" +msgstr "%s: adresã eronatã de relocare 0x%lx în secþiunea `%s'" + +#: coff-arm.c:2132 +#, c-format +msgid "%s: illegal symbol index in reloc: %d" +msgstr "%s: index ilegal de simbol în reloc: %d" + +#: coff-arm.c:2265 +#, c-format +msgid "ERROR: %s is compiled for APCS-%d, whereas %s is compiled for APCS-%d" +msgstr "EROARE: %s este compilat pentru APCS-%d, pe când %s e compilat pentru APCS-%d" + +#: coff-arm.c:2280 elf32-arm.h:2328 +#, c-format +msgid "ERROR: %s passes floats in float registers, whereas %s passes them in integer registers" +msgstr "EROARE: %s trimite float în regiºtrii de float, pe când %s îi trimite în regiºtrii de integer" + +#: coff-arm.c:2283 elf32-arm.h:2333 +#, c-format +msgid "ERROR: %s passes floats in integer registers, whereas %s passes them in float registers" +msgstr "EROARE: %s trimite integer în regiºtrii de integer, pe când %s îi trimite în regiºtrii de float" + +#: coff-arm.c:2298 +#, c-format +msgid "ERROR: %s is compiled as position independent code, whereas target %s is absolute position" +msgstr "EROARE: %s este compilat ca ºi cod independent de poziþie,pe când þinta %seste poziþie absolutã" + +#: coff-arm.c:2301 +#, c-format +msgid "ERROR: %s is compiled as absolute position code, whereas target %s is position independent" +msgstr "EROARE: %s este compilat ca ºi cod poziþie absolutã,pe când þinta %seste independentã de poziþie" + +#: coff-arm.c:2330 elf32-arm.h:2405 +#, c-format +msgid "Warning: %s supports interworking, whereas %s does not" +msgstr "Avertisment: %s suportã interlucru(interworking), pe când %s nu suportã" + +#: coff-arm.c:2333 elf32-arm.h:2412 +#, c-format +msgid "Warning: %s does not support interworking, whereas %s does" +msgstr "Avertisment: %s nu suportã interlucru(interworking), pe când %s suportã" + +#: coff-arm.c:2360 +#, c-format +msgid "private flags = %x:" +msgstr "marcaje(flags) private = %x:" + +#: coff-arm.c:2368 elf32-arm.h:2467 +msgid " [floats passed in float registers]" +msgstr " [floats trecuþi în regiºtri de float]" + +#: coff-arm.c:2370 +msgid " [floats passed in integer registers]" +msgstr " [floats trecuþi în regiºtrii de integer]" + +#: coff-arm.c:2373 elf32-arm.h:2470 +msgid " [position independent]" +msgstr "[ independent de poziþie]" + +#: coff-arm.c:2375 +msgid " [absolute position]" +msgstr " [poziþie absolutã]" + +#: coff-arm.c:2379 +msgid " [interworking flag not initialised]" +msgstr " [marcajul(flag) de interlucru(interworking) nu este iniþializat]" + +#: coff-arm.c:2381 +msgid " [interworking supported]" +msgstr " [interlucru(interworking) suportat]" + +#: coff-arm.c:2383 +msgid " [interworking not supported]" +msgstr " [interlucru(interworking) nesuportat]" + +#: coff-arm.c:2431 elf32-arm.h:2150 +#, c-format +msgid "Warning: Not setting interworking flag of %s since it has already been specified as non-interworking" +msgstr "Avertisment: Nu se seteazã marcajul(flagu) de interlucru(interworking) al %s atâta timp cât a fost specificat ca non-interlucru(interworking)" + +#: coff-arm.c:2435 elf32-arm.h:2154 +#, c-format +msgid "Warning: Clearing the interworking flag of %s due to outside request" +msgstr "Avertisment: Se ºterge marcajul(flag) de interlucru(interworking) al %s datoritã unei cereri din afarã" + +#: coff-h8300.c:1096 +#, c-format +msgid "cannot handle R_MEM_INDIRECT reloc when using %s output" +msgstr "nu am putut mainpula(handle) relocarea R_MEM_INDIRECT în folosirea ieºirii(output) %s" + +#: coff-i960.c:137 coff-i960.c:486 +msgid "uncertain calling convention for non-COFF symbol" +msgstr "convenþie de apelare nesigurã pentru simbol non-COFF" + +#: coff-m68k.c:482 coff-mips.c:2394 elf32-m68k.c:2193 elf32-mips.c:1783 +msgid "unsupported reloc type" +msgstr "tip de relocare nesuportat" + +#: coff-mips.c:839 elf32-mips.c:1088 elf64-mips.c:1590 elfn32-mips.c:1554 +msgid "GP relative relocation when _gp not defined" +msgstr "Relocare relativã GP atâta timp cât _gp nu este definit" + +#. No other sections should appear in -membedded-pic +#. code. +#: coff-mips.c:2431 +msgid "reloc against unsupported section" +msgstr "relocare pe o secþiune nesuportatã" + +#: coff-mips.c:2439 +msgid "reloc not properly aligned" +msgstr "relocare incorect aliniatã" + +#: coff-rs6000.c:2790 +#, c-format +msgid "%s: unsupported relocation type 0x%02x" +msgstr "%s: tip de relocare nesuportat 0x%02x" + +#: coff-rs6000.c:2883 +#, c-format +msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" +msgstr "%s: relocare TOC la 0x%x cãtre simbolul `%s' fãrã nici o intrare TOC" + +#: coff-rs6000.c:3616 coff64-rs6000.c:2109 +#, c-format +msgid "%s: symbol `%s' has unrecognized smclas %d" +msgstr "%s: simbolul `%s' are un smclas necunoscut %d" + +#: coff-tic4x.c:170 coff-tic54x.c:288 coff-tic80.c:450 +#, c-format +msgid "Unrecognized reloc type 0x%x" +msgstr "Tip de relocare necunoscut 0x%x" + +#: coff-tic4x.c:218 coff-tic54x.c:373 coffcode.h:5045 +#, c-format +msgid "%s: warning: illegal symbol index %ld in relocs" +msgstr "%s: avertisment: index ilegal de simbol %ld în relocãri" + +#: coff-w65.c:364 +#, c-format +msgid "ignoring reloc %s\n" +msgstr "se ignorã reloc %s\n" + +#: coffcode.h:1108 +#, c-format +msgid "%s (%s): Section flag %s (0x%x) ignored" +msgstr "%s (%s): Marcajul(flag) de secþiune %s (0x%x) ignorat" + +#: coffcode.h:2214 +#, c-format +msgid "Unrecognized TI COFF target id '0x%x'" +msgstr "Id þintã TI COFF necunoscut `0x%x'" + +#: coffcode.h:4437 +#, c-format +msgid "%s: warning: illegal symbol index %ld in line numbers" +msgstr "%s: avertisment: index ilegal de simbol %ld în numãrul de linii" + +#: coffcode.h:4451 +#, c-format +msgid "%s: warning: duplicate line number information for `%s'" +msgstr "%s: avertisment: informaþie duplicat a numãrului de linii pentru `%s'" + +#: coffcode.h:4805 +#, c-format +msgid "%s: Unrecognized storage class %d for %s symbol `%s'" +msgstr "%s: Clasã de depozitare(storage) %d necunoscutã pentru %s simbolul `%s'" + +#: coffcode.h:4938 +#, c-format +msgid "warning: %s: local symbol `%s' has no section" +msgstr "avertisment: %s: simbolul local `%s' nu are secþiune" + +#: coffcode.h:5083 +#, c-format +msgid "%s: illegal relocation type %d at address 0x%lx" +msgstr "%s: tip ilegal de relocare %d la adresa 0x%lx" + +#: coffgen.c:1666 +#, c-format +msgid "%s: bad string table size %lu" +msgstr "%s: mãrime tabel ºiruri invalidã %lu" + +#: cofflink.c:538 elflink.h:1276 +#, c-format +msgid "Warning: type of symbol `%s' changed from %d to %d in %s" +msgstr "Avertisment: tipul de simbol `%s' schimbat de la %d la %d în %s" + +#: cofflink.c:2328 +#, c-format +msgid "%s: relocs in section `%s', but it has no contents" +msgstr "%s: relocãri în secþiunea `%s', dar fãrã conþinut" + +#: cofflink.c:2671 coffswap.h:890 +#, c-format +msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" +msgstr "%s: %s: depãºire(overflow) de relocãri: 0x%lx > 0xffff" + +#: cofflink.c:2680 coffswap.h:876 +#, c-format +msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: avertisment: %s: depãºire(overflow) numãr de linii: 0x%lx > 0xffff" + +#: cpu-arm.c:196 cpu-arm.c:206 +#, c-format +msgid "ERROR: %s is compiled for the EP9312, whereas %s is compiled for XScale" +msgstr "EROARE: %s este compilat pentru EP9312, pe când %s e compilat pentru XScale" + +#: cpu-arm.c:344 +#, c-format +msgid "warning: unable to update contents of %s section in %s" +msgstr "avertisment: imposibil de adus la zi(update) conþinutul secþiunii %s în %s" + +#: dwarf2.c:380 +msgid "Dwarf Error: Can't find .debug_str section." +msgstr "Eroare Pitic(Dwarf): Nu pot gãsi secþiunea debug_str" + +#: dwarf2.c:397 +#, c-format +msgid "Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)." +msgstr "Eroare Pitic(Dwarf): DW_FORM_strp offset (%lu) mai mare sau egalã cu mãrimea .debug_str (%lu)." + +#: dwarf2.c:541 +msgid "Dwarf Error: Can't find .debug_abbrev section." +msgstr "Eroare Pitic(Dwarf): Nu pot gãsi secþiunea debug_abbrev." + +#: dwarf2.c:556 +#, c-format +msgid "Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)." +msgstr "Eroare Pitic(Dwarf): Offset abbrev(%lu) mai mare sau egal cu mãrimea .debug_abbrev (%lu)." + +#: dwarf2.c:756 +#, c-format +msgid "Dwarf Error: Invalid or unhandled FORM value: %u." +msgstr "Eroare Pitic(Dwarf): Valoare FORM invalidã sau nemanipulabilã: %u." + +#: dwarf2.c:933 +msgid "Dwarf Error: mangled line number section (bad file number)." +msgstr "Eroare Pitic(Dwarf): secþiune numãr de linii trunchiatã (numãr fiºier eronat)" + +#: dwarf2.c:1032 +msgid "Dwarf Error: Can't find .debug_line section." +msgstr "Eroare Pitic(Dwarf): Nu pot gãsi secþiunea debug_line." + +#: dwarf2.c:1049 +#, c-format +msgid "Dwarf Error: Line offset (%lu) greater than or equal to .debug_line size (%lu)." +msgstr "Eroare Pitic(Dwarf): Offsetul de linie (%lu) mai mare sau egal cu mãrimea .debug_line (%lu)" + +#: dwarf2.c:1255 +msgid "Dwarf Error: mangled line number section." +msgstr "Eroare Pitic(Dwarf): secþiune trunchiatã numãr de linii" + +#: dwarf2.c:1470 dwarf2.c:1620 +#, c-format +msgid "Dwarf Error: Could not find abbrev number %u." +msgstr "Eroare Pitic(Dwarf): Nu am putut gãsi numãrul abbrev: %u." + +#: dwarf2.c:1581 +#, c-format +msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information." +msgstr "Eroare Pitic(Dwarf): S-a gãsit dwarf versiunea `%u', acest cititor manipuleazã doar informaþii ale versiunii 2." + +#: dwarf2.c:1588 +#, c-format +msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'." +msgstr "Eroare Pitic(Dwarf): s-a gãsit adresa mãrimea `%u', acest cititor nu poate manipula mãrimi mai mari decât `%u'" + +#: dwarf2.c:1611 +#, c-format +msgid "Dwarf Error: Bad abbrev number: %u." +msgstr "Eroare Pitic(Dwarf): Numãr invalid de abbrev: %u" + +#: ecoff.c:1339 +#, c-format +msgid "Unknown basic type %d" +msgstr "Tip de bazã necunoscut %d" + +#: ecoff.c:1599 +#, c-format +msgid "" +"\n" +" End+1 symbol: %ld" +msgstr "" +"\n" +" Simbol Sfârºit+1: %ld" + +#: ecoff.c:1606 ecoff.c:1609 +#, c-format +msgid "" +"\n" +" First symbol: %ld" +msgstr "" +"\n" +" Primul simbol: %ld" + +#: ecoff.c:1621 +#, c-format +msgid "" +"\n" +" End+1 symbol: %-7ld Type: %s" +msgstr "" +"\n" +" Simbol Sfârºit+1: %-7ld Tip: %s" + +#: ecoff.c:1628 +#, c-format +msgid "" +"\n" +" Local symbol: %ld" +msgstr "" +"\n" +" Simbol local: %ld" + +#: ecoff.c:1636 +#, c-format +msgid "" +"\n" +" struct; End+1 symbol: %ld" +msgstr "" +"\n" +" struct; Simbol Sfârºit+1: %ld" + +#: ecoff.c:1641 +#, c-format +msgid "" +"\n" +" union; End+1 symbol: %ld" +msgstr "" +"\n" +" uniune; Simbol Sfârºit+1: %ld" + +#: ecoff.c:1646 +#, c-format +msgid "" +"\n" +" enum; End+1 symbol: %ld" +msgstr "" +"\n" +" enum; Simbol Sfârºit+1: %ld" + +#: ecoff.c:1652 +#, c-format +msgid "" +"\n" +" Type: %s" +msgstr "" +"\n" +" Tip: %s" + +#: elf-hppa.h:1458 elf-hppa.h:1491 elf-m10300.c:1628 elf64-sh64.c:1704 +#, c-format +msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section" +msgstr "%s: avertisment: relocare nerezolvabilã pe simbolul `%s; din secþiunea `%s'" + +#: elf-m10200.c:442 elf-m10300.c:1695 elf32-arm.h:2088 elf32-avr.c:812 +#: elf32-cris.c:1390 elf32-d10v.c:570 elf32-fr30.c:634 elf32-frv.c:815 +#: elf32-h8300.c:528 elf32-i860.c:1028 elf32-ip2k.c:1586 elf32-iq2000.c:699 +#: elf32-m32r.c:1283 elf32-m68hc1x.c:1305 elf32-msp430.c:510 +#: elf32-openrisc.c:436 elf32-v850.c:1777 elf32-xstormy16.c:976 +#: elf64-mmix.c:1332 +msgid "internal error: out of range error" +msgstr "eroare internã: eroare depãºire de domeniu(out of range)" + +#: elf-m10200.c:446 elf-m10300.c:1699 elf32-arm.h:2092 elf32-avr.c:816 +#: elf32-cris.c:1394 elf32-d10v.c:574 elf32-fr30.c:638 elf32-frv.c:819 +#: elf32-h8300.c:532 elf32-i860.c:1032 elf32-iq2000.c:703 elf32-m32r.c:1287 +#: elf32-m68hc1x.c:1309 elf32-msp430.c:514 elf32-openrisc.c:440 +#: elf32-v850.c:1781 elf32-xstormy16.c:980 elf64-mmix.c:1336 elfxx-mips.c:6452 +msgid "internal error: unsupported relocation error" +msgstr "eroare internã: eroare de relocare nesuportatã" + +#: elf-m10200.c:450 elf-m10300.c:1703 elf32-arm.h:2096 elf32-d10v.c:578 +#: elf32-h8300.c:536 elf32-m32r.c:1291 elf32-m68hc1x.c:1313 +msgid "internal error: dangerous error" +msgstr "eroare internã: eroare periculoasã" + +#: elf-m10200.c:454 elf-m10300.c:1707 elf32-arm.h:2100 elf32-avr.c:824 +#: elf32-cris.c:1402 elf32-d10v.c:582 elf32-fr30.c:646 elf32-frv.c:827 +#: elf32-h8300.c:540 elf32-i860.c:1040 elf32-ip2k.c:1601 elf32-iq2000.c:711 +#: elf32-m32r.c:1295 elf32-m68hc1x.c:1317 elf32-msp430.c:522 +#: elf32-openrisc.c:448 elf32-v850.c:1801 elf32-xstormy16.c:988 +#: elf64-mmix.c:1344 +msgid "internal error: unknown error" +msgstr "eroare internã: eroare necunoscutã" + +#: elf.c:372 +#, c-format +msgid "%s: invalid string offset %u >= %lu for section `%s'" +msgstr "%s: offset de ºir invalid %u >= %lu pentru secþiunea `%s'" + +#: elf.c:624 +#, c-format +msgid "%s: invalid SHT_GROUP entry" +msgstr "%s: intrare SHT_GROUP invalidã" + +#: elf.c:695 +#, c-format +msgid "%s: no group info for section %s" +msgstr "%s nu existã informaþii de grup pentru secþiunea %s" + +#: elf.c:1055 +msgid "" +"\n" +"Program Header:\n" +msgstr "" +"\n" +"Header Program:\n" + +#: elf.c:1106 +msgid "" +"\n" +"Dynamic Section:\n" +msgstr "" +"\n" +"Secþiune Dinamicã:\n" + +#: elf.c:1235 +msgid "" +"\n" +"Version definitions:\n" +msgstr "" +"\n" +"Definiþii de versiune:\n" + +#: elf.c:1258 +msgid "" +"\n" +"Version References:\n" +msgstr "" +"\n" +"Referinþe Versiune:\n" + +#: elf.c:1263 +#, c-format +msgid " required from %s:\n" +msgstr " cerute de %s:\n" + +#: elf.c:1944 +#, c-format +msgid "%s: invalid link %lu for reloc section %s (index %u)" +msgstr "%s: link invalid %lu pentru secþiunea de relocare %s (index %u)" + +#: elf.c:3686 +#, c-format +msgid "%s: Not enough room for program headers (allocated %u, need %u)" +msgstr "%s: Memorie insuficientã pentru headerele programului (alocatã %u, necesarã %u)" + +#: elf.c:3791 +#, c-format +msgid "%s: Not enough room for program headers, try linking with -N" +msgstr "%s: Memorie insuficientã pentru headerele programului, încercaþi linkuirea cu -N" + +#: elf.c:3922 +#, c-format +msgid "Error: First section in segment (%s) starts at 0x%x whereas the segment starts at 0x%x" +msgstr "Eroare: prima secþiune în segment (%s) începe la 0x%x pe când segmentul începe la 0x%x" + +#: elf.c:4242 +#, c-format +msgid "%s: warning: allocated section `%s' not in segment" +msgstr "%s: avertisment: secþiunea alocatã `%s' nu este în segment" + +#: elf.c:4566 +#, c-format +msgid "%s: symbol `%s' required but not present" +msgstr "%s: simbolul `%s' necesar, dar nu este prezent" + +#: elf.c:4854 +#, c-format +msgid "%s: warning: Empty loadable segment detected, is this intentional ?\n" +msgstr "%s: avertisment: S-a detectat segment încãrcabil vid, este intenþionat ?\n" + +#: elf.c:5485 +#, c-format +msgid "Unable to find equivalent output section for symbol '%s' from section '%s'" +msgstr "Nnu am putut gãsi secþiunea de output echivalentã pentru simbolul '%s' din secþiunea '%s'" + +#: elf.c:6298 +#, c-format +msgid "%s: unsupported relocation type %s" +msgstr "%s: tip de relocare nesuportat: %s" + +#: elf32-arm.h:1228 +#, c-format +msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." +msgstr "%s: Avertisment: BLX Arm are ca þintã funcþia Arm `%s'." + +#: elf32-arm.h:1424 +#, c-format +msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." +msgstr "%s: Avertisment: BLX Thumb are ca þintã funcþia thumb `%s'." + +#: elf32-arm.h:1918 elf32-sh.c:4706 elf64-sh64.c:1613 +#, c-format +msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section" +msgstr "%s(%s+0x%lx): %s relocare pe secþiunea SEC_MERGE" + +#: elf32-arm.h:2012 +#, c-format +msgid "%s: warning: unresolvable relocation %d against symbol `%s' from %s section" +msgstr "%s: avertisment: relocare nerezolvabilã %d pe simbolul `%s' din secþiunea %s" + +#: elf32-arm.h:2202 +#, c-format +msgid "Warning: Clearing the interworking flag of %s because non-interworking code in %s has been linked with it" +msgstr "Avertisment: Se ºterge marcajul(flag) de interlucru(interworking) al %s deoarece împreunã cu el a fost linkuit cod non-interlucru în %s" + +#: elf32-arm.h:2302 +#, c-format +msgid "ERROR: %s is compiled for EABI version %d, whereas %s is compiled for version %d" +msgstr "EROARE: %s este compilat pentru EABI versiunea %d, pe când %s este compilat pentru versiunea %d" + +#: elf32-arm.h:2316 +#, c-format +msgid "ERROR: %s is compiled for APCS-%d, whereas target %s uses APCS-%d" +msgstr "EROARE: %s este compilat pentru APCS-%d, pe când þinta %s foloseºte APCS-%d" + +#: elf32-arm.h:2344 +#, c-format +msgid "ERROR: %s uses VFP instructions, whereas %s does not" +msgstr "EROARE: %s foloseºte instrucþiuni VFP, pe când %s nu le foloseºte" + +#: elf32-arm.h:2349 +#, c-format +msgid "ERROR: %s uses FPA instructions, whereas %s does not" +msgstr "EROARE: %s foloseºte instrucþiuni FPA, pe când %s nu le foloseºte" + +#: elf32-arm.h:2360 elf32-arm.h:2365 +#, c-format +msgid "ERROR: %s uses Maverick instructions, whereas %s does not" +msgstr "EROARE: %s foloseºte instrucþiuni Maverick, pe când %s nu le foloseºte" + +#: elf32-arm.h:2385 +#, c-format +msgid "ERROR: %s uses software FP, whereas %s uses hardware FP" +msgstr "EROARE: %s foloseºte FP software, pe când %s foloseºte FP hardware" + +#: elf32-arm.h:2390 +#, c-format +msgid "ERROR: %s uses hardware FP, whereas %s uses software FP" +msgstr "EROARE: %s foloseºte FP hardware, pe când %s foloseºte FP software" + +#. Ignore init flag - it may not be set, despite the flags field +#. containing valid data. +#: elf32-arm.h:2443 elf32-cris.c:2975 elf32-m68hc1x.c:1459 elf32-m68k.c:397 +#: elf32-vax.c:546 elfxx-mips.c:9238 +#, c-format +msgid "private flags = %lx:" +msgstr "marcaje(flags) private = %lx:" + +#: elf32-arm.h:2452 +msgid " [interworking enabled]" +msgstr " [interlucru(interworking) activat]" + +#: elf32-arm.h:2460 +msgid " [VFP float format]" +msgstr " [format float VFP]" + +#: elf32-arm.h:2462 +msgid " [Maverick float format]" +msgstr " [format float Maverick]" + +#: elf32-arm.h:2464 +msgid " [FPA float format]" +msgstr " [format float FPA]" + +#: elf32-arm.h:2473 +msgid " [new ABI]" +msgstr " [ABI nou]" + +#: elf32-arm.h:2476 +msgid " [old ABI]" +msgstr " [ABI vechi]" + +#: elf32-arm.h:2479 +msgid " [software FP]" +msgstr " [FP software]" + +#: elf32-arm.h:2488 +msgid " [Version1 EABI]" +msgstr " [EABI Versiunea1]" + +#: elf32-arm.h:2491 elf32-arm.h:2502 +msgid " [sorted symbol table]" +msgstr " [tabelã sortatã de simboluri]" + +#: elf32-arm.h:2493 elf32-arm.h:2504 +msgid " [unsorted symbol table]" +msgstr " [tabelã de simboluri nesortatã]" + +#: elf32-arm.h:2499 +msgid " [Version2 EABI]" +msgstr " [EABI Versiunea2]" + +#: elf32-arm.h:2507 +msgid " [dynamic symbols use segment index]" +msgstr " [simbolurile dinamice folosesc index de segment]" + +#: elf32-arm.h:2510 +msgid " [mapping symbols precede others]" +msgstr " [simbolurile de mapare le precedeazã pe celelalte]" + +#: elf32-arm.h:2517 +msgid " " +msgstr " " + +#: elf32-arm.h:2524 +msgid " [relocatable executable]" +msgstr " [executabil relocabil]" + +#: elf32-arm.h:2527 +msgid " [has entry point]" +msgstr " [are punct de intrare]" + +#: elf32-arm.h:2532 +msgid "" +msgstr "" + +#: elf32-avr.c:820 elf32-cris.c:1398 elf32-fr30.c:642 elf32-frv.c:823 +#: elf32-i860.c:1036 elf32-ip2k.c:1597 elf32-iq2000.c:707 elf32-msp430.c:518 +#: elf32-openrisc.c:444 elf32-v850.c:1785 elf32-xstormy16.c:984 +#: elf64-mmix.c:1340 +msgid "internal error: dangerous relocation" +msgstr "eroare internã: relocare periculoasã" + +#: elf32-cris.c:931 +#, c-format +msgid "%s: unresolvable relocation %s against symbol `%s' from %s section" +msgstr "%s: relocare nerezolvabilã %s pe simbolul `%s' din secþiunea `%s'" + +#: elf32-cris.c:993 +#, c-format +msgid "%s: No PLT nor GOT for relocation %s against symbol `%s' from %s section" +msgstr "%s:Nu existã nici PLT nici GOR pentru relocarea %s pe simbolul `%s' din secþiunea %s" + +#: elf32-cris.c:996 elf32-cris.c:1122 +msgid "[whose name is lost]" +msgstr "[al cãrui nume s-a pierdut]" + +#: elf32-cris.c:1111 +#, c-format +msgid "%s: relocation %s with non-zero addend %d against local symbol from %s section" +msgstr "%s: relocarea %s cu adãugarea diferitã de zero %d pe simbolul local din secþiunea %s" + +#: elf32-cris.c:1118 +#, c-format +msgid "%s: relocation %s with non-zero addend %d against symbol `%s' from %s section" +msgstr "%s: relocarea %s cu adãugare non-zero %d pe simbolul `%s' din secþiunea %s" + +#: elf32-cris.c:1143 +#, c-format +msgid "%s: relocation %s is not allowed for global symbol: `%s' from %s section" +msgstr "%s: relocarea %s nu este permisã pentru simbolul global `%s' din secþiunea %s" + +#: elf32-cris.c:1158 +#, c-format +msgid "%s: relocation %s in section %s with no GOT created" +msgstr "%s: relocarea %s din secþiunea %s fãrã GOT creat" + +#: elf32-cris.c:1277 +#, c-format +msgid "%s: Internal inconsistency; no relocation section %s" +msgstr "%s: Inconsistenþã internã, nu existã secþiunea de relocare %s" + +#: elf32-cris.c:2500 +#, c-format +msgid "" +"%s, section %s:\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%s, secþiunea %s:\n" +" relocarea %s n-ar trebui folositã într-un shared object; recompilaþi cu -fPIC" + +#: elf32-cris.c:2978 +msgid " [symbols have a _ prefix]" +msgstr " [simbolurile au un _prefix]" + +#: elf32-cris.c:3017 +#, c-format +msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols" +msgstr "%s: se folosesc simbolurile _-prefixate, dar se scrie fiºierul cu simboluri neprefixate" + +#: elf32-cris.c:3018 +#, c-format +msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols" +msgstr "%s: se folosesc simboluri neprefixate, dar se scrie fiºierul cu simboluri _-prefixate" + +#: elf32-frv.c:1223 +#, c-format +msgid "%s: compiled with %s and linked with modules that use non-pic relocations" +msgstr "%s: compilat cu %s ºi linkuit cu module care folosesc relocaþii non-pic" + +#: elf32-frv.c:1273 elf32-iq2000.c:895 +#, c-format +msgid "%s: compiled with %s and linked with modules compiled with %s" +msgstr "%s: compilat cu %s ºi linkuit cu module compilate cu %s" + +#: elf32-frv.c:1285 +#, c-format +msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "%s: foloseºte câmpuri marcaje e_flags (0x%lx) diferite de modulele anterioare (0x%lx)" + +#: elf32-frv.c:1321 elf32-iq2000.c:933 +#, c-format +msgid "private flags = 0x%lx:" +msgstr "marcaje(flags) private = 0x%lx" + +#: elf32-gen.c:83 elf64-gen.c:82 +#, c-format +msgid "%s: Relocations in generic ELF (EM: %d)" +msgstr "%s: Relocãri în ELF generic (EM: %d)" + +#: elf32-hppa.c:672 elf32-m68hc1x.c:176 elf64-ppc.c:3118 +#, c-format +msgid "%s: cannot create stub entry %s" +msgstr "%s: nu se poate crea intrarea trunchiatã %s" + +#: elf32-hppa.c:957 elf32-hppa.c:3538 +#, c-format +msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections" +msgstr "%s(%s+0x%lx): nu se poate gãsi %s, recompilaþi cu -ffunction-sections" + +#: elf32-hppa.c:1340 elf64-x86-64.c:672 elf64-x86-64.c:797 +#, c-format +msgid "%s: relocation %s can not be used when making a shared object; recompile with -fPIC" +msgstr "%s: relocarea %s nu poate fi utilizatã când se face un shared object, recompilaþicu -fPIC" + +#: elf32-hppa.c:1360 +#, c-format +msgid "%s: relocation %s should not be used when making a shared object; recompile with -fPIC" +msgstr "%s: relocarea %s nu ar trebui utilizatã când se face un shared object, recompilaþicu -fPIC" + +#: elf32-hppa.c:1553 +#, c-format +msgid "Could not find relocation section for %s" +msgstr "Nu se poate gãsi secþiunea de relocare pentru %s" + +#: elf32-hppa.c:2828 +#, c-format +msgid "%s: duplicate export stub %s" +msgstr "%s: exportare de ciot(stub) duplicatã %s" + +#: elf32-hppa.c:3416 +#, c-format +msgid "%s(%s+0x%lx): fixing %s" +msgstr "%s(%s+0x%lx): se fixeazã %s" + +#: elf32-hppa.c:4039 +#, c-format +msgid "%s(%s+0x%lx): cannot handle %s for %s" +msgstr "%s(%s+0x%lx): nu pot manipula %s pentru %s" + +#: elf32-hppa.c:4357 +msgid ".got section not immediately after .plt section" +msgstr "secþiunea .got nu urmeazã imediat dupã secþiunea .plt" + +#: elf32-i386.c:326 +#, c-format +msgid "%s: invalid relocation type %d" +msgstr "%s: tip de relocare invalid %d" + +#: elf32-i386.c:841 elf32-s390.c:990 elf32-sparc.c:887 elf32-xtensa.c:637 +#: elf64-s390.c:943 elf64-x86-64.c:650 +#, c-format +msgid "%s: bad symbol index: %d" +msgstr "%s:index de simboluri invalid: %d" + +#: elf32-i386.c:949 elf32-s390.c:1168 elf32-sh.c:6426 elf32-sparc.c:1011 +#: elf64-s390.c:1129 +#, c-format +msgid "%s: `%s' accessed both as normal and thread local symbol" +msgstr "%s: `%s' accesate ºi ca simboluri locale normale ºi ca simboluri locale pe fire (thread)" + +#: elf32-i386.c:1064 elf32-s390.c:1279 elf64-ppc.c:3929 elf64-s390.c:1243 +#: elf64-x86-64.c:886 +#, c-format +msgid "%s: bad relocation section name `%s'" +msgstr "%s: nume secþiune relocare invalid `%s'" + +#: elf32-i386.c:2908 elf32-m68k.c:1757 elf32-s390.c:3022 elf32-sparc.c:2879 +#: elf32-xtensa.c:2193 elf64-s390.c:3018 elf64-sparc.c:2664 +#: elf64-x86-64.c:2452 +#, c-format +msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'" +msgstr "%s(%s+0x%lx): relocare nerezolvabilã pe simbolul `%s'" + +#: elf32-i386.c:2947 elf32-m68k.c:1796 elf32-s390.c:3072 elf64-s390.c:3068 +#: elf64-x86-64.c:2490 +#, c-format +msgid "%s(%s+0x%lx): reloc against `%s': error %d" +msgstr "%s(%s+0x%lx): relocare pe `%s': eroare %d" + +#: elf32-ip2k.c:565 elf32-ip2k.c:571 elf32-ip2k.c:734 elf32-ip2k.c:740 +msgid "ip2k relaxer: switch table without complete matching relocation information." +msgstr "ip2k relaxer: schimbare de tabel fãrã potrivirea completã a informaþiei de relocare." + +#: elf32-ip2k.c:588 elf32-ip2k.c:767 +msgid "ip2k relaxer: switch table header corrupt." +msgstr "ip2k relaxer: headerul tablelului de schimbare este corupt." + +#: elf32-ip2k.c:1395 +#, c-format +msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)." +msgstr "ip2k linker: lipseºte instrucþiunea de paginã la 0x%08lx (dest = 0x%08lx)." + +#: elf32-ip2k.c:1409 +#, c-format +msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)." +msgstr "ip2k linker: instrucþiune redundantã de paginã la 0x%08lx (dest = 0x%08lx)." + +#. Only if it's not an unresolved symbol. +#: elf32-ip2k.c:1593 +msgid "unsupported relocation between data/insn address spaces" +msgstr "relocare nesuportatã între datã/spaþiu adresã insn" + +#: elf32-iq2000.c:907 elf32-m68hc1x.c:1431 elf32-ppc.c:2175 elf64-sparc.c:3072 +#: elfxx-mips.c:9195 +#, c-format +msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "%s: foloseºte câmpuri de marcaje e_flags (0x%lx) diferite de modulele anterioare (0x%lx)" + +#: elf32-m32r.c:930 +msgid "SDA relocation when _SDA_BASE_ not defined" +msgstr "Relocare SDA când _SDA_BASE_ nu este definit" + +#: elf32-m32r.c:1018 elf64-alpha.c:4279 elf64-alpha.c:4407 elf32-ia64.c:3958 +#: elf64-ia64.c:3958 +#, c-format +msgid "%s: unknown relocation type %d" +msgstr "%s: tip necunoscut de relocare %d" + +#: elf32-m32r.c:1226 +#, c-format +msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" +msgstr "%s: Þinta (%s) unei relocãri %s este în secþiunea nepotrivitã (%s)" + +#: elf32-m32r.c:1952 +#, c-format +msgid "%s: Instruction set mismatch with previous modules" +msgstr "%s: Setul de instrucþiuni nu se potriveºte cu modulele anterioare" + +#: elf32-m32r.c:1975 +#, c-format +msgid "private flags = %lx" +msgstr "marcaje (flags) private = %lx" + +#: elf32-m32r.c:1980 +msgid ": m32r instructions" +msgstr ": instrucþiuni m32r" + +#: elf32-m32r.c:1981 +msgid ": m32rx instructions" +msgstr ": instrucþiuni m32rx" + +#: elf32-m68hc1x.c:1217 +#, c-format +msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution" +msgstr "Referinþa la simbolul depãrtat `%s' folosind o relocare invalidã poate duce la execuþie incorectã" + +#: elf32-m68hc1x.c:1240 +#, c-format +msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)" +msgstr "adresa banked [%lx:%04lx] (%lx) nu este în acelaºi bank precum adresa banked curentã [%lx:%04lx] (%lx)" + +#: elf32-m68hc1x.c:1259 +#, c-format +msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx" +msgstr "referinþã la adresa banked [%lx:%04lx] în spaþiul normal de adresã la %04lx" + +#: elf32-m68hc1x.c:1396 +#, c-format +msgid "%s: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers" +msgstr "%s: linkuire a fiºierelor compilate pentru întregi(integers) pe 16-biþi (-mshort) ºi a celorlalte pentru întregi(integers) pe 32-biþi" + +#: elf32-m68hc1x.c:1404 +#, c-format +msgid "%s: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double" +msgstr "%s: linkuire a fiºierelor compilate pentru double pe 32-biþi (-fshort-double) ºi a celorlalte pentru double pe 64-biþi" + +#: elf32-m68hc1x.c:1414 +#, c-format +msgid "%s: linking files compiled for HCS12 with others compiled for HC12" +msgstr "%s:linkuire a fiºierelor compilate pentru HCS12 cu celelalte compilate pentru HC12" + +#: elf32-m68hc1x.c:1462 +msgid "[abi=32-bit int, " +msgstr "[abi=32-bit int, " + +#: elf32-m68hc1x.c:1464 +msgid "[abi=16-bit int, " +msgstr "[abi=16-bit int, " + +#: elf32-m68hc1x.c:1467 +msgid "64-bit double, " +msgstr "double pe 64-biþi, " + +#: elf32-m68hc1x.c:1469 +msgid "32-bit double, " +msgstr "double pe 32-biþi, " + +#: elf32-m68hc1x.c:1472 +msgid "cpu=HC11]" +msgstr "cpu=HC11]" + +#: elf32-m68hc1x.c:1474 +msgid "cpu=HCS12]" +msgstr "cpu=HCS12]" + +#: elf32-m68hc1x.c:1476 +msgid "cpu=HC12]" +msgstr "cpu=HC12]" + +#: elf32-m68hc1x.c:1479 +msgid " [memory=bank-model]" +msgstr " [memorie=mod-bank]" + +#: elf32-m68hc1x.c:1481 +msgid " [memory=flat]" +msgstr " [memorie=întinsã(flat)]" + +#: elf32-m68k.c:400 +msgid " [cpu32]" +msgstr " [cpu32]" + +#: elf32-m68k.c:403 +msgid " [m68000]" +msgstr " [m68000]" + +#: elf32-mcore.c:353 elf32-mcore.c:456 +#, c-format +msgid "%s: Relocation %s (%d) is not currently supported.\n" +msgstr "%s: Relocarea %s (%d) nu este încã suportatã.\n" + +#: elf32-mcore.c:441 +#, c-format +msgid "%s: Unknown relocation type %d\n" +msgstr "%s: Tip necunoscut de relocare %d\n" + +#: elf32-mips.c:1170 elf64-mips.c:1717 elfn32-mips.c:1664 +msgid "32bits gp relative relocation occurs for an external symbol" +msgstr "relocarea relativã gp 32bits are loc pe un simbol extern" + +#: elf32-mips.c:1314 elf64-mips.c:1830 elfn32-mips.c:1783 +#, c-format +msgid "Linking mips16 objects into %s format is not supported" +msgstr "Linkuirea obiectelor mips16 în formatul %s nu este suportatã" + +#: elf32-ppc.c:2056 +#, c-format +msgid "generic linker can't handle %s" +msgstr "linkerul generic nu poate manipula(handle) %s" + +#: elf32-ppc.c:2138 +#, c-format +msgid "%s: compiled with -mrelocatable and linked with modules compiled normally" +msgstr "%s: compilat cu -mrelocatable ºi linkuit cu module compilate normal" + +#: elf32-ppc.c:2147 +#, c-format +msgid "%s: compiled normally and linked with modules compiled with -mrelocatable" +msgstr "%s: compilat normal ºi linkuite cu module compilate cu -mrelocatable" + +#: elf32-ppc.c:3413 +#, c-format +msgid "%s: relocation %s cannot be used when making a shared object" +msgstr "%s: relocarea %s nu poate fi folositã când se creazã un shared object" + +#. It does not make sense to have a procedure linkage +#. table entry for a local symbol. +#: elf32-ppc.c:3619 +#, c-format +msgid "%s(%s+0x%lx): %s reloc against local symbol" +msgstr "relocare %s(%s+0x%lx): %s pe simbol local" + +#: elf32-ppc.c:4862 elf64-ppc.c:7789 +#, c-format +msgid "%s: unknown relocation type %d for symbol %s" +msgstr "%s: tip de relocare %d necunoscut pentru simbolul %s" + +#: elf32-ppc.c:5113 +#, c-format +msgid "%s(%s+0x%lx): non-zero addend on %s reloc against `%s'" +msgstr "%s(%s+0x%lx): adãugare non-zero în relocarea %s pentru `%s'" + +#: elf32-ppc.c:5399 elf32-ppc.c:5425 elf32-ppc.c:5484 +#, c-format +msgid "%s: the target (%s) of a %s relocation is in the wrong output section (%s)" +msgstr "%s: þinta (%s) unei relocãri %s este într-o secþiune invalidã de output (%s)" + +#: elf32-ppc.c:5539 +#, c-format +msgid "%s: relocation %s is not yet supported for symbol %s." +msgstr "%s: relocarea %s nu este încã suportatã pentru simbolul %s." + +#: elf32-ppc.c:5594 elf64-ppc.c:8461 +#, c-format +msgid "%s(%s+0x%lx): unresolvable %s relocation against symbol `%s'" +msgstr "%s(%s+0x%lx): relocare nerezolvabilã %s pe simbolul `%s'" + +#: elf32-ppc.c:5644 elf64-ppc.c:8507 +#, c-format +msgid "%s(%s+0x%lx): %s reloc against `%s': error %d" +msgstr "%s(%s+0x%lx):relocarea %s pe `%s': eroare %d" + +#: elf32-ppc.c:5888 +#, c-format +msgid "corrupt or empty %s section in %s" +msgstr "secþiune %s coruptã sau vidã în %s" + +#: elf32-ppc.c:5895 +#, c-format +msgid "unable to read in %s section from %s" +msgstr "nu se poate citi în secþiunea %s din %s" + +#: elf32-ppc.c:5901 +#, c-format +msgid "corrupt %s section in %s" +msgstr "secþiune coruptã %s în %s" + +#: elf32-ppc.c:5944 +#, c-format +msgid "warning: unable to set size of %s section in %s" +msgstr "avertisment: nu se poate seta mãrimea secþiunii %s în %s" + +#: elf32-ppc.c:5994 +msgid "failed to allocate space for new APUinfo section." +msgstr "nu s-a putut aloca spaþiu pentru secþiunea nouã APUinfo." + +#: elf32-ppc.c:6013 +msgid "failed to compute new APUinfo section." +msgstr "nu s-a putut calcula(compute) secþiunea nouã APUinfo." + +#: elf32-ppc.c:6016 +msgid "failed to install new APUinfo section." +msgstr "nu s-a putut instala secþiunea APUinfo nouã." + +#: elf32-s390.c:2256 elf64-s390.c:2226 +#, c-format +msgid "%s(%s+0x%lx): invalid instruction for TLS relocation %s" +msgstr "%s(%s+0x%lx): instrucþiune invalidã pentur relocarea TLS %s" + +#: elf32-sh.c:2103 +#, c-format +msgid "%s: 0x%lx: warning: bad R_SH_USES offset" +msgstr "%s: 0x%lx: avertisment: offset R_SH_USES invalid" + +#: elf32-sh.c:2115 +#, c-format +msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" +msgstr "%s: 0x%lx: avertisment: R_SH_USES trimite cãtre insn necunoscut 0x%x" + +#: elf32-sh.c:2132 +#, c-format +msgid "%s: 0x%lx: warning: bad R_SH_USES load offset" +msgstr "%s: 0x%lx: avertisment:offset de încãrcare R_SH_USES invalid" + +#: elf32-sh.c:2147 +#, c-format +msgid "%s: 0x%lx: warning: could not find expected reloc" +msgstr "%s: 0x%lx: avertismetn: nu s-a putut gãsi relocarea aºteptatã" + +#: elf32-sh.c:2175 +#, c-format +msgid "%s: 0x%lx: warning: symbol in unexpected section" +msgstr "%s: 0x%lx: avertisment: simbol în secþiune neaºteptatã" + +#: elf32-sh.c:2300 +#, c-format +msgid "%s: 0x%lx: warning: could not find expected COUNT reloc" +msgstr "%s: 0x%lx: avertisment: nu s-a putut gãsi relocarea COUNT aºteptatã" + +#: elf32-sh.c:2309 +#, c-format +msgid "%s: 0x%lx: warning: bad count" +msgstr "%s: 0x%lx: avertisment: numãrãtoare(count) invalidã" + +#: elf32-sh.c:2712 elf32-sh.c:3088 +#, c-format +msgid "%s: 0x%lx: fatal: reloc overflow while relaxing" +msgstr "%s: 0x%lx: fatal: relocare depãºitã(overflow) în timpul relaxãrii" + +#: elf32-sh.c:4654 elf64-sh64.c:1585 +msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" +msgstr "STO_SH5_ISA32 neaºteptat pe simbol local ce nu poate fi manipulat" + +#: elf32-sh.c:4809 +#, c-format +msgid "%s: unresolvable relocation against symbol `%s' from %s section" +msgstr "%s: relocare nerezolvabilã pe simbolul '%s' din secþiunea `%s'" + +#: elf32-sh.c:4881 +#, c-format +msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation" +msgstr "%s: 0x%lx: fatal: ramurã þintã nealiniatã pentru relocare cu suport de relaxare" + +#: elf32-sh.c:6627 elf64-alpha.c:4848 +#, c-format +msgid "%s: TLS local exec code cannot be linked into shared objects" +msgstr "%s: codul local executabil TLS nu poate fi linkuit în shared objects" + +#: elf32-sh64.c:221 elf64-sh64.c:2407 +#, c-format +msgid "%s: compiled as 32-bit object and %s is 64-bit" +msgstr "%s: compilat ca obiect pe 32-biþi ºi %s este pe 64-biþi" + +#: elf32-sh64.c:224 elf64-sh64.c:2410 +#, c-format +msgid "%s: compiled as 64-bit object and %s is 32-bit" +msgstr "%s: compilat ca obiect pe 64-biþi ºi %s este pe 32-biþi" + +#: elf32-sh64.c:226 elf64-sh64.c:2412 +#, c-format +msgid "%s: object size does not match that of target %s" +msgstr "%s: mãrimea obiectului nu se potriveºte cu cea a þintei %s" + +#: elf32-sh64.c:461 elf64-sh64.c:2990 +#, c-format +msgid "%s: encountered datalabel symbol in input" +msgstr "%s: s-a întâlnit un simbol etichetãdate(datalabel) în intrare(input)" + +#: elf32-sh64.c:544 +msgid "PTB mismatch: a SHmedia address (bit 0 == 1)" +msgstr "nepotrivire PTB: o adresã SHmedia (bit 0 == 1)" + +#: elf32-sh64.c:547 +msgid "PTA mismatch: a SHcompact address (bit 0 == 0)" +msgstr "nepotrivire PTA: o adresã SHcompact (bit 0 == 0)" + +#: elf32-sh64.c:565 +#, c-format +msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16" +msgstr "%s: eroare GASr: PTB insn neaºteptat cu R_SH_PT_16" + +#: elf32-sh64.c:614 elf64-sh64.c:1748 +#, c-format +msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n" +msgstr "%s: eroare: tip de reloare nealiniat %d la %08x relocarea %08x\n" + +#: elf32-sh64.c:698 +#, c-format +msgid "%s: could not write out added .cranges entries" +msgstr "%s: nu am putut scrie intrãrile .cranges adãugate" + +#: elf32-sh64.c:760 +#, c-format +msgid "%s: could not write out sorted .cranges entries" +msgstr "%s: nu am putut scrie intrãrile .cranges sortate" + +#: elf32-sparc.c:2521 elf64-sparc.c:2314 +#, c-format +msgid "%s: probably compiled without -fPIC?" +msgstr "%s: probabil compilat fãrã -fPIC?" + +#: elf32-sparc.c:3348 +#, c-format +msgid "%s: compiled for a 64 bit system and target is 32 bit" +msgstr "%s: compilat pentru un sistem 64 biþi ºi þinta fiind pe 32 biþi" + +#: elf32-sparc.c:3362 +#, c-format +msgid "%s: linking little endian files with big endian files" +msgstr "%s: linkuire fiºiere little endian files cu fiºiere big endian" + +#: elf32-v850.c:753 +#, c-format +msgid "Variable `%s' cannot occupy in multiple small data regions" +msgstr "Variabila `%s' nu poate ocupa regiuni multiple de date mici" + +#: elf32-v850.c:756 +#, c-format +msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions" +msgstr "Variabila `%s' nu poate sã fie în una din regiunile mici, zero sau micuþe" + +#: elf32-v850.c:759 +#, c-format +msgid "Variable `%s' cannot be in both small and zero data regions simultaneously" +msgstr "Variabila `%s' nu poate fi simultan ºi în regiuni de date mici ºi de date zero" + +#: elf32-v850.c:762 +#, c-format +msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously" +msgstr "Variabila `%s' nu poate fi simultan ºi în regiuni de date mici ºi de date micuþe" + +#: elf32-v850.c:765 +#, c-format +msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously" +msgstr "Variabila `%s' nu poate fi simultan ºi în regiuni de date zero ºi de date micuþe" + +#: elf32-v850.c:1144 +msgid "FAILED to find previous HI16 reloc\n" +msgstr "EªUARE în gãsirea relocãrii anterioare HI16\n" + +#: elf32-v850.c:1789 +msgid "could not locate special linker symbol __gp" +msgstr "nu am putut localiza simbolul special de linker __gp" + +#: elf32-v850.c:1793 +msgid "could not locate special linker symbol __ep" +msgstr "nu am putut localiza simbolul special de linker __ep" + +#: elf32-v850.c:1797 +msgid "could not locate special linker symbol __ctbp" +msgstr "nu am putut localiza simbolul special de linker __ctbp" + +#: elf32-v850.c:1963 +#, c-format +msgid "%s: Architecture mismatch with previous modules" +msgstr "%s: Arhitectura nu se potriveºte cu modulele anterioare" + +#: elf32-v850.c:1983 +#, c-format +msgid "private flags = %lx: " +msgstr "marcaje(flags) private=- %lx: " + +#: elf32-v850.c:1988 +msgid "v850 architecture" +msgstr "arhitecturã v850" + +#: elf32-v850.c:1989 +msgid "v850e architecture" +msgstr "arhitecturã v850e" + +#: elf32-vax.c:549 +msgid " [nonpic]" +msgstr " [nonpic]" + +#: elf32-vax.c:552 +msgid " [d-float]" +msgstr " [d-float]" + +#: elf32-vax.c:555 +msgid " [g-float]" +msgstr " [g-float]" + +#: elf32-vax.c:663 +#, c-format +msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld" +msgstr "%s: avertisment: adãugarea GOT a %ld în `%s' nu se potriveºte adãugãrii GOT anterioare a %ld" + +#: elf32-vax.c:1667 +#, c-format +msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored" +msgstr "%s: avertisment: adãugarea PLT a %d în `%s' din secþiunea %s ignoratã" + +#: elf32-vax.c:1802 +#, c-format +msgid "%s: warning: %s relocation against symbol `%s' from %s section" +msgstr "%s: avertisment: relocare %s pentru simbolul `%s' din secþiunea %s" + +#: elf32-vax.c:1808 +#, c-format +msgid "%s: warning: %s relocation to 0x%x from %s section" +msgstr "%s: avertisment: relocare %s spre 0x%x din secþiunea %s" + +#: elf32-xstormy16.c:462 elf32-ia64.c:2450 elf64-ia64.c:2450 +msgid "non-zero addend in @fptr reloc" +msgstr "adãugare non-zero în relocare @fptr" + +#: elf64-alpha.c:1108 +msgid "GPDISP relocation did not find ldah and lda instructions" +msgstr "relocarea GPDISP nu a gãsit instrucþiuni ldah ºi lda" + +#: elf64-alpha.c:3731 +#, c-format +msgid "%s: .got subsegment exceeds 64K (size %d)" +msgstr "%s: .subsegmentul got depãseºte 64K (size %d)" + +#: elf64-alpha.c:4602 elf64-alpha.c:4614 +#, c-format +msgid "%s: gp-relative relocation against dynamic symbol %s" +msgstr "%s: relocare relativã-gp pentru simbolul %s" + +#: elf64-alpha.c:4640 elf64-alpha.c:4773 +#, c-format +msgid "%s: pc-relative relocation against dynamic symbol %s" +msgstr "%s: relocare relativã pc pentru simbolul dinamic %s" + +#: elf64-alpha.c:4668 +#, c-format +msgid "%s: change in gp: BRSGP %s" +msgstr "%s: schimbare în gp: BRSGP %s" + +#: elf64-alpha.c:4693 +msgid "" +msgstr "" + +#: elf64-alpha.c:4698 +#, c-format +msgid "%s: !samegp reloc against symbol without .prologue: %s" +msgstr "%s: !samegp reloc apentru simbol fãrã .prologue: %s" + +#: elf64-alpha.c:4749 +#, c-format +msgid "%s: unhandled dynamic relocation against %s" +msgstr "%s: relocare dinamicã nemanipulabilã pentru %s" + +#: elf64-alpha.c:4832 +#, c-format +msgid "%s: dtp-relative relocation against dynamic symbol %s" +msgstr "%s: relocare relativã-dtp pentru simbolul dinamic %s" + +#: elf64-alpha.c:4855 +#, c-format +msgid "%s: tp-relative relocation against dynamic symbol %s" +msgstr "%s: relocare relativã-tp pentru simbolul dinamic %s" + +#: elf64-hppa.c:2086 +#, c-format +msgid "stub entry for %s cannot load .plt, dp offset = %ld" +msgstr "intrarea trunchiatã pentru %s nu poate încãrca .plt, offset dp = %ld" + +#: elf64-mmix.c:1032 +#, c-format +msgid "" +"%s: Internal inconsistency error for value for\n" +" linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx\n" +msgstr "" +"%s: eroare internã de inconsistenþã pentru valoarea\n" +"registrului global alocat de linker: linkuit: 0x%lx%08lx != relaxat: 0x%lx%08lx\n" + +#: elf64-mmix.c:1416 +#, c-format +msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s" +msgstr "%s:relocare-offset-bazã-plus pentru simbolul registru: (necunoscut) în %s" + +#: elf64-mmix.c:1421 +#, c-format +msgid "%s: base-plus-offset relocation against register symbol: %s in %s" +msgstr "%s:relocare-offset-bazã-plus pentru simbolul registru: %s în %s" + +#: elf64-mmix.c:1465 +#, c-format +msgid "%s: register relocation against non-register symbol: (unknown) in %s" +msgstr "%s:relocare registru pentru simbolul non-registru: (necunoscut) în %s" + +#: elf64-mmix.c:1470 +#, c-format +msgid "%s: register relocation against non-register symbol: %s in %s" +msgstr "%s:relocare registru pentru simbolul non-registru: %s în %s" + +#: elf64-mmix.c:1507 +#, c-format +msgid "%s: directive LOCAL valid only with a register or absolute value" +msgstr "%s: directiva LOCAL este validã doar cu un registru sau o valoare absolutã" + +#: elf64-mmix.c:1535 +#, c-format +msgid "%s: LOCAL directive: Register $%ld is not a local register. First global register is $%ld." +msgstr "%s: directivã LOCAL: Registrulr $%ld nu este un registru local. Primul registru global $%ld." + +#: elf64-mmix.c:1994 +#, c-format +msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n" +msgstr "%s: Eroare: definiþii multiple ale `%s'; începutul lui %s este setat într-un fiºierlinkuit anterior\n" + +#: elf64-mmix.c:2053 +msgid "Register section has contents\n" +msgstr "Secþiunea registru nu are conþinut\n" + +#: elf64-mmix.c:2216 +#, c-format +msgid "" +"Internal inconsistency: remaining %u != max %u.\n" +" Please report this bug." +msgstr "" +"Inconsistenþã internã: rãmâne %u ! = max %u\n" +" Vã rugãm raportaþi acest bug." + +#: elf64-ppc.c:2388 libbfd.c:831 +#, c-format +msgid "%s: compiled for a big endian system and target is little endian" +msgstr "%s: compilat pentru un sistem big endiat iar þinta este little endian" + +#: elf64-ppc.c:2391 libbfd.c:833 +#, c-format +msgid "%s: compiled for a little endian system and target is big endian" +msgstr "%s: compilat pentru un sistem little endiat iar þinta este big endian" + +#: elf64-ppc.c:4857 +#, c-format +msgid "%s: unexpected reloc type %u in .opd section" +msgstr "%s: tip de relocare neaºteptat %u în secþiune .opd" + +#: elf64-ppc.c:4877 +#, c-format +msgid "%s: .opd is not a regular array of opd entries" +msgstr "%s: .opd nu este un domeniu(array) de intrãri opd" + +#: elf64-ppc.c:4897 +#, c-format +msgid "%s: undefined sym `%s' in .opd section" +msgstr "%s: sym nedefinit `%s' în secþiune .opd" + +#: elf64-ppc.c:6136 +#, c-format +msgid "can't find branch stub `%s'" +msgstr "nu pot gãsi ramura trunchiatã `%s'" + +#: elf64-ppc.c:6175 elf64-ppc.c:6250 +#, c-format +msgid "linkage table error against `%s'" +msgstr "eroare tabel de linkuire pentru `%s'" + +#: elf64-ppc.c:6340 +#, c-format +msgid "can't build branch stub `%s'" +msgstr "nu se poate construi ramura trunchiatã `%s'" + +#: elf64-ppc.c:7047 +msgid ".glink and .plt too far apart" +msgstr ".glink ºi .plt prea departe unul de altul" + +#: elf64-ppc.c:7135 +msgid "stubs don't match calculated size" +msgstr "trunchierile(stubs) sunt în neconcordanþã cu mãrimea calculatã" + +#: elf64-ppc.c:7147 +#, c-format +msgid "" +"linker stubs in %u groups\n" +" branch %lu\n" +" toc adjust %lu\n" +" long branch %lu\n" +" long toc adj %lu\n" +" plt call %lu" +msgstr "" +"trunchieri(stubs) de linker în grupurile %u\n" +" ramurã %lu\n" +" ajustare toc %lu\n" +" ramurã lungã %lu\n" +" ajust. lungã toc %lu\n" +" apelare plt %lu" + +#: elf64-ppc.c:7723 +#, c-format +msgid "%s(%s+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc" +msgstr "%s(%s+0x%lx): TOCuri multiple nu sunt suportateîn folosirea fiºierelor voastre crt; recompilaþi cu -mminimal-toc sau upgradaþi gcc" + +#: elf64-ppc.c:7731 +#, c-format +msgid "%s(%s+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern" +msgstr "%s(%s+0 x%lx): optimizare apelare sibling pentru `%s' nu permite automatTOCuri multiple; recompilaþi cu -mminimal-toc sau -fno-optimize-sibling-calls, sau faceþi(make) `%s' extern" + +#: elf64-ppc.c:8329 +#, c-format +msgid "%s: relocation %s is not supported for symbol %s." +msgstr "%s: relocarea %s nu este suportatã pentru simbolul %s." + +#: elf64-ppc.c:8408 +#, c-format +msgid "%s: error: relocation %s not a multiple of %d" +msgstr "%s: eroare: relocarea %s nu este multiplu de %d" + +#: elf64-sparc.c:1370 +#, c-format +msgid "%s: check_relocs: unhandled reloc type %d" +msgstr "%s: check_relocs: tip de relocare nemanipulabil %d" + +#: elf64-sparc.c:1407 +#, c-format +msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER" +msgstr "%s: Doar regiºtrii %%g[2367] pot fi declaraþi folosind STT_REGISTER" + +#: elf64-sparc.c:1427 +#, c-format +msgid "Register %%g%d used incompatibly: %s in %s, previously %s in %s" +msgstr "Registrul %%g%d a folosit incompatibilitãþi: %s în %s, anterior %s în %s" + +#: elf64-sparc.c:1450 +#, c-format +msgid "Symbol `%s' has differing types: REGISTER in %s, previously %s in %s" +msgstr "Simbolul `%s' are tipuri diferenþiate: REGISTER în %s, anterior %s în %s" + +#: elf64-sparc.c:1496 +#, c-format +msgid "Symbol `%s' has differing types: %s in %s, previously REGISTER in %s" +msgstr "Simbolul `%s' are tipuri diferenþiate: %s în %s, anterior REGISTER în %s" + +#: elf64-sparc.c:3053 +#, c-format +msgid "%s: linking UltraSPARC specific with HAL specific code" +msgstr "%s: linkuire cod specific UltraSPARC cu cod specific HAL" + +#: elf64-x86-64.c:739 +#, c-format +msgid "%s: %s' accessed both as normal and thread local symbol" +msgstr "%s: `%s' accesate ºi ca simboluri locale normale ºi ca simboluri locale pe fire (thread)" + +#: elfcode.h:1113 +#, c-format +msgid "%s: version count (%ld) does not match symbol count (%ld)" +msgstr "%s: numãrul versiunii(%ld) nu se potriveºte cu numãrul simbolului (%ld)" + +#: elfcode.h:1342 +#, c-format +msgid "%s(%s): relocation %d has invalid symbol index %ld" +msgstr "%s(%s): relocarea %d are indexul de simbol invalid %ld" + +#: elflink.c:1456 +#, c-format +msgid "%s: warning: unexpected redefinition of indirect versioned symbol `%s'" +msgstr "%s: avertisment: redefinire neaºteptatã a simbolului indirect cu versiune(versioned) `%s'" + +#: elflink.c:1807 +#, c-format +msgid "%s: undefined versioned symbol name %s" +msgstr "%s: nume de simbol versiune %s nedefinit" + +#: elflink.c:2142 +#, c-format +msgid "%s: relocation size mismatch in %s section %s" +msgstr "%s: nepotrivire a mãrimii de relocare în %s secþiunea %s" + +#: elflink.c:2434 +#, c-format +msgid "warning: type and size of dynamic symbol `%s' are not defined" +msgstr "avertisment: tipul ºi mãrimea simbolului dinamic `%s' nu sunt definite" + +#: elflink.h:1022 +#, c-format +msgid "%s: %s: invalid version %u (max %d)" +msgstr "%s: %s: versiune invalidã %u (max %d)" + +#: elflink.h:1063 +#, c-format +msgid "%s: %s: invalid needed version %d" +msgstr "%s: %s: versiune necesarã %d invalidã" + +#: elflink.h:1238 +#, c-format +msgid "Warning: alignment %u of symbol `%s' in %s is smaller than %u in %s" +msgstr "Avertisment: alinierea %u al simbolului `%s' din %s este mai micã decât %u în %s" + +#: elflink.h:1252 +#, c-format +msgid "Warning: size of symbol `%s' changed from %lu in %s to %lu in %s" +msgstr "Avertisment: mãrimea simbolului `%s' a fost schimbatã din %lu din %s în %lu din %s" + +#: elflink.h:2160 +#, c-format +msgid "%s: undefined version: %s" +msgstr "%s:versiune %s nedefinitã" + +#: elflink.h:2226 +#, c-format +msgid "%s: .preinit_array section is not allowed in DSO" +msgstr "%s: secþiunea .preinit_array section nu este permisã în DSO" + +#: elflink.h:3078 +msgid "Not enough memory to sort relocations" +msgstr "Nu existã memorie suficientã pentru a sorta relocãrile" + +#: elflink.h:3958 elflink.h:4001 +#, c-format +msgid "%s: could not find output section %s" +msgstr "%s: nu s-a putut gãsi secþiunea de output %s" + +#: elflink.h:3964 +#, c-format +msgid "warning: %s section has zero size" +msgstr "avertisment: secþiunea %s are mãrime zero" + +#: elflink.h:4483 +#, c-format +msgid "%s: %s symbol `%s' in %s is referenced by DSO" +msgstr "%s: %s simbolul `%s' în %s este referit de DSO" + +#: elflink.h:4564 +#, c-format +msgid "%s: could not find output section %s for input section %s" +msgstr "%s: nu am putut gãsi secþiunea de output %s pentru secþiunea de input %s" + +#: elflink.h:4666 +#, c-format +msgid "%s: %s symbol `%s' isn't defined" +msgstr "%s: %s simbolul `%s' nu este definit" + +#: elflink.h:5053 elflink.h:5095 +msgid "%T: discarded in section `%s' from %s\n" +msgstr "%T: abandonat(discarded) în secþiunea `%s' din %s\n" + +#: elfxx-mips.c:887 +msgid "static procedure (no name)" +msgstr "procedurã staticã (fãrã nume)" + +#: elfxx-mips.c:1897 +msgid "not enough GOT space for local GOT entries" +msgstr "nu existã destul spaþiu GOT pentru intrãrile GOT locale" + +#: elfxx-mips.c:3691 +#, c-format +msgid "%s: %s+0x%lx: jump to stub routine which is not jal" +msgstr "%s: %s+0x%lx: salt la rutinã ciot(stub) ce nu este jal" + +#: elfxx-mips.c:5192 +#, c-format +msgid "%s: Malformed reloc detected for section %s" +msgstr "%s: Relocare malformatã detectatã pentru secþiunea %s" + +#: elfxx-mips.c:5266 +#, c-format +msgid "%s: CALL16 reloc at 0x%lx not against global symbol" +msgstr "%s: relocarea CALL16 la 0x%lx nu este pe simbolul global" + +#: elfxx-mips.c:8692 +#, c-format +msgid "%s: illegal section name `%s'" +msgstr "%s: nume ilegal de secþiune `%s'" + +#: elfxx-mips.c:9025 +#, c-format +msgid "%s: endianness incompatible with that of the selected emulation" +msgstr "%s: endianness incompatibilã cu aceea a emulaþiei selectate" + +#: elfxx-mips.c:9037 +#, c-format +msgid "%s: ABI is incompatible with that of the selected emulation" +msgstr "%s: ABI este incompatibil cu cel al emulaþiei selectate" + +#: elfxx-mips.c:9104 +#, c-format +msgid "%s: warning: linking PIC files with non-PIC files" +msgstr "%s: avertisment: linkuire de fiºiere PIC cu fiºiere non-PIC" + +#: elfxx-mips.c:9121 +#, c-format +msgid "%s: linking 32-bit code with 64-bit code" +msgstr "%s: linkuire cod 32-biþi cu cod 64-biþi" + +#: elfxx-mips.c:9149 +#, c-format +msgid "%s: linking %s module with previous %s modules" +msgstr "%s: linkuire a modulului %s cu modulele%s anterioare" + +#: elfxx-mips.c:9172 +#, c-format +msgid "%s: ABI mismatch: linking %s module with previous %s modules" +msgstr "%s: nepotrivire ABI: linkuire modul %s cu module %s anterioare" + +#: elfxx-mips.c:9241 +msgid " [abi=O32]" +msgstr " [abi=O32]" + +#: elfxx-mips.c:9243 +msgid " [abi=O64]" +msgstr " [abi=O64]" + +#: elfxx-mips.c:9245 +msgid " [abi=EABI32]" +msgstr " [abi=EABI32]" + +#: elfxx-mips.c:9247 +msgid " [abi=EABI64]" +msgstr " [abi=EABI64]" + +#: elfxx-mips.c:9249 +msgid " [abi unknown]" +msgstr " [abi necunoscut]" + +#: elfxx-mips.c:9251 +msgid " [abi=N32]" +msgstr " [abi=N32]" + +#: elfxx-mips.c:9253 +msgid " [abi=64]" +msgstr " [abi=64]" + +#: elfxx-mips.c:9255 +msgid " [no abi set]" +msgstr " [abi nesetat]" + +#: elfxx-mips.c:9258 +msgid " [mips1]" +msgstr " [mips1]" + +#: elfxx-mips.c:9260 +msgid " [mips2]" +msgstr " [mips2]" + +#: elfxx-mips.c:9262 +msgid " [mips3]" +msgstr " [mips3]" + +#: elfxx-mips.c:9264 +msgid " [mips4]" +msgstr " [mips4]" + +#: elfxx-mips.c:9266 +msgid " [mips5]" +msgstr " [mips5]" + +#: elfxx-mips.c:9268 +msgid " [mips32]" +msgstr " [mips32]" + +#: elfxx-mips.c:9270 +msgid " [mips64]" +msgstr " [mips64]" + +#: elfxx-mips.c:9272 +msgid " [mips32r2]" +msgstr " [mips32r2]" + +#: elfxx-mips.c:9274 +msgid " [unknown ISA]" +msgstr " [ISA necunoscut]" + +#: elfxx-mips.c:9277 +msgid " [mdmx]" +msgstr " [mdmx]" + +#: elfxx-mips.c:9280 +msgid " [mips16]" +msgstr " [mips16]" + +#: elfxx-mips.c:9283 +msgid " [32bitmode]" +msgstr " [mod32biþi]" + +#: elfxx-mips.c:9285 +msgid " [not 32bitmode]" +msgstr " [non-mod32biþi]" + +#: i386linux.c:457 m68klinux.c:461 sparclinux.c:458 +#, c-format +msgid "Output file requires shared library `%s'\n" +msgstr "Fiºierul de output necesitã biblioteca globalã(shared) `%s'\n" + +#: i386linux.c:465 m68klinux.c:469 sparclinux.c:466 +#, c-format +msgid "Output file requires shared library `%s.so.%s'\n" +msgstr "Fiºierul de output necesitã biblioteca globalã(shared) `%s'.so.`%s'\n" + +#: i386linux.c:654 i386linux.c:704 m68klinux.c:661 m68klinux.c:709 +#: sparclinux.c:656 sparclinux.c:706 +#, c-format +msgid "Symbol %s not defined for fixups\n" +msgstr "Simbolul %s nu este definit pentru acceptare(fixups)\n" + +#: i386linux.c:728 m68klinux.c:733 sparclinux.c:730 +msgid "Warning: fixup count mismatch\n" +msgstr "Avertisment: nepotrivire numãrãtori acceptare(fixup)\n" + +#: ieee.c:293 +#, c-format +msgid "%s: string too long (%d chars, max 65535)" +msgstr "%s: ºir prea lung (%d caractere, max 65535)" + +#: ieee.c:428 +#, c-format +msgid "%s: unrecognized symbol `%s' flags 0x%x" +msgstr "%s: simbol necunoscut `%s' marcaje(flags) 0x%x" + +#: ieee.c:938 +#, c-format +msgid "%s: unimplemented ATI record %u for symbol %u" +msgstr "%s: înregistrare ATI neimplementatã %u pe simbolul %u" + +#: ieee.c:963 +#, c-format +msgid "%s: unexpected ATN type %d in external part" +msgstr "%s: tip ATN neaºteptat %d în parte externã" + +#: ieee.c:985 +#, c-format +msgid "%s: unexpected type after ATN" +msgstr "%s: tip neaºteptat dupã ATN" + +#: ihex.c:264 +#, c-format +msgid "%s:%d: unexpected character `%s' in Intel Hex file\n" +msgstr "%s:%d: caracter neaºteptat `%s' în fiºier Intel Hex\n" + +#: ihex.c:372 +#, c-format +msgid "%s:%u: bad checksum in Intel Hex file (expected %u, found %u)" +msgstr "%s:%u: checksum invalid în fiºier Intel Hex (se aºtepta %u, s-a gãsit %u)" + +#: ihex.c:426 +#, c-format +msgid "%s:%u: bad extended address record length in Intel Hex file" +msgstr "%s: %u: mãrime înregistrare a adresei extinse invalidã în fiºier Intel Hex" + +#: ihex.c:443 +#, c-format +msgid "%s:%u: bad extended start address length in Intel Hex file" +msgstr "%s: %u: mãrime adresã de start extinsã invalidã în fiºier Intel Hex" + +#: ihex.c:460 +#, c-format +msgid "%s:%u: bad extended linear address record length in Intel Hex file" +msgstr "%s: %u: mãrime înregistrare a adresei lineare extinse invalidã în fiºier Intel Hex" + +#: ihex.c:477 +#, c-format +msgid "%s:%u: bad extended linear start address length in Intel Hex file" +msgstr "%s: %u: mãrime adresã linearã de start extinsã invalidã în fiºier Intel Hex" + +#: ihex.c:494 +#, c-format +msgid "%s:%u: unrecognized ihex type %u in Intel Hex file\n" +msgstr "%s: %u: tip ihex necunoscut %u în fiºier Intel Hex\n" + +#: ihex.c:619 +#, c-format +msgid "%s: internal error in ihex_read_section" +msgstr "%s: eroare internã în ihex_read_section" + +#: ihex.c:654 +#, c-format +msgid "%s: bad section length in ihex_read_section" +msgstr "%s: mãrime secþiune invalidã în ihex_read_section" + +#: ihex.c:872 +#, c-format +msgid "%s: address 0x%s out of range for Intel Hex file" +msgstr "%s: adresa 0x%s este în afara domeniului(range) pentru fiºierul Intel Hex" + +#: libbfd.c:861 +#, c-format +msgid "Deprecated %s called at %s line %d in %s\n" +msgstr "%s învechitã apelatã la %s linia %d în %s\n" + +#: libbfd.c:864 +#, c-format +msgid "Deprecated %s called\n" +msgstr "%s învechitã apelatã\n" + +#: linker.c:1829 +#, c-format +msgid "%s: indirect symbol `%s' to `%s' is a loop" +msgstr "%s: simbolul indirect `%s' pentru `%s' este o buclã" + +#: linker.c:2697 +#, c-format +msgid "Attempt to do relocatable link with %s input and %s output" +msgstr "Încercare de a crea un link relocabil cu input %s ºi output %s" + +#: merge.c:896 +#, c-format +msgid "%s: access beyond end of merged section (%ld + %ld)" +msgstr "%s: acces dincolo de sfârºitul secþiunii concatenate(merged) (%ld + %ld)" + +#: mmo.c:503 +#, c-format +msgid "%s: No core to allocate section name %s\n" +msgstr "%s:Nu existã nucleu(core) pentru a aloca numele de secþiune %s\n" + +#: mmo.c:579 +#, c-format +msgid "%s: No core to allocate a symbol %d bytes long\n" +msgstr "%s: Nu existã nucleu(core) pentru a aloca un simbol lung de %d octeþi\n" + +#: mmo.c:1287 +#, c-format +msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n" +msgstr "%s: fiºier mmo invalid: valoare de iniþializare pentru $255 nu este 'Main'\n" + +#: mmo.c:1433 +#, c-format +msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n" +msgstr "%s: secvenþã mare(wide) de caractere 0x%02X 0x%02X nesuportatã dupã numele de simbol care începe cu `%s'\n" + +#: mmo.c:1674 +#, c-format +msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" +msgstr "%s: fiºier mmo invalid: lopcode `%d' nesuportat\n" + +#: mmo.c:1684 +#, c-format +msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" +msgstr "%s: fiºier mmo invalid: pentru lop_quote se aºtepta YZ = 1 s-a primit YZ= %d\n" + +#: mmo.c:1720 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" +msgstr "%s: fiºier mmo invalid: pentru lop_loc se aºtepta z =1 sau z = 2 s-a primit z = %d\n" + +#: mmo.c:1766 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" +msgstr "%s: fiºier mmo invalid: pentru lop_fixo se aºtepta z =1 sau z = 2 s-a primit z = %d\n" + +#: mmo.c:1805 +#, c-format +msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" +msgstr "%s: fiºier mmo invalid: pentru lop_fixrx se aºtepta y =0 s-a primit y = %d\n" + +#: mmo.c:1814 +#, c-format +msgid "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" +msgstr "%s: fiºier mmo invalid: pentru lop_fixrx se aºtepta z =16 sau z = 24 s-a primit z = %d\n" + +#: mmo.c:1837 +#, c-format +msgid "%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n" +msgstr "%s: fiºier mmo invalid: pentru lop_fixrx octetul de înceout al operandului word trebuie sã fie 0 sau 1, s-a primit %d\n" + +#: mmo.c:1860 +#, c-format +msgid "%s: cannot allocate file name for file number %d, %d bytes\n" +msgstr "%s: nu se poate aloca nume fiºier pentru fiºierul numãrul %d, %d octeþi\n" + +#: mmo.c:1880 +#, c-format +msgid "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" +msgstr "%s: fiºier mmo invalid: fiºierul numãrul %d `%s' a fost deja introdus ca `%s'\n" + +#: mmo.c:1893 +#, c-format +msgid "%s: invalid mmo file: file name for number %d was not specified before use\n" +msgstr "%s: fiºier mmo invalid: numele de fiºier pentru numãrul %d nu a fost specificat înainte de folosire\n" + +#: mmo.c:1999 +#, c-format +msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" +msgstr "%s: fiºier mmo invalid: câmpurile y ºi z ale lop_stab sunt non-zero: y: %d, z: %d\n" + +#: mmo.c:2035 +#, c-format +msgid "%s: invalid mmo file: lop_end not last item in file\n" +msgstr "%s: fiºier mmo invalid: lop_end nu este ultimul element în fiºier\n" + +#: mmo.c:2048 +#, c-format +msgid "%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n" +msgstr "%s: fiºier mmo invalid: YZ al lop_end (%ld) nu este egal cu numerele tetras ale lop_stab precedent (%ld)\n" + +#: mmo.c:2698 +#, c-format +msgid "%s: invalid symbol table: duplicate symbol `%s'\n" +msgstr "%s: tabelã de simboluri invalidã: simbol `%s' duplicat\n" + +#: mmo.c:2949 +#, c-format +msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n" +msgstr "%s: Definire invalidã de simbol: `Main' setat la %s în loc de adresa de start %s\n" + +#: mmo.c:3039 +#, c-format +msgid "%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d. Only `Main' will be emitted.\n" +msgstr "%s: avertisment: tabela de simboluri prea mare pentru mmo, mai mare decâd 65535 cuvinte pe 32 de biþi: %d. Doar 'Main' va fi emis.\n" + +#: mmo.c:3084 +#, c-format +msgid "%s: internal error, symbol table changed size from %d to %d words\n" +msgstr "%s: eroare internã, tabela de simboluri ºi-a schimbat mãrimea din %d în %d cuvinte\n" + +#: mmo.c:3139 +#, c-format +msgid "%s: internal error, internal register section %s had contents\n" +msgstr "%s: eroare internã, secþiunea de regiºtri internã %s nu are conþinut\n" + +#: mmo.c:3191 +#, c-format +msgid "%s: no initialized registers; section length 0\n" +msgstr "%s: nu existã regiºtri iniþializaþi; lungime secþiune 0\n" + +#: mmo.c:3197 +#, c-format +msgid "%s: too many initialized registers; section length %ld\n" +msgstr "%s: prea mulþi regiºtri iniþializaþi; lungime secþiune %ld\n" + +#: mmo.c:3202 +#, c-format +msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n" +msgstr "%s: adresã de start invalidã pentru regiºtrii iniþializaþi de lungime %ld: 0x%lx%08lx\n" + +#: oasys.c:1052 +#, c-format +msgid "%s: can not represent section `%s' in oasys" +msgstr "%s: nu se poate reprezenta secþiune `%s' în oasys" + +#: osf-core.c:137 +#, c-format +msgid "Unhandled OSF/1 core file section type %d\n" +msgstr "Tip nemanipulabil %d de fiºier nucleu(core) OSF/1\n" + +#: pe-mips.c:659 +#, c-format +msgid "%s: `ld -r' not supported with PE MIPS objects\n" +msgstr "%s: `ld -r' nu este suportat cu obiecte PE MIPS\n" + +#. OK, at this point the following variables are set up: +#. src = VMA of the memory we're fixing up +#. mem = pointer to memory we're fixing up +#. val = VMA of what we need to refer to +#. +#: pe-mips.c:795 +#, c-format +msgid "%s: unimplemented %s\n" +msgstr "%s: %s neimplementat\n" + +#: pe-mips.c:821 +#, c-format +msgid "%s: jump too far away\n" +msgstr "%s: salt prea departe(far away)\n" + +#: pe-mips.c:848 +#, c-format +msgid "%s: bad pair/reflo after refhi\n" +msgstr "%s: pair/reflo invalid dupã refhi\n" + +#. XXX code yet to be written. +#: peicode.h:787 +#, c-format +msgid "%s: Unhandled import type; %x" +msgstr "%s: Tip import nemanipulabil; %x" + +#: peicode.h:792 +#, c-format +msgid "%s: Unrecognised import type; %x" +msgstr "%s: Tip import necunoscut; %x" + +#: peicode.h:806 +#, c-format +msgid "%s: Unrecognised import name type; %x" +msgstr "%s: Tip nume import necunoscut; %x" + +#: peicode.h:1164 +#, c-format +msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive" +msgstr "%s: Tip maºinã necunoscut (0x%x) în arhiva Import Library Format" + +#: peicode.h:1176 +#, c-format +msgid "%s: Recognised but unhandled machine type (0x%x) in Import Library Format archive" +msgstr "%s: Tip de maºinã recunoscut dar nemanipulabil (0x%x) în arhiva Import Library Format" + +#: peicode.h:1193 +#, c-format +msgid "%s: size field is zero in Import Library Format header" +msgstr "%s: mãrimea câmpului din headerul Import Library Format este zero" + +#: peicode.h:1224 +#, c-format +msgid "%s: string not null terminated in ILF object file." +msgstr "%s: ºirul nenul terminat în fiºier obiect ILF." + +#: ppcboot.c:416 +msgid "" +"\n" +"ppcboot header:\n" +msgstr "" +"\n" +"header ppcboot:\n" + +#: ppcboot.c:417 +#, c-format +msgid "Entry offset = 0x%.8lx (%ld)\n" +msgstr "Offset intrare = 0x%.8lx (%ld)\n" + +#: ppcboot.c:418 +#, c-format +msgid "Length = 0x%.8lx (%ld)\n" +msgstr "Lungime = 0x%.8lx (%ld)\n" + +#: ppcboot.c:421 +#, c-format +msgid "Flag field = 0x%.2x\n" +msgstr "Câmp Marcaj(Flag) = 0x%.2x\n" + +#: ppcboot.c:427 +#, c-format +msgid "Partition name = \"%s\"\n" +msgstr "Nume Partiþie = \"%s\"\n" + +#: ppcboot.c:446 +#, c-format +msgid "" +"\n" +"Partition[%d] start = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgstr "" +"\n" +"Start Partiþie[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" + +#: ppcboot.c:452 +#, c-format +msgid "Partition[%d] end = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgstr "Sfârºit Partiþie[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" + +#: ppcboot.c:458 +#, c-format +msgid "Partition[%d] sector = 0x%.8lx (%ld)\n" +msgstr "Sector Partiþie[%d] sector = 0x%.8lx (%ld)\n" + +#: ppcboot.c:459 +#, c-format +msgid "Partition[%d] length = 0x%.8lx (%ld)\n" +msgstr "Mãrime Partiþie[%d] = 0x%.8lx (%ld)\n" + +#: som.c:5422 +msgid "som_sizeof_headers unimplemented" +msgstr "som_sizeof_headers neimplementatã" + +#: srec.c:302 +#, c-format +msgid "%s:%d: Unexpected character `%s' in S-record file\n" +msgstr "%s:%d: Caracter neaºteptat `%s'în fiºier S-record\n" + +#: stabs.c:319 +#, c-format +msgid "%s(%s+0x%lx): Stabs entry has invalid string index." +msgstr "%s(%s+0x%lx): Intrarea bruscã(stab) are index ºir invalid." + +#: syms.c:1019 +msgid "Unsupported .stab relocation" +msgstr "Relocare .stab nesuportatã" + +#: vms-gsd.c:356 +#, c-format +msgid "bfd_make_section (%s) failed" +msgstr "bfd_make_section (%s) eºuatã" + +#: vms-gsd.c:371 +#, c-format +msgid "bfd_set_section_flags (%s, %x) failed" +msgstr "bfd_set_section_flags (%s, %x) eºuatã" + +#: vms-gsd.c:407 +#, c-format +msgid "Size mismatch section %s=%lx, %s=%lx" +msgstr "Mãrime nepotrivitã secþiune %s=%lx, %s=%lx" + +#: vms-gsd.c:704 +#, c-format +msgid "unknown gsd/egsd subtype %d" +msgstr "subtip %d gsd/egsd necunoscut" + +#: vms-hdr.c:408 +msgid "Object module NOT error-free !\n" +msgstr "Modul obiect CU erori !\n" + +#: vms-misc.c:541 +#, c-format +msgid "Stack overflow (%d) in _bfd_vms_push" +msgstr "Depãºire(overflow) de stivã(%d) în bfd_vms_push" + +#: vms-misc.c:559 +msgid "Stack underflow in _bfd_vms_pop" +msgstr "Subfolosire(underflow) a stivei _bfd_vms_pop" + +#: vms-misc.c:918 +msgid "_bfd_vms_output_counted called with zero bytes" +msgstr "_bfd_vms_output_counted apelat cu zero octeþi" + +#: vms-misc.c:923 +msgid "_bfd_vms_output_counted called with too many bytes" +msgstr "_bfd_vms_output_counted apelat cu prea mulþi octeþi" + +#: vms-misc.c:1054 +#, c-format +msgid "Symbol %s replaced by %s\n" +msgstr "Simbolul %s înlocuit de %s\n" + +#: vms-misc.c:1117 +#, c-format +msgid "failed to enter %s" +msgstr "Eºec în introducerea %s" + +#: vms-tir.c:102 +msgid "No Mem !" +msgstr "Nu mai existã Mem !" + +#: vms-tir.c:383 +#, c-format +msgid "bad section index in %s" +msgstr "index de secþiune invalid în %s" + +#: vms-tir.c:396 +#, c-format +msgid "unsupported STA cmd %s" +msgstr "cmd STA %s nesuportatã" + +#: vms-tir.c:401 vms-tir.c:1261 +#, c-format +msgid "reserved STA cmd %d" +msgstr "cmd STA %d rezervatã" + +#: vms-tir.c:512 vms-tir.c:535 +#, c-format +msgid "%s: no symbol \"%s\"" +msgstr "%s: nu existã simbolul \"%s\"" + +#. unsigned shift +#. rotate +#. Redefine symbol to current location. +#. Define a literal. +#: vms-tir.c:602 vms-tir.c:714 vms-tir.c:824 vms-tir.c:842 vms-tir.c:850 +#: vms-tir.c:859 vms-tir.c:1584 +#, c-format +msgid "%s: not supported" +msgstr "%s: nesuportat" + +#: vms-tir.c:607 vms-tir.c:1439 +#, c-format +msgid "%s: not implemented" +msgstr "%s: neimplementat" + +#: vms-tir.c:611 vms-tir.c:1443 +#, c-format +msgid "reserved STO cmd %d" +msgstr "cmd STO %d rezervatã" + +#: vms-tir.c:729 vms-tir.c:1589 +#, c-format +msgid "reserved OPR cmd %d" +msgstr "cmd OPR %d rezervatã" + +#: vms-tir.c:797 vms-tir.c:1653 +#, c-format +msgid "reserved CTL cmd %d" +msgstr "cmd CTL %d rezervatã" + +#. stack byte from image +#. arg: none. +#: vms-tir.c:1169 +msgid "stack-from-image not implemented" +msgstr "stack-from-image neimplementatã" + +#: vms-tir.c:1187 +msgid "stack-entry-mask not fully implemented" +msgstr "stack-entry-mask neimplementatã complet" + +#. compare procedure argument +#. arg: cs symbol name +#. by argument index +#. da argument descriptor +#. +#. compare argument descriptor with symbol argument (ARG$V_PASSMECH) +#. and stack TRUE (args match) or FALSE (args dont match) value. +#: vms-tir.c:1201 +msgid "PASSMECH not fully implemented" +msgstr "PASSMECH neimplementatã complet" + +#: vms-tir.c:1220 +msgid "stack-local-symbol not fully implemented" +msgstr "stack-local-symbol neimplementatã complet" + +#: vms-tir.c:1233 +msgid "stack-literal not fully implemented" +msgstr "stack-literal neimplementatã complet" + +#: vms-tir.c:1254 +msgid "stack-local-symbol-entry-point-mask not fully implemented" +msgstr "stack-local-symbol-entry-point-mask neimplementatã complet" + +#: vms-tir.c:1531 vms-tir.c:1543 vms-tir.c:1555 vms-tir.c:1567 vms-tir.c:1632 +#: vms-tir.c:1640 vms-tir.c:1648 +#, c-format +msgid "%s: not fully implemented" +msgstr "%s: neimplementatã complet" + +#: vms-tir.c:1705 +#, c-format +msgid "obj code %d not found" +msgstr "codul abj %d nu a fost gãsit" + +#: vms-tir.c:2043 +#, c-format +msgid "SEC_RELOC with no relocs in section %s" +msgstr "SEC_RELOC fãrã relocãri în secþiunea %s" + +#: vms-tir.c:2331 +#, c-format +msgid "Unhandled relocation %s" +msgstr "Relocare nemanipulabilã %s" + +#: xcofflink.c:1244 +#, c-format +msgid "%s: `%s' has line numbers but no enclosing section" +msgstr "%s: `%s' are numere de linii dar nici o secþiune de închidere" + +#: xcofflink.c:1297 +#, c-format +msgid "%s: class %d symbol `%s' has no aux entries" +msgstr "%s: clasa %d simbolul `%s' nu are intrãri aux" + +#: xcofflink.c:1320 +#, c-format +msgid "%s: symbol `%s' has unrecognized csect type %d" +msgstr "%s: simbolul `%s' are tip necunoscut csect %d" + +#: xcofflink.c:1332 +#, c-format +msgid "%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" +msgstr "%s: simbol XTY_ER invalid `%s': clasa %d scnum %d scnlen %d" + +#: xcofflink.c:1368 +#, c-format +msgid "%s: XMC_TC0 symbol `%s' is class %d scnlen %d" +msgstr "%s: simblul XMC_TC0 `%s' este clasa %d scnlen %d" + +#: xcofflink.c:1520 +#, c-format +msgid "%s: csect `%s' not in enclosing section" +msgstr "%s: csect `%s' nu este în secþiunea de închidere" + +#: xcofflink.c:1627 +#, c-format +msgid "%s: misplaced XTY_LD `%s'" +msgstr "%s:XTY_LD `%s' rãtãcit" + +#: xcofflink.c:1958 +#, c-format +msgid "%s: reloc %s:%d not in csect" +msgstr "%s: relocarea %s:%d nu este în csect" + +#: xcofflink.c:2095 +#, c-format +msgid "%s: XCOFF shared object when not producing XCOFF output" +msgstr "%s: XCOFF shared object neproducând output XCOFF" + +#: xcofflink.c:2116 +#, c-format +msgid "%s: dynamic object with no .loader section" +msgstr "%s: obiect dinamic fãrã secþiune .loader" + +#: xcofflink.c:2761 +#, c-format +msgid "%s: no such symbol" +msgstr "%s: nu existã acest simbol" + +#: xcofflink.c:2894 +msgid "error: undefined symbol __rtinit" +msgstr "eroare: simbol __rtinit nedefinit" + +#: xcofflink.c:3455 +#, c-format +msgid "warning: attempt to export undefined symbol `%s'" +msgstr "avertisment: încercare de exportare a simbolului nedefinit `%s'" + +#: xcofflink.c:4448 +#, c-format +msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" +msgstr "suprasolicitare(overflow) TOC: 0x%lx > 0x10000; încercaþi -mminimal-toc la compilare" + +#: xcofflink.c:5288 xcofflink.c:5755 xcofflink.c:5817 xcofflink.c:6119 +#, c-format +msgid "%s: loader reloc in unrecognized section `%s'" +msgstr "%s: relocare loader în secþiune necunoscutã `%s'" + +#: xcofflink.c:5310 xcofflink.c:6130 +#, c-format +msgid "%s: `%s' in loader reloc but not loader sym" +msgstr "%s: `%s' în relocare loader dar nu în loader sym" + +#: xcofflink.c:5325 +#, c-format +msgid "%s: loader reloc in read-only section %s" +msgstr "%s: relocare loader în secþiunea doar-în-citire %s" + +#: elf32-ia64.c:2392 elf64-ia64.c:2392 +msgid "@pltoff reloc against local symbol" +msgstr "relocare @pltoff pe simbol local" + +#: elf32-ia64.c:3804 elf64-ia64.c:3804 +#, c-format +msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" +msgstr "%s: segment de date scurt depãºit(overflowed) (0x%lx >= 0x400000)" + +#: elf32-ia64.c:3815 elf64-ia64.c:3815 +#, c-format +msgid "%s: __gp does not cover short data segment" +msgstr "%s: __gp nu acoperã segmentul de date scurte" + +#: elf32-ia64.c:4131 elf64-ia64.c:4131 +#, c-format +msgid "%s: linking non-pic code in a shared library" +msgstr "%s: linkuire cod non-pic într-o bibliotecã globalã(shared)" + +#: elf32-ia64.c:4164 elf64-ia64.c:4164 +#, c-format +msgid "%s: @gprel relocation against dynamic symbol %s" +msgstr "%s: relocare @gprel pe simbolul dinamic %s" + +#: elf32-ia64.c:4224 elf64-ia64.c:4224 +#, c-format +msgid "%s: linking non-pic code in a position independent executable" +msgstr "%s: linkuire cod non-pic într-un executabil independent de poziþie" + +#: elf32-ia64.c:4363 elf64-ia64.c:4363 +#, c-format +msgid "%s: @internal branch to dynamic symbol %s" +msgstr "%s: ramurã @internal cãtre simbolul dinamic %s" + +#: elf32-ia64.c:4365 elf64-ia64.c:4365 +#, c-format +msgid "%s: speculation fixup to dynamic symbol %s" +msgstr "%s: rezolvare de speculaþie cãtre simbolul dinamic %s" + +#: elf32-ia64.c:4367 elf64-ia64.c:4367 +#, c-format +msgid "%s: @pcrel relocation against dynamic symbol %s" +msgstr "%s: relocare @pcrell pe simbolul dinamic %s" + +#: elf32-ia64.c:4579 elf64-ia64.c:4579 +msgid "unsupported reloc" +msgstr "relocare nesuportatã" + +#: elf32-ia64.c:4858 elf64-ia64.c:4858 +#, c-format +msgid "%s: linking trap-on-NULL-dereference with non-trapping files" +msgstr "%s: linkuire trap-on-NULL-dereference cu fiºiere non-trapping" + +#: elf32-ia64.c:4867 elf64-ia64.c:4867 +#, c-format +msgid "%s: linking big-endian files with little-endian files" +msgstr "%s: linkuire fiºiere big-endiancu fiºiere little-endian" + +#: elf32-ia64.c:4876 elf64-ia64.c:4876 +#, c-format +msgid "%s: linking 64-bit files with 32-bit files" +msgstr "%s: linkuire fiºiere pe 64-biþi cu fiºiere pe 32-biþi" + +#: elf32-ia64.c:4885 elf64-ia64.c:4885 +#, c-format +msgid "%s: linking constant-gp files with non-constant-gp files" +msgstr "%s: linkuire fiºiere constant-gp cu fiºiere non-constant-gp" + +#: elf32-ia64.c:4895 elf64-ia64.c:4895 +#, c-format +msgid "%s: linking auto-pic files with non-auto-pic files" +msgstr "%s: linkuire fiºiere auto-pic cu fiºiere non-auto-pic" + +#: peigen.c:985 pepigen.c:985 +#, c-format +msgid "%s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: depãºire(overflow) numãr linii: 0x%lx > 0xffff" + +#: peigen.c:1002 pepigen.c:1002 +#, c-format +msgid "%s: reloc overflow 1: 0x%lx > 0xffff" +msgstr "%s: depãºire(overflow) relocare 1: 0x%lx > 0xffff" + +#: peigen.c:1016 pepigen.c:1016 +msgid "Export Directory [.edata (or where ever we found it)]" +msgstr "Director Exportare [.edata (sau oriunde se gãseºte)]" + +#: peigen.c:1017 pepigen.c:1017 +msgid "Import Directory [parts of .idata]" +msgstr "Director Importare [ pãrþi ale .idata]" + +#: peigen.c:1018 pepigen.c:1018 +msgid "Resource Directory [.rsrc]" +msgstr "Director Resursã [.rsrc]" + +#: peigen.c:1019 pepigen.c:1019 +msgid "Exception Directory [.pdata]" +msgstr "Director Excepþie [.pdata]" + +#: peigen.c:1020 pepigen.c:1020 +msgid "Security Directory" +msgstr "Director Securitate" + +#: peigen.c:1021 pepigen.c:1021 +msgid "Base Relocation Directory [.reloc]" +msgstr "Director Relocare de Bazã [.reloc]" + +#: peigen.c:1022 pepigen.c:1022 +msgid "Debug Directory" +msgstr "Director Debug" + +#: peigen.c:1023 pepigen.c:1023 +msgid "Description Directory" +msgstr "Director Descriere" + +#: peigen.c:1024 pepigen.c:1024 +msgid "Special Directory" +msgstr "Director Special" + +#: peigen.c:1025 pepigen.c:1025 +msgid "Thread Storage Directory [.tls]" +msgstr "Director Depozitare Fire(Thread) [.tls]" + +#: peigen.c:1026 pepigen.c:1026 +msgid "Load Configuration Directory" +msgstr "Director Încãrcare Configuraþie" + +#: peigen.c:1027 pepigen.c:1027 +msgid "Bound Import Directory" +msgstr "Director Importare de Graniþã(Bound)" + +#: peigen.c:1028 pepigen.c:1028 +msgid "Import Address Table Directory" +msgstr "Director Importare Tabelã de Adrese" + +#: peigen.c:1029 pepigen.c:1029 +msgid "Delay Import Directory" +msgstr "Director Importare Întârziere" + +#: peigen.c:1030 peigen.c:1031 pepigen.c:1030 pepigen.c:1031 +msgid "Reserved" +msgstr "Rezervat" + +#: peigen.c:1094 pepigen.c:1094 +msgid "" +"\n" +"There is an import table, but the section containing it could not be found\n" +msgstr "" +"\n" +"Existã o tabelã de importare, dar secþiunea care o conþine n-a putut fi gãsitã\n" + +#: peigen.c:1099 pepigen.c:1099 +#, c-format +msgid "" +"\n" +"There is an import table in %s at 0x%lx\n" +msgstr "" +"\n" +"Existã o tabelã de importare în %s la 0x%lx\n" + +#: peigen.c:1136 pepigen.c:1136 +#, c-format +msgid "" +"\n" +"Function descriptor located at the start address: %04lx\n" +msgstr "" +"\n" +"Descriptorul de funcþie localizat la adresa de start: %04lx\n" + +#: peigen.c:1139 pepigen.c:1139 +#, c-format +msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" +msgstr "\tcode-base %08lx toc (încãrcabil/actual) %08lx/%08lx\n" + +#: peigen.c:1145 pepigen.c:1145 +msgid "" +"\n" +"No reldata section! Function descriptor not decoded.\n" +msgstr "" +"\n" +"Nu existã secþiune reldata! Descriptorul de funcþie nu este decodat.\n" + +#: peigen.c:1150 pepigen.c:1150 +#, c-format +msgid "" +"\n" +"The Import Tables (interpreted %s section contents)\n" +msgstr "" +"\n" +"Tabelele de Importare (interpretat conþinutul secþiunii %s)\n" + +#: peigen.c:1153 pepigen.c:1153 +msgid "" +" vma: Hint Time Forward DLL First\n" +" Table Stamp Chain Name Thunk\n" +msgstr "" +" vma: Sugestie Timp Înaintare DLL Primul\n" +" Tabel Marcaj Lanþ Nume Thunk\n" + +#: peigen.c:1204 pepigen.c:1204 +#, c-format +msgid "" +"\n" +"\tDLL Name: %s\n" +msgstr "" +"\n" +"\tNume DLL: %s\n" + +#: peigen.c:1215 pepigen.c:1215 +msgid "\tvma: Hint/Ord Member-Name Bound-To\n" +msgstr "\tvma: Sugestie/Ord Membru-Nume Salt-La\n" + +#: peigen.c:1240 pepigen.c:1240 +msgid "" +"\n" +"There is a first thunk, but the section containing it could not be found\n" +msgstr "" +"\n" +"Existã un prim thunk, dar secþiunea care îl conþine nu poate fi gãsitã\n" + +#: peigen.c:1380 pepigen.c:1380 +msgid "" +"\n" +"There is an export table, but the section containing it could not be found\n" +msgstr "" +"\n" +"Existã o tabelã de export, dar secþiunea ce o conþine nu poate fi gãsitã\n" + +#: peigen.c:1385 pepigen.c:1385 +#, c-format +msgid "" +"\n" +"There is an export table in %s at 0x%lx\n" +msgstr "" +"\n" +"Existã o tabelã de exportare în %s la 0x%lx\n" + +#: peigen.c:1416 pepigen.c:1416 +#, c-format +msgid "" +"\n" +"The Export Tables (interpreted %s section contents)\n" +"\n" +msgstr "" +"\n" +"Tabelele de Exportare (interpretare conþinut secþiune %s)\n" +"\n" + +#: peigen.c:1420 pepigen.c:1420 +#, c-format +msgid "Export Flags \t\t\t%lx\n" +msgstr "Marcaje(Flags) Exportare \t\t\t%lx\n" + +#: peigen.c:1423 pepigen.c:1423 +#, c-format +msgid "Time/Date stamp \t\t%lx\n" +msgstr "Marcaj(stamp) Orã/Datã \t\t%lx\n" + +#: peigen.c:1426 pepigen.c:1426 +#, c-format +msgid "Major/Minor \t\t\t%d/%d\n" +msgstr "Major/Minor \t\t\t%d/%d\n" + +#: peigen.c:1429 pepigen.c:1429 +msgid "Name \t\t\t\t" +msgstr "Nume \t\t\t\t" + +#: peigen.c:1435 pepigen.c:1435 +#, c-format +msgid "Ordinal Base \t\t\t%ld\n" +msgstr "Bazã Ordinalã \t\t\t%ld\n" + +#: peigen.c:1438 pepigen.c:1438 +msgid "Number in:\n" +msgstr "Numãr în:\n" + +#: peigen.c:1441 pepigen.c:1441 +#, c-format +msgid "\tExport Address Table \t\t%08lx\n" +msgstr "\t Tabelã Exportare Adrese \t\t%08lx\n" + +#: peigen.c:1445 pepigen.c:1445 +#, c-format +msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" +msgstr "\tTabelã [Nume Pointer/Ordinal]\t%08lx\n" + +#: peigen.c:1448 pepigen.c:1448 +msgid "Table Addresses\n" +msgstr "Adrese Tabelã\n" + +#: peigen.c:1451 pepigen.c:1451 +msgid "\tExport Address Table \t\t" +msgstr "\tTabelã Exportare de Adrese \t\t" + +#: peigen.c:1456 pepigen.c:1456 +msgid "\tName Pointer Table \t\t" +msgstr "\tNume Pointer Tabelã \t\t" + +#: peigen.c:1461 pepigen.c:1461 +msgid "\tOrdinal Table \t\t\t" +msgstr "\tOrdinal Tabelã \t\t\t" + +#: peigen.c:1476 pepigen.c:1476 +#, c-format +msgid "" +"\n" +"Export Address Table -- Ordinal Base %ld\n" +msgstr "" +"\n" +"Tabelã Exportare de Adrese -- Bazã Ordinalã %ld\n" + +#: peigen.c:1495 pepigen.c:1495 +msgid "Forwarder RVA" +msgstr "Trimiþãtor(Forwarder) RVA" + +#: peigen.c:1506 pepigen.c:1506 +msgid "Export RVA" +msgstr "Exportare RVA" + +#: peigen.c:1513 pepigen.c:1513 +msgid "" +"\n" +"[Ordinal/Name Pointer] Table\n" +msgstr "" +"\n" +"[Ordinal/Nume Pointer] Tabelã\n" + +#: peigen.c:1568 pepigen.c:1568 +#, c-format +msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" +msgstr "Avertisment, mãrimea secþiunii .pdata (%ld) nu este multiplu de %d\n" + +#: peigen.c:1572 pepigen.c:1572 +msgid "" +"\n" +"The Function Table (interpreted .pdata section contents)\n" +msgstr "" +"\n" +"Tabela de Funcþii (interpretare conþinut secþiune .pdata)\n" + +#: peigen.c:1575 pepigen.c:1575 +msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" +msgstr " vma:\t\t\tAdresã Început Adresã Sfârºit Info Unwind\n" + +#: peigen.c:1577 pepigen.c:1577 +msgid "" +" vma:\t\tBegin End EH EH PrologEnd Exception\n" +" \t\tAddress Address Handler Data Address Mask\n" +msgstr "" +" vma:\t\tÎnceput Sfârºit EH EH PrologSfârºit Excepþii\n" +" \t\tAdresã Adresã Manipulant Date Adresã Mascã\n" + +#: peigen.c:1647 pepigen.c:1647 +msgid " Register save millicode" +msgstr " Registrul salveazã millicode " + +#: peigen.c:1650 pepigen.c:1650 +msgid " Register restore millicode" +msgstr "Registrul reface millicode" + +#: peigen.c:1653 pepigen.c:1653 +msgid " Glue code sequence" +msgstr "Secvenþã de cod lipitã(glue)" + +#: peigen.c:1705 pepigen.c:1705 +msgid "" +"\n" +"\n" +"PE File Base Relocations (interpreted .reloc section contents)\n" +msgstr "" +"\n" +"\n" +"Relocãri Bazã Fiºier PE (interpretare conþinut secþiune .reloc)\n" + +#: peigen.c:1735 pepigen.c:1735 +#, c-format +msgid "" +"\n" +"Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n" +msgstr "" +"\n" +"Adresã Virtualã: %08lx Mãrime Trunchiere %ld (0x%lx) Numãr acceptãri %ld\n" + +#: peigen.c:1748 pepigen.c:1748 +#, c-format +msgid "\treloc %4d offset %4x [%4lx] %s" +msgstr "\trelocarea %4d offset %4x [%4lx] %s" + +#. The MS dumpbin program reportedly ands with 0xff0f before +#. printing the characteristics field. Not sure why. No reason to +#. emulate it here. +#: peigen.c:1788 pepigen.c:1788 +#, c-format +msgid "" +"\n" +"Characteristics 0x%x\n" +msgstr "" +"\n" +"Caracteristici 0x%x\n" + +#~ msgid "%s: Unknown special linker type %d" +#~ msgstr "%s: Tip special necunoscut de linker %d" + +#~ msgid "v850ea architecture" +#~ msgstr "arhitecturã v850ea" + +#~ msgid "%s: Section %s is too large to add hole of %ld bytes" +#~ msgstr "%s: Secþiunea %s este prea mare pentru a adãuga o gaurã de %ld octeþi" + +#~ msgid "Error: out of memory" +#~ msgstr "Eroare: memorie plinã" + +#~ msgid "warning: relocation against removed section; zeroing" +#~ msgstr "avertisment: relocare pe secþiune eliminatã; se umple cu zero(zeroing)" + +#~ msgid "warning: relocation against removed section" +#~ msgstr "avertisment: relocare pe secþiune eliminatã" + +#~ msgid "local symbols in discarded section %s" +#~ msgstr "simboluri locale în secþiunea îndepãrtatã(discarded) %s" + +#~ msgid "%s: linking abicalls files with non-abicalls files" +#~ msgstr "%s: linkuire fiºiere abicalls cu fiºiere non-abicalls" + +#~ msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)" +#~ msgstr "%s: nepotrivire ISA (-mips%d) cu modulele anterioare (-mips%d)" + +#~ msgid "%s: ISA mismatch (%d) with previous modules (%d)" +#~ msgstr "%s: nepotrivire ISA (%d) cu modulele anterioare (%d)" + +#~ msgid "%s: dynamic relocation against speculation fixup" +#~ msgstr "%s: relocare dinamicã pe acceptare(fixup) speculativã" + +#~ msgid "%s: speculation fixup against undefined weak symbol" +#~ msgstr "%s: speculaþie acceptare(fixup) pe simbol ambiguu(weak) nedefinit" Binary files binutils-2.14.90.0.7/bfd/po/sv.gmo and binutils-2.14.90.0.8/bfd/po/sv.gmo differ Binary files binutils-2.14.90.0.7/bfd/po/tr.gmo and binutils-2.14.90.0.8/bfd/po/tr.gmo differ Binary files binutils-2.14.90.0.7/bfd/po/zh_CN.gmo and binutils-2.14.90.0.8/bfd/po/zh_CN.gmo differ diff -uprN binutils-2.14.90.0.7/bfd/ppcboot.c binutils-2.14.90.0.8/bfd/ppcboot.c --- binutils-2.14.90.0.7/bfd/ppcboot.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/ppcboot.c 2004-01-14 13:07:43.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD back-end for PPCbug boot records. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Michael Meissner, Cygnus Support, @@ -98,7 +98,7 @@ static char *mangle_name PARAMS ((bfd *, static long ppcboot_canonicalize_symtab PARAMS ((bfd *, asymbol **)); static void ppcboot_get_symbol_info PARAMS ((bfd *, asymbol *, symbol_info *)); static bfd_boolean ppcboot_set_section_contents - PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, asection *, const PTR, file_ptr, bfd_size_type)); static int ppcboot_sizeof_headers PARAMS ((bfd *, bfd_boolean)); static bfd_boolean ppcboot_bfd_print_private_bfd_data PARAMS ((bfd *, PTR)); @@ -364,7 +364,7 @@ static bfd_boolean ppcboot_set_section_contents (abfd, sec, data, offset, size) bfd *abfd; asection *sec; - PTR data; + const PTR data; file_ptr offset; bfd_size_type size; { diff -uprN binutils-2.14.90.0.7/bfd/ptrace-core.c binutils-2.14.90.0.8/bfd/ptrace-core.c --- binutils-2.14.90.0.7/bfd/ptrace-core.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/ptrace-core.c 2004-01-14 13:07:43.000000000 -0800 @@ -55,7 +55,6 @@ bfd_boolean ptrace_unix_core_file_matche PARAMS ((bfd *core_bfd, bfd *exec_bfd)); static void swap_abort PARAMS ((void)); -/* ARGSUSED */ const bfd_target * ptrace_unix_core_file_p (abfd) bfd *abfd; @@ -146,7 +145,6 @@ ptrace_unix_core_file_failing_command (a return 0; } -/* ARGSUSED */ int ptrace_unix_core_file_failing_signal (abfd) bfd *abfd; @@ -154,7 +152,6 @@ ptrace_unix_core_file_failing_signal (ab return abfd->tdata.trad_core_data->u.pt_sigframe.sig_num; } -/* ARGSUSED */ bfd_boolean ptrace_unix_core_file_matches_executable_p (core_bfd, exec_bfd) bfd *core_bfd, *exec_bfd; diff -uprN binutils-2.14.90.0.7/bfd/reloc.c binutils-2.14.90.0.8/bfd/reloc.c --- binutils-2.14.90.0.7/bfd/reloc.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/reloc.c 2004-01-14 13:07:44.000000000 -0800 @@ -98,7 +98,7 @@ CODE_FRAGMENT .typedef struct reloc_cache_entry .{ . {* A pointer into the canonical table of pointers. *} -. struct symbol_cache_entry **sym_ptr_ptr; +. struct bfd_symbol **sym_ptr_ptr; . . {* offset in section. *} . bfd_size_type address; @@ -278,7 +278,7 @@ SUBSUBSECTION information that libbfd needs to know to tie up a back end's data. CODE_FRAGMENT -.struct symbol_cache_entry; {* Forward declaration. *} +.struct bfd_symbol; {* Forward declaration. *} . .struct reloc_howto_struct .{ @@ -319,10 +319,10 @@ CODE_FRAGMENT . . {* If this field is non null, then the supplied function is . called rather than the normal function. This allows really -. strange relocation methods to be accomodated (e.g., i960 callj +. strange relocation methods to be accommodated (e.g., i960 callj . instructions). *} . bfd_reloc_status_type (*special_function) -. (bfd *, arelent *, struct symbol_cache_entry *, void *, asection *, +. (bfd *, arelent *, struct bfd_symbol *, void *, asection *, . bfd *, char **); . . {* The textual name of the relocation type. *} @@ -627,7 +627,7 @@ bfd_perform_relocation (bfd *abfd, / bfd_octets_per_byte (abfd))) return bfd_reloc_outofrange; - /* Work out which section the relocation is targetted at and the + /* Work out which section the relocation is targeted at and the initial relocation command value. */ /* Get symbol value. (Common symbols are special.) */ @@ -1017,7 +1017,7 @@ bfd_install_relocation (bfd *abfd, / bfd_octets_per_byte (abfd))) return bfd_reloc_outofrange; - /* Work out which section the relocation is targetted at and the + /* Work out which section the relocation is targeted at and the initial relocation command value. */ /* Get symbol value. (Common symbols are special.) */ @@ -2139,6 +2139,34 @@ ENUMX BFD_RELOC_FRV_GPRELHI ENUMX BFD_RELOC_FRV_GPRELLO +ENUMX + BFD_RELOC_FRV_GOT12 +ENUMX + BFD_RELOC_FRV_GOTHI +ENUMX + BFD_RELOC_FRV_GOTLO +ENUMX + BFD_RELOC_FRV_FUNCDESC +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOT12 +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOTHI +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOTLO +ENUMX + BFD_RELOC_FRV_FUNCDESC_VALUE +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOTOFF12 +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI +ENUMX + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO +ENUMX + BFD_RELOC_FRV_GOTOFF12 +ENUMX + BFD_RELOC_FRV_GOTOFFHI +ENUMX + BFD_RELOC_FRV_GOTOFFLO ENUMDOC Fujitsu Frv Relocations. COMMENT @@ -2507,7 +2535,7 @@ ENUMDOC ENUM BFD_RELOC_CTOR ENUMDOC - The type of reloc used to build a contructor table - at the moment + The type of reloc used to build a constructor table - at the moment probably a 32 bit wide absolute relocation, but the target can choose. It generally does map to one of the other relocation types. @@ -2911,6 +2939,37 @@ ENUM ENUMDOC This is a 16-bit reloc containing the small data area offset for use in add3, load, and store instructions. +ENUM + BFD_RELOC_M32R_GOT24 +ENUMX + BFD_RELOC_M32R_26_PLTREL +ENUMX + BFD_RELOC_M32R_COPY +ENUMX + BFD_RELOC_M32R_GLOB_DAT +ENUMX + BFD_RELOC_M32R_JMP_SLOT +ENUMX + BFD_RELOC_M32R_RELATIVE +ENUMX + BFD_RELOC_M32R_GOTOFF +ENUMX + BFD_RELOC_M32R_GOTPC24 +ENUMX + BFD_RELOC_M32R_GOT16_HI_ULO +ENUMX + BFD_RELOC_M32R_GOT16_HI_SLO +ENUMX + BFD_RELOC_M32R_GOT16_LO +ENUMX + BFD_RELOC_M32R_GOTPC_HI_ULO +ENUMX + BFD_RELOC_M32R_GOTPC_HI_SLO +ENUMX + BFD_RELOC_M32R_GOTPC_LO +ENUMDOC + For PIC. + ENUM BFD_RELOC_V850_9_PCREL @@ -2971,12 +3030,12 @@ ENUM BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET ENUMDOC This is a 16 bit offset from the short data area pointer, with the - bits placed non-contigously in the instruction. + bits placed non-contiguously in the instruction. ENUM BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET ENUMDOC This is a 16 bit offset from the zero data area pointer, with the - bits placed non-contigously in the instruction. + bits placed non-contiguously in the instruction. ENUM BFD_RELOC_V850_CALLT_6_7_OFFSET ENUMDOC @@ -3482,7 +3541,7 @@ ENUMDOC included in the output. VTABLE_INHERIT is a zero-space relocation used to describe to the - linker the inheritence tree of a C++ virtual function table. The + linker the inheritance tree of a C++ virtual function table. The relocation's symbol should be the parent class' vtable, and the relocation should be located at the child vtable. @@ -3675,7 +3734,7 @@ ENUMDOC Motorola 68HC11 reloc. This reloc marks the beginning of a jump/call instruction. It is used for linker relaxation to correctly identify beginning - of instruction and change some branchs to use PC-relative + of instruction and change some branches to use PC-relative addressing mode. ENUM BFD_RELOC_M68HC11_RL_GROUP diff -uprN binutils-2.14.90.0.7/bfd/reloc16.c binutils-2.14.90.0.8/bfd/reloc16.c --- binutils-2.14.90.0.7/bfd/reloc16.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/reloc16.c 2004-01-14 13:07:44.000000000 -0800 @@ -193,7 +193,7 @@ bfd_coff_reloc16_relax_section (abfd, in bfd_size_type amt; /* Allocate and initialize the shrinks array for this section. - The last element is used as an accumlator of shrinks. */ + The last element is used as an accumulator of shrinks. */ amt = reloc_count + 1; amt *= sizeof (unsigned); shrinks = (unsigned *) bfd_zmalloc (amt); diff -uprN binutils-2.14.90.0.7/bfd/sco5-core.c binutils-2.14.90.0.8/bfd/sco5-core.c --- binutils-2.14.90.0.7/bfd/sco5-core.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/sco5-core.c 2004-01-14 13:07:44.000000000 -0800 @@ -110,7 +110,6 @@ read_uarea(abfd, filepos) return &rawptr->u; } -/* ARGSUSED */ const bfd_target * sco5_core_file_p (abfd) bfd *abfd; @@ -338,7 +337,6 @@ sco5_core_file_failing_command (abfd) return NULL; } -/* ARGSUSED */ int sco5_core_file_failing_signal (ignore_abfd) bfd *ignore_abfd; @@ -348,7 +346,6 @@ sco5_core_file_failing_signal (ignore_ab : -1); } -/* ARGSUSED */ bfd_boolean sco5_core_file_matches_executable_p (core_bfd, exec_bfd) bfd *core_bfd ATTRIBUTE_UNUSED; diff -uprN binutils-2.14.90.0.7/bfd/section.c binutils-2.14.90.0.8/bfd/section.c --- binutils-2.14.90.0.7/bfd/section.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/section.c 2004-01-14 13:07:44.000000000 -0800 @@ -514,8 +514,8 @@ CODE_FRAGMENT . bfd *owner; . . {* A symbol which points at this section only. *} -. struct symbol_cache_entry *symbol; -. struct symbol_cache_entry **symbol_ptr_ptr; +. struct bfd_symbol *symbol; +. struct bfd_symbol **symbol_ptr_ptr; . . struct bfd_link_order *link_order_head; . struct bfd_link_order *link_order_tail; @@ -553,10 +553,10 @@ CODE_FRAGMENT . || ((SEC) == bfd_com_section_ptr) \ . || ((SEC) == bfd_ind_section_ptr)) . -.extern const struct symbol_cache_entry * const bfd_abs_symbol; -.extern const struct symbol_cache_entry * const bfd_com_symbol; -.extern const struct symbol_cache_entry * const bfd_und_symbol; -.extern const struct symbol_cache_entry * const bfd_ind_symbol; +.extern const struct bfd_symbol * const bfd_abs_symbol; +.extern const struct bfd_symbol * const bfd_com_symbol; +.extern const struct bfd_symbol * const bfd_und_symbol; +.extern const struct bfd_symbol * const bfd_ind_symbol; .#define bfd_get_section_size_before_reloc(section) \ . ((section)->_raw_size) .#define bfd_get_section_size_after_reloc(section) \ @@ -650,10 +650,10 @@ static const asymbol global_syms[] = 0, NULL, NULL, NULL, \ \ /* symbol, */ \ - (struct symbol_cache_entry *) &global_syms[IDX], \ + (struct bfd_symbol *) &global_syms[IDX], \ \ /* symbol_ptr_ptr, */ \ - (struct symbol_cache_entry **) &SYM, \ + (struct bfd_symbol **) &SYM, \ \ /* link_order_head, link_order_tail */ \ NULL, NULL \ @@ -1025,7 +1025,6 @@ DESCRIPTION */ -/*ARGSUSED*/ bfd_boolean bfd_set_section_flags (bfd *abfd ATTRIBUTE_UNUSED, sec_ptr section, @@ -1065,7 +1064,7 @@ DESCRIPTION | func (abfd, the_section, obj); - This is the prefered method for iterating over sections; an + This is the preferred method for iterating over sections; an alternative would be to use a loop: | section *p; @@ -1074,7 +1073,6 @@ DESCRIPTION */ -/*VARARGS2*/ void bfd_map_over_sections (bfd *abfd, void (*operation) (bfd *, asection *, void *), @@ -1132,8 +1130,8 @@ FUNCTION SYNOPSIS bfd_boolean bfd_set_section_contents - (bfd *abfd, asection *section, void *data, file_ptr offset, - bfd_size_type count); + (bfd *abfd, asection *section, const void *data, + file_ptr offset, bfd_size_type count); DESCRIPTION Sets the contents of the section @var{section} in BFD @@ -1161,7 +1159,7 @@ DESCRIPTION bfd_boolean bfd_set_section_contents (bfd *abfd, sec_ptr section, - void *location, + const void *location, file_ptr offset, bfd_size_type count) { diff -uprN binutils-2.14.90.0.7/bfd/simple.c binutils-2.14.90.0.8/bfd/simple.c --- binutils-2.14.90.0.7/bfd/simple.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/simple.c 2004-01-14 13:07:44.000000000 -0800 @@ -211,7 +211,7 @@ bfd_simple_get_relocated_section_content /* The sections in ABFD may already have output sections and offsets set. Because this function is primarily for debug sections, and GCC uses the - knowledge that debug sections will generally have VMA 0 when emiting + knowledge that debug sections will generally have VMA 0 when emitting relocations between DWARF-2 sections (which are supposed to be section-relative offsets anyway), we need to reset the output offsets to zero. We also need to arrange for section->output_section->vma plus diff -uprN binutils-2.14.90.0.7/bfd/som.c binutils-2.14.90.0.8/bfd/som.c --- binutils-2.14.90.0.7/bfd/som.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/som.c 2004-01-14 13:07:44.000000000 -0800 @@ -1715,7 +1715,7 @@ hppa_som_gen_reloc_type (abfd, base_type #ifndef NO_PCREL_MODES /* If we have short and long pcrel modes, then generate the proper mode selector, then the pcrel relocation. Redundant selectors - will be eliminted as the relocs are sized and emitted. */ + will be eliminated as the relocs are sized and emitted. */ bfd_size_type amt = sizeof (int); final_types[0] = (int *) bfd_alloc (abfd, amt); if (!final_types[0]) @@ -2480,7 +2480,7 @@ som_is_subspace (section) return TRUE; } -/* Return TRUE if the given space containins the given subspace. It +/* Return TRUE if the given space contains the given subspace. It is safe to assume space really is a space, and subspace really is a subspace. */ @@ -2734,7 +2734,7 @@ som_write_fixups (abfd, current_offset, continue; /* If this subspace does not have real data, then we are - finised with it. */ + finished with it. */ if ((subsection->flags & SEC_HAS_CONTENTS) == 0) { som_section_data (subsection)->subspace_dict->fixup_request_index @@ -3200,7 +3200,7 @@ som_write_symbol_strings (abfd, current_ /* This gets a bit gruesome because of the compilation unit. The strings within the compilation unit are part of the symbol strings, but don't have symbol_dictionary entries. So, manually - write them and update the compliation unit header. On input, the + write them and update the compilation unit header. On input, the compilation unit header contains local copies of the strings. Move them aside. */ if (compilation_unit) @@ -3906,7 +3906,7 @@ som_finish_writing (abfd) section = section->next; } - /* All the subspace dictiondary records are written, and all the + /* All the subspace dictionary records are written, and all the fields are set up in the space dictionary records. Seek to the right location and start writing the space @@ -3978,7 +3978,7 @@ som_finish_writing (abfd) exec_header->exec_flags = obj_som_exec_data (abfd)->exec_flags; /* Oh joys. Ram some of the BSS data into the DATA section - to be compatable with how the hp linker makes objects + to be compatible with how the hp linker makes objects (saves memory space). */ tmp = exec_header->exec_dsize; tmp = SOM_ALIGN (tmp, PA_PAGESIZE); @@ -5780,7 +5780,7 @@ som_slurp_armap (abfd) + sizeof (struct lst_header)), SEEK_SET) != 0) return FALSE; - /* Initializae the cache and allocate space for the library symbols. */ + /* Initialize the cache and allocate space for the library symbols. */ ardata->cache = 0; amt = ardata->symdef_count; amt *= sizeof (carsym); diff -uprN binutils-2.14.90.0.7/bfd/som.h binutils-2.14.90.0.8/bfd/som.h --- binutils-2.14.90.0.7/bfd/som.h 2003-05-23 07:18:52.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/som.h 2004-01-14 13:07:44.000000000 -0800 @@ -1,6 +1,6 @@ /* HP PA-RISC SOM object file format: definitions internal to BFD. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001, - 2002 Free Software Foundation, Inc. + 2002, 2003 Free Software Foundation, Inc. Contributed by the Center for Software Science at the University of Utah (pa-gdb-bugs@cs.utah.edu). @@ -210,7 +210,7 @@ struct som_section_data_struct should be internal to the BFD backend. The idea is both SOM and ELF define these basic relocation - types so they map into a SOM or ELF specific reloation as + types so they map into a SOM or ELF specific relocation as appropriate. This allows GAS to share much more code between the two object formats. */ diff -uprN binutils-2.14.90.0.7/bfd/sparclinux.c binutils-2.14.90.0.8/bfd/sparclinux.c --- binutils-2.14.90.0.7/bfd/sparclinux.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/sparclinux.c 2004-01-14 13:07:44.000000000 -0800 @@ -113,7 +113,7 @@ sparclinux_write_object_contents (abfd) #endif /* This special symbol is a set vector that contains a list of - pointers to fixup tables. It will be present in any dynamicly + pointers to fixup tables. It will be present in any dynamically linked file. The linker generated fixup table should also be added to the list, and it should always appear in the second slot (the first one is a dummy with a magic number that is defined in diff -uprN binutils-2.14.90.0.7/bfd/srec.c binutils-2.14.90.0.8/bfd/srec.c --- binutils-2.14.90.0.7/bfd/srec.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/srec.c 2004-01-14 13:07:44.000000000 -0800 @@ -1,6 +1,6 @@ /* BFD back-end for s-record objects. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002 + 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support . @@ -132,7 +132,7 @@ static bfd_boolean srec_get_section_cont static bfd_boolean srec_set_arch_mach PARAMS ((bfd *, enum bfd_architecture, unsigned long)); static bfd_boolean srec_set_section_contents - PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd *, sec_ptr, const PTR, file_ptr, bfd_size_type)); static bfd_boolean internal_srec_write_object_contents PARAMS ((bfd *, int)); static bfd_boolean srec_write_object_contents PARAMS ((bfd *)); static bfd_boolean symbolsrec_write_object_contents PARAMS ((bfd *)); @@ -872,7 +872,7 @@ static bfd_boolean srec_set_section_contents (abfd, section, location, offset, bytes_to_do) bfd *abfd; sec_ptr section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type bytes_to_do; { @@ -1009,7 +1009,7 @@ srec_write_header (abfd) { unsigned int len = strlen (abfd->filename); - /* I'll put an arbitary 40 char limit on header size. */ + /* I'll put an arbitrary 40 char limit on header size. */ if (len > 40) len = 40; diff -uprN binutils-2.14.90.0.7/bfd/stabs.c binutils-2.14.90.0.8/bfd/stabs.c --- binutils-2.14.90.0.7/bfd/stabs.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/stabs.c 2004-01-14 13:07:44.000000000 -0800 @@ -1,23 +1,23 @@ /* Stabs in sections linking support. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. -This file is part of BFD, the Binary File Descriptor library. + 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This file contains support for linking stabs in sections, as used on COFF and ELF. */ @@ -358,6 +358,8 @@ _bfd_link_section_stabs (abfd, psinfo, s incl_type = incl_sym[TYPEOFF]; if (incl_type == 0) break; + else if (incl_type == (int) N_EXCL) + continue; else if (incl_type == (int) N_EINCL) { if (nest == 0) diff -uprN binutils-2.14.90.0.7/bfd/sunos.c binutils-2.14.90.0.8/bfd/sunos.c --- binutils-2.14.90.0.7/bfd/sunos.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/sunos.c 2004-01-14 13:07:44.000000000 -0800 @@ -1246,7 +1246,6 @@ sunos_add_one_symbol (info, abfd, name, /* Return the list of objects needed by BFD. */ -/*ARGSUSED*/ struct bfd_link_needed_list * bfd_sunos_get_needed_list (abfd, info) bfd *abfd ATTRIBUTE_UNUSED; @@ -2165,7 +2164,6 @@ sunos_scan_dynamic_symbol (h, data) this point. This entry point exists to prevent the regular linker code from doing anything with the object. */ -/*ARGSUSED*/ static bfd_boolean sunos_link_dynamic_object (info, abfd) struct bfd_link_info *info ATTRIBUTE_UNUSED; @@ -2410,7 +2408,6 @@ sunos_write_dynamic_symbol (output_bfd, copy it over, and tell the caller to not bother processing this reloc. */ -/*ARGSUSED*/ static bfd_boolean sunos_check_dynamic_reloc (info, input_bfd, input_section, harg, reloc, contents, skip, relocationp) diff -uprN binutils-2.14.90.0.7/bfd/syms.c binutils-2.14.90.0.8/bfd/syms.c --- binutils-2.14.90.0.7/bfd/syms.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/syms.c 2004-01-14 13:07:44.000000000 -0800 @@ -133,9 +133,9 @@ SUBSECTION | nm foo | 00012345 A dummy_symbol - Many formats cannot represent arbitary symbol information; for + Many formats cannot represent arbitrary symbol information; for instance, the <> object format does not allow an - arbitary number of sections. A symbol pointing to a section + arbitrary number of sections. A symbol pointing to a section which is not one of <<.text>>, <<.data>> or <<.bss>> cannot be described. @@ -181,7 +181,7 @@ SUBSECTION CODE_FRAGMENT . -.typedef struct symbol_cache_entry +.typedef struct bfd_symbol .{ . {* A pointer to the BFD which owns the symbol. This information . is necessary so that a back end can work out what additional @@ -222,7 +222,7 @@ CODE_FRAGMENT . <>, <>, <> or . <>. *} . -. {* The symbol is a debugging record. The value has an arbitary +. {* The symbol is a debugging record. The value has an arbitrary . meaning, unless BSF_DEBUGGING_RELOC is also set. *} .#define BSF_DEBUGGING 0x08 . @@ -1222,7 +1222,7 @@ _bfd_stab_section_find_nearest_line (bfd long low, high; long mid = -1; - /* Cache non-existant or invalid. Do binary search on + /* Cache non-existent or invalid. Do binary search on indextable. */ indexentry = NULL; diff -uprN binutils-2.14.90.0.7/bfd/sysdep.h binutils-2.14.90.0.8/bfd/sysdep.h --- binutils-2.14.90.0.7/bfd/sysdep.h 2001-08-22 08:52:10.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/sysdep.h 2004-01-14 13:07:44.000000000 -0800 @@ -1,5 +1,5 @@ /* sysdep.h -- handle host dependencies for the BFD library - Copyright 1995, 1996, 1997, 1998, 1999, 2000 + Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. Written by Cygnus Support. diff -uprN binutils-2.14.90.0.7/bfd/targets.c binutils-2.14.90.0.8/bfd/targets.c --- binutils-2.14.90.0.7/bfd/targets.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/targets.c 2004-01-14 13:07:44.000000000 -0800 @@ -30,7 +30,7 @@ SECTION Targets DESCRIPTION - Each port of BFD to a different machine requries the creation + Each port of BFD to a different machine requires the creation of a target back end. All the back end provides to the root part of BFD is a structure containing pointers to functions which perform certain low level operations on files. BFD @@ -341,20 +341,20 @@ BFD_JUMP_TABLE macros. . . long (*_bfd_get_symtab_upper_bound) (bfd *); . long (*_bfd_canonicalize_symtab) -. (bfd *, struct symbol_cache_entry **); -. struct symbol_cache_entry * +. (bfd *, struct bfd_symbol **); +. struct bfd_symbol * . (*_bfd_make_empty_symbol) (bfd *); . void (*_bfd_print_symbol) -. (bfd *, void *, struct symbol_cache_entry *, bfd_print_symbol_type); +. (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type); .#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e)) . void (*_bfd_get_symbol_info) -. (bfd *, struct symbol_cache_entry *, symbol_info *); +. (bfd *, struct bfd_symbol *, symbol_info *); .#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e)) . bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *); . -. alent * (*_get_lineno) (bfd *, struct symbol_cache_entry *); +. alent * (*_get_lineno) (bfd *, struct bfd_symbol *); . bfd_boolean (*_bfd_find_nearest_line) -. (bfd *, struct bfd_section *, struct symbol_cache_entry **, bfd_vma, +. (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma, . const char **, const char **, unsigned int *); . {* Back-door to allow format-aware applications to create debug symbols . while using BFD for everything else. Currently used by the assembler @@ -378,7 +378,7 @@ BFD_JUMP_TABLE macros. . . long (*_get_reloc_upper_bound) (bfd *, sec_ptr); . long (*_bfd_canonicalize_reloc) -. (bfd *, sec_ptr, arelent **, struct symbol_cache_entry **); +. (bfd *, sec_ptr, arelent **, struct bfd_symbol **); . {* See documentation on reloc types. *} . reloc_howto_type * . (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type); @@ -391,7 +391,7 @@ BFD_JUMP_TABLE macros. . bfd_boolean (*_bfd_set_arch_mach) . (bfd *, enum bfd_architecture, unsigned long); . bfd_boolean (*_bfd_set_section_contents) -. (bfd *, sec_ptr, void *, file_ptr, bfd_size_type); +. (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type); . . {* Routines used by the linker. *} .#define BFD_JUMP_TABLE_LINK(NAME) \ @@ -411,7 +411,7 @@ BFD_JUMP_TABLE macros. . int (*_bfd_sizeof_headers) (bfd *, bfd_boolean); . bfd_byte * (*_bfd_get_relocated_section_contents) . (bfd *, struct bfd_link_info *, struct bfd_link_order *, -. bfd_byte *, bfd_boolean, struct symbol_cache_entry **); +. bfd_byte *, bfd_boolean, struct bfd_symbol **); . . bfd_boolean (*_bfd_relax_section) . (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *); @@ -457,12 +457,12 @@ BFD_JUMP_TABLE macros. . long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *); . {* Read in the dynamic symbols. *} . long (*_bfd_canonicalize_dynamic_symtab) -. (bfd *, struct symbol_cache_entry **); +. (bfd *, struct bfd_symbol **); . {* Get the amount of memory required to hold the dynamic relocs. *} . long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *); . {* Read in the dynamic relocs. *} . long (*_bfd_canonicalize_dynamic_reloc) -. (bfd *, arelent **, struct symbol_cache_entry **); +. (bfd *, arelent **, struct bfd_symbol **); . A pointer to an alternative bfd_target in case the current one is not @@ -542,6 +542,9 @@ extern const bfd_target bfd_elf32_little extern const bfd_target bfd_elf32_littlearm_vec; extern const bfd_target bfd_elf32_littlemips_vec; extern const bfd_target bfd_elf32_m32r_vec; +extern const bfd_target bfd_elf32_m32rle_vec; +extern const bfd_target bfd_elf32_m32rlin_vec; +extern const bfd_target bfd_elf32_m32rlelin_vec; extern const bfd_target bfd_elf32_m68hc11_vec; extern const bfd_target bfd_elf32_m68hc12_vec; extern const bfd_target bfd_elf32_m68k_vec; @@ -831,6 +834,9 @@ static const bfd_target * const _bfd_tar &bfd_elf32_littlearm_vec, &bfd_elf32_littlemips_vec, &bfd_elf32_m32r_vec, + &bfd_elf32_m32rle_vec, + &bfd_elf32_m32rlin_vec, + &bfd_elf32_m32rlelin_vec, &bfd_elf32_m68hc11_vec, &bfd_elf32_m68hc12_vec, &bfd_elf32_m68k_vec, diff -uprN binutils-2.14.90.0.7/bfd/tekhex.c binutils-2.14.90.0.8/bfd/tekhex.c --- binutils-2.14.90.0.7/bfd/tekhex.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/tekhex.c 2004-01-14 13:07:44.000000000 -0800 @@ -1,5 +1,5 @@ /* BFD backend for Extended Tektronix Hex Format objects. - Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 + Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support . @@ -29,7 +29,7 @@ DESCRIPTION relocations. Their main application is communication with devices like PROM programmers and ICE equipment. - It seems that the sections are descibed as being really big, + It seems that the sections are described as being really big, the example I have says that the text section is 0..ffffffff. BFD would barf with this, many apps would try to alloc 4GB to read in the file. @@ -110,13 +110,13 @@ static void out PARAMS ((bfd *, int, cha static void writesym PARAMS ((char **, const char *)); static void writevalue PARAMS ((char **, bfd_vma)); static bfd_boolean tekhex_set_section_contents - PARAMS ((bfd*, sec_ptr, PTR, file_ptr, bfd_size_type)); + PARAMS ((bfd*, sec_ptr, const PTR, file_ptr, bfd_size_type)); static bfd_boolean tekhex_set_arch_mach PARAMS ((bfd *, enum bfd_architecture, unsigned long)); static bfd_boolean tekhex_get_section_contents PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); static void move_section_contents - PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type, bfd_boolean)); + PARAMS ((bfd *, asection *, const PTR, file_ptr, bfd_size_type, bfd_boolean)); static const bfd_target *tekhex_object_p PARAMS ((bfd *)); static bfd_boolean tekhex_mkobject PARAMS ((bfd *)); static long tekhex_get_symtab_upper_bound PARAMS ((bfd *)); @@ -593,7 +593,7 @@ static void move_section_contents (abfd, section, locationp, offset, count, get) bfd *abfd; asection *section; - PTR locationp; + const PTR locationp; file_ptr offset; bfd_size_type count; bfd_boolean get; @@ -672,7 +672,7 @@ static bfd_boolean tekhex_set_section_contents (abfd, section, locationp, offset, bytes_to_do) bfd *abfd; sec_ptr section; - PTR locationp; + const PTR locationp; file_ptr offset; bfd_size_type bytes_to_do; { diff -uprN binutils-2.14.90.0.7/bfd/trad-core.c binutils-2.14.90.0.8/bfd/trad-core.c --- binutils-2.14.90.0.7/bfd/trad-core.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/trad-core.c 2004-01-14 13:07:44.000000000 -0800 @@ -71,7 +71,6 @@ static void swap_abort PARAMS ((void)); /* Handle 4.2-style (and perhaps also sysV-style) core dump file. */ -/* ARGSUSED */ const bfd_target * trad_unix_core_file_p (abfd) bfd *abfd; @@ -248,7 +247,6 @@ trad_unix_core_file_failing_command (abf return 0; } -/* ARGSUSED */ int trad_unix_core_file_failing_signal (ignore_abfd) bfd *ignore_abfd ATTRIBUTE_UNUSED; @@ -260,7 +258,6 @@ trad_unix_core_file_failing_signal (igno #endif } -/* ARGSUSED */ bfd_boolean trad_unix_core_file_matches_executable_p (core_bfd, exec_bfd) bfd *core_bfd ATTRIBUTE_UNUSED; diff -uprN binutils-2.14.90.0.7/bfd/versados.c binutils-2.14.90.0.8/bfd/versados.c --- binutils-2.14.90.0.7/bfd/versados.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/versados.c 2004-01-14 13:07:44.000000000 -0800 @@ -32,9 +32,9 @@ A VERSAdos file looks like contains - o Indentification Record + o Identification Record o External Symbol Definition Record - o Object Text Recrod + o Object Text Record o End Record */ @@ -55,7 +55,7 @@ static bfd_boolean versados_pass_2 PARAM static bfd_boolean versados_get_section_contents PARAMS ((bfd *, asection *, void *, file_ptr, bfd_size_type)); static bfd_boolean versados_set_section_contents - PARAMS ((bfd *, sec_ptr, void *, file_ptr, bfd_size_type)); + PARAMS ((bfd *, sec_ptr, const void *, file_ptr, bfd_size_type)); static int versados_sizeof_headers PARAMS ((bfd *, bfd_boolean)); static long int versados_get_symtab_upper_bound PARAMS ((bfd *)); static long int versados_canonicalize_symtab PARAMS ((bfd *, asymbol **)); @@ -713,7 +713,7 @@ static bfd_boolean versados_set_section_contents (abfd, section, location, offset, bytes_to_do) bfd *abfd ATTRIBUTE_UNUSED; sec_ptr section ATTRIBUTE_UNUSED; - PTR location ATTRIBUTE_UNUSED; + const PTR location ATTRIBUTE_UNUSED; file_ptr offset ATTRIBUTE_UNUSED; bfd_size_type bytes_to_do ATTRIBUTE_UNUSED; { diff -uprN binutils-2.14.90.0.7/bfd/version.h binutils-2.14.90.0.8/bfd/version.h --- binutils-2.14.90.0.7/bfd/version.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/version.h 2004-01-14 13:07:44.000000000 -0800 @@ -1,3 +1,3 @@ -#define BFD_VERSION_DATE 20031029 +#define BFD_VERSION_DATE 20040114 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_string@ diff -uprN binutils-2.14.90.0.7/bfd/vms-gsd.c binutils-2.14.90.0.8/bfd/vms-gsd.c --- binutils-2.14.90.0.7/bfd/vms-gsd.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/vms-gsd.c 2004-01-14 13:07:44.000000000 -0800 @@ -788,7 +788,7 @@ _bfd_vms_write_gsd (abfd, objtype) last_index++; } - /* Don't know if this is neccesary for the linker but for now it keeps + /* Don't know if this is necessary for the linker but for now it keeps vms_slurp_gsd happy */ sname = (char *)section->name; diff -uprN binutils-2.14.90.0.7/bfd/vms-hdr.c binutils-2.14.90.0.8/bfd/vms-hdr.c --- binutils-2.14.90.0.7/bfd/vms-hdr.c 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/vms-hdr.c 2004-01-14 13:07:44.000000000 -0800 @@ -206,7 +206,7 @@ _bfd_vms_slurp_hdr (abfd, objtype) /*-----------------------------------------------------------------------------*/ /* Output routines. */ -/* Manufacure a VMS like time on a unix based system. +/* Manufacture a VMS like time on a unix based system. stolen from obj-vms.c */ static unsigned char * diff -uprN binutils-2.14.90.0.7/bfd/vms-misc.c binutils-2.14.90.0.8/bfd/vms-misc.c --- binutils-2.14.90.0.7/bfd/vms-misc.c 2003-01-21 10:21:32.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/vms-misc.c 2004-01-14 13:07:44.000000000 -0800 @@ -1,6 +1,6 @@ /* vms-misc.c -- Miscellaneous functions for VAX (openVMS/VAX) and EVAX (openVMS/Alpha) files. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Klaus K"ampf (kkaempf@rmi.de) @@ -49,7 +49,7 @@ static asymbol *new_symbol PARAMS ((bfd ... 9 almost everything - level is also identation level. Indentation is performed + level is also indentation level. Indentation is performed if level > 0 */ @@ -612,7 +612,7 @@ bfd_boolean _bfd_save_vms_section (abfd, section, data, offset, count) bfd *abfd; sec_ptr section; - PTR data; + const PTR data; file_ptr offset; bfd_size_type count; { @@ -668,7 +668,7 @@ _bfd_vms_output_begin (abfd, rectype, re _bfd_vms_output_short (abfd, (unsigned int) rectype); - /* save current output position to fill in lenght later */ + /* save current output position to fill in length later */ if (PRIV (push_level) > 0) PRIV (length_pos) = PRIV (output_size); diff -uprN binutils-2.14.90.0.7/bfd/vms.c binutils-2.14.90.0.8/bfd/vms.c --- binutils-2.14.90.0.7/bfd/vms.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/vms.c 2004-01-14 13:07:44.000000000 -0800 @@ -125,7 +125,7 @@ static const struct reloc_howto_struct * static bfd_boolean vms_set_arch_mach PARAMS ((bfd *abfd, enum bfd_architecture arch, unsigned long mach)); static bfd_boolean vms_set_section_contents - PARAMS ((bfd *abfd, asection *section, PTR location, file_ptr offset, + PARAMS ((bfd *abfd, asection *section, const PTR location, file_ptr offset, bfd_size_type count)); static int vms_sizeof_headers PARAMS ((bfd *abfd, bfd_boolean reloc)); @@ -1659,7 +1659,7 @@ static bfd_boolean vms_set_section_contents (abfd, section, location, offset, count) bfd *abfd; asection *section; - PTR location; + const PTR location; file_ptr offset; bfd_size_type count; { diff -uprN binutils-2.14.90.0.7/bfd/vms.h binutils-2.14.90.0.8/bfd/vms.h --- binutils-2.14.90.0.7/bfd/vms.h 2002-12-16 12:22:52.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/vms.h 2004-01-14 13:07:44.000000000 -0800 @@ -1,6 +1,6 @@ #undef vms /* vms.h -- Header file for VMS (Alpha and Vax) support. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Written by Klaus K"ampf (kkaempf@rmi.de) @@ -505,9 +505,6 @@ typedef struct _vms_section { struct _vms_section *next; } vms_section; -extern bfd_boolean _bfd_save_vms_section - PARAMS ((bfd *abfd, asection *section, PTR data, file_ptr offset, - bfd_size_type count)); extern vms_section *_bfd_get_vms_section PARAMS ((bfd *abfd, int index)); typedef struct _vms_reloc { @@ -594,7 +591,7 @@ struct vms_private_data_struct { vms_section *vms_section_table[VMS_SECTION_COUNT]; struct bfd_hash_table *vms_symbol_table; - struct symbol_cache_entry **symcache; + struct bfd_symbol **symcache; int symnum; struct location_struct *location_stack; @@ -649,7 +646,7 @@ extern void _bfd_vms_push PARAMS ((bfd * extern uquad _bfd_vms_pop PARAMS ((bfd *abfd, int *psect)); extern bfd_boolean _bfd_save_vms_section - PARAMS ((bfd *abfd, asection *section, PTR data, file_ptr offset, + PARAMS ((bfd *abfd, asection *section, const PTR data, file_ptr offset, bfd_size_type count)); extern void _bfd_vms_output_begin PARAMS ((bfd *abfd, int rectype, int rechead)); diff -uprN binutils-2.14.90.0.7/bfd/xcofflink.c binutils-2.14.90.0.8/bfd/xcofflink.c --- binutils-2.14.90.0.7/bfd/xcofflink.c 2003-07-23 08:08:09.000000000 -0700 +++ binutils-2.14.90.0.8/bfd/xcofflink.c 2004-01-14 13:07:44.000000000 -0800 @@ -1248,7 +1248,7 @@ xcoff_link_add_symbols (abfd, info) } linoff = (auxlin.x_sym.x_fcnary.x_fcn.x_lnnoptr - enclosing->line_filepos); - /* explict cast to bfd_signed_vma for compiler */ + /* explicit cast to bfd_signed_vma for compiler */ if (linoff < (bfd_signed_vma) (enclosing->lineno_count * linesz)) { struct internal_lineno lin; @@ -1827,7 +1827,7 @@ xcoff_link_add_symbols (abfd, info) section = bfd_und_section_ptr; value = 0; } - else if ((*sym_hash)->root.next != NULL + else if ((*sym_hash)->root.und_next != NULL || info->hash->undefs_tail == &(*sym_hash)->root) { /* This symbol has been referenced. In this @@ -2898,7 +2898,7 @@ bfd_xcoff_size_dynamic_sections (output_ xcoff_mark_symbol (info, hsym); hsym->flags |= (XCOFF_DEF_REGULAR | XCOFF_RTINIT); - /* __rtinit initalized */ + /* __rtinit initialized */ amt = sizeof (struct internal_ldsym); ldsym = (struct internal_ldsym *) bfd_malloc (amt); diff -uprN binutils-2.14.90.0.7/bfd/xsym.h binutils-2.14.90.0.8/bfd/xsym.h --- binutils-2.14.90.0.7/bfd/xsym.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/bfd/xsym.h 2004-01-14 13:07:44.000000000 -0800 @@ -1,5 +1,5 @@ /* xSYM symbol-file support for BFD. - Copyright 1999, 2000, 2001, 2002 + Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -133,7 +133,7 @@ typedef struct bfd_sym_resources_table_e (Note that having a single module copied into two resources is not possible). Modules map back to their resource via an index into the resource table and an offset into the resource. Modules also point - to their source files, both the definition module and implemention + to their source files, both the definition module and implementation module. Because modules can be textually nested within other modules, a link to the parent (containing) module is required. This module can textually contain other modules. A link to the contiguous diff -uprN binutils-2.14.90.0.7/binutils/ChangeLog binutils-2.14.90.0.8/binutils/ChangeLog --- binutils-2.14.90.0.7/binutils/ChangeLog 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/ChangeLog 2004-01-14 13:07:44.000000000 -0800 @@ -1,4065 +1,55 @@ -2003-10-28 Segher Boessenkool +2004-01-12 Jakub Jelinek - * readelf.c (dump_section): Don't display DEL characters. + * objcopy.c: Include elf-bfd.h. + (is_strip_section): Don't strip debugging sections if + STRIP_NONDEBUG. + (setup_section): If STRIP_NONDEBUG make SEC_ALLOC sections + ~(SEC_LOAD | SEC_HAS_CONTENTS) and on ELF targets also SHT_NOBITS. -2003-10-27 Kazu Hirata + * objcopy.c (copy_section): Free relpp if relcount == 0. - * ChangeLog: Fix typos. - * ChangeLog-9197: Likewise. - * ChangeLog-9899: Likewise. - * NEWS: Likewise. - * ar.c: Fix comment typos. - * arsup.c: Likewise. - * coffgrok.c: Likewise. - * debug.c: Likewise. - * debug.h: Likewise. - * dlltool.c: Likewise. - * ieee.c: Likewise. - * nm.c: Likewise. - * objdump.c: Likewise. - * prdbg.c: Likewise. - * readelf.c: Likewise. - * resrc.c: Likewise. - * sysinfo.y: Likewise. - * windres.c: Likewise. +2004-01-12 Ian Lance Taylor -2003-10-27 Nick Clifton + * stabs.c (parse_stab_argtypes): Handle g++ ABI version 3 names. + (stab_demangle_argtypes): Likewise. + (stab_demangle_v3_argtypes): New static function. + (stab_demangle_v3_arg): New static function. - * objcopy.c (copy_section): Do not complain when a target does not - support relocations. - (mark_symbols_used_in_relocations): Likewise. +2004-01-12 Nick Clifton -2003-10-14 Anil Paranjpe + * objcopy.c (copy_object): Make the function boolean, returning + FALSE upon failure. + (copy_archive): Handle the return value from copy_object. + (copy_file): Likewise. - * objcopy.c (copy_main): Reads machine flags from arch_info - structure. +2004-01-07 Nick Clifton -2003-10-20 Andrew Cagney - - * coffgrok.h (coff_section): Replace 'struct sec" with "struct - bfd_section". - -2003-10-07 Nathan Sidwell - - * objdump.c (read_section_stabs): Just read one section, return - pointer to it. Add size parameter. - (print_section_stabs): Add string offset parameter. Adjust. - (struct stab_section_names): Add string offset member. - (find_stabs_sections): Correct check for split section suffix, - adjust read_section_stabs and print_section_stabs calls. - (dump_stabs_section): Clear string_offset, free string table. - -2003-10-01 Martin Fuchs - - * resrc.c (define_icon): Fix storage of color attributes 'planes' and - 'bit count' in icon groups. - -2003-09-30 Chris Demetriou - - * NEWS: Add an indication of the cutoff for 2.14. - -2003-09-30 Chris Demetriou - - * readelf.c (get_machine_flags): Handle E_MIPS_ARCH_64R2. - -2003-09-29 H.J. Lu - - * readelf.c (dump_relocations): Support SHN_IA_64_ANSI_COMMON. - (get_symbol_index_type): Likewise. - -2003-09-25 H.J. Lu - - * readelf.c (process_version_sections): Indent version names. - -2003-09-15 Anthony Green - - * dlltool.c (prefix_encode): Fix ISO C90 conversion. - (dlltmp): Ditto. - (dtab): Ditto. - -2003-09-14 Andreas Jaeger - - * addr2line.c: Convert to ISO C90 prototypes, change PTR, remove - unneeded (void *) casts. - * ar.c: Likewise. - * arlex.l: Likewise. - * arparse.y: Likewise. - * arsup.c: Likewise. - * binemul.c: Likewise. - * binemul.h: Likewise. - * bucomm.c: Likewise. - * bucomm.h: Likewise. - * budbg.h: Likewise. - * budemang.c: Likewise. - * budemang.h: Likewise. - * coffdump.c: Likewise. - * coffgrok.c: Likewise. - * cxxfilt.c: Likewise. - * debug.c: Likewise. - * debug.h: Likewise. - * deflex.l: Likewise. - * dlltool.c: Likewise. - * dlltool.h: Likewise. - * dllwrap.c: Likewise. - * emul_aix.c: Likewise. - * filemode.c: Likewise. - * ieee.c: Likewise. - * nlmconv.c: Likewise. - * nlmconv.h: Likewise. - * nlmheader.y: Likewise. - * nm.c: Likewise. - * prdbg.c: Likewise. - * rclex.l: Likewise. - * rcparse.y: Likewise. - * rdcoff.c: Likewise. - * rddbg.c: Likewise. - * rename.c: Likewise. - * resbin.c: Likewise. - * rescoff.c: Likewise. - * resrc.c: Likewise. - * size.c: Likewise. - * srconv.c: Likewise. - * stabs.c: Likewise. - * strings.c: Likewise. - * sysdump.c: Likewise. - * sysinfo.y: Likewise. - * syslex.l: Likewise. - * unwind-ia64.c: Likewise. - * unwind-ia64.h: Likewise. - * version.c: Likewise. - * windres.c: Likewise. - * windres.h: Likewise. - * winduni.c: Likewise. - * wrstabs.c: Likewise. - -2003-09-10 James E Wilson - - * MAINTAINERS: Update my e-mail address. - -2003-09-09 Ian Lance Taylor - - * MAINTAINERS: Update my e-mail address. - -2003-09-04 Nick Clifton - - * MAINTAINERS: Make it clear what should be done with patches to - the top level configure files (other than config.guess and - config.sub). Add binutils@sources.redhat.com as an address to - which patches can be sent. - -2003-09-04 Nick Clifton - - * readelf.c (get_machine_flags): Recognise V850E1 machine type. - -2003-09-03 Andrew Cagney - - * objdump.c: Refer to init_disassemble_info in comments. - (disassemble_data): Replace INIT_DISASSEMBLE_INFO with - init_disassemble_info. - -2003-09-03 Nick Clifton - - * objdump.c (struct objdump_disasm_info): Add new fields - 'dynrelbuf', 'dynrelcount' and 'disassemble_fn'. - (process_section_p): New function: Returns TRUE if a section - can be dumped. - (disassemble_section): New function: Contains the body of - disassemble_data(), but just for one section. - (disassemble_data): Use bfd_map_over_sections to walk section - chain. - (find_stabs_section): New function: Find a stabs containing - section and then dump it. - (dump_stabs_section): New function: Use bfd_map_over_sections - to find the section to dump. - (dump_stabs): Use dump_stabs_section. - (dump_section): New function: Display the contents of a - section. - (dump_data): Use bfd_map_over_sections to display section - contents. - (dump_relocs_in_section): Display the relocs in a given section. - (dump_relocs): Use bfd_map_over_sections to display relocs. - (adjust_addresses): New function: Adjust the vma and lma of - sections. - (dump_bfd): Use bfd_map_over_sections. - * doc/binutils.texi: Document the "objdump -s" (no longer) - dumps empty sections. - -2003-08-24 Jonathan R. Grant - - * objdump.c: Improve comments/documentation. - dump_data: Eliminate duplicate function calls to bfd_section_size. - -2003-09-02 Alan Modra - - * MAINTAINERS: Move Dave Anglin's entry to where it belongs. - -2003-08-21 Nick Clifton - - * po/tr.po: Updated Turkish translation. - -2003-08-14 Alan Modra - - * dep-in.sed: Remove libintl.h. - * Makefile.am (POTFILES.in): Unset LC_COLLATE. - Run "make dep-am". - * Makefile.in: Regenerate. - -2003-08-11 Ian Lance Taylor - - * readelf.c (process_archive): Fix error handling. Remove memory - leak. - - * readelf.c: Add ability to read archives. - (archive_file_offset): New variable. - (archive_file_size): New variable. - (get_data): Include archive_file_offset in file offset - calculation when fseeking. - (process_program_headers): Likewise. - (process_symbol_table): Likewise. - (process_dynamic_segment): Handle computation of end of file - position when the file is in an archive. - (process_object): New function. Contains the body of - process_file(). - (process_archive): New function. Call process_object on each - member of an archive. - (process_file): Detect archives and handle appropriately. - * Makefile.am: Add dependency on aout/ar.h for readelf.c - * Makefile.in: Regenerate. - * NEWS: Document readelf's new ability. - * doc/binutils: Alter text to say that readelf supports archives - and 64-bit ELF files. - -2003-08-08 Nick Clifton - - * po/fr.po: Updated French translation. - -2003-08-05 Alan Modra - - * objcopy.c: Remove unnecessary prototypes and casts. - * objdump.c: Remove unnecessary casts. - * readelf.c: Convert to C90. Remove unnecessary prototypes and casts. - (get_osabi_name): Move so we don't need a forward declaration. - -2003-08-04 Bradley Harrington - Alan Modra - - * objdump.c (include_paths, include_path_count): New vars. - (usage): Describe --include. - (long_options): Add "include". - (add_include_path): New function. - (struct print_file_list): Make filename const. Add modname. - (try_print_file_open, update_source_path): New functions. - (show_line): Use them. - (main): Handle 'I' option. Don't check for NULL xrealloc arg. - -2003-07-30 Alan Modra - - * objdump.c: Remove unnecessary prototypes. - (disassemble_bytes): Add rel_offset parameter. Simplify reloc skipping - code, and print relocs when dump_dynamic_reloc_info. - (disassemble_data): Read and handle dynamic relocs. Correct reloc - skip code. Formatting. - (dump_bfd): Don't dump dynamic relocs when disassembling. - -2003-07-29 Ben Elliston - - * MAINTAINERS: Remove self as M88k maintainer. Future M88k - maintenance defaults to the blanket write privilege maintainers. - -2003-07-29 Michael Meissner - - * MAINTAINERS: Updated my email address. - -2003-07-29 Nick Clifton - - * objdump.c: Update to ISO C. - -2003-07-24 Nick Clifton - - * objdump.c (disassemble_data): Do not ignore sections without the - LOAD flag when disassemble_all is true. Only print a message - about disassembling a section if it contains some data. - - * po/fr.po: Updated French translation. - -2003-07-23 Nick Clifton - - * objcopy.c: Switch to ISO C. Remove debugging code accidentally - left in. Some formatting tidy ups. - -2003-07-22 Salvador Eduardo Tropea - - * objdump.c: New command line option --debugging-tags. - * doc/binutils.texi: Document new command line option. - * prdbg.c: Code to print the debug info as tags compatible - with ctags. - * budbg.h: Adjust prototype. - * NEWS: Mention new switch - -2003-07-18 Nick Clifton - - * objdump.c (main) :Accept multiple -M switch. - * doc/binutils.texi: Document that multiple -M switches are - accepted and that a single -M switch can contain comma - separated options. - -2003-07-17 Nick Clifton - - * objdump.c (main): Issue a warning message if multiple -M - switches are used. - - * doc/binutils.texi (objdump): Update documentation about -M - option. - -2003-07-17 Nick Clifton - - * po/es.po: New Spanish translation. - -2003-07-11 Alan Modra - - * po/binutils.pot: Regenerate. - -2003-07-05 Christopher Faylor - - * dlltool.c (prefix_encode): Use a fixed length for alpha. - -2003-07-04 Christopher Faylor - - * dlltool.c (prefix_encode): New function. Encode temp file prefix - from pid. - (dlltmp): Pass address of pointer being alloced or suffer neverending - mallocs. - (make_one_lib_file): Allocate enough space for new longer stub names. - (gen_lib_file): Ditto. - (main): Generate the temp file prefix from the pid if prefix was not - specified on the command line. - -2003-07-04 Nick Clifton - - * readelf.c (get_data): Print (unsigned) hex values for size and - offset in error messages. - (process_section_headers): If the string table could not be - allocated, do not continue. - -2003-07-01 Jakub Jelinek - - * readelf.c (dynamic_segment_ia64_val): Print address and newline - for sections by default. Comment fix. - -2003-06-28 Danny Smith - - * rcparse.y (res_text_field): New res_id variable. - (res_null_text): New static const struct res_id object, - with empty unicode name field. - (control): Pop parsing of optresidc up one level. Set - res_text_field to $2 except for controls which do not accept - a text field. Set res_text_field to res_null_text for the - special cases (viz. COMBOBOX, EDITTEXT, LISTBOX, SCROLLBAR). - (control_params): Adjust to use res_text_field rather - than optresidc. - (COMBOBOX): Add comment about discrepency between documented - vs. observed default style. - * resrc.c (define_control): Make first param const. - * windres.h (define_control): Adjust prototype. - -2003-06-27 Nick Clifton - - * objcopy.c (copy_object): Replace call to - bfd_create_gnu_debuglink_section with separate calls to - bfd_add_gnu_debuglink_section and - bfd_fill_in_gnu_debuglink_section, separated by a walk over the - symbol tables. - -2003-06-26 Roland McGrath - - * readelf.c (loadaddr): Variable removed. - (dynamic_info, version_info): Fix type long -> bfd_vma. - (program_headers): New variable. - (get_program_headers): New function, broken out of - process_program_headers. - (process_program_headers): Call it. Don't set `loadaddr'. - (slurp_ia64_unwind_table): Use get_program_headers. - (process_corefile_note_segments): Likewise. - (offset_from_vma): New function. - (process_relocs, process_dynamic_segment): Call that instead of - subtracting `loadaddr'. - (process_version_sections, process_symbol_table): Likewise. - (process_mips_specific): Likewise. - -2003-06-26 Nick Clifton - - * objcopy (enum strip_action): Add STRIP_NONDEBUG. - (OPTION_ONLY_KEEP_DEBUG): New. - (strip_options): Add --only-keep-debug. - (copy_options): Likewise. - (is_strip_section): Invert return value if STRIP_NONDEBUG is - active. - (copy_object): Do not copy private data when STRIP_NONDEBUG is - active. - (setup_section): Likewise. - (strip_main): Handle --only-keep-debug. - (copy_main): Likewise. - * NEWS: Mention new switch - * doc/binutils.texi: Document new switch. - -2003-06-25 Alan Modra - - * NEWS: Correct spelling of "relocatable". - * objdump.c: Likewise. - * sysroff.info: Likewise. - -2003-06-19 Nick Clifton - - * readelf.c (print_vma): When printing DEC_5 values, if the - number is bigger than 99999 switch to using hexadecimal - notation. - -2003-06-11 Nick Clifton - - * objcopy.c (gnu_debuglink_filename): New variable. - (OPTION_ADD_GNU_DEBUGLINK): New switch - (copy_options): Describe --add-gnu-debuglink switch. - Mention that --strip-debug removes sections as well. - (is_strip_section): Process the sections removed and kept - lists before checking for debugging sections. - (add_redefine_syms_file): Make function static. - (copy_object): Use is_strip_section. - Check to see if a .gnu_debuglink section should be added. If - so, call bfd_add_gnu_debuglink. - (setup_section): Use is_strip_section. - (copy_section): Use is_strip_section. - (copy_main): Handle OPTION_ADD_GNU_DEBUGLINK. - * NEWS: Mention new objcopy switch. - * doc/binutils.texi: Document new switch. - -2003-06-11 H.J. Lu - - * po/Make-in (DESTDIR): New. - (install-data-yes): Support $(DESTDIR). - (uninstall): Likewise. - -2003-06-11 Alan Modra - - * Makefile.in: Regenerate. - -2003-05-23 Jakub Jelinek - - * readelf.c (get_segment_type): Handle PT_GNU_STACK. - -2003-06-03 Elias Athanasopoulos - - * NEWS: Document the new BSD/POSIX single-character mapping for - .comment/.note sections. - -2003-06-02 Chris Demetriou - Jason Thorpe - - * objcopy.c (redefine_list_append): Add an argument that - indicates the context from which this function is being - called. Change all callers. - (copy_options): Add a new option, --redefine-syms. - (copy_usage): Document new option. - (copy_main): Handle the --redefine-syms option. - * doc/binutils.text (objcopy): Document new option. - -2003-05-31 Richard Henderson - - * readelf.c (byte_get_signed): New. - (get_encoded_value): New. - (display_debug_frames): Use it. Always pre-process opcodes. - -2003-05-20 Michal Ludvig - - * readelf.c (display_debug_frames): Print both registers - for DW_CFA_register. - -2003-05-16 Kelley Cook - - * configure.in: Accept i[3-7]86 variants. Escape '[]' for - i[3-7]86-*-interix. - * configure.in: Regenerate. - -2003-05-13 Michael Eager - - * objcopy.c: Treat identical src/dst file names as if only one - entered. One Windows creating an output file of the same name as - the input file will delete the input file before it is read. - -2003-05-12 Salvador Eduardo Tropea - - * debug.c (debug_get_real_type): Extend test for circular debug - references. - -2003-05-12 Nick Clifton - - * configure.in (ALL_LINGUAS): Add zh_CN. - * configure: Regenerate. - * po/zh_CN.po: New file: Chinese (simplified) translation. - -2003-05-11 Jason Eckhardt - - * MAINTAINERS: Update my mail address. - -2003-05-07 H.J. Lu - - * readelf.c (dump_relocations): Enlarge the type field in wide - mode by one character. - -2003-05-03 Richard Henderson - - * readelf.c (struct Frame_Chunk): Add cfa_exp. - (frame_display_row): Just print "exp" for cfa or register - defined by a location expression. - (display_debug_frames): Handle DW_CFA_def_cfa_expression, - DW_CFA_expression, DW_CFA_MIPS_advance_loc8. - -2003-04-30 H.J. Lu - - * objdump.c (only): Change it to char **. - (only_size): New. - (only_used): New. - (disassemble_data): Check only as an array. - (dump_data): Likewise. - (dump_relocs): Likewise. - (main): Treat only as an array. - -2003-04-24 Dimitrie O. Paun - - * doc/binutils.texi: Fix the documentation for the -fo option. - -2003-04-23 J"orn Rennecke - - * readelf.c (get_machine_name) : Amend return value - to refer to SuperH. - - * readelf.c (decode_location_expression): Don't add a trailing ';'. - -2003-04-23 Dimitrie O. Paun - Nick Clifton - - * windres.c (long_options): Move close to main, where it is used. - Add 'input' and 'output' long options. - (main): Accept "-fo" as an alias for "-o". This is for rc - comptibility. - * doc/binutils.texi: Mention that -fo is accepted as an alias for - -o, but discourage its use. - -2003-04-22 Dimitrie O. Paun - - * windres.c (format_from_name): Make the exit on error - behaviour optional. - (main): Rename the -I option to -J. Introduce -I as a synonym - for --include-dir. For backwards compatibility also support the - old -I behaviour, but issue a deprecation warning. - * doc/binutils.texi: Rename -I to -J. Document the new behaviour - of the -I option. - -2003-04-22 Kazuhiro Inaoka - - * readelf.c: Replace references to Mitsubishi M32R with - references to Renesas M32R. - -2003-04-15 Rohit Kumar Srivastava - - * readelf.c: Replace occurrances of 'Hitachi' with 'Renesas'. - -2003-04-09 Alexandre Oliva - - * doc/binutils.texi (objdump) [--debugging]: Suggest readelf -w - for debugging information types not supported by objdump. - -2003-04-09 Bernd Jendrissek - - * configure.in: Recognize canonical form of i[3-6]86-pe*. - * configure: Regenerate. - -2003-04-09 Alexandre Oliva - - * readelf.c (display_debug_info): Apply RELA relocations on the - entire section. - (byte_put_little_endian, byte_put_big_endian): New functions. - (byte_put): New variable. - (get_file_header): Initialize it. - -2003-04-05 Dimitrie O. Paun - - * windres.c: Add -l for compatibility with wrc, and rc. - Use the short option as a key for long options that have - a synonymous short option. - * doc/binutils.texi: Added -l to the list of options. - -2003-04-03 Dimitrie O. Paun - - * windres.c: Add -U for compatibility with wrc, rc, and cpp. - (main): Just pass the -U option down to the preprocessor. - * doc/binutils.texi: Added -U to the list of options. - -2003-04-01 Dimitrie O. Paun - - * windres.c (usage): Report -r option. - (main): Ignore the -r option. - * doc/binutils.texi: Add -r to the list of options. - -2003-04-01 Bob Wilson - - * MAINTAINERS: Add myself as Xtensa maintainer. - -2003-04-01 Bob Wilson - - * readelf.c: Include "elf/xtensa.h". - (guess_is_rela): Add EM_XTENSA and EM_XTENSA_OLD to list of - targets that use RELA relocations. - (dump_relocations): Call elf_xtensa_reloc_type for - EM_XTENSA and EM_XTENSA_OLD. - (get_machine_name): Handle EM_XTENSA and EM_XTENSA_OLD. - -2003-04-01 Nick Clifton - - * configure.in: Change "arm-pe*" to "arm-*-pe*". Similarly for - thumb-pe*, mcore-pe and mcore-*elf. - * configure: Regenerate. - -2003-03-31 Alexandre Oliva - - * objdump.c (dump_data): Don't truncate the address to long; make - the width large enough, and uniform for all entries in a section. - -2003-03-31 H.J. Lu - - * readelf.c: Include "libiberty.h". - (dynamic_relocations): New. - (process_relocs): Properly handle dynamic relocation. - (process_dynamic_segment): Fill relocation elements in - dynamic_info. - -2003-03-31 Kevin Buettner - - * readelf.c (read_and_display_attr, read_and_display_attr_value): - Add new arguments ``offset_size'' and ``dwarf_version''. Adjust - all callers. - (display_debug_lines, display_debug_pubnames, display_debug_info) - (display_debug_aranges, display_debug_frames, read_and_display_attr) - (read_and_display_attr_value): Add 64-bit DWARF support. - -2003-03-31 Ian Lance Taylor - - * rcparse.y: Replace uses of 'optstringrc' with 'optresid'. - (optresid): Handle a resource id that can be a string or a number. - * resrc.c (define_control): Replace 'text' parameter with 'iid' a - struct res_id. - (define_icon_control): Pass a struct res_id to define_control. - * windres.h (define_control): Change prototype. - -2003-03-24 Elias Athanasopoulos - - * objcopy (OPTION_FORMATS_INFO): Define. - (strip_options): Add "info"/OPTION_FORMATS_INFO option. - (copy_options): Likewise. - (strip_usage): Add "--info" to usage. - (copy_usage): Likewise. - (strip_main): Declare formats_info. Iniatilize it to FALSE. - Handle "info". - (copy_main). Likewise. - * doc/binutils.texi. Document the "--info" option for - objcopy/strip. - * NEWS: Mention the new command line switch. - - * objdump.c (endian_string): Move to bucomm.c. - (display_info): Likewise. - (display_target_list): Likewise. - (display_info_table): Likewise. - (display_target_tables): Likewise. - (main): Assign the return value of display_info to exit_status. - * bucomm.c: Include bfdver.h and libbfd.h - (display_target_list): Call bfd_nonfatal instead of nonfatal and - return 0 on a non-fatal error, 1 on success. - (display_info_table): Likewise. - * bucomm.h (display_info): Provide a prototype. - * Makefile.am (bucomm.o): Add dependencies on bfdver.h and - libbfd.h. - * Makefile.in: Regenerate. - -2003-03-22 Danny Smith - - * dlltool.c (gen_def_file): Put demangled name comments on - own line preceding export name. - -2003-03-17 Nick Clifton - - * objdump.c (disassemble_data): Use disasm_info.fprintf_func not - printf for emitting new lines. - -2003-03-16 Elias Athanasopoulos - - * nm.c (print_symbol_info_bsd): Print the symbol's size instead of - the symbol's value when --size-sort is used, unless -S is used. - doc/binutils.texi (--size-sort): For non-bsd formats both the - value and size of the symbols are displayed. - -2003-03-13 Nick Clifton - - * po/da.po: Update. - -2003-03-12 Nick Clifton - - * MAINTAINERS: Remove Peter Targett as ARC maintainer. - -2003-03-10 Ben Elliston - - * MAINTAINERS: Update my mail address. - -2003-03-06 Elias Athanasopoulos - - * stabs.c (BYTES_IN_WORD): Remove definition. - * wrstabs.c (BYTES_IN_WORD): Likewise. - -2003-03-04 Nick Clifton - - * nm.c (main): Print a warning message if --size-sort and - --undefined-only are used together. - -2003-03-04 Elias Athanasopoulos - - * nm.c (print_symbol): Remove check for undefined_only. - -2003-03-03 Nick Clifton - - * po/da.po: Installed latest translation. - -2003-02-24 Nick Clifton - - * README: Update binutils references to 2.13. - Add paragraph about using --disable-nls. - -2003-02-24 Elias Athanasopoulos - - * doc/binutils.texi (nm --size-sort): Update. - -2003-02-21 James E Wilson - - * MAINTAINERS: Update email address. - -2003-02-21 Ian Wienand - - * readelf.c (get_ia64_dynamic_type): New function. - (dynamic_segment_ia64_val): New function. - (get_dynamic_type): If machine type is EM_IA_64 call - get_ia64_dynamic_val. - (get_ia64_section_type_name): Handle sections with types in the - SHT_IA_64_LOPSREG to SHT_IA_64_HIPSREG range. - (get_dynamic_flags): If machine type is EM_IA_64 call - dynamic_segment_ia64_val. - -2003-02-21 Bob Wilson - - * doc/binutils.texi: Fix typos and obvious texinfo mistakes. Make - section title capitalization more consistent. Update descriptions - of various options to be consistent with the code. Fix errors and - incomplete list in the description of c++filt format options. Remove - information about the linker. Change to be more polite about poor - bug reports. Replace FDL appendix with include of fdl.texi. - * doc/fdl.texi: New file. - -2003-02-21 Roger Sayle - - * objcopy.c (filter_symbols): Fix compilation problems with - HP-UX's C compiler. - -2003-02-19 Christopher Faylor - - * rclex.l (handle_quotes): Fix minor formatting problems introduced in - previous change. - -2003-02-19 Mark Blackburn - - * rclex.l (handle_quotes): Handle strings spanning more than one line. - -2003-02-12 Bob Wilson - - * nm.c (usage): Add `java' and `gnat' demangle styles and make - quotes consistent. - * objdump.c (usage): Ditto. Also fix some typos. - - * readelf.c (parse_args): Include 'H' option in call to getopt_long. - - * debug.c (debug_record_variable): Handle global register variables. - - * stabs.c (parse_stab): For N_SLINE only include - function_start_offset if the symbol is within a function; - otherwise, the value is absolute. - -2003-02-10 Nick Clifton - - * readelf.c (decode_ARM_machine_flags): Handle the - EF_ARM_MAVERICK_FLOAT flag. - -2003-02-04 Andreas Schwab - - * rddbg.c (read_section_stabs_debugging_info): Cast ptrdiff_t to - long and use %ld in printf format. - -2003-01-28 Richard Sandiford - - * readelf.c (dump_relocations): Reorder the r_info field for - little-endian mips elf64. Move #ifdef BFD64 to cover the new code. - -2003-01-21 Daniel Berlin - - * readelf.c (display_debug_loc): Skip address base changes. - -2003-01-17 Fabio Alemagna - - * readelf.c (get_osabi_name): Handle ELFOSABI_AROS, ELFOSABI_OPENVMS - and ELFOSABI_NSK. - -2003-01-16 Alan Modra - - * readelf.c: Include elf/ppc64.h. - (dump_relocations ): Use elf_ppc64_reloc_type. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2003-01-02 Ben Elliston - - * readelf.c (guess_is_rela): Handle EM_IQ2000. - (get_machine_name): Likewise. - (dump_relocations): Likewise. - * NEWS: Mention IQ2000 support. - -2003-01-02 Richard Sandiford - - * readelf.c (get_machine_flags): Handle E_MIPS_ARCH_32R2. - -2002-12-30 Chris Demetriou - - * doc/binutils.texi (objdump): Note MIPS HWR (Hardware Register) - changes in MIPS -M options. - -2002-12-30 Dmitry Diky - - * Makefile.am: Add msp430 target. - * Makefile.in: Regenerate. - * readelf.c: Add support for msp430 target. - -2002-12-27 Chris Demetriou - - * doc/binutils.texi (objdump): Document MIPS -M options. - -2002-12-23 Andreas Schwab - - * readelf.c (main): Reset dump request after each file. - -2002-12-23 Nick Clifton - - * nlmconv.c (main): Pass TRUE as third argument to - bfd_arch_get_compatible. - -2002-12-23 Nick Clifton - - * strings.c (isgraphic): Replace definition with STRING_ISGRAPHIC - macro. Handle 'S' encoding, accepting 8-bit characters. - (main): Parse 'S' encoding. - (get_char): Accept 'S' encoding. - (print_strings): Use STRING_ISGRAPHIC. - (usage): Document support of 'S' encoding. - * doc/binutils.texi: Document support of 'S' encoding/ - * NEWS: Mention new feature. - -2002-12-20 Alan Modra - - * README : Don't use libibery's needed_list or - required_list, instead link libiberty/*.o. - -2002-12-19 Kazu Hirata - - * doc/binutils.texi: Fix typos. - -2002-12-14 John David Anglin - - * doc/binutils.texi: Add missing parenthesis. - -2002-12-15 Nick Kelsey - - * objcopy.c: Add --prefix-symbols= option to rename all - symbols by adding the given prefix to the begining of the symbol - name. This is useful to provide name space separation regardless - of how the object file was created. Added --prefix-sections= - and --prefix-alloc-sections= options to rename all - sections (or all sections with the alloc flag set) by adding the given - prefix to the begining of the symbol name. - * NEWS: Mention this new feature. - * doc/binutils.texi: Document this new feature. - -2002-12-13 Alan Modra - - * dlltool.c (mcore_elf_gen_out_file): Replace all occurrences of - dyn_string_append with dyn_string_append_cstr. - - * emul_aix.c (ar_emul_aix_create): Remove unused function. - -2002-12-10 James Cownie - - * readelf.h (get_TAG_name, get_AT_name, - read_and_display_attr_value): Add support for UPC extensions to - DWARF2 spec. - * NEWS: Mention this new support. - -2002-12-08 Alan Modra - - * NEWS: Mention that bfd no longer declares a "boolean" type. - -2002-12-07 Alan Modra - - * readelf.c (process_program_headers): When setting loadaddr, don't - assume segment size is 4k. Use p_align instead. - (loadaddr): Change from int to long. - (dynamic_addr, dynamic_info, version_info): Likewise. - (process_dynamic_segment ): Likewise. - (process_dynamic_segment): Adjust print format string. - (rela_addr, rela_size): Delete. - (process_relocs): Formatting. - -2002-12-05 Jim Wilson - - * configure.in (OBJDUMP_DEFS): Define SKIP_ZEROES as 16 for IA-64. - * configure: Regenerate. - -2002-12-04 Ian Lance Taylor - - * MAINTAINERS: Change e-mail address back to airs.com. - -2002-12-04 Aldy Hernandez - - * MAINTAINERS: Add self. - -2002-11-30 Alan Modra - - * addr2line.c, ar.c, arsup.c, binemul.c, binemul.h, bucomm.c, bucomm.h, - budbg.h, debug.c, debug.h, dlltool.c, emul_aix.c, ieee.c, nlmconv.c, - nlmconv.h, nlmheader.y, nm.c, objcopy.c, objdump.c, prdbg.c, rdcoff.c, - rddbg.c, readelf.c, rename.c, size.c, stabs.c, strings.c, - unwind-ia64.h, wrstabs.c: Replace boolean with bfd_boolean, true with - TRUE, false with FALSE. Simplify comparisons of bfd_boolean vars - with TRUE/FALSE. Formatting. - -2002-11-29 Jakub Jelinek - - * readelf.c Replace occurrences of Elf32_Internal_* and - Elf64_Internal_* with Elf_Internal_*. - (slurp_rel_relocs): Change Elf_Internal_Rel to Elf_Internal_Rela. - Zero r_addend fields. - (dump_relocations): Remove relas variable, change Elf_Internal_Rel to - Elf_Internal_Rela. - -2002-11-23 Nick Clifton - - * size.c (usage): Fix typo describing switch for hex format. - -2002-11-18 Svein E. Seldal - - * testsuite/binutils-all/objcopy.exp: Disable tic4x from test - * testsuite/binutils-all/objdump.exp: Setup proper values for tic4x - testcase - -2002-11-14 Nick Clifton - - * readelf.c (process_program_headers): Add comment about return - value. Ensure that 0 is returned if the headers are not loaded. - (process_file): If process_section_headers failed to load the - headers disable any tests that rely upon them. Similarly for - process_program_headers. - -2002-11-12 Nick Clifton - - * po/da.po: Updated Danish translation. - -2002-11-12 Klee Dienes - - * rddbg.c (read_section_stabs_debugging_info): Also recognize - LC_SYMTAB.stab/LC_SYMTAB.stabstr as a valid pair of sections. - -2002-11-11 Christopher Faylor - - * MAINTAINERS: Reinstate DJ Delorie as COFF maintainer. Drop COFF from - cgf maintainership. - -2002-11-11 Christopher Faylor - - * MAINTAINERS: Replace DJ Delorie as PE/COFF maintainer. - -2002-11-07 Nick Clifton - - * configure.in (ALL_LINGUAS): Add 'da'. - * configure: Regenerate. - * po/da.po: New Danish translation. - - * readelf.c (get_symbol_index_type): Revert part of previous - patch: Display unknown symbol types in decimal, not hex. - -2002-11-07 Danny Smith - - * dlltool.c (add_excludes): Don't prefix excluded fastcall - symbols with underscore. - (xlate): Ignore add_underscore for decorated fastcall symbols. - -2002-11-07 Eric Kohl - - * deflex.l: Accept '@' as first character of an ID. - * dlltool.c (gen_exp_file): Use existing '@' prefix rather than - ASM_PREFIX for fastcall symbols. - (scan_drectve_symbols): Handle fastcall symbols when generating - undecorated aliases for symbols in drectve section. - (scan_filtered_symbols): Likewise, with export-all. - (xlate): Likewise, with --kill-at. - (make_imp_label): New function to handle fastcall symbols - correctly. - (make_one_lib_file): Use make_imp_label instead of make_label - for imp symbols. - -2002-11-06 Svein E. Seldal - - * MAINTAINERS: Add self as TIC4X maintainer. - -2002-11-06 Hiroyuki Machida - - * readelf.c (get_symbol_index_type): Add hex number to - PROCESSOR-specific, OS-specific, reserved and unknown symbol - types. - -2002-11-04 Alan Modra - - * readelf.c (byte_get_little_endian): Comment typo fix. - (print_symbol): Constify "symbol" arg. Don't pass "symbol" to printf - as the format string. - (dump_relocations): Correct section sym names. - (process_section_headers): Clear symtab_shndx_hdr. - (read_and_display_attr_value): Don't pass indirect string to printf - as the format string. - (display_debug_frames): Indicate when zero terminator found. Decode - DW_EH_PE_pcrel addresses. - -2002-10-23 Svein E. Seldal - - * configure.in: Define SKIP_ZEROES as 32 for tic4x target in - order to ensure proper disassembly of the valid 0-value opcode. - * configure: Regenerate. - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure.in: Regenerate. - * doc/Makefile.in: Regenerate. - * po/binutils.pot: Regenerate. - -2002-10-23 Kaz Kojima - - * MAINTAINERS: Add self as SH maintainer. - -2002-10-23 Ben Elliston - - * doc/binutils.texi (objdump): Document -z and move the entry for - --disassemble-zeroes to the end of the options section (for `z'). - -2002-10-21 Nick Clifton - - * MAINTAINERS: Discontinue Hans-Peter Nilsson as SH maintainer. - -2002-10-21 Svein E. Seldal - - * objdump.c (dump_data): Correct addr_offset for opb != 1. - -2002-10-15 Alan Modra - - * bucomm.c (list_supported_targets): Use bfd_target_list. - - * objcopy.c (copy_file): Report ambiguous bfd_object matches, and - other object errors in preference to bfd_core errors. - -2002-10-14 Alan Modra - - * Makefile.am: Run "make dep-am". - * objdump.c: #include "bfdver.h". - * version.c: Likewise. - * Makefile.in: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - * po/POTFILES.in: Regenerate. - -2002-10-09 Daniel Jacobowitz - - * readelf.c (display_debug_info): Ignore empty .rela.debug_info - sections. Allow relocations against the absolute symbol. Don't - use the value in compunit.cu_abbrev_offset if we found a RELA - relocation. - -2002-10-07 Gordon Chaffee - - * addr2line.c (slurp_symtab): Read in dynamic symbols if no - ordinary ones are available. - -2002-09-30 H.J. Lu - - * readelf.c (get_machine_flags): Handle E_MIPS_MACH_4120, - E_MIPS_MACH_5400 and E_MIPS_MACH_5500. - -2002-09-17 Zack Weinberg - - * Makefile.am (CFILES): Add cxxfilt.c. - (cxxfilt_SOURCES): Now just cxxfilt.c $(BULIBS). - (cxxfilt_LDADD): Delete. - Remove all references to underscore.c. - Regen dependencies. - * configure.in: Define TARGET_PREPENDS_UNDERSCORE in - config.h from $UNDERSCORE, rather than AC_SUBSTing it. - * binutils/cxxfilt.c: Moved here from gcc/cp, minor - adjustments to fit into binutils framework. - * configure, config.in, Makefile.in, doc/Makefile.in: Regenerate. - -2002-09-12 Roland McGrath - - * readelf.c (decode_location_expression): DW_OP_calli -> DW_OP_call_ref - Handle DW_OP_GNU_push_tls_address. - -2002-09-11 Nick Clifton - - * po/tr.po: Updated Turkish translation. - -2002-09-10 Nick Clifton - - * MAINTAINERS: Add Ben Elliston as a maintainer for configure and - testsuite changes. Add paragraphs about testsuite and config - patches. - -2002-08-29 Nick Clifton - - * readelf.c (get_machine_flags): Remove redundant reference to - E_V850EA_ARCH. - -2002-08-28 Alan Modra - - * objdump.c (dump_bfd): Restore lines accidentally deleted in - last commit. - -2002-08-28 Michael Hayes - - * objdump.c (dump_headers): Add printing of HAS_LOAD_PAGE flag. - (dump_bfd_header): Likewise. - -2002-08-27 Alan Modra - - * nm.c: Revert last change. - -2002-08-26 Alan Modra - - * nm.c (display_rel_file): Don't report "no symbols" as an error. - * objdump.c (slurp_symtab): Likewise. - (slurp_dynamic_symtab): Likewise. - (dump_symbols): Likewise. Do print "no symbols" to stdout. - -2002-08-24 Geoffrey Keating - - * MAINTAINERS: Change my mailing address. - -2002-08-23 John David Anglin - - * MAINTAINERS: Add Dave Anglin as HPPA co-maintainer. - -2002-08-22 Nick Clifton - - * MAINTAINERS: Add Jeff Law as (maintainance) maintainer for - HPPA. - -2002-08-21 John David Anglin - - * readelf.c (parse_args): Change debug_dump_opt to static. - -2002-08-16 Sivaguru Sankaridurg - - * stabs.c (parse_stab_argtype): Pass length of physname to - stab_demangle_argtypes. - (stab_demangle_argtypes): Add new parameter - length of physname. - Pass length of physname on to stab_demangle_prefix. - (stab_demangle_prefix): Add new parameter - length of physname. - Use length of physname (if supplied) to compute end of function - name. - -2002-08-15 Alan Modra - - * readelf.c: Include elf/i370.h. - (dump_relocations): Handle EM_S370. - (dynamic_segment_parisc_val): Print \n. - (process_dynamic_segment ): Here too. - -2002-08-14 Nick Clifton - - * nm.c (usage): Change 'gnu-new-abi' to 'gnu-v3'. - * objdump.c (usage): Likewise. - * doc/binutils.texi: Likewise. - -2002-08-14 Luke Dunstan - - * rcparse.y (acc_entry): Don't warn about ALT use with - non-VIRTKEY. - -2002-08-13 H.J. Lu - - * objcopy.c (copy_object): Don't warn about the unsupported - architecture unless the input target is defaulted or the - output architecture is different from the input. - -2002-08-09 Nick Clifton - - * po/sv.po: Updated Swedish translation. - -2002-08-05 Alan Modra - - * prdbg.c (pr_fix_visibility): Remove assert. - -2002-07-31 Nick Clifton - - * addr2line.c (process_file): Rename parameter 'filename' to - 'file_name' in order to avoid shadowing global symbol of the - same name. - (main): Likewise. - -2002-07-30 Jakub Jelinek - - * readelf.c (OPTION_DEBUG_DUMP): Define. - (options): Use it. - (usage): Update help. - (parse_args): Handle --debug-dump separately from -w. - * doc/binutils.texi (readelf): Update documentation. - -2002-07-25 Nick Clifton - - * po/es.po: Updated Spanish translation. - * po/fr.po: Updated French translation. - -2002-07-24 Nick Clifton - - * po/es.po: Updated Spanish translation. - -2002-07-23 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2002-07-23 Nick Clifton - - * po/fr.po: Updated French translation. - -2002-07-23 Eric S. Raymond - - * doc/binutils.texi (addr2line ): Correct brackets. - -2002-07-20 Alan Modra - - * budemang.c: Include config.h and string.h/strings.h. - -2002-07-18 Denis Chertykov - Frank Ch. Eigler - - * readelf.c: Include "elf/ip2k.h". - (guess_is_rela): Add support for EM_IP2K and EM_IP2K_OLD. - (dump_relocations): Likewise. - (get_machine_name): Likewise. - * NEWS: Mention IP2K support. - -2002-07-16 Nick Clifton - - * NEWS: Add 'Changes in 2.13'. - -2002-07-10 Jakub Jelinek - - * readelf.c (get_dynamic_type): Handle DT_GNU_PRELINKED, - DT_GNU_CONFLICT* and DT_GNU_LIBLISZ*. - (get_section_type_name): Handle SHT_GNU_LIBLIST. - (process_dynamic_segment): Handle DT_GNU_CONFLICTSZ, - DT_GNU_LIBLISTSZ and DT_GNU_PRELINKED. - (process_gnu_liblist): New. - (process_file): Call it. - -2002-07-03 Alan Modra - - * Makefile.am (check-DEJAGNU): Revert 2002-06-25 change. - * Makefile.in: Regenerate. - -2002-07-02 Alan Modra - - * budemang.c: New file, "demangle" function. - * budemang.h: New file. - * addr2line.c (translate_addresses): Use "demangle". - * nm.c (print_symname): Likewise. - * objdump.c (objdump_print_symname): Likewise. - (dump_symbols): Likewise. Also, don't use bfd_asymbol_name macro - here since that obfuscates. - * rdcoff.c: Don't #include demangle.h. - * Makefile.am (CFILES): Add budemang.c, emul_aix.c, - emul_vanilla.c. Remove emul_$(EMULATION).c. Sort. - (HFILES): Add budemang.h. Sort. - (nm_new_SOURCES, objdump_SOURCES, addr2line_SOURCES): Add budemang.c. - Run "make dep-am". - * Makefile.in: Regenerate. - -2002-07-01 Matt Thomas - - * readelf.c: Include "elf/vax.h". - (guess_is_rela): Move EM_VAX from unknown to RELA case. - (dump_relocations): Handle VAX relocations. - (get_machine_flags): Handle VAX machine flags. - -2002-06-29 Stephane Carrez - - * readelf.c (dump_relocations): Handle 68HC11/68HC12 relocations. - -2002-06-26 Nick Clifton - - * MAINTAINERS: Remove Tom Rix from d10v and pcc maintainerships. - -2002-06-26 Alan Modra - - * nm.c (print_symname): When demangling, strip leading dots from - symbol names to avoid confusing the demangler. - -2002-06-25 H.J. Lu - - * Makefile.am (check-DEJAGNU): Set LC_ALL=C and export it. - * Makefile.in: Regenerated. - -2002-06-21 Igor Schein - - * configure.in: Quote bu_cv_have_fopen64. - * configure: Regenerate. - -2002-06-21 Mitsru Chinen - - * configure.in: Check for strcoll. - * configure: Regenerate. - * config.in: Regenerate. - * nm.c (main): Set locale for LC_COLLATE category. - (non_numeric_forward): Use strcoll if available. - -2002-06-20 Dave Brolley - - * MAINTAINERS: Add self as fr30 and frv maintainer. - -2002-06-18 H.J. Lu (hjl@gnu.org) - - * nm.c: Include "elf/common.h". - (extended_symbol_info): Add elfinfo, a pointer to - elf_symbol_type. - (SYM_SIZE): Use elfinfo if it is not NULL. - (get_symbol_type): New function. - (display_archive): Set print_width for each archive member. - (display_file): Likewise. - (display_rel_file): Don't set print_width here. - (print_object_filename_sysv): Handle print_width. - (print_archive_member_sysv): Likewise. - (print_symbols): Pass (bfd_vma) 0 to print_symbol. - (print_symbol): Set the elfinfo field in extended_symbol_info - for ELF. - (print_object_filename_sysv): Fix the output format. - (print_symbol_info_sysv): Print type and section for ELF. - -2002-06-18 Elias Athanasopoulos - - * nm.c (print_size_symbols): Remove assignment, which makes - the symbol's size equal to its value when --size-sort is - used. - -2002-06-18 Dave Brolley - - From Catherine Moore: - * readelf.c (elf/frv.h): #include it. - (guess_is_rela): Support EM_CYGNUS_FRV. - (dump_relocations): Ditto. - (get_machine_name): Ditto. - * Makefile.am (readelf.o): add dependency on $(INCDIR)/elf/frv.h. - -2002-06-18 Jakub Jelinek - - * readelf.c (get_file_header): Only read the first section header if - e_shoff is non-zero. - -2002-06-15 H.J. Lu (hjl@gnu.org) - - * nm.c (print_size): New variable. Initialize to 0. - (long_options): Add 'S'/"print-size". - (main): Handle 'S'. - (print_symbol_info_bsd): Print size only if print_size is not - 0. - - * doc/binutils.texi: Document -S/--print-size. - -2002-6-13 Elias Athanasopoulos - - * nm.c (struct extended_symbol_info): New structure: Add the size - of the symbols to the information provided by the symbol_info - structure. - (print_symbols): Pass the symbol size to print_symbol. - (print_size_symbols): Pass the symbol size to print_symbol. - (print_symbol): Extra argument: The size of the symbol. Store - this in the extended_symbol_info structure. - (print_symbol_info): Change type of info parameter to - extended_symbol_info. Display the size, if known. - (print_symbol_info_posix): Likewise. - (print_symbol_info_sysv): Likewise. - -2002-06-08 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * doc/Makefile.in: Regnerate. - - * bucomm.c: Replace CONST with const. - * nm.c: Likewise. - * objdump.c: Likewise. - -2002-06-07 H.J. Lu - - * readelf.c (DW_CFA_GNU_args_size): Don't define. - (DW_CFA_GNU_negative_offset_extended): Likewise. - (DW_CFA_GNU_window_save): Likewise. - (display_debug_frames): Handle DW_CFA_offset_extended_sf, - DW_CFA_def_cfa_sf and DW_CFA_def_cfa_offset_sf. - -2002-06-07 Elias Athanasopoulos - - * nm.c: When computing size of symbols for an ELF target use the - internal size field. - -2002-06-06 John David Anglin - - * testsuite/binutils-all/objcopy.exp: clear xfail for - "hppa*64*-*-hpux*". - * testsuite/binutils-all/hppa/objdump.exp: Return if - "*64*-*-*". - -2002-06-05 Alan Modra - - * objcopy.c (copy_section): Don't copy SEC_GROUP sections. - -2002-06-03 Elias Athanasopoulos - - * objdump.c: Fix formatting. - -2002-05-29 Ben Elliston - - * MAINTAINERS: Add self as M68k maintainer. - -2002-05-28 Kuang Hwa Lin - - * readelf.c: Modified/Added DLX elf support. - -2002-05-27 Nick Clifton - - * arsup.c: Fix formatting. - * debug.c (debug_record_label): Add missing colon to error - message. - * ieee.c (parse_ieee_ty): Fix spelling typo. - * readelf.c (process_program_headers): Remove English assumption - about making a plural word. - (process_section_headers): Likewise. - (process_relocs): Allow quotes to be translated. - (process_unwind): Likewise, - (process_mips_specific): Improve error message. - (get_note_type): Fix spelling typo. - - * configure.in (ALL_LINGUAS): Add sv - * po/sv.po: New file. - -2002-05-27 Alan Modra - - * unwind-ia64.c (unw_print_brmask): Don't use sprintf. - (unw_print_grmask): Likewise. - (unw_print_frmask): Likewise. - -2002-05-26 Kazu Hirata - - * arsup.c: Remove ARGSUSED. - * debug.c: Likewise. - * ieee.c: Likewise. - * nlmconv.c: Likewise. - * prdbg.c: Likewise. - * stabs.c: Likewise. - * wrstabs.c: Likewise. - -2002-05-25 Alan Modra - - * arlex.l: Use #include "" instead of <> for local header files. - * coffdump.c: Likewise. - * coffgrok.c: Likewise. - * nlmconv.c: Likewise. - * nlmheader.y: Likewise. - * srconv.c: Likewise. - * strings.c: Likewise. - * sysdump.c: Likewise. - * unwind-ia64.h: Likewise. - * windres.h: Likewise. - * winduni.h: Likewise. - -2002-05-24 Tom Rix - - * MAINTAINERS: Add self as the d10v maintainer. - -2002-05-24 TAMURA Kent - - * configure.in: Builds dlltool for i386-netbsdpe. - * configure: Regenerate. - -2002-05-23 Kazu Hirata - - * size.c: Fix formatting. - * srconv.c: Likewise. - * stabs.c: Likewise. - * sysdump.c: Likewise. - * unwind-ia64.c: Likewise. - * wrstabs.c: Likewise. - -2002-05-23 Jakub Jelinek - - * readelf.c (get_segment_type): Add PT_TLS. - (get_elf_section_flags): Add SHF_TLS. - (get_dynamic_flags): Optimize. Add DF_STATIC_TLS. - (process_dynamic_segment): Use puts instead of printf. - (get_symbol_type): Support STT_TLS. - * objdump.c (dump_section_header): Remove SEC_CONSTRUCTOR_TEXT, - SEC_CONSTRUCTOR_DATA, SEC_CONSTRUCTOR_BSS. - Add SEC_THREAD_LOCAL. - -2002-05-23 Kazu Hirata - - * rdcoff.c: Fix formatting. - * rddbg.c: Likewise. - * readelf.c: Likewise. - * rename.c: Likewise. - * resbin.c: Likewise. - * resrc.c: Likewise. - * resres.c: Likewise. - -2002-05-21 Kazu Hirata - - * filemode.c: Fix formatting. - * ieee.c: Likewise. - * is-ranlib.c: Likewise. - * is-strip.c: Likewise. - * maybe-ranlib.c: Likewise. - * maybe-strip.c: Likewise. - * nlmconv.c: Likewise. - * nm.c: Likewise. - * not-ranlib.c: Likewise. - * not-strip.c: Likewise. - * objcopy.c: Likewise. - * objdump.c: Likewise. - -2002-05-21 Thiemo Seufer - - * objdump.c (dump_headers): Fix output formatting for ELF32 - architectures in a BFD64 enabled toolchain. - -2002-05-20 Kazu Hirata - - * debug.c: Fix formatting. - * debug.h: Likewise. - * dlltool.c: Likewise. - * dllwrap.c: Likewise. - * emul_aix.c: Likewise. - * emul_vanilla.c: Likewise. - -2002-05-19 Kazu Hirata - - * addr2line.c: Fix formatting. - * ar.c: Likewise. - * arsup.c: Likewise. - * arsup.h: Likewise. - * binemul.c: Likewise. - * binemul.h: Likewise. - * bucomm.c: Likewise. - * coffdump.c: Likewise. - * coffgrok.c: Likewise. - * coffgrok.h: Likewise. - -2002-05-16 Marek Michalkiewicz - - * MAINTAINERS: Add myself as the second AVR port maintainer. - -2002-05-16 Stephane Carrez - - * MAINTAINERS: Update my email address. - -2002-05-09 Nick Clifton - - * MAINTAINERS: Add Jason Thorpe as VAX maintainer. - -2002-05-09 Alan Modra - - * configure.in: Replace `*pe' with `pe' throughout. - * configure: Regenerate. - -2002-05-07 Federico G. Schwindt - - * Makefile.am: Honour DESTDIR. - * Makefile.in: Regenerate. - -2002-05-06 Alan Modra - - * dlltool.c (process_def_file): Add missing prototype. - (new_directive, assemble_file, main): Likewise. - (process_def_file, new_directive): Make static. - (inform): Rewrite using VA_FIXEDARG. - * dllwrap.c (mybasename): Add missing prototype. - (strhash, main): Likewise. - (inform): Rewrite using VA_FIXEDARG. - (warn): Likewise. - (cleanup_and_exit): Use old style function definition. - (strhash): Likewise. - * windres.c (define_resource): Use one memset to clear all of - struct res_resource. - - * rcparse.y: Remove newcmd rule. Move rcparse_discard_strings - call to rules that need no lookahead. Check for no lookahead. - -2002-05-06 Borut Razem - - * rclex.l (get_string): Correct "strings" list handling. - * resrc.c (read_rc_file): Discard strings. - -2002-05-04 Alan Modra - - * ar.c (replace_members): Remove unused var. Formatting fix. - * binemul.c (ar_emul_default_parse_arg): Add ATTRIBUTE_UNUSED. - - * MAINTAINERS: Sort port maintainers by CPU. - -2002-05-04 Bob Byrnes - - * size.c (display_archive): Add last_arfile and code to close archives. - -2002-05-01 Alan Modra - - * nm.c (print_symbol): Check returned filename from - bfd_find_nearest_line is non-NULL. - -2002-04-25 Elena Zannoni - - * readelf.c (get_AT_name): Handle DW_AT_GNU_vector. - -2002-04-24 Christian Groessler - - * MAINTAINERS: Changed my email address. - -2002-04-17 Thiemo Seufer - - * arparse.y: Fix syntax warning. - -2002-04-16 Nick Clifton - - * readelf.c (fetch_location_list): Remove unused function. - - * readelf.c (process_corefile_note_segment): Catch corrupt notes - and display a warning message, then exit the loop. - - * rcparse.y: Set MEMFLAG_DISCARDABLE by default. - -2002-04-15 Nick Clifton - - * resrc.c (write_rc_dialog): If charset is non-default value - display all of the DIALOGEX parameters. - -2002-04-15 Eric Kohl - - * rcparse.y: Allow two to five parameter in FONT statement of - DIALOGEX resources. - * resbin.c (bin_to_res_dialog): Fixed read/write code for dialogex - resource data. - (res_to_bin_dialog): Likewise. - * windres.h: Added misssing charset variable to dialog_ex - structure. - -2002-04-10 Nick Clifton - - * rcparse.y: Set MEMFLAG_PURE by default. - -2002-04-09 Bernd Herd - - * rcparse.y: CLASS definitions in DIALOG resources - are quoted. - Fix typo in BEDIT warning. - Don't add default dialog style when explicit style specified. - Add WS_CAPTION dialog style if CAPTION is specified. - - * rclex.l (handle_quotes): "\xhex" encoding in strings corrected. - (handle_quotes) "\a" escape (used for right justified key - definitions in menus) is encodes as binary 8. - - * resrc.c (write_rc_dialog): Print style even if it is 0. - (write_rc_directory): Fix overlooked sublang shift bug. - (bin_to_res_dialog): Don't print empty dialog caption. - - * resbin.c (bin_to_res_dialog): Use signature to identify - DIALOGEX. - - * windres.c (main): Set default LANGUAGE to english/us. - -2002-04-09 Gunnar Degnbol - - * resrc.c: print CLASS names in quotes - -2002-04-09 J"orn Rennecke - - * MAINTAINERS: Update my email address. - -2002-04-04 Alan Modra - - * dep-in.sed: Cope with absolute paths. - * Makefile.am (dep.sed): Subst TOPDIR. - Run "make dep-am". - * Makefile.in: Regenerate. - -2002-03-27 Peter Targett - - * MAINTAINERS: Update my email address. - -2002-03-21 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - * po/POTFILES.in: Regenerate. - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - -2002-03-20 Daniel Berlin - - * readelf.c: Add support for displaying dwarf2 location lists. - (do_debug_loc, debug_loc_section, debug_loc_size): New. - (parse_args): Use 'O' as shorthand for displaying location list - section. - (process_section_headers): Handle debug_loc as well. - (load_debug_loc): New. - (free_debug_loc): New. - (fetch_location_list): New. - (display_debug_loc): New. - (display_debug_info): Call load_debug_loc and free_debug_loc. - (debug_displays): We can display .debug_loc now, too. - (usage): Update usage string. - (read_and_display_attr_value): Note location lists, but don't - display them inline. - -2002-03-18 Tom Rix - - * Makefile.am: Add binutils emulation support. - * configure.in: Same. - * configure.tgt: New file. Same. - * ar.c (main): Use ar_emul_parse_arg. - (usage): Use ar_emul_usage. - (replace_members): Use ar_emul_replace, ar_emul_append. - * binemul.c: New file. Define the binutils emulation - layer. Define default methods. - * binemul.h: New file. Binutils emulation layer header file. - * emul_aix.c: New file. AIX binutils emulation. - * emul_vanilla.c: New file. Default binutils emulation. - * Makefile.in: Regenerate. - * configure: Same. - -2002-03-18 Nick Clifton - - * po/fr.po: Updated version. - -2002-03-13 Nick Clifton - - * po/fr.po: Updated version. - -2002-03-07 Daniel Jacobowitz - - * README: Update some version numbers. - -2002-03-07 Daniel Jacobowitz - - * doc/binutils.texi (Target Selection): Fix LD crossreferences. - (Architecture Selection): Likewise. - -2002-03-01 Dmitry Timoshkov - - * dlltool.c (gen_exp_file): Take into account --kill-at (-k) while - generating .exp file. - -2002-02-21 Nick Clifton - - * readelf.c (dump_relocations): Fix typo. - -2002-02-20 Nick Clifton - - * NEWS: Mark 2.12 branch. - -2002-02-18 Timothy Daly - - * readelf.c (dump_relocations): Display 2nd and 3rd reloc - types for 64-bit MIPS. Narrow some fields for 80-char - output. - (dump_relocations): Change spelling from 'unrecognised' - to 'unrecognized'. - (decode_ARM_machine_flags): Likewise. - (parse_args): Likewise. - (read_and_display_attr_value): Likewise. - (display_debug_section): Likewise. - -2002-02-15 Hans-Peter Nilsson - - * NEWS: Mention support for MMIX. - -2002-02-13 Matt Fredette - - * readelf.c (get_machine_flags): Recognize EF_M68000. - -2002-02-12 Alexandre Oliva - - * MAINTAINERS: Added self as MN10300 co-maintainer. - -2002-02-12 Alan Modra - - * readelf.c (get_ppc64_dynamic_type): Handle DT_PPC64_OPD and - DT_PPC64_OPDSZ. - -2002-02-11 Daniel Jacobowitz - - * MAINTAINERS: List myself as branch maintainer. - -2002-02-11 Alan Modra - - * configure: Regenerate. - * objcopy.c: Update copyright date. - * doc/Makefile.in: Regenerate. - -2002-02-10 Daniel Jacobowitz - - * nlmconv.c: Back out localtime PARAMS change. - -2002-02-11 Alan Modra - - * objcopy.c (MKDIR): Define. - (copy_archive): Make name_list.name const. Use MKDIR. - Handle duplicate files in archives by making more temp dirs. - -2002-02-10 Daniel Jacobowitz - - * coffdump.c: Include "getopt.h" after "bucomm.h" - so that macros are defined correctly. - * nlmconv.c: Add PARAMS ((const time_t *)) to localtime - prototype. Prototype main. - * nlmheader.y: Add PARAMS ((int)) to strerror prototype. - -2002-02-06 Alexandre Oliva - - * MAINTAINERS: Added self as SH co-maintainer. - -2002-02-05 Nick Clifton - - * po/tr.po: Updated translation. - -2002-02-01 Alan Modra - - * Makefile.am: Run "make dep-am" - * Makefile.in: Regenerate. - -2002-01-29 Daniel Jacobowitz - - * nm.c (print_value): Mark abfd unused. - -2002-01-29 Daniel Jacobowitz - - * unwind-ia64.c (unw_decoder): Change second argument - to unsigned int, to match function prototypes. - -2002-01-29 Daniel Jacobowitz - - * objdump.c: Include "getopt.h" after "bucomm.h" so that - __GNU_LIBRARY__ will be defined. - * size.c: Likewise. - -2002-01-27 Daniel Jacobowitz - - * configure: Regenerated. - -2002-01-26 Hans-Peter Nilsson - - * doc/Makefile.am (install): Depend on install-info. - * doc/Makefile.in: Regenerate. - -2002-01-25 Jason R. Thorpe - - * objcopy.c (strip_usage): Document -d as an alias - --strip-debug. - - * size.c (usage): Document [-t | --totals] options. - (long_options): Add --totals option. - (main): If the [-t | --totals] option is specified and - the output format is Berkeley-style, print the total - text, data, and bss sizes of all objects listed. - (print_berkeley_format): If the [-t | --totals] option - is specified, track the total text, data, and bss - sizes. - * doc/binutils.texi (size): Document [-t | --totals] options. - (strip): Document -d as an alias for --strip-debug. - * NEWS: Mention new feature of size. - -2002-01-25 Nick Clifton - - * po/fr.po: Updated version. - * po/es.po: Updated version. - -2002-01-23 Nick Clifton - - * addr2line.c (usage): Update text to provide verbose - description of the command line options. - * ar.c (usage): Update text to provide verbose - description of the command line options. - (main): Accept -h and -H when running as ranlib. - * coffdump.c (show_usage): Update text to provide verbose - description of the command line options. - * dlltool.c (main): Accept -H as an alias for --help. - * nlmconv.c (show_usage): Update text to provide verbose - description of the command line options. - * nm.c (usage): Replace OPTIONS with option(s). - (main): Accept -H as an alias for --help. - * objcopy.c (strip_main): Accept -H as an alias for --help. - * objdump.c (main): Accept -v as an alias for --verbose. - * readelf.c (usage): Adjust format to match style used in - other binutils. - * size.c (usage): Update text to provide verbose description - of the command line options. - (main): Accept -v, -h and -H as command line options. - * srconv.c (show_usage): Update text to provide verbose - description of the command line options. - * strings.c (main): Accept -H and -v as command line options. - (usage): Update text to provide verbose description of the - command line options. - * sysdump.c (show_usage): Update text to provide verbose - description of the command line options. - * windres.c (usage): Adjust format to match style used in - other binutils. - - * coffdump.c: Fix formatting. - * nlmconv.c: Fix formatting. - * srconv.c: Fix formatting. - * sysdump.c: Fix formatting. - -2002-01-22 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2002-01-18 Andreas Jaeger - - * version.c (print_version): Update year. - -2002-01-17 Alan Modra - - * readelf.c (get_machine_name): Handle EM_PPC64. - (guess_is_rela): Here too. - -2002-01-17 Nick Clifton - - * po/binutils.pot: Regenerate. - * po/fr.po: Regenerate. - * po/tr.po: Regenerate. - -2002-01-16 Nick Clifton - - * po/tr.po: Import new version. - -2002-01-16 Alan Modra - - * readelf.c (get_ppc64_dynamic_type): New. - (get_dynamic_type): Call it. - -2002-01-15 Nick Clifton - - * objcopy.c (copy_usage): Use "options" instead of "switches". - (strip_usage): Use "options" instead of "switches". - * doc/binutils.texi (dlltool): Refer to "options" instead of - "switches". - -2002-01-14 Richard Earnshaw - - * MAINTAINERS: Add self as co-maintainer for the ARM code. - -2001-12-18 Nick Clifton - - * po/es.po: Import from translation project. - * configure.in (ALL_LINGUAS): Add es. - * configure: Regenerate. - -2002-01-09 Jason Thorpe - - * readelf.c (get_netbsd_elfcore_note_type): Use - NT_NETBSDCORE_PROCINFO and NT_NETBSDCORE_FIRSTMACH. - -2002-01-09 Jason Thorpe - - * readelf.c: Update copyright years. - (get_note_type): Return a const char *. - (get_netbsd_elfcore_note_type): New function. - (process_note): Use get_netbsd_elfcore_note_type to get - the note type string for NetBSD ELF core files. - -2002-01-06 Steve Ellcey - - * readelf.c (get_ia64_segment_type): Add support for macros. - (get_segment_type): Add support for IA64 specific macros. - -2001-12-20 Julian v. Bock - - * readelf.c (print_symbol): New function: Print a formatted symbol - name. If --wide is specified do not truncate it. - (dump_relocations): Use print_symbol() to print symbol names. - (process_symbol_table): Likewise. - (process_syminfo): Likewise. - (process_mips_specific): Likewise. - (usage): Document new feature of --wide switch. - * doc/binutils.texi (objdump): Document additional behaviour of - --wide. - -2001-12-18 Michael Snyder - - * objcopy.c (copy_file): Accept corefiles (format bfd_core). - (copy_object): Don't set the start address or flags of a core file. - (copy_section): Don't relocate a core file. Don't copy contents - if the input section has the contents flag set, but the output - section does not (which happens with the fake 'note' pseudo- - sections that BFD creates for corefiles). - -2001-12-18 Thiemo Seufer - - * readelf.c (get_machine_flags): Recognize header flags for ABI and - ASE extensions. More robust code for ISA checking. Ignore empty fields - in header flags for GNU extensions. - -2001-12-18 Alan Modra - - * objcopy.c (copy_archive): Set output bfd format outside the loop. - -2001-12-18 Nick Clifton - - * po/ja.po: Import from translation project. - * configure.in (ALL_LINGUAS): Add ja. - * configure: Regenerate. - -2001-12-18 Thiemo Seufer - - * addr2line.c (main): Protoype. - * ar.c (main): Protoype. - * nm.c (main): Protoype. - * objcopy.c (main): Protoype. - * objdump.c (main): Protoype. - * size.c (main): Protoype. - * strings.c (main): Protoype. - -2001-12-17 Alan Modra - - * readelf.c (symtab_shndx_hdr): New global. - (SECTION_HEADER_INDEX): Define. - (SECTION_HEADER_NUM): Define. - (SECTION_HEADER): Define. - (GET_ELF_SYMBOLS): Pass two params rather than three. - (get_32bit_elf_symbols): Take file and section args. Read and - use SHT_SYMTAB_SHNDX. - (get_64bit_elf_symbols): Likewise. - (dump_relocations): Use SECTION_HEADER to index "section_headers". - (process_section_headers): Likewise. Use SECTION_HEADER_NUM too. - Remember symtab_shdx_hdr. - (process_program_headers): Scan from index 1 for segment map. - (slurp_ia64_unwind_table): Use SECTION_HEADER to index - "section_headers". - (process_relocs): Likewise. Also adjust call to GET_ELF_SYMBOLS. - (process_unwind): Likewise. - (process_version_sections): Likewise. - (process_symbol_table): Likewise. - (display_debug_info): Likewise. - (process_dynamic_segment): Fake up a symtab section for changed - GET_ELF_SYMBOLS. - (get_symbol_index_type): Check SHN_LOOS before SHN_LORESERVE. - (process_program_headers): Kill signed/unsigned warning. - (load_debug_str): Likewise. - (display_debug_info): Likewise. - -2001-12-13 Jakub Jelinek - - * readelf.c (get_segment_type): Support PT_GNU_EH_FRAME. - -2001-12-11 Alan Modra - - * readelf.c (process_file_header): Print extended e_shnum and - e_shdtrndx values. Set elf_header values for same. - (get_32bit_section_headers): Add "num" arg to read "num" headers. - (get_64bit_section_headers): Likewise. - (process_section_headers): Update calls. - (get_file_header): Call get_32bit_section_headers or 64bit variant. - -2001-12-10 Jakub Jelinek - - * objcopy.c (setup_section): Copy entsize. - -2001-12-07 Geoffrey Keating - - * readelf.c (guess_is_rela): Add support for stormy16. - (dump_relocations): Likewise. - (get_machine_name): Likewise. - -2001-12-05 Nick Clifton - - * dllwrap.c (main) Replace multiple strings describing a - single error with a single, newline escaped sentence to permit - better translation into foreign languages. - - * readelf.c (get_elf_class): Remove internalionalisation of ELF - class names. - -2001-12-04 Thiemo Seufer - - * strings.c (get_char): Initialize value. - -2001-12-04 Thiemo Seufer - - * arlex.l: Silence compile warnings. - * arsup.h: Likewise. Fix formatting. - -2001-12-04 Jakub Jelinek - - * strings.c: Include config.h before bfd.h. - (file_off): New type. - (file_open): Define. - (print_strings): Use file_off instead of file_ptr. Print addresses - which don't fit into long correctly. - (get_char): Use file_off instead of file_ptr. Use getc_unlocked if - available. - (strings_file): Use file_off instead of file_ptr. Use file_open. - * configure.in: Check for getc_unlocked. - Check for fopen64 and whether _LARGEFILE64_SOURCE needs to - be defined for it. - * configure: Rebuilt. - * config.h.in: Rebuilt. - -2001-11-29 H.J. Lu - - * bucomm.c (make_tempname): Revert the changes made on - 2001-11-14 and 2001-11-12. They won't work with directories. - -2001-11-23 John David Anglin - - * binutils/Makefile.am (check-DEJAGNU): Pass CC_FOR_TARGET and - CFLAGS_FOR_TARGET to runtest in environment. - * Makefile.in: Rebuild. - * doc/Makefile.in: Rebuild. - -2001-11-28 Mike Stump - - * objcopy.c (setup_section): Preserve SEC_RELOC when - --set-section-flags is used. - -2001-11-19 Nick Clifton - - * readelf.c (do_debug_str): New variable. - (display_debug_str): New function: Display the contents of a - .debug_str section. - (load_debug_str): New function: Load in the contents of a - .debug_str section. - (free_debug_str): New function: Free the memory used by - load_debug_str(). - (fetch_indirect_string): Retrieve a string from the .debug_str - section. - (usage): Add -ws. - (parse_args): Accept -ws. - (process_section_headers): Allow the display of the .debug_str - section. - (read_and_display_attr_value): Use fetch_indirect_string. Show - offset into .debug_str section. - (display_debug_info): Use load_debug_str and free_debug_str. - (debug_displays): Add .debug_str. - * doc/binutils.texi: Document -ws. - -2001-11-19 Andreas Jaeger - - * testsuite/binutils-all/objdump.exp: Add x86-64. - -2001-11-15 Andreas Schwab - - * readelf.c: Fix warnings without terminating newline. - -2001-11-15 Alan Modra - - * doc/binutils.texi (objdump): Document ppc -M options. - -2001-11-14 Andreas Jaeger - - * doc/binutils.texi (objdump): Fix description to use x86-64. - -2001-11-14 Nick Clifton - - * bucomm.c (make_tempname): Use mkstemps instead of mkstemp, since - not all systems provide mkstemp. - -2001-11-14 Alan Modra - - * doc/binutils.texi (objdump): Document x86 -M options. - -2001-11-13 Keith Walker - - * readelf.c (read_and_display_attr_value): New function to - handle DW_FORM_indirect. - (read_and_display_attr): Use it. - -2001-11-13 Geoffrey Keating - - * readelf.c (display_debug_lines): Deal with unknown standard - opcodes. Handle DW_LNS_set_prologue_end, DW_LNS_set_epilogue_begin, - DW_LNS_set_isa. - -2001-11-13 Timothy Wall - - * MAINTAINERS: Add self as tic54x maintainer. This target - includes the IBM C54XDSP clone. - -2001-11-12 * Steven J. Hill - - * bucomm.c (make_tempname): Use mkstemp in place of mktemp. - -2001-11-09 Jeffrey A Law (law@cygnus.com) - - * unwind-ia64.c (unw_print_brmask): Fix ISO C portability glitch. - (unw_print_grmask, unw_print_frmask, unw_print_abreg): Likewise. - (unw_print_xyreg, unw_decode_x1, unw_decode_x2): Likewise. - (unw_decode_x3, unw_decode_r1, unw_decode_r2): Likewise. - (unw_decode_r3, unw_decode_p1, unw_decode_p2_p5): Likewise. - (unw_decode_p6, unw_decode_p7_p10, unw_decode_b1): Likewise. - (unw_decode_b2, unw_decode_b3_b4): Likewise. - - * readelf.c (get_elf_class): Fix ISO portability glitch. - (get_data_encoding, get_osabi_name, request_dump): Likewise. - -2001-11-07 Jakub Jelinek - - * readelf.c (debug_str, debug_str_size): New. - (display_debug_abbrev): If no abbrevs were read, skip the CU. - Call free_abbrevs. - (read_and_display_addr): Handle DW_FORM_strp. - (display_debug_info): Read .debug_str section if present, - so that DW_FORM_strp can be handled. - Fix test for non-existant .debug_abbrev section. - -2001-11-05 Jakub Jelinek - - * arlex.l: Accept `\' in filenames. Patch by . - - * arsup.c (ar_open): Prepend tmp- to basename, not whole path. - -2001-11-05 Martin Schwidefsky - - * MAINTAINERS: Add self as s390/s390x maintainer. - -2001-11-02 Tom Rix - - * MAINTAINERS: Add self as PPC XCOFF maintainer. - -2001-11-02 Nick Clifton - - * configure.in (ALL_LINGUAS): Add "fr" and "tr". - * configure: Regernate. - * po/fr.po: New file. - * po/tr.po: New file. - -2001-10-30 Hans-Peter Nilsson - - * MAINTAINERS: Add self as MMIX port maintainer. - * readelf.c: Include elf/mmix.h. - (guess_is_rela): MMIX is RELA. - (dump_relocations): Handle MMIX relocations. - * Makefile.am: Regenerate dependencies. - * Makefile.in: Regenerate. - -2001-10-13 Nick Clifton - - * readelf.c (parse_args): Handle multiple options to the -w - switch. - -2001-10-12 Jakub Jelinek - - * readelf.c (get_section_type_name): Don't print SHT_ prefix for - LOPROC, LOOS and LOUSER. - -2001-10-11 J"orn Rennecke - - * MAINTAINERS: Update my email address. - -2001-10-03 Alan Modra - - * doc/Makefile.in: Regenerate. - * configure: Regenerate. - -2001-10-02 Nick Clifton - - * readelf.c (display_debug_line, display_debug_pubnames, - display_debug_info, display_debug_frames): Detect and warn - about 64-bit format entries. - (display_debug_aranges): Reword 64-bit warning. - (debug_displays): Add .debug_pubtypes as a known, but not yet - supported, debug section. - -2001-10-02 Alan Modra - - * coffdump.c (PROGRAM_VERSION): Delete. - (main <'V'>): Call print_version. - * srconv.c: Likewise. - * sysdump.c: Likewise. - * version.c (program_version): Remove. - (print_version): Use BFD_VERSION_STRING. Just print the current - year in copyright message. - * addr2line.c (program_version): Remove unused declaration. - * objdump.c (display_target_tables): Use BFD_VERSION_STRING in - place of BFD_VERSION. - * Makefile.am (Makefile): Depend on bfd/configure.in. - (cplus-dem.o): Depend on Makefile. - Run "make dep-am". - * Makefile.in: Regenerate. - -2001-10-01 Nick Clifton - - * readelf.c (display_debug_aranges): Detect and warn about DWARF64 - format .debug_arange sections. - (main): Add missing prototype. - -2001-09-30 Hans-Peter Nilsson - - * Makefile.am: Update dependencies with "make dep-am". - * Makefile.in: Regenerate. - -2001-09-28 Richard Henderson - - * objdump.c (dump_section_header): Dump SEC_ARCH_BIT_0. - -2001-09-26 Alan Modra - - * bucomm.c (fatal): Define using VPARAMS, VA_OPEN, VA_FIXEDARG, - VA_CLOSE. - (non_fatal): Likewise. - * objdump.c (objdump_sprintf): Likewise. - * readelf.c (error): Likewise. - (warn): Likewise. - -2001-09-25 Jakub Jelinek - - * readelf.c (do_wide): New. - (options): Add --wide. - (usage, parse_args): Likewise. - (process_program_headers): Put each segment on a single line if - --wide is given. - (process_section_headers): Put each section on a single line if - --wide is given. - * doc/binutils.texi: Document it. - * NEWS: Likewise. - -2001-09-25 Alan Modra - - * readelf.c (print_vma): Print 8 digits of low hex value. - -2001-09-24 Andreas Jaeger - - * nlmconv.c: Fix warnings about unused attributes and function - prototypes. - - * strings.c: Add prototype for get_char. - -2000-09-19 H.J. Lu - - * doc/Makefile.am ($(DEMANGLER_NAME).1): Try cxxfilt.man and - $(srcdir)/cxxfilt.man. - * doc/Makefile.in: Rebuild. - -2001-09-19 Alan Modra - - * objcopy.c (copy_main): Correct rename-section string parsing. - Consolidate new_name parsing, and error messages. - -2001-09-18 Bruno Haible - - * addr2line.c: Don't include . - (main): For gettext, also set the LC_CTYPE locate facet. - * ar.c (main): Likewise. - * coffdump.c (main): Likewise. - * dlltool.c: Include "safe-ctype.h" instead of . - (main): For gettext, also set the LC_CTYPE locate facet. - Use ISALNUM instead of isalpha/isdigit. - * dllwrap.c: Don't include . - (main): For gettext, also set the LC_CTYPE locate facet. - * nlmconv.c: Include "safe-ctype.h" instead of . - (main): For gettext, also set the LC_CTYPE locate facet. - Use TOUPPER instead of islower/toupper. - * nlmheader.y: Include "safe-ctype.h" instead of . - (yylex): Use ISSPACE/ISALNUM instead of isspace/isalnum. - Use TOUPPER instead of islower/toupper. - * nm.c (main): For gettext, also set the LC_CTYPE locate facet. - * objcopy.c (main): Likewise. - * objdump.c: Include "safe-ctype.h" instead of . - (disassemble_bytes): Use ISPRINT instead of isprint. - (dump_section_stabs): Use ISDIGIT instead of isdigit. - (dump_data): Use ISPRINT instead of isprint. - (main): For gettext, also set the LC_CTYPE locate facet. - * rclex.l: Include "safe-ctype.h" instead of . - (cpp_line, handle_quotes): Use ISSPACE instead of isspace. - * rcparse.y: Include "safe-ctype.h" instead of . - Use TOUPPER instead of islower/toupper. - * readelf.c (main): For gettext, also set the LC_CTYPE locate facet. - * resrc.c: Include "safe-ctype.h" instead of . - (write_rc_accelerators): Use ISPRINT instead of isprint. - (write_rc_rcdata): Likewise. - * size.c (main): For gettext, also set the LC_CTYPE locate facet. - * srconv.c (main): Likewise. - * stabs.c: Include "safe-ctype.h" instead of . - (parse_number): Use ISDIGIT/ISUPPER/ISLOWER instead of - isdigit/isupper/islower. - (parse_stab_string, parse_stab_type, parse_stab_argtypes, - parse_stab_array_type, stab_demangle_count, stab_demangle_get_count, - stab_demangle_prefix, stab_demangle_qualified, - stab_demangle_template, stab_demangle_type, - stab_demangle_fund_type): Use ISDIGIT instead of isdigit. - * strings.c: Include "safe-ctype.h" instead of . - (isgraphic): Use ISPRINT instead of isascii/isprint. - (main): Remove HAVE_LC_MESSAGES dependency. - * sysdump.c: Include "safe-ctype.h" instead of . - (pbarray): Use ISPRINT instead of isprint. - (main): For gettext, also set the LC_CTYPE locate facet. - * windres.c: Include "safe-ctype.h" instead of . - (format_from_filename): Use ISPRINT instead of isprint. - (main): For gettext, also set the LC_CTYPE locate facet. - * winduni.c: Include "safe-ctype.h" instead of . - (unicode_print): Use ISPRINT instead of isprint. - * wrstabs.c: Include "safe-ctype.h" instead of . - (stab_variable): Use ISDIGIT instead of isdigit. - -2001-09-18 Alan Modra - - * ar.c (print_contents): Cast args of bfd_seek to the right types. - Replace bfd_read call with call to bfd_bread. - (extract_file): Likewise. - - * objdump.c (dump_section_header): Cast section->filepos to - unsigned long to suit printf format string. - * readelf.c (process_section_headers): Similarly for sh_offset. - (process_unwind): Likewise. - -2001-09-14 Nick Clifton - - * strings.c (encoding, encoding_bytes): New variables. - (long_options): Add --encoding. - (main): Accept -e and --encoding. - (get_char): New function. Read a, possibly wide, character from - the input stream. - (print_strings): Use get_char(). - (usage): Document new command line option. - * doc/binutils.texi: Document new command line option. - * NEWS: Announce new command line option. - -2001-09-12 Alexandre Oliva - - * readelf.c (guess_is_rela, dump_relocations, get_machine_name, - get_machine_flags): Added EM_M32R, EM_D10V, EM_V850, EM_D30V, - EM_MN10200, EM_MN10300, EM_FR30, EM_AVR_OLD and EM_PJ_OLD. - Removed EM_CYGNUS_ARC. - -2001-09-04 Jeffrey A Law (law@cygnus.com) - - * readelf.c: Include elf/h8 for H8 series definitions. - (guess_is_rela): H8 series if RELA. - (dump_relocations): Handle H8 series relocations. - -2001-08-31 Eric Christopher - - * readelf.c (get_machine_flags): Remove E_MIPS_MACH_MIPS32_4K. - -2001-08-29 Peter Targett - - * MAINTAINERS: Include ARC Maintainer. - -2001-08-29 Ben Elliston - - * stabs.c (stab_demangle_template): Initialise s4. - -2001-08-27 Alan Modra - - * readelf.c (dump_relocations): Recognise EM_PPC64. - -2001-08-26 Thiemo Seufer - - * readelf.c (get_machine_flags): Add detection of EF_MIPS_32BITMODE. - -2001-08-25 H.J. Lu - - * nm.c (print_width): New. - (display_rel_file): Set `print_width' according to - bfd_sprintf_vma. - (print_symbol_info_bsd): Check `print_width' instead of BFD64. - -2001-08-24 Alexandre Oliva - - * objcopy.c (use_alt_mach_code): New variable. - (OPTION_ALT_MACH_CODE): Define. - (copy_options): Added --alt-machine-code. - (copy_main): Handle it. - (copy_object): Switch to alternate machine code if requested. - * doc/binutils.texi: Document new option. - * NEWS: Likewise. - -2001-08-22 Thiemo Seufer - - * readelf.c (get_machine_flags): Add detection of EF_MIPS_UCODE. - -2001-08-21 H.J. Lu - - * readelf.c (dump_relocations): Support ELF64 on 32bit hosts. - (display_debug_info): Cast for 64bit hosts. - (display_debug_frames): Likewise. - (process_mips_specific): Likewise. - -2001-08-21 Andreas Jaeger - - * coffgrok.h: Add missing parameter for prototype of coff_grok. - - * sysdump.c: Add missing prototypes. - * srconv.c: Likewise. - * unwind-ia64.c: Likewise. - * coffdump.c: Likewise. - - * sysinfo.y: Print prototypes, include . - - * coffgrok.c: Add missing prototypes, include libiberty.h instead - of declaring xcalloc. - -2001-08-10 H.J. Lu - - * nm.c (print_value): Add one arg, bfd *. - (print_value): Replace fprintf_vma with bfd_fprintf_vma. - (print_symbol_info_bsd): Also pass `abfd' to print_value (). - (print_symbol_info_sysv): Likewise. - (print_symbol_info_posix): Likewise. - - * objdump.c (dump_section_header): Replace printf_vma with - bfd_printf_vma. - (print_section_stabs): Likewise. - (dump_bfd_header): Likewise. - (objdump_print_value): Replace sprintf_vma with - bfd_sprintf_vma. - (disassemble_bytes): Likewise. - (dump_reloc_set): Likewise. - -2001-08-10 Andreas Jaeger - - * configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes - to build warnings. - * configure: Regenerate. - -2001-08-09 Alan Modra - - * readelf.c: Add missing prototypes. - * objdump.c: Likewise. Format existing prototypes. - -2001-08-08 Alexandre Oliva - - * readelf.c (display_debug_info): Add to abbrev_offset the addend - of any RELA relocation for the abbrev_offset memory location that - refers to the .debug_abbrev section symbol. - -2001-08-07 H.J. Lu - - * readelf.c (process_file): Return 0 if OK, otherwise return 1. - (main): Return process_file (). - -2001-08-05 Philip Blundell - - * doc/binutils.texi: Use "Thumb" not "THUMB". - -2001-08-03 John Healy - - Patch suggested by Frank Eigler . - * objdump.c (disassemble_data): Fill in section member of the - disasm_info structure. - -2001-08-03 Tom Walsh - - * configure.in: Added --with-windres option. - * configure: Regenerated. - -2001-07-11 Stephane Carrez - - * doc/binutils.texi: Use @command{name} for commands; - use @option{-opt} for options; use @table @env for list of options; - remove spaces arround [ | ] in synopsis. - - * doc/Makefile.am (POD2MAN): Use 'GNU Development Tools' for the - center title. - -2001-07-31 Nick Clifton - - * objcopy.c: Fix formatting. - (section_rename): New structure. - (OPTION_RENAME_SECTION): New switch. - (copy_usage): Document new switch. - (add_section_rename): New function: Add a node to the section - rename list. - (find_section_rename): New function: Find the new name and - flags for a section. - (setup_section): Call find_section_name to determine the name - of the output section. - (copy_main): Handle OPTION_RENAME_SECTION. - * binutils.texi: Document new switch. - * NEWS: Mention new switch. - -2001-07-30 Nick Clifton - - * README: Rename bug-gnu-utils@gcc.org to bug-binutils@gcc.org. - * MAINTAINERS: Rename bug-gnu-utils@gcc.org to - bug-binutils@gcc.org. - -2001-07-28 Matthias Kramm - - * bucomm.c (list_supported_architectures): New function. - * bucomm.h (list_supported_architectures): Declare. - * objdump.c (usage): Call the above. - -2001-07-25 Dave Brolley - - * objdump.c (SKIP_ZEROES): Only define it if it is not already defined. - (SKIP_ZEROES_AT_END): Only define it if it is not already defined. - -2001-07-19 Nick Clifton - - * README: Update for 2.11. Change bug reporting email address. - * MAINTAINERS: Tidy up. Change bug reporting email address. - -2001-07-16 DJ Delorie - - * resres.c (write_res_header): Align header size. - (res_align_file): Calculate alignment correctly. - - * rcparse.y (styles): use SUBLANG_SHIFT instead of 8 (or the more - correct 10). - * resrc.c (write_rc_resource): Likewise. - * windres.h (SUBLANG_SHIFT): Define - as 10. - -2001-07-15 Nick Clifton - - * MAINTAINERS: Add Christian Groessler as maintainer for z8k port. - -2001-07-11 Nick Clifton - - * MAINTAINERS: Add notes about branch checkins. - -2001-07-05 Daniel Berlin - - * readelf.c (display_debug_macinfo): New function, display - .debug_macinfo section. - (do_debug_macinfo): New variable. - (parse_args): Handle "-w[mM]" to mean display macro info. - (process_section_headers): Handle debug_macinfo. - (debug_displays): Replace unsupported function with macinfo - function for .debug_macinfo display. - * doc/binutils.texi: Document new command line switch. - * NEWS: Document new feature of readelf. - -2001-07-05 H.J. Lu - - * objcopy.c (filter_symbols): Don't turn undefined symbols - into local. - -2001-07-03 H.J. Lu - - * doc/Makefile.am (addr2line.1): Use addr2line.pod instead of - $@.pod. - (ar.1): Likewise. - (dlltool.1): Likewise. - (nlmconv.1): Likewise. - (nm.1): Likewise. - (objcopy.1): Likewise. - (objdump.1): Likewise. - (ranlib.1): Likewise. - (readelf.1): Likewise. - (size.1): Likewise. - (strings.1): Likewise. - (strip.1): Likewise. - (windres.1): Likewise. - (cxxfilt.man): Use $(DEMANGLER_NAME).pod instead of $@.pod. - ($(DEMANGLER_NAME).1): Also substitute cxxfilt with - $(DEMANGLER_NAME). - (as.1): Removed. - * doc/Makefile.in: Regenerated. - -2001-07-03 Nick Clifton - - * MAINTAINERS: Change MIPS maintainer to Eric Christopher. - -2001-07-01 Daniel Berlin - - * readelf.c: Support DWARF 2.1 tags, encodings, languages. - -2001-06-29 James Cownie - - * readelf.c: Support DWARF 2.1 attributes. - -2001-06-28 Alan Modra - - * readelf.c (GET_DATA_ALLOC): Remove. - (GET_DATA): Remove. - (get_data): New function combining above macros, with an extra - test for zero size. - (slurp_rela_relocs): Use get_data, and catch error return. - (slurp_rel_relocs): Likewise. - (get_32bit_program_headers): Likewise. - (get_64bit_program_headers): Likewise. - (get_32bit_section_headers): Likewise. - (get_64bit_section_headers): Likewise. - (get_32bit_elf_symbols): Likewise. - (get_64bit_elf_symbols): Likewise. - (process_section_headers): Likewise. - (process_relocs): Likewise. - (slurp_ia64_unwind_table): Likewise. - (process_unwind): Likewise. - (get_32bit_dynamic_segment): Likewise. - (get_64bit_dynamic_segment): Likewise. - (process_dynamic_segment): Likewise. - (process_version_sections): Likewise. - (process_symbol_table): Likewise. - (dump_section): Likewise. - (display_debug_info): Likewise. - (display_debug_section): Likewise. - (process_section_contents): Likewise. - (process_corefile_note_segment): Likewise. - (process_mips_specific): Likewise. Also free econf32, econf64. - -2001-06-25 Alan Modra - - * readelf.c (dump_relocations): Print "bad symbol index" if - symtab == NULL with non-zero symtab_index. - (process_relocs): Don't bomb if reloc section has no symsec. - -2001-06-24 H.J. Lu - - * objcopy.c (strip_main): Revert the change made on 2001-05-30 - by accident. - (copy_main): Apply the the change made to strip_main on - 2001-05-30 by accident. - -2001-06-23 Andreas Jaeger - - * unwind-ia64.c (unw_decode_x1): Add unused attribute for - parameter 'code'. - (unw_decode_x2): Likewise. - (unw_decode_x3): Likewise. - (unw_decode_x4): Likewise. - -2001-06-23 Ben Elliston - - * MAINTAINERS: Add myself as M88k maintainer. - -2001-06-22 Jocelyn Mayer - - * objcopy.c (strip_main): Support -o or --output-file command lien - switch. - -2001-06-19 H.J. Lu - - * doc/Makefile.in: Regenerated. - -2001-06-19 Nick Clifton - - * readelf.c: Restore formatting. - -2001-06-18 H.J. Lu & Nick Clifton - - * Makefile.am: Move documentation into doc subdirectory. - * Makefile.in: Regenerated. - * binutils.texi: Move into doc subdirectory. - * addr2line.1: Removed. - * ar.1: Likewise. - * dlltool.1: Likewise. - * nlmconv.1: Likewise. - * nm.1: Likewise. - * objcopy.1: Likewise. - * objdump.1: Likewise. - * ranlib.1: Likewise. - * readelf.1: Likewise. - * size.1: Likewise. - * strings.1: Likewise. - * strip.1: Likewise. - * windres.1: Likewise. - * cxxfilt.man: Likewise. - * doc: New Directory. - * doc/Makefile.am: New file. - * doc/Makefile.in: Generate. - -2001-06-09 Alan Modra - - * NEWS: Fix a typo. Mention hppa64-elf. Add binutils-2.11 marker. - -2001-06-01 Alan Modra - - * MAINTAINERS: Update my email address. - -2001-05-30 Honda Hiroki - - * objcopy.c: Add new switches: --keep-global-symbol, - --keep-symbols, --localize-symbols, --keep-global-symbols and - --weaken-symbols. - * binutils.texi: Document new switches. - * objcopy.1: Regenerate. - * NEWS: Announce new feature. - -2001-05-28 Andreas Jaeger - - * readelf.c (display_debug_frames): Fix warnings: Remove unused - variables, fix format strings. - -2001-05-28 Nick Clifton - - * objdump.c (disassemble_bytes): Remove section VMA adjustment - when computing the address of the line to show. - -2001-05-16 Richard Henderson - - * readelf.c (do_debug_frames_interp): New. - (byte_get_little_endian): If BFD64, always read entire 8-byte fields. - (byte_get_big_endian): Likewise. - (parse_args) ['F']: Set do_debug_frames_interp. - (Frame_Chunk): Make data_factor signed, add fde_encoding. - (frame_display_row): Don't trunc pc_begin to int. - (size_of_encoded_value): New. - (display_debug_frames): Handle 64-bit targets. Print raw data - unless do_debug_frames_interp. - (debug_displays): Remove duplicate .debug_frame. - -2001-05-15 Ralf Baechle - - * readelf.c: Replace uses of EM_MIPS_RS4_BE with EM_MIPS_RS3_LE. - The former constant was never in active use and is used otherwise - by the ABI. - -2001-05-11 Jakub Jelinek - - * readelf.c (process_unwind): Print all unwind sections, not just - one. - -2001-05-07 Thiemo Seufer - - * readelf.c (process_unwind): Remove const specifier. - -2001-04-27 Michal Svec - - * strings.c (isgraphic): Do not use isascii() unless it is needed - for isprint() to work. - (main): Set the locale domain to LC_ALL not just LC_MESSAGES. - -2001-04-27 Johan Rydberg - - * NEWS: Announce support for OpenRISC. - -2001-04-17 Danny Smith - - * dlltool.c (do_default_excludes): Initialise to true. - -2001-04-10 Alan Modra - - * MAINTAINERS: Update my email address - * nm.c (print_symbol_info_bsd): Use a simple printf string. - -2001-04-05 Hans-Peter Nilsson - - * readelf.c (display_debug_lines): Fix typo for "Prologue". - -2001-03-30 H.J. Lu - - * readelf.c (process_unwind): Just return if do_unwind is 0. - -2001-03-28 Roger Sayle - - * dlltool.c (make_one_lib_file): Fix section flags for - .text, .data and .bss in stub ds*.o files to match those - generated by gas. - -2001-03-29 H.J. Lu - - * readelf.c (process_unwind): Only do unwind sections for - IA64. - -2001-03-28 H.J. Lu - - * Makefile.am ($(srcdir)/dlltool.1): Remove the extra target. - * Makefile.in: Regenerate. - -2001-03-26 Andreas Jaeger - - * binutils.texi (nm): Fix texi syntax. - -2001-03-25 Stephane Carrez - - * binutils.texi: Put @c man begin and @c man end indications - to generate man pages using texi2pod and pod2man. Put @c man title - to identify each man. Add SEEALSO entries. - * Makefile.am (MANCONF, TEXI2POD, POD2MAN): New variable. - (man_MANS): Add dlltool.1, nlmconv.1, readelf.1, windres.1, - sort the list. - (*.1): Build the man pages from binutils.texi. - * Makefile.in: Regenerate. - -2001-03-13 Eric Kohl - - * defparse.y (opt_equal_name): allow "." in name. - * dlltool.c (def_exports): Added ability to generate forwarded exports. - (gen_exp_file): Likewise. - -2001-03-12 Stefan Geuken - - * NEWS: Document addition of -B switch to objcopy. - * binutils.texi: Document addition of -B switch to objcopy. - * objcopy.c: (copy_options): Add --binary-architecture. - (copy_usage): Document -B/--binary-architecture. - (copy_main): Support -B/--binary-architecture. Set - bfd_external_binary_architecture. - -2001-03-11 Andreas Jaeger - - * readelf.c (guess_is_rela): Handle EM_S390_OLD. - (dump_relocations): Likewise. - (get_machine_name): Likewise. - -2001-02-28 Nick Clifton - - * readelf.c: (struct unw_aux_info): Remove const modifier for - 'strtab' field. - (process_unwind): Remove non-K&R compliant LHS type cast in call - to GET_DATA_ALLOC macro. - -2001-02-28 Philip Blundell - - * readelf.c (decode_ARM_machine_flags): Explicitly mention which - ABI is in use; remove ambiguity between the "unknown" EABI and - unrecognised ABIs. Handle version 2 ARM EABI. Update uses of - renamed EF_xx constants. - -2001-02-27 Alan Modra - - * configure.in (BFD_VERSION): New. - (AM_INIT_AUTOMAKE): Use $BFD_VERSION. - * configure: Regenerate. - * Makefile.am: Run "make dep-am" - * Makefile.in: Regenerate. - -2001-02-14 Nick Clifton - - * MAINTAINERS: Add "Obvious Fix" rule. - -2001-02-11 Michael Sokolov - - * unwind-ia64.c: Don't use ANSI C preprocessor stringisation and string - literal concatenation. - -2001-02-11 Michael Sokolov - - * readelf.c (struct unw_aux_info): Remove const from the info member. - (process_unwind): Don't type-cast the third argument to the - GET_DATA_ALLOC macro. - -2001-02-11 Nick Clifton - - * readelf.c (dump_relocations): Free corrected allocated - array. - (process_unwind): Fix compile time warning. - -2001-02-10 Nick Clifton - - * binutils.texi: Document new --unwind option to readelf. - -2001-02-09 Martin Schwidefsky - - * readelf.c: Add linux target for S/390. - -2001-02-10 Alan Modra - - * nm.c (print_symbol_info_bsd): Don't #ifdef inside printf in case - printf is a macro. - -2001-02-08 Hans-Peter Nilsson - - * acinclude.m4 (AM_PROG_LEX): Override installed definition. - * aclocal.m4: Regenerate. - * configure: Regenerate. - -2001-02-07 Todd Vierling - - * bucomm.c (bfd_target_vector): Change extern array to pointer. - * objdump.c (bfd_target_vector): Likewise. - -2001-02-07 David Mosberger - - * readelf.c (process_unwind): New function. - (slurp_ia64_unwind_table): Ditto. - (dump_ia64_unwind): Ditto. - (find_symbol_for_address): Ditto. - (slurp_rela_relocs): New function (split off from dump_relocations()). - (slurp_rel_relocs): Ditto. - (parse_args): Handle '-u' option. - - * unwind-ia64.c: New file. - * unwind-ia64.h: New file. - * Makefile.am: Include unwind-ia64.c in readelf build. - * Makefile.in: Regenerate. - * po/binutils.pot: Regenerate. - -2001-02-04 Philip Blundell - - * configure.in (OBJDUMP_DEFS): Match `arm*-*', not just `arm-*'. - * configure: Regenerate. - -2001-01-31 Steve deRosier - - * ieee.c (ieee_add_bb11): Don't check for backslashes - unless HAVE_DOS_BASED_FILE_SYSTEM is defined. - -2001-01-24 Mark Elbrecht - - * ieee.c: Update copyright. - (ieee_start_compilation_unit): Don't check for backslashes - unless HAVE_DOS_BASED_FILE_SYSTEM is defined. - - * stabs.c: Update copyright. Include "filenames.h". - (parse_stab): Use IS_ABSOLUTE_PATH. Ignore N_WARNING stabs. - -2001-01-23 Jakub Jelinek - - * readelf.c (process_version_sections): Check if VERDEF or VERNEED - sections are present before using them. Remove code duplication. - (process_symbol_table): Check if VERDEF or VERNEED sections are - present before using them. - -2001-01-17 Nick Clifton - - * objcopy.c (copy_object): Fail if attempting to convert the - endianness of the input object file. - - * binutils.texi: Explain that objcopy cannot convert endianness. - -2001-01-16 Nick Clifton - - * readelf.c (string_table_length): New variable. - (SECTION_NAME): Catch out of range indices and missing section - pointers. - (process_section_headers): Delete useless local variable - string_table_offset. Set the value of string_table_length - after loading the string table. - (process_mips_specific): Use SECTION_NAME macro. - (process_file): Set string_table_length to 0 when it is freed. - -2001-01-12 Nick Clifton - - * version.c (print_version): Update copyright date. - -2001-01-11 Peter Targett - - * readelf.c (dump_relocations): Include selection with EM_ARC. - (get_machine_name) Update name to "ARC". - -2001-01-09 Nick Clifton - - * Makefile.am: Add rule to build objdump.o from objdump.c and - using OBJDUMP_DEFS. - * Makefile.in: Regenerate. - - * configure.in: Define OBJDUMP_DEFS. Default to empty. - (arm, xscale, d10v): For these targets define OBJDUMP_DEFS to - -DDISASSEMBLER_NEEDS_RELOCS. - * configure: Regenerate. - - * objdump.c (disassemble_bytes): If DISASSEMBLER_NEEDS_RELOCS - is defined read in the relocs even if dump_reloc_info is - false. - -2001-01-07 Philip Blundell - - * binutils.texi (Bug Reporting): Replace `bug-gnu-utils' with - `bug-binutils'. - * README: Likewise. - -2000-12-19 Nick Clifton - - * dlltool.c: Add missing support for arm-epoc-pe. - * configure.in: Add missing support for arm-epoc-pe. - * configure: Regenerate. - -2000-12-15 Nick Clifton - - * MAINTAINERS: Add Diego Novillo as a maintainer for the Intel - Mode parts of the x86 port. - -2000-12-04 Andreas Jaeger - - * readelf.c (guess_is_rela): Add EM_X86_64. - (dump_relocations): Add EM_X86_64. - (get_machine_name): Add EM_X86_64. - Include "elf/x86-64.h". - -2000-12-12 Nick Clifton - - * readelf.c: Fix formatting. - -2000-12-11 Jan Hubicka - - * MAINTAINERS: Add myself and Andreas Jaeger as x86_64 maintainer. - -2000-12-07 Andrew Haley - - * readelf.c (display_debug_frames): Only display columns that are - referenced by the frame debug info. - -2000-12-05 Nick Clifton - - * MAINTAINERS: Add Jason Merrill as DWARF2 maintainer. - -2000-12-04 Jason Merrill - - * readelf.c (process_section_headers): Handle linkonce.wi sections. - (display_debug_section): Likewise. - (display_debug_info): Display CU header before bailing. - -2000-12-01 Chris Demetriou - - * readelf.c (get_machine_flags): Recognize MIPS32 ISA in - EF_MIPS_ARCH. Replace use of E_MIPS_MACH_MIPS32 with - E_MIPS_MACH_MIPS32_4K and adjust printed CPU name similarly. - - * readelf.c (get_machine_flags): Add cases for E_MIPS_ARCH_5, - and E_MIPS_ARCH_64. - - * readelf.c (get_machine_flags): Add case for - E_MIPS_MACH_SB1. - -2000-11-30 Richard Earnshaw - - * readelf.c (frame_display_row): Output 's' for DW_CFA_same_value. - -2000-11-28 Hans-Peter Nilsson - - * MAINTAINERS: Add Jörn Rennecke and self as SH maintainers. - Change sourceware.cygnus.com to sources.redhat.com. - Fix typo for "amongst". - -2000-11-28 Nick Clifton - - * strip.1 (COPYING): Mention that the GNU Free Documentation - License is present in the sources, but not the output, and - also available from the GNU website. - (GNU Free Documentation License): Comment out this section. - * strings.1: Ditto. - * size.1: Ditto. - * ranlib.1: Ditto. - * objdump.1: Ditto. - * objcopy.1: Ditto. - * nm.1: Ditto. - * nlmconv.1: Ditto. - * ar.1: Ditto. - * addr2line.1: Ditto. - -2000-11-27 DJ Delorie - - * readelf.c (usage): Add -wf (--debug-dump=frames) option. - (parse_args): Support -wf option. - (process_section_headers): Ditto. - (debug_displays): Ditto. - (display_debug_frames): New, dump *_frame sections. - (frame_need_space): Support for above. - (frame_display_row): Ditto. - * binutils.texi: Document it. - -2000-11-24 Nick Clifton - - * NEWS: Announce support for v5t, v5te and XScale. - -2000-11-22 Nick Clifton - - * readelf.c (get_machine_name): Add EM_JAVELIN, EM_FIREPATH, - EM_ZSP, EM_MMIX, EM_HUANY, EM_PRISM. - (get_section_type_name): Add SHT_GROUP and SHT_SYMTAB_SHNDX. - (get_elf_section_flags: Add SHF_GROUP. - (process_section_headers): Adjust output for 32-bit binaries - to look nice on an 80 column terminal. - -2000-11-20 H.J. Lu - - * readelf.c (get_osabi_name): Change ELFOSABI_MONTEREY to - ELFOSABI_AIX. - -2000-11-17 Richard Henderson - - * readelf.c (display_debug_lines): Adjust last change to - use sizeof (external->li_length). - -2000-11-17 Richard Henderson - - * readelf.c (display_debug_lines): Fix section length check - and end_of_sequence computation. - -2000-11-06 Nick Clifton - - * binutils.texi: Add GNU Free Documentation License. - * objcopy.1: Add GNU Free Documentation License. - * objdump.1: Add GNU Free Documentation License. - * addr2line.1: Add GNU Free Documentation License. - * ar.1: Add GNU Free Documentation License. - * nlmconv.1: Add GNU Free Documentation License. - * nm.1: Add GNU Free Documentation License. - * ranlib.1: Add GNU Free Documentation License. - * size.1: Add GNU Free Documentation License. - * strings.1: Add GNU Free Documentation License. - * strip.1: Add GNU Free Documentation License. - -2000-10-06 Luciano Gemme - - * objcopy.c (--srec-len=nn): New parameter to set the - maximum length of generated Srecords. - (--srec-forceS3): New parameter that restricts the generation of - Srecords to type S3 only. - * binutils.texi: Document new command line switches. - * objcopy.1: Docuemnt the new command line switches. - * NEWS: Announce the existence of the new command line switches. - -2000-10-31 Nick Clifton - - * MAINTAINERS: Add Jim Wilson as the maintainer for the IA64 - code. Add Eric Chrisopher as maintainer of MN10300 port. - -2000-10-12 Roger Sayle - - * Make comma after string after icon/control optional. - -2000-09-13 Anders Norlander - - * readelf.c (get_machine_flags): Also print EF_MIPS_MACH field. - - * NEWS: Mention support for MIPS32. - -2000-09-08 Nick Clifton - - * MAINTAINERS: Add Stephane Carrez as maintainer for 68HC[11|12]. - -2000-09-07 H.J. Lu - - * configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM. - * configure: Rebuild. - -2000-09-06 Alexandre Oliva - - * configure: Rebuilt with new libtool.m4. - -2000-09-05 Nick Clifton - - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - -2000-09-04 Todd Vierling - - * strip.1: Fix stray '\' in -o formatting. - -2000-09-02 Nick Clifton - - * configure.in: Increase version number to 2.10.91. - * configure: Regenerate. - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * po/binutils.pot: Regenerate. - -2000-08-31 Alexandre Oliva - - * acinclude.m4: Include libtool and gettext macros from the - top level. - * aclocal.m4, configure: Rebuilt. - -2000-08-30 Jamie Guinan - - * resrc.c (close_input_stream): Delete extraneous logic - -2000-08-24 Hans-Peter Nilsson - - * NEWS: Mention support for CRIS. - -2000-08-21 Nick Clifton - - * addr2line.c: Changed email address for Ulrich Lauther. - -2000-08-17 Christopher C. Chimelis - - * objdump.c (LONGEST_ARCH): Set to sizeof("powerpc:common"). - -2000-08-17 Nick Clifton - - * readelf.c (display_debug_pubnames): Only issue warning - message once. Terminate message with a new line. - (display_debug_aranges): Only display version 2 debug info. - -2000-08-14 Todd Vierling - - * objcopy.c (strip_main): Silently accept -d as an alias for -g - for compatibility with old BSD systems. - -2000-08-14 Jason Eckhardt - - * NEWS: Mention i860 support. - -2000-08-11 Carlo Wood - - * addr2line.c (main): Add const to char *. - -2000-08-11 Geoff Keating - - * ar.c (main): Don't crash if called with no arguments - or only '-X32_64' as an argument. - -2000-08-08 DJ Delorie - - * resrc.c: use "gcc -xc" instead of -xc-header - -2000-08-05 Jason Eckhardt - - * readelf.c (elf/i860.h): Include. - (dump_relocations): Add recognition of i860 architecture. - (guess_is_rela): Add recognition of i860 architecture. - -2000-08-03 Nick Clifton - - * MAINTAINERS: Add information about CGEN maintainers. - -2000-07-26 Geoff Keating - - * nm.c (main): Ignore '-X32_64' as an option. - * ar.c (main): Likewise. - * binutils.texi (nm): Document new option. - (ar): Likewise. - -2000-07-23 Michael Sokolov - - * rdcoff.c (external_coff_symbol_p): K&R-ise. - -2000-07-20 H.J. Lu - - * binutils.texi: Put back "@end table" deleted by - accident. - -2000-07-05 Kenneth Block - - * nm.c: Add optional style to demangle switch. - * objdump.c: Add optional style to demangle switch. - * addr2line.c: Add optional style to demangle switch. - * binutils.texi: Document optional style to demangle - switch. - -2000-07-20 Hans-Peter Nilsson - - * MAINTAINERS: Add self as CRIS port maintainer. - * readelf.c: Include elf/cris.h. - (guess_is_rela): Handle EM_CRIS. - (dump_relocations): Ditto. - (get_machine_name): Ditto. - * Makefile.am: Rebuild dependencies. - * Makefile.in: Regenerate. - * po/binutils.pot: Regenerate. - -2000-07-19 H.J. Lu - - * readelf.c (get_dynamic_type): Change "AUXILARY" to - "AUXILIARY". - (process_dynamic_segment): Print out strings for DT_CONFIG, - DT_DEPAUDIT, DT_AUDIT and DT_RUNPATH. - -2000-07-19 Mark Kettenis - - * nm.c (usage): Change output of `nm --help' to include a - description of the purpose of the program and a detailed - description of the accepted options. - -2000-07-19 H.J. Lu - - * readelf.c (process_dynamic_segment): Change DF_1_NODEPLIB - to DF_1_NODEFLIB. - -2000-07-19 H.J. Lu - - * readelf.c (get_dynamic_type): Fix DT_CHECKSUM. - -2000-07-19 H.J. Lu - - * readelf.c (get_dynamic_type): Change DT_FEATURE_1 to - DT_FEATURE. - (process_dynamic_segment): Likewise. - - * readelf.c (get_dynamic_type): Handle DT_CONFIG, DT_DEPAUDIT, - DT_AUDIT, DT_PLTPAD, DT_MOVETAB and DT_CHECKSUM. - (process_dynamic_segment): Handle DTF_1_CONFEXP, DF_1_NODEPLIB, - DF_1_NODUMP and DF_1_CONLFAT. - -2000-07-18 Nick Clifton - - * binutils.texi (readelf): Fix spelling typo. - -2000-07-11 Mark Kettenis - - * objdump.c (usage): Make output of `objdump --help' more - consistent with the rest of the GNU world. Add a line describing - the purpose of the program. - -2000-07-10 David Huggins-Daines - - * stabs.c (parse_stab_range_type): Cast to proper type to fix - warning. - -2000-07-10 Ryan Bradetich - - * readelf.c (get_dynamic_data): Add casts and use unsigned chars - to fix warnings. - (process_symbol_table): Ditto. - (procesS_extended_line_op): Ditto. - (display_debug_lines): Ditto. - (display_debug_pubnames): Ditto. - (read_and_display_attr): Ditto. - -2000-07-09 Nick Clifton - - * MAINTAINERS: Add several more port specific maintainers. - -2000-07-05 Nick Clifton - - * MAINTAINERS: Add blanket write privs for Michael Meissner. - -2000-06-05 DJ Delorie - - * MAINTAINERS: New. - -2000-07-01 Eric Fifer - - * dllwrap.c: Changed mistaken dyn_string_append() calls - to dyn_string_append_cstr(). - -2000-07-01 Alexander Aganichev - - * stabs.c (parse_stab_type): Divide size in bits by 8 as binutils - struct debug_type stores size in bytes. - -2000-07-01 Alan Modra - - * Makefile.am (DEP): Fix 2000-06-22. grep after running dep.sed - (CLEANFILES): Add DEPA. - * Makefile.in: Regenerate. - -2000-06-27 Alan Modra - - * ar.c: Revert incorrect 2000-06-25 patch. - * bucomm.c: Likewise. - -2000-06-25 Mark Elbrecht - - * rdcoff (parse_coff_symbol): Treat GNU weak symbols as external. - (external_coff_symbol_p): New function. - (parse_coff): Use it. - -2000-06-25 Alexander Aganichev - - * ar.c (normalize): Advance past both characters in a DOS based - : filepath prefix. - (main): Likewise. - * bucomm.c (make_tempname): Likewise. - -2000-06-24 Nick Clifton - - * objdump.c (usage): Fix description of --stabs switch. - -2000-06-22 Alan Modra - - * Makefile.am (DEP): grep for leading `/' in DEP1, and fail if we - find one. - * Makefile.in: Regenerate. - -2000-06-20 Alexander Aganichev - - * ar.c (normalize): Correct pointer comparison when checking for - backslashes. - (main): Likewise. - * bucomm.c (make_tempname): Likewise. - - * ieee.c (ieee_start_compilation_unit): Correct pointer comparison - and search for backslashes in the original pathname. - (ieee_add_bb11): Likewise. - -2000-06-18 Nick Clifton - - * ar.c (print_contents): Improve verbose message. - -2000-06-15 H.J. Lu - - * dyn-string.c: Removed. Not needed with dyn-string.c in - libiberty. - * dyn-string.h: Likewise. - - * Makefile.am: Remove references to dyn-string.c and - dyn-string.h. Rebuild dependency. - * Makefile.in: Rebuild. - -2000-06-15 H.J. Lu - - * binutils.texi: Put a warning on copying relocatable object - files between two different formats. - -2000-06-13 DJ Delorie - - * rcparse.y (control): ICON controls take an id as the first - parameter, not an optional string. Also, call new convenience - function that takes res_id's. - * resrc.c (define_control): missing text means zero-length string, - not zero ID. - (define_icon_control): New. - * windres.h: declare define_icon_control. - -2000-06-13 H.J. Lu - - * configure: Regenerate. - -2000-06-08 David O'Brien - - * configure.in (VERSION): Update to show this is the CVS mainline. - -2000-06-02 David O'Brien - - * strings.c (isgraphic): Interpret as a printable character, - analogous to . - -2000-05-30 Alan Modra - - * objdump.c (display_target_list): Use bfd_close_all_done, not - bfd_close to fix crash caused by 2000-05-24 change. - -2000-05-25 DJ Delorie - - * resrc.c (close_input_stream): zero out cpp_pipe after closing it. - -2000-05-26 Alan Modra - - * Makefile.am: Update dependencies with "make dep-am" - * Makefile.in: Regenerate. - -2000-05-26 Eli Zaretskii - - * ar.c: Include filenames.h. - (normalize) [HAVE_DOS_BASED_FILE_SYSTEM]: Support backslashes - and drive letters in file names. - (main): Support backslashes and drive letters in argv[0]. Drop - the .exe suffix, if any, in argv[0] if is_ranlib is negative. Use - FILENAME_CMP instead of strcmp to compare file names. - (open_inarch) [__GO32__]: Don't ifdef errno != ENOENT test for - DJGPP v2. - (do_quick_append) [__GO32__]: Ditto. - (get_pos_bfd, delete_members, move_members, replace_members): - Compare file names with FILENAME_CMP. - - * bucomm.c: Include filenames.h. - (make_tempname) [HAVE_DOS_BASED_FILE_SYSTEM]: Support mixed - forward/backward slashes and drive letters in file names. - - * ieee.c (ieee_start_compilation_unit, ieee_add_bb11): Support - mixed forward/backward slashes and drive letters in file names. - - * strings.c (O_BINARY, setmode, SET_BINARY): Define. - (main) [SET_BINARY]: Use SET_BINARY to switch stdin into binary - mode. - - * objcopy.c: Include filenames.h. - (main) [HAVE_DOS_BASED_FILE_SYSTEM]: Drop the .exe suffix - before comparing to "strip". - Use FILENAME_CMP to compare file names. - - * arsup.c: Include filenames.h. - (map_over_list, ar_delete, ar_replace, ar_extract): Use - FILENAME_CMP to compare file names. - (ar_open): Prepend "tmp-" instead of appending "-tmp", to create - the temporary file name. - - * configure.in: Check for setmode. - * configure: Regenerate. - -2000-05-24 Alan Modra - - * objdump.c (display_target_list): Close the bfd. - (display_info_table): Likewise. - -2000-05-14 H.J. Lu (hjl@gnu.org) - - * objcopy.c (filter_symbols): Don't strip global symbols in - relocatable object files. - -2000-05-14 Alan Modra - - * size.c (usage): Associate short options with corresponding long - option to give a clue as to their function. - -2000-05-14 Philippe De Muyter - - * size.c (main): Accept and ignore `-f' option. - -2000-05-13 Alan Modra - - * bucomm.h (gettext, dgettext, dcgettext, textdomain, - bindtextdomain): Replace defines with those from intl/libgettext.h - to quieten gcc warnings. - -2000-05-12 H.J. Lu - - * nlmconv.c (temp_filename): Removed. - - * nlmconv.c (link_inputs): Use make_temp_file () instead of - choose_temp_base (). - * objdump.c (display_target_list): Likewise. - (display_info_table): Likewise. - -2000-05-08 Alan Modra - - * objcopy.c (setup_section): Add const and gettext calls for err. - -2000-05-02 H.J. Lu - - * readelf.c (get_osabi_name): Handle ELFOSABI_NONE instead of - ELFOSABI_SYSV. Also handle ELFOSABI_NETBSD, ELFOSABI_HURD, - ELFOSABI_SOLARIS, ELFOSABI_MONTEREY, ELFOSABI_IRIX, - ELFOSABI_FREEBSD, ELFOSABI_TRU64, ELFOSABI_MODESTO - and ELFOSABI_OPENBSD. - -2000-05-02 Kazu Hirata - - * coffgrok.c: Add ATTRIBUTE_UNUSED as appropriate. - * srconv.c: Likewise. - * sysdump.c: Likewise. - -2000-04-23 Denis Chertykov - - * readelf.c (guess_is_rela): AVR uses RELA relocations. - (get_machine_name): machine name for EM_AVR added. - -2000-04-21 Richard Henderson - David Mosberger - - * Makefile.am (readelf.o): Add elf/ia64.h. - * Makefile.in: Rebuild. - * readelf.c: Include elf/ia64.h. - (guess_is_rela, dump_relocations): Handle EM_IA_64. - -2000-04-17 Timothy Wall - - * objdump.c (disassemble_data): Set octets per byte *after* - resolving arch/mach for binary files. - -2000-04-14 Michael Sokolov - - * arlex.l: Add directives to increase lex buffer size. - - * objdump.c, readelf.c: Don't include strarg.h or varargs.h. They are - already included by bucomm.h. - -2000-04-10 Philippe De Muyter - - * readelf.c (dynamic_segment_mips_val): Call `sprintf', not - `strftime' since strftime is not available on all systems. - (process_mips_specific): Ditto. - -2000-04-07 Andrew Cagney - - * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add - --enable-build-warnings option. - * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions. - * Makefile.in, configure: Re-generate. - -2000-04-06 Alan Modra - - * addr2line.c: Update copyright. - * objcopy.1: Likewise, and title. - * strings.1: Likewise. - - * version.c (print_version): Add 2000. - - * rddbg.c (read_section_stabs_debugging_info): Don't use - bfd_size_type for strx to avoid printf problems if BFD64. - - * bucomm.c: (report): Remove `static'. - Move inclusion of stdarg.h/vararg.h from here. - * bucomm.h: To here. - (CONST): Change all occurences to const. - (report): Declare it. - (bfd_fatal): Add ATTRIBUTE_NORETURN. - (fatal): Add ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN. - (non_fatal): Add ATTRIBUTE_PRINTF_1. - - * ar.c (main): Use fatal or non_fatal instead of fprintf. - Correct a typo in an error message. - (do_quick_append): Use non_fatal instead of fprintf. - (move_members): Use fatal instead of fprintf, exit. - * coffdump.c (main): Same here. - - * dlltool.c (display): Delete. - (warn): Delete. - (inform): Use `report' instead of `display'. - (rvaafter): Remove trailing \n from fatal error msg. - (rvabefore): Ditto. - (asm_prefix): Ditto. - (yyerror): Replace `warn' with `non_fatal', and remove \n. - (def_name): Likewise. - (run): Likewise. - (scan_all_symbols): Likewise. - (gen_lib_file): Likewise. - (def_library): Likewise. Remove extra program_name too. - (run): Remove \n from inform strings. - (scan_drectve_symbols): Likewise. - (add_excludes): Likewise. - (scan_open_obj_file): Likewise. - (gen_exp_file): Likewise. - (gen_lib_file): Likewise. - (process_duplicates): Likewise. - - * Makefile.am (dllwrap_SOURCES): Add version.c. - * dllwrap.c (program_version): Delete. - (print_version): Delete. - (display): Always print trailing \n. - (warn): New. - (delete_temp_files): Use warn instead of fprintf. Use gettext. - (run): Here too. - (main): And here. - (usage): gettext'ify. - (long_options): Add missing initialisers. - - * nlmconv.c (main): Use fatal/non_fatal instead of fprintf. - (select_output_format): Likewise. - (powerpc_mangle_relocs): Likewise. - (link_inputs): Likewise. - - * nm.c (set_print_radix): Use fatal instead of fprintf, exit. - (set_output_format): Likewise. - (main): Use non_fatal instead of fprintf. - (display_rel_file): Likewise. - - * objdump.c (slurp_symtab): Use non_fatal instead of fprintf. - (slurp_dynamic_symtab): Same here. - (disassemble_data): And here. - (read_section_stabs): And here. - (read_section_stabs): And here. - (dump_bfd): And here. - (main): And here. - (objdump_sprintf): Use fatal instead of fprintf, exit. - (disassemble_data): Same here. - - * rdcoff.c (parse_coff_type): Use non_fatal instead of fprintf. - (parse_coff_struct_type): Same here. - (parse_coff_enum_type): And here. - (parse_coff): And here. - * rddbg.c (read_debugging_info): And here. - * size.c (main): And here. - * windres.c (format_from_name): And here. - * wrstabs.c (stab_write_symbol): Here too. - (write_stabs_in_sections_debugging_info): And here. - (stab_int_type): And here. - (stab_struct_field): And here. - (stab_typdef): And here. - - * rescoff.c (read_coff_rsrc): Use fatal instead of fprintf, exit. - * srconv.c (main): Same here. - * strings.c (main): And here. - (integer_arg): And here. - * sysdump.c (main): And here. - -2000-04-06 Timothy Wall - - * objdump.c (dump_section_header): Print CLINK and BLOCK flags. - -2000-04-06 Jason Merrill - - * readelf.c (decode_location_expression): Loop through multiple - operations. - (read_and_display_attr): Pass in length. - - * readelf.c (read_and_display_attr): Add CU offset to references. - (display_debug_info): Pass it in. - -2000-04-06 Nick Clifton - - * readelf.c (decode_ARM_machine_flags): New function. - (get_machine_flags): Call decode_ARM_machine_flags for ARM - targets. - - (get_machine_name): Catch EM_AVR - -2000-04-05 Alan Modra - - * binutils.texi: Remove optional `=' from long options that have - an `=' in the argument. - * objcopy.1: Here too. Remove extra space on discard-all. - - * binutils.texi (objcopy): Mention --redefine-sym. - * objcopy.1: Here too. - * NEWS: And here. - - * objcopy.c (parse_flags): Split off flag names from error message - gettext as they are not translated. - (copy_main): Similarly split off option name for --add-section, - --set-section-flags, --change-section-vma, --change-section-lma - error messages. - Some white space changes. - - from Matthew Benjamin - * objcopy.c (struct redefine_node): New. - (redefine_sym_list): New. - (redefine_list_append): New. - (lookup_sym_redefinition): New. - (OPTION_REDEFINE_SYM): New. - (copy_options): Add --redefine-sym option. - (copy_usage): Mention it. - (filter_symbols): Rename symbols on redefine_sym_list. - (copy_object): Call filter_symbols if redefine_sym_list != NULL. - (copy_main): Handle OPTION_REDEFINE_SYM. - -2000-04-04 H.J. Lu - - * readelf.c (process_symbol_table): Correctly read in symbol - versioning information. - -2000-04-04 Alan Modra - - * po/binutils.pot: Regenerate. - - * addr2line.c (usage): Restore translated part of bug string. - * ar.c (usage): Likewise. - * nlmconv.c (show_usage): Likewise. - * nm.c (usage): Likewise. - * objcopy.c (copy_usage): Likewise. - (strip_usage): Likewise. - * objdump.c (usage): Likewise. - * readelf.c (usage): Likewise. - * size.c (usage): Likewise. - * strings.c (usage): Likewise. - * windres.c (usage): Likewise. - - * Makefile.am (MKDEP): Use gcc -MM rather than mkdep. - (DEP): Quote when passing vars to sub-make. Add warning - message to end. - (DEP1): Rewrite for "gcc -MM". - (CLEANFILES): Add DEP2. - Update dependencies. - * Makefile.in: Regenerate. - -2000-04-04 H.J. Lu - - * Makefile.am (GENERATED_HFILES): Add rcparse.h - (arparse.h): Depend on arparse.c - (defparse.h, nlmheader.h, rcparse.h, sysinfo.h): Similarly. - -2000-04-03 H.J. Lu (hjl@gnu.org) - - * size.c (usage): Use REPORT_BUGS_TO. - -2000-04-03 Alan Modra - - * bucomm.h: #include "bin-bugs.h" - * addr2line.c (usage): Use REPORT_BUGS_TO. - * ar.c (usage): Likewise. - * nlmconv.c (show_usage): Likewise. - * nm.c (usage): Likewise. - (OPTION_TARGET): Define. - (long_options): Use OPTION_TARGET rather than 200. - (main): Likewise. - - * objcopy.c (copy_usage): Use REPORT_BUGS_TO. - (strip_usage): Likewise. - * objdump.c (usage): Likewise. - * readelf.c (usage): Likewise. - * strings.c (usage): Likewise. - * windres.c (usage): Likewise. - -2000-03-31 John David Anglin - - * readelf.c: Include sys/types.h before sys/stat.h for ultrix. - -2000-03-27 Nick Clifton - - * rddbg.c (read_section_stabs_debugging_info): Catch out of range - string offsets in corrupt stabs entries. - -2000-03-27 Alan Modra - - * readelf.c: Include elf/avr.h - (dump_relocations): Add EM_AVR case. - -2000-03-09 Tim Waugh - - * strings.1: Correct '-bytes' to '--bytes'. - -2000-03-08 H.J. Lu - - * Makefile.am (install-exec-local): Depend on - install-binPROGRAMS for parallel make. - * Makefile.in: Regenerated. - -2000-02-27 Ian Lance Taylor - - From Brad Lucier : - * readelf.c (process_dynamic_segment): Add cast to make sure - argument to %* is int. - -2000-02-25 H.J. Lu - - * configure.in (AC_SEARCH_LIBS): Pass m, not -lm. + * readelf.c (find_section): New function. Locates a named + section. + (get_debug_line_pointer_sizes): New function: Initialises the + debug_line_pointer_sizes array. + (display_debug_lines): Call get_debug_line_pointer_sizes. + (display_debug_loc): Likewise. + (load_debug_loc): Use find_section. + (load_debug_str): Likewise. + (display_debug_info): Likewise. + (prescan_debug_info): Delete. + (debug_displays): Remove prescan field. + (process_section_contents): Do not perform prescans. + +2004-01-03 Alan Modra + + * objcopy.c (filter_bytes): Delete. Move code to.. + (copy_section): ..here. Simplify size adjustment. Divide + section lma by interleave. -2000-02-24 Nick Clifton +2004-01-02 Nick Clifton - * configure.in: Add arm-wince, mips-pe and sh-pe targets. + * po/ru.po: New file: Russian translation. + * configure.in (ALL_LINGUAS): Add ru * configure: Regenerate. - * dlltool.c: Add support for sh-pe and mips-pe targets. - * rescoff.c: Add support for sh-pe and mips-pe targets. - -2000-02-23 H.J. Lu - - * readelf.c (get_osabi_name): Handle ELFOSABI_LINUX. - -2000-02-22 Nick Clifton - - * readelf.c (process_symbol_table): Remove use of ELF_ST_OTHER. - -2000-02-22 Ian Lance Taylor - - From Brad Lucier : - * readelf.c (process_version_sections): Add casts to make sure - argument to %* is an int. - (process_mips_specific): Add casts to make printf arguments match - format. - -2000-02-21 Alan Modra - - * objdump.c (dump_section_header): Change `opb' to unsigned. - (find_symbol_for_address): Same here. - (disassemble_data): And here. Change `addr_offset', - `stop_offset', `nextstop_offset' to unsigned long. - (dump_data): Change opb to unsigned. - -2000-02-18 Frank Ch. Eigler - - * resrc.c: Remove unmatched #if for cygwin. - -2000-02-14 Fernando Nasser - - * binutils.texi: Document the change of flavor name from atpcs-special - to special-atpcs to prevent name conflict in gdb. - -2000-02-08 Timothy Wall - - * objdump.c (show_line): Fix bug preventing printing of the very - first line (line zero) of a file when interlisting source and - assembly. Added option to print entire context from start of file - when the first line from that file is encountered. - -2000-02-03 Timothy Wall - - * objdump.c (dump_section_header, find_symbol_for_address, - show_line, disassemble_bytes, disassemble_data, dump_data): - distinguish between octets and bytes. - -2000-01-27 Thomas de Lellis - - * nm.c (print_symbol_info_bsd): Use bfd_is_undefined_symclass to - check to unresolved symbols. - (print_symbol_info_sysv): Ditto. - (print_symbol_info_posix): Ditto. - - * binutils.texi: Document new 'V' symclass flag for nm. - -2000-01-27 Nick Clifton - - * binutils.texi (objdump): Document new ARM specific - disassembler options. - - * objdump.c (usage): Call disassembler_usage(). - -2000-01-27 Alan Modra - - * readelf.c (get_dynamic_flags): Return buff. - (process_dynamic_segment): Don't pass error strings to printf - as format arg. - (read_and_display_attr): Use lx and ld to print longs. - (process_corefile_note_segment): Cast bfd_vma to unsigned long - before printing. - Update copyright. - -2000-01-17 Nick Clifton - - * readelf.c (get_osabi_name): Recognise ELFOSABI_ARM. - -2000-01-15 Alan Modra - - * debug.c (debug_name_type): Return DEBUG_TYPE_NULL rather than - false. - (debug_tag_type): Here too. - * ieee.c (ieee_builtin_type): And here. - * stabs.c (parse_stab_type, parse_stab_array_type): And here. - -2000-01-13 Nick Clifton - - * readelf.c (get_machine_name): Change EM_S370 to return "IBM - System/370". - -2000-01-11 Nick Clifton - - * readelf.c (get_dynamic_type): Remove DT_ENCODING. - -2000-01-10 Nick Clifton - - * readelf.c (get_note_type): Display NT_WIN32PSTATUS notes. - -2000-01-07 Mumit Khan - - * windres.c (long_options): Add --use-temp-file and - --no-use-temp-file options. - (usage): Document. - (main): Handle. - - * windres.h: Update read_rc_file prototype. - - * resrc.c (cpp_temp_file): New static variable. - (istream_type): New static variable. - (close_pipe): Delete function. - (run_cmd): New static function. - (open_input_stream): New static function. - (close_input_stream): New static function. - (look_for_default): Handle DOS directory separator. Use - open_input_stream instead of popen. - (read_rc_file): Likewise. - - * binutils.texi: Document --use-temp-file, --no-use-temp-file - options. - -2000-01-04 Mumit Khan - - * dlltool.c (create_compat_implib): New variable. - (gen_exp_file): Use. - (make_one_lib_file): Use. - (long_options): Add --compat-implib option. - (usage): Handle. - (main): Handle. - - * dllwrap.c (enum target_type): Rename MINGW32_TARGET to MINGW_TARGET. - (main): Use. Don't look for "32" in cygwin and mingw target names. - -2000-01-03 Nick Clifton - - * binutils.texi: Document new, ARM specific disassembler - command line switch "-M force-thumb". - -For older changes see ChangeLog-9899 +For older changes see ChangeLog-0203 Local Variables: mode: change-log diff -uprN binutils-2.14.90.0.7/binutils/ChangeLog-0001 binutils-2.14.90.0.8/binutils/ChangeLog-0001 --- binutils-2.14.90.0.7/binutils/ChangeLog-0001 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/ChangeLog-0001 2004-01-14 13:07:44.000000000 -0800 @@ -0,0 +1,2060 @@ +2001-12-20 Julian v. Bock + + * readelf.c (print_symbol): New function: Print a formatted symbol + name. If --wide is specified do not truncate it. + (dump_relocations): Use print_symbol() to print symbol names. + (process_symbol_table): Likewise. + (process_syminfo): Likewise. + (process_mips_specific): Likewise. + (usage): Document new feature of --wide switch. + * doc/binutils.texi (objdump): Document additional behaviour of + --wide. + +2001-12-18 Michael Snyder + + * objcopy.c (copy_file): Accept corefiles (format bfd_core). + (copy_object): Don't set the start address or flags of a core file. + (copy_section): Don't relocate a core file. Don't copy contents + if the input section has the contents flag set, but the output + section does not (which happens with the fake 'note' pseudo- + sections that BFD creates for corefiles). + +2001-12-18 Thiemo Seufer + + * readelf.c (get_machine_flags): Recognize header flags for ABI and + ASE extensions. More robust code for ISA checking. Ignore empty fields + in header flags for GNU extensions. + +2001-12-18 Alan Modra + + * objcopy.c (copy_archive): Set output bfd format outside the loop. + +2001-12-18 Nick Clifton + + * po/ja.po: Import from translation project. + * configure.in (ALL_LINGUAS): Add ja. + * configure: Regenerate. + +2001-12-18 Thiemo Seufer + + * addr2line.c (main): Protoype. + * ar.c (main): Protoype. + * nm.c (main): Protoype. + * objcopy.c (main): Protoype. + * objdump.c (main): Protoype. + * size.c (main): Protoype. + * strings.c (main): Protoype. + +2001-12-17 Alan Modra + + * readelf.c (symtab_shndx_hdr): New global. + (SECTION_HEADER_INDEX): Define. + (SECTION_HEADER_NUM): Define. + (SECTION_HEADER): Define. + (GET_ELF_SYMBOLS): Pass two params rather than three. + (get_32bit_elf_symbols): Take file and section args. Read and + use SHT_SYMTAB_SHNDX. + (get_64bit_elf_symbols): Likewise. + (dump_relocations): Use SECTION_HEADER to index "section_headers". + (process_section_headers): Likewise. Use SECTION_HEADER_NUM too. + Remember symtab_shdx_hdr. + (process_program_headers): Scan from index 1 for segment map. + (slurp_ia64_unwind_table): Use SECTION_HEADER to index + "section_headers". + (process_relocs): Likewise. Also adjust call to GET_ELF_SYMBOLS. + (process_unwind): Likewise. + (process_version_sections): Likewise. + (process_symbol_table): Likewise. + (display_debug_info): Likewise. + (process_dynamic_segment): Fake up a symtab section for changed + GET_ELF_SYMBOLS. + (get_symbol_index_type): Check SHN_LOOS before SHN_LORESERVE. + (process_program_headers): Kill signed/unsigned warning. + (load_debug_str): Likewise. + (display_debug_info): Likewise. + +2001-12-13 Jakub Jelinek + + * readelf.c (get_segment_type): Support PT_GNU_EH_FRAME. + +2001-12-11 Alan Modra + + * readelf.c (process_file_header): Print extended e_shnum and + e_shdtrndx values. Set elf_header values for same. + (get_32bit_section_headers): Add "num" arg to read "num" headers. + (get_64bit_section_headers): Likewise. + (process_section_headers): Update calls. + (get_file_header): Call get_32bit_section_headers or 64bit variant. + +2001-12-10 Jakub Jelinek + + * objcopy.c (setup_section): Copy entsize. + +2001-12-07 Geoffrey Keating + + * readelf.c (guess_is_rela): Add support for stormy16. + (dump_relocations): Likewise. + (get_machine_name): Likewise. + +2001-12-05 Nick Clifton + + * dllwrap.c (main) Replace multiple strings describing a + single error with a single, newline escaped sentence to permit + better translation into foreign languages. + + * readelf.c (get_elf_class): Remove internalionalisation of ELF + class names. + +2001-12-04 Thiemo Seufer + + * strings.c (get_char): Initialize value. + +2001-12-04 Thiemo Seufer + + * arlex.l: Silence compile warnings. + * arsup.h: Likewise. Fix formatting. + +2001-12-04 Jakub Jelinek + + * strings.c: Include config.h before bfd.h. + (file_off): New type. + (file_open): Define. + (print_strings): Use file_off instead of file_ptr. Print addresses + which don't fit into long correctly. + (get_char): Use file_off instead of file_ptr. Use getc_unlocked if + available. + (strings_file): Use file_off instead of file_ptr. Use file_open. + * configure.in: Check for getc_unlocked. + Check for fopen64 and whether _LARGEFILE64_SOURCE needs to + be defined for it. + * configure: Rebuilt. + * config.h.in: Rebuilt. + +2001-11-29 H.J. Lu + + * bucomm.c (make_tempname): Revert the changes made on + 2001-11-14 and 2001-11-12. They won't work with directories. + +2001-11-23 John David Anglin + + * binutils/Makefile.am (check-DEJAGNU): Pass CC_FOR_TARGET and + CFLAGS_FOR_TARGET to runtest in environment. + * Makefile.in: Rebuild. + * doc/Makefile.in: Rebuild. + +2001-11-28 Mike Stump + + * objcopy.c (setup_section): Preserve SEC_RELOC when + --set-section-flags is used. + +2001-11-19 Nick Clifton + + * readelf.c (do_debug_str): New variable. + (display_debug_str): New function: Display the contents of a + .debug_str section. + (load_debug_str): New function: Load in the contents of a + .debug_str section. + (free_debug_str): New function: Free the memory used by + load_debug_str(). + (fetch_indirect_string): Retrieve a string from the .debug_str + section. + (usage): Add -ws. + (parse_args): Accept -ws. + (process_section_headers): Allow the display of the .debug_str + section. + (read_and_display_attr_value): Use fetch_indirect_string. Show + offset into .debug_str section. + (display_debug_info): Use load_debug_str and free_debug_str. + (debug_displays): Add .debug_str. + * doc/binutils.texi: Document -ws. + +2001-11-19 Andreas Jaeger + + * testsuite/binutils-all/objdump.exp: Add x86-64. + +2001-11-15 Andreas Schwab + + * readelf.c: Fix warnings without terminating newline. + +2001-11-15 Alan Modra + + * doc/binutils.texi (objdump): Document ppc -M options. + +2001-11-14 Andreas Jaeger + + * doc/binutils.texi (objdump): Fix description to use x86-64. + +2001-11-14 Nick Clifton + + * bucomm.c (make_tempname): Use mkstemps instead of mkstemp, since + not all systems provide mkstemp. + +2001-11-14 Alan Modra + + * doc/binutils.texi (objdump): Document x86 -M options. + +2001-11-13 Keith Walker + + * readelf.c (read_and_display_attr_value): New function to + handle DW_FORM_indirect. + (read_and_display_attr): Use it. + +2001-11-13 Geoffrey Keating + + * readelf.c (display_debug_lines): Deal with unknown standard + opcodes. Handle DW_LNS_set_prologue_end, DW_LNS_set_epilogue_begin, + DW_LNS_set_isa. + +2001-11-13 Timothy Wall + + * MAINTAINERS: Add self as tic54x maintainer. This target + includes the IBM C54XDSP clone. + +2001-11-12 * Steven J. Hill + + * bucomm.c (make_tempname): Use mkstemp in place of mktemp. + +2001-11-09 Jeffrey A Law (law@cygnus.com) + + * unwind-ia64.c (unw_print_brmask): Fix ISO C portability glitch. + (unw_print_grmask, unw_print_frmask, unw_print_abreg): Likewise. + (unw_print_xyreg, unw_decode_x1, unw_decode_x2): Likewise. + (unw_decode_x3, unw_decode_r1, unw_decode_r2): Likewise. + (unw_decode_r3, unw_decode_p1, unw_decode_p2_p5): Likewise. + (unw_decode_p6, unw_decode_p7_p10, unw_decode_b1): Likewise. + (unw_decode_b2, unw_decode_b3_b4): Likewise. + + * readelf.c (get_elf_class): Fix ISO portability glitch. + (get_data_encoding, get_osabi_name, request_dump): Likewise. + +2001-11-07 Jakub Jelinek + + * readelf.c (debug_str, debug_str_size): New. + (display_debug_abbrev): If no abbrevs were read, skip the CU. + Call free_abbrevs. + (read_and_display_addr): Handle DW_FORM_strp. + (display_debug_info): Read .debug_str section if present, + so that DW_FORM_strp can be handled. + Fix test for non-existant .debug_abbrev section. + +2001-11-05 Jakub Jelinek + + * arlex.l: Accept `\' in filenames. Patch by . + + * arsup.c (ar_open): Prepend tmp- to basename, not whole path. + +2001-11-05 Martin Schwidefsky + + * MAINTAINERS: Add self as s390/s390x maintainer. + +2001-11-02 Tom Rix + + * MAINTAINERS: Add self as PPC XCOFF maintainer. + +2001-11-02 Nick Clifton + + * configure.in (ALL_LINGUAS): Add "fr" and "tr". + * configure: Regernate. + * po/fr.po: New file. + * po/tr.po: New file. + +2001-10-30 Hans-Peter Nilsson + + * MAINTAINERS: Add self as MMIX port maintainer. + * readelf.c: Include elf/mmix.h. + (guess_is_rela): MMIX is RELA. + (dump_relocations): Handle MMIX relocations. + * Makefile.am: Regenerate dependencies. + * Makefile.in: Regenerate. + +2001-10-13 Nick Clifton + + * readelf.c (parse_args): Handle multiple options to the -w + switch. + +2001-10-12 Jakub Jelinek + + * readelf.c (get_section_type_name): Don't print SHT_ prefix for + LOPROC, LOOS and LOUSER. + +2001-10-11 J"orn Rennecke + + * MAINTAINERS: Update my email address. + +2001-10-03 Alan Modra + + * doc/Makefile.in: Regenerate. + * configure: Regenerate. + +2001-10-02 Nick Clifton + + * readelf.c (display_debug_line, display_debug_pubnames, + display_debug_info, display_debug_frames): Detect and warn + about 64-bit format entries. + (display_debug_aranges): Reword 64-bit warning. + (debug_displays): Add .debug_pubtypes as a known, but not yet + supported, debug section. + +2001-10-02 Alan Modra + + * coffdump.c (PROGRAM_VERSION): Delete. + (main <'V'>): Call print_version. + * srconv.c: Likewise. + * sysdump.c: Likewise. + * version.c (program_version): Remove. + (print_version): Use BFD_VERSION_STRING. Just print the current + year in copyright message. + * addr2line.c (program_version): Remove unused declaration. + * objdump.c (display_target_tables): Use BFD_VERSION_STRING in + place of BFD_VERSION. + * Makefile.am (Makefile): Depend on bfd/configure.in. + (cplus-dem.o): Depend on Makefile. + Run "make dep-am". + * Makefile.in: Regenerate. + +2001-10-01 Nick Clifton + + * readelf.c (display_debug_aranges): Detect and warn about DWARF64 + format .debug_arange sections. + (main): Add missing prototype. + +2001-09-30 Hans-Peter Nilsson + + * Makefile.am: Update dependencies with "make dep-am". + * Makefile.in: Regenerate. + +2001-09-28 Richard Henderson + + * objdump.c (dump_section_header): Dump SEC_ARCH_BIT_0. + +2001-09-26 Alan Modra + + * bucomm.c (fatal): Define using VPARAMS, VA_OPEN, VA_FIXEDARG, + VA_CLOSE. + (non_fatal): Likewise. + * objdump.c (objdump_sprintf): Likewise. + * readelf.c (error): Likewise. + (warn): Likewise. + +2001-09-25 Jakub Jelinek + + * readelf.c (do_wide): New. + (options): Add --wide. + (usage, parse_args): Likewise. + (process_program_headers): Put each segment on a single line if + --wide is given. + (process_section_headers): Put each section on a single line if + --wide is given. + * doc/binutils.texi: Document it. + * NEWS: Likewise. + +2001-09-25 Alan Modra + + * readelf.c (print_vma): Print 8 digits of low hex value. + +2001-09-24 Andreas Jaeger + + * nlmconv.c: Fix warnings about unused attributes and function + prototypes. + + * strings.c: Add prototype for get_char. + +2000-09-19 H.J. Lu + + * doc/Makefile.am ($(DEMANGLER_NAME).1): Try cxxfilt.man and + $(srcdir)/cxxfilt.man. + * doc/Makefile.in: Rebuild. + +2001-09-19 Alan Modra + + * objcopy.c (copy_main): Correct rename-section string parsing. + Consolidate new_name parsing, and error messages. + +2001-09-18 Bruno Haible + + * addr2line.c: Don't include . + (main): For gettext, also set the LC_CTYPE locate facet. + * ar.c (main): Likewise. + * coffdump.c (main): Likewise. + * dlltool.c: Include "safe-ctype.h" instead of . + (main): For gettext, also set the LC_CTYPE locate facet. + Use ISALNUM instead of isalpha/isdigit. + * dllwrap.c: Don't include . + (main): For gettext, also set the LC_CTYPE locate facet. + * nlmconv.c: Include "safe-ctype.h" instead of . + (main): For gettext, also set the LC_CTYPE locate facet. + Use TOUPPER instead of islower/toupper. + * nlmheader.y: Include "safe-ctype.h" instead of . + (yylex): Use ISSPACE/ISALNUM instead of isspace/isalnum. + Use TOUPPER instead of islower/toupper. + * nm.c (main): For gettext, also set the LC_CTYPE locate facet. + * objcopy.c (main): Likewise. + * objdump.c: Include "safe-ctype.h" instead of . + (disassemble_bytes): Use ISPRINT instead of isprint. + (dump_section_stabs): Use ISDIGIT instead of isdigit. + (dump_data): Use ISPRINT instead of isprint. + (main): For gettext, also set the LC_CTYPE locate facet. + * rclex.l: Include "safe-ctype.h" instead of . + (cpp_line, handle_quotes): Use ISSPACE instead of isspace. + * rcparse.y: Include "safe-ctype.h" instead of . + Use TOUPPER instead of islower/toupper. + * readelf.c (main): For gettext, also set the LC_CTYPE locate facet. + * resrc.c: Include "safe-ctype.h" instead of . + (write_rc_accelerators): Use ISPRINT instead of isprint. + (write_rc_rcdata): Likewise. + * size.c (main): For gettext, also set the LC_CTYPE locate facet. + * srconv.c (main): Likewise. + * stabs.c: Include "safe-ctype.h" instead of . + (parse_number): Use ISDIGIT/ISUPPER/ISLOWER instead of + isdigit/isupper/islower. + (parse_stab_string, parse_stab_type, parse_stab_argtypes, + parse_stab_array_type, stab_demangle_count, stab_demangle_get_count, + stab_demangle_prefix, stab_demangle_qualified, + stab_demangle_template, stab_demangle_type, + stab_demangle_fund_type): Use ISDIGIT instead of isdigit. + * strings.c: Include "safe-ctype.h" instead of . + (isgraphic): Use ISPRINT instead of isascii/isprint. + (main): Remove HAVE_LC_MESSAGES dependency. + * sysdump.c: Include "safe-ctype.h" instead of . + (pbarray): Use ISPRINT instead of isprint. + (main): For gettext, also set the LC_CTYPE locate facet. + * windres.c: Include "safe-ctype.h" instead of . + (format_from_filename): Use ISPRINT instead of isprint. + (main): For gettext, also set the LC_CTYPE locate facet. + * winduni.c: Include "safe-ctype.h" instead of . + (unicode_print): Use ISPRINT instead of isprint. + * wrstabs.c: Include "safe-ctype.h" instead of . + (stab_variable): Use ISDIGIT instead of isdigit. + +2001-09-18 Alan Modra + + * ar.c (print_contents): Cast args of bfd_seek to the right types. + Replace bfd_read call with call to bfd_bread. + (extract_file): Likewise. + + * objdump.c (dump_section_header): Cast section->filepos to + unsigned long to suit printf format string. + * readelf.c (process_section_headers): Similarly for sh_offset. + (process_unwind): Likewise. + +2001-09-14 Nick Clifton + + * strings.c (encoding, encoding_bytes): New variables. + (long_options): Add --encoding. + (main): Accept -e and --encoding. + (get_char): New function. Read a, possibly wide, character from + the input stream. + (print_strings): Use get_char(). + (usage): Document new command line option. + * doc/binutils.texi: Document new command line option. + * NEWS: Announce new command line option. + +2001-09-12 Alexandre Oliva + + * readelf.c (guess_is_rela, dump_relocations, get_machine_name, + get_machine_flags): Added EM_M32R, EM_D10V, EM_V850, EM_D30V, + EM_MN10200, EM_MN10300, EM_FR30, EM_AVR_OLD and EM_PJ_OLD. + Removed EM_CYGNUS_ARC. + +2001-09-04 Jeffrey A Law (law@cygnus.com) + + * readelf.c: Include elf/h8 for H8 series definitions. + (guess_is_rela): H8 series if RELA. + (dump_relocations): Handle H8 series relocations. + +2001-08-31 Eric Christopher + + * readelf.c (get_machine_flags): Remove E_MIPS_MACH_MIPS32_4K. + +2001-08-29 Peter Targett + + * MAINTAINERS: Include ARC Maintainer. + +2001-08-29 Ben Elliston + + * stabs.c (stab_demangle_template): Initialise s4. + +2001-08-27 Alan Modra + + * readelf.c (dump_relocations): Recognise EM_PPC64. + +2001-08-26 Thiemo Seufer + + * readelf.c (get_machine_flags): Add detection of EF_MIPS_32BITMODE. + +2001-08-25 H.J. Lu + + * nm.c (print_width): New. + (display_rel_file): Set `print_width' according to + bfd_sprintf_vma. + (print_symbol_info_bsd): Check `print_width' instead of BFD64. + +2001-08-24 Alexandre Oliva + + * objcopy.c (use_alt_mach_code): New variable. + (OPTION_ALT_MACH_CODE): Define. + (copy_options): Added --alt-machine-code. + (copy_main): Handle it. + (copy_object): Switch to alternate machine code if requested. + * doc/binutils.texi: Document new option. + * NEWS: Likewise. + +2001-08-22 Thiemo Seufer + + * readelf.c (get_machine_flags): Add detection of EF_MIPS_UCODE. + +2001-08-21 H.J. Lu + + * readelf.c (dump_relocations): Support ELF64 on 32bit hosts. + (display_debug_info): Cast for 64bit hosts. + (display_debug_frames): Likewise. + (process_mips_specific): Likewise. + +2001-08-21 Andreas Jaeger + + * coffgrok.h: Add missing parameter for prototype of coff_grok. + + * sysdump.c: Add missing prototypes. + * srconv.c: Likewise. + * unwind-ia64.c: Likewise. + * coffdump.c: Likewise. + + * sysinfo.y: Print prototypes, include . + + * coffgrok.c: Add missing prototypes, include libiberty.h instead + of declaring xcalloc. + +2001-08-10 H.J. Lu + + * nm.c (print_value): Add one arg, bfd *. + (print_value): Replace fprintf_vma with bfd_fprintf_vma. + (print_symbol_info_bsd): Also pass `abfd' to print_value (). + (print_symbol_info_sysv): Likewise. + (print_symbol_info_posix): Likewise. + + * objdump.c (dump_section_header): Replace printf_vma with + bfd_printf_vma. + (print_section_stabs): Likewise. + (dump_bfd_header): Likewise. + (objdump_print_value): Replace sprintf_vma with + bfd_sprintf_vma. + (disassemble_bytes): Likewise. + (dump_reloc_set): Likewise. + +2001-08-10 Andreas Jaeger + + * configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes + to build warnings. + * configure: Regenerate. + +2001-08-09 Alan Modra + + * readelf.c: Add missing prototypes. + * objdump.c: Likewise. Format existing prototypes. + +2001-08-08 Alexandre Oliva + + * readelf.c (display_debug_info): Add to abbrev_offset the addend + of any RELA relocation for the abbrev_offset memory location that + refers to the .debug_abbrev section symbol. + +2001-08-07 H.J. Lu + + * readelf.c (process_file): Return 0 if OK, otherwise return 1. + (main): Return process_file (). + +2001-08-05 Philip Blundell + + * doc/binutils.texi: Use "Thumb" not "THUMB". + +2001-08-03 John Healy + + Patch suggested by Frank Eigler . + * objdump.c (disassemble_data): Fill in section member of the + disasm_info structure. + +2001-08-03 Tom Walsh + + * configure.in: Added --with-windres option. + * configure: Regenerated. + +2001-07-11 Stephane Carrez + + * doc/binutils.texi: Use @command{name} for commands; + use @option{-opt} for options; use @table @env for list of options; + remove spaces arround [ | ] in synopsis. + + * doc/Makefile.am (POD2MAN): Use 'GNU Development Tools' for the + center title. + +2001-07-31 Nick Clifton + + * objcopy.c: Fix formatting. + (section_rename): New structure. + (OPTION_RENAME_SECTION): New switch. + (copy_usage): Document new switch. + (add_section_rename): New function: Add a node to the section + rename list. + (find_section_rename): New function: Find the new name and + flags for a section. + (setup_section): Call find_section_name to determine the name + of the output section. + (copy_main): Handle OPTION_RENAME_SECTION. + * binutils.texi: Document new switch. + * NEWS: Mention new switch. + +2001-07-30 Nick Clifton + + * README: Rename bug-gnu-utils@gcc.org to bug-binutils@gcc.org. + * MAINTAINERS: Rename bug-gnu-utils@gcc.org to + bug-binutils@gcc.org. + +2001-07-28 Matthias Kramm + + * bucomm.c (list_supported_architectures): New function. + * bucomm.h (list_supported_architectures): Declare. + * objdump.c (usage): Call the above. + +2001-07-25 Dave Brolley + + * objdump.c (SKIP_ZEROES): Only define it if it is not already defined. + (SKIP_ZEROES_AT_END): Only define it if it is not already defined. + +2001-07-19 Nick Clifton + + * README: Update for 2.11. Change bug reporting email address. + * MAINTAINERS: Tidy up. Change bug reporting email address. + +2001-07-16 DJ Delorie + + * resres.c (write_res_header): Align header size. + (res_align_file): Calculate alignment correctly. + + * rcparse.y (styles): use SUBLANG_SHIFT instead of 8 (or the more + correct 10). + * resrc.c (write_rc_resource): Likewise. + * windres.h (SUBLANG_SHIFT): Define - as 10. + +2001-07-15 Nick Clifton + + * MAINTAINERS: Add Christian Groessler as maintainer for z8k port. + +2001-07-11 Nick Clifton + + * MAINTAINERS: Add notes about branch checkins. + +2001-07-05 Daniel Berlin + + * readelf.c (display_debug_macinfo): New function, display + .debug_macinfo section. + (do_debug_macinfo): New variable. + (parse_args): Handle "-w[mM]" to mean display macro info. + (process_section_headers): Handle debug_macinfo. + (debug_displays): Replace unsupported function with macinfo + function for .debug_macinfo display. + * doc/binutils.texi: Document new command line switch. + * NEWS: Document new feature of readelf. + +2001-07-05 H.J. Lu + + * objcopy.c (filter_symbols): Don't turn undefined symbols + into local. + +2001-07-03 H.J. Lu + + * doc/Makefile.am (addr2line.1): Use addr2line.pod instead of + $@.pod. + (ar.1): Likewise. + (dlltool.1): Likewise. + (nlmconv.1): Likewise. + (nm.1): Likewise. + (objcopy.1): Likewise. + (objdump.1): Likewise. + (ranlib.1): Likewise. + (readelf.1): Likewise. + (size.1): Likewise. + (strings.1): Likewise. + (strip.1): Likewise. + (windres.1): Likewise. + (cxxfilt.man): Use $(DEMANGLER_NAME).pod instead of $@.pod. + ($(DEMANGLER_NAME).1): Also substitute cxxfilt with + $(DEMANGLER_NAME). + (as.1): Removed. + * doc/Makefile.in: Regenerated. + +2001-07-03 Nick Clifton + + * MAINTAINERS: Change MIPS maintainer to Eric Christopher. + +2001-07-01 Daniel Berlin + + * readelf.c: Support DWARF 2.1 tags, encodings, languages. + +2001-06-29 James Cownie + + * readelf.c: Support DWARF 2.1 attributes. + +2001-06-28 Alan Modra + + * readelf.c (GET_DATA_ALLOC): Remove. + (GET_DATA): Remove. + (get_data): New function combining above macros, with an extra + test for zero size. + (slurp_rela_relocs): Use get_data, and catch error return. + (slurp_rel_relocs): Likewise. + (get_32bit_program_headers): Likewise. + (get_64bit_program_headers): Likewise. + (get_32bit_section_headers): Likewise. + (get_64bit_section_headers): Likewise. + (get_32bit_elf_symbols): Likewise. + (get_64bit_elf_symbols): Likewise. + (process_section_headers): Likewise. + (process_relocs): Likewise. + (slurp_ia64_unwind_table): Likewise. + (process_unwind): Likewise. + (get_32bit_dynamic_segment): Likewise. + (get_64bit_dynamic_segment): Likewise. + (process_dynamic_segment): Likewise. + (process_version_sections): Likewise. + (process_symbol_table): Likewise. + (dump_section): Likewise. + (display_debug_info): Likewise. + (display_debug_section): Likewise. + (process_section_contents): Likewise. + (process_corefile_note_segment): Likewise. + (process_mips_specific): Likewise. Also free econf32, econf64. + +2001-06-25 Alan Modra + + * readelf.c (dump_relocations): Print "bad symbol index" if + symtab == NULL with non-zero symtab_index. + (process_relocs): Don't bomb if reloc section has no symsec. + +2001-06-24 H.J. Lu + + * objcopy.c (strip_main): Revert the change made on 2001-05-30 + by accident. + (copy_main): Apply the the change made to strip_main on + 2001-05-30 by accident. + +2001-06-23 Andreas Jaeger + + * unwind-ia64.c (unw_decode_x1): Add unused attribute for + parameter 'code'. + (unw_decode_x2): Likewise. + (unw_decode_x3): Likewise. + (unw_decode_x4): Likewise. + +2001-06-23 Ben Elliston + + * MAINTAINERS: Add myself as M88k maintainer. + +2001-06-22 Jocelyn Mayer + + * objcopy.c (strip_main): Support -o or --output-file command lien + switch. + +2001-06-19 H.J. Lu + + * doc/Makefile.in: Regenerated. + +2001-06-19 Nick Clifton + + * readelf.c: Restore formatting. + +2001-06-18 H.J. Lu & Nick Clifton + + * Makefile.am: Move documentation into doc subdirectory. + * Makefile.in: Regenerated. + * binutils.texi: Move into doc subdirectory. + * addr2line.1: Removed. + * ar.1: Likewise. + * dlltool.1: Likewise. + * nlmconv.1: Likewise. + * nm.1: Likewise. + * objcopy.1: Likewise. + * objdump.1: Likewise. + * ranlib.1: Likewise. + * readelf.1: Likewise. + * size.1: Likewise. + * strings.1: Likewise. + * strip.1: Likewise. + * windres.1: Likewise. + * cxxfilt.man: Likewise. + * doc: New Directory. + * doc/Makefile.am: New file. + * doc/Makefile.in: Generate. + +2001-06-09 Alan Modra + + * NEWS: Fix a typo. Mention hppa64-elf. Add binutils-2.11 marker. + +2001-06-01 Alan Modra + + * MAINTAINERS: Update my email address. + +2001-05-30 Honda Hiroki + + * objcopy.c: Add new switches: --keep-global-symbol, + --keep-symbols, --localize-symbols, --keep-global-symbols and + --weaken-symbols. + * binutils.texi: Document new switches. + * objcopy.1: Regenerate. + * NEWS: Announce new feature. + +2001-05-28 Andreas Jaeger + + * readelf.c (display_debug_frames): Fix warnings: Remove unused + variables, fix format strings. + +2001-05-28 Nick Clifton + + * objdump.c (disassemble_bytes): Remove section VMA adjustment + when computing the address of the line to show. + +2001-05-16 Richard Henderson + + * readelf.c (do_debug_frames_interp): New. + (byte_get_little_endian): If BFD64, always read entire 8-byte fields. + (byte_get_big_endian): Likewise. + (parse_args) ['F']: Set do_debug_frames_interp. + (Frame_Chunk): Make data_factor signed, add fde_encoding. + (frame_display_row): Don't trunc pc_begin to int. + (size_of_encoded_value): New. + (display_debug_frames): Handle 64-bit targets. Print raw data + unless do_debug_frames_interp. + (debug_displays): Remove duplicate .debug_frame. + +2001-05-15 Ralf Baechle + + * readelf.c: Replace uses of EM_MIPS_RS4_BE with EM_MIPS_RS3_LE. + The former constant was never in active use and is used otherwise + by the ABI. + +2001-05-11 Jakub Jelinek + + * readelf.c (process_unwind): Print all unwind sections, not just + one. + +2001-05-07 Thiemo Seufer + + * readelf.c (process_unwind): Remove const specifier. + +2001-04-27 Michal Svec + + * strings.c (isgraphic): Do not use isascii() unless it is needed + for isprint() to work. + (main): Set the locale domain to LC_ALL not just LC_MESSAGES. + +2001-04-27 Johan Rydberg + + * NEWS: Announce support for OpenRISC. + +2001-04-17 Danny Smith + + * dlltool.c (do_default_excludes): Initialise to true. + +2001-04-10 Alan Modra + + * MAINTAINERS: Update my email address + * nm.c (print_symbol_info_bsd): Use a simple printf string. + +2001-04-05 Hans-Peter Nilsson + + * readelf.c (display_debug_lines): Fix typo for "Prologue". + +2001-03-30 H.J. Lu + + * readelf.c (process_unwind): Just return if do_unwind is 0. + +2001-03-28 Roger Sayle + + * dlltool.c (make_one_lib_file): Fix section flags for + .text, .data and .bss in stub ds*.o files to match those + generated by gas. + +2001-03-29 H.J. Lu + + * readelf.c (process_unwind): Only do unwind sections for + IA64. + +2001-03-28 H.J. Lu + + * Makefile.am ($(srcdir)/dlltool.1): Remove the extra target. + * Makefile.in: Regenerate. + +2001-03-26 Andreas Jaeger + + * binutils.texi (nm): Fix texi syntax. + +2001-03-25 Stephane Carrez + + * binutils.texi: Put @c man begin and @c man end indications + to generate man pages using texi2pod and pod2man. Put @c man title + to identify each man. Add SEEALSO entries. + * Makefile.am (MANCONF, TEXI2POD, POD2MAN): New variable. + (man_MANS): Add dlltool.1, nlmconv.1, readelf.1, windres.1, + sort the list. + (*.1): Build the man pages from binutils.texi. + * Makefile.in: Regenerate. + +2001-03-13 Eric Kohl + + * defparse.y (opt_equal_name): allow "." in name. + * dlltool.c (def_exports): Added ability to generate forwarded exports. + (gen_exp_file): Likewise. + +2001-03-12 Stefan Geuken + + * NEWS: Document addition of -B switch to objcopy. + * binutils.texi: Document addition of -B switch to objcopy. + * objcopy.c: (copy_options): Add --binary-architecture. + (copy_usage): Document -B/--binary-architecture. + (copy_main): Support -B/--binary-architecture. Set + bfd_external_binary_architecture. + +2001-03-11 Andreas Jaeger + + * readelf.c (guess_is_rela): Handle EM_S390_OLD. + (dump_relocations): Likewise. + (get_machine_name): Likewise. + +2001-02-28 Nick Clifton + + * readelf.c: (struct unw_aux_info): Remove const modifier for + 'strtab' field. + (process_unwind): Remove non-K&R compliant LHS type cast in call + to GET_DATA_ALLOC macro. + +2001-02-28 Philip Blundell + + * readelf.c (decode_ARM_machine_flags): Explicitly mention which + ABI is in use; remove ambiguity between the "unknown" EABI and + unrecognised ABIs. Handle version 2 ARM EABI. Update uses of + renamed EF_xx constants. + +2001-02-27 Alan Modra + + * configure.in (BFD_VERSION): New. + (AM_INIT_AUTOMAKE): Use $BFD_VERSION. + * configure: Regenerate. + * Makefile.am: Run "make dep-am" + * Makefile.in: Regenerate. + +2001-02-14 Nick Clifton + + * MAINTAINERS: Add "Obvious Fix" rule. + +2001-02-11 Michael Sokolov + + * unwind-ia64.c: Don't use ANSI C preprocessor stringisation and string + literal concatenation. + +2001-02-11 Michael Sokolov + + * readelf.c (struct unw_aux_info): Remove const from the info member. + (process_unwind): Don't type-cast the third argument to the + GET_DATA_ALLOC macro. + +2001-02-11 Nick Clifton + + * readelf.c (dump_relocations): Free corrected allocated + array. + (process_unwind): Fix compile time warning. + +2001-02-10 Nick Clifton + + * binutils.texi: Document new --unwind option to readelf. + +2001-02-09 Martin Schwidefsky + + * readelf.c: Add linux target for S/390. + +2001-02-10 Alan Modra + + * nm.c (print_symbol_info_bsd): Don't #ifdef inside printf in case + printf is a macro. + +2001-02-08 Hans-Peter Nilsson + + * acinclude.m4 (AM_PROG_LEX): Override installed definition. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2001-02-07 Todd Vierling + + * bucomm.c (bfd_target_vector): Change extern array to pointer. + * objdump.c (bfd_target_vector): Likewise. + +2001-02-07 David Mosberger + + * readelf.c (process_unwind): New function. + (slurp_ia64_unwind_table): Ditto. + (dump_ia64_unwind): Ditto. + (find_symbol_for_address): Ditto. + (slurp_rela_relocs): New function (split off from dump_relocations()). + (slurp_rel_relocs): Ditto. + (parse_args): Handle '-u' option. + + * unwind-ia64.c: New file. + * unwind-ia64.h: New file. + * Makefile.am: Include unwind-ia64.c in readelf build. + * Makefile.in: Regenerate. + * po/binutils.pot: Regenerate. + +2001-02-04 Philip Blundell + + * configure.in (OBJDUMP_DEFS): Match `arm*-*', not just `arm-*'. + * configure: Regenerate. + +2001-01-31 Steve deRosier + + * ieee.c (ieee_add_bb11): Don't check for backslashes + unless HAVE_DOS_BASED_FILE_SYSTEM is defined. + +2001-01-24 Mark Elbrecht + + * ieee.c: Update copyright. + (ieee_start_compilation_unit): Don't check for backslashes + unless HAVE_DOS_BASED_FILE_SYSTEM is defined. + + * stabs.c: Update copyright. Include "filenames.h". + (parse_stab): Use IS_ABSOLUTE_PATH. Ignore N_WARNING stabs. + +2001-01-23 Jakub Jelinek + + * readelf.c (process_version_sections): Check if VERDEF or VERNEED + sections are present before using them. Remove code duplication. + (process_symbol_table): Check if VERDEF or VERNEED sections are + present before using them. + +2001-01-17 Nick Clifton + + * objcopy.c (copy_object): Fail if attempting to convert the + endianness of the input object file. + + * binutils.texi: Explain that objcopy cannot convert endianness. + +2001-01-16 Nick Clifton + + * readelf.c (string_table_length): New variable. + (SECTION_NAME): Catch out of range indices and missing section + pointers. + (process_section_headers): Delete useless local variable + string_table_offset. Set the value of string_table_length + after loading the string table. + (process_mips_specific): Use SECTION_NAME macro. + (process_file): Set string_table_length to 0 when it is freed. + +2001-01-12 Nick Clifton + + * version.c (print_version): Update copyright date. + +2001-01-11 Peter Targett + + * readelf.c (dump_relocations): Include selection with EM_ARC. + (get_machine_name) Update name to "ARC". + +2001-01-09 Nick Clifton + + * Makefile.am: Add rule to build objdump.o from objdump.c and + using OBJDUMP_DEFS. + * Makefile.in: Regenerate. + + * configure.in: Define OBJDUMP_DEFS. Default to empty. + (arm, xscale, d10v): For these targets define OBJDUMP_DEFS to + -DDISASSEMBLER_NEEDS_RELOCS. + * configure: Regenerate. + + * objdump.c (disassemble_bytes): If DISASSEMBLER_NEEDS_RELOCS + is defined read in the relocs even if dump_reloc_info is + false. + +2001-01-07 Philip Blundell + + * binutils.texi (Bug Reporting): Replace `bug-gnu-utils' with + `bug-binutils'. + * README: Likewise. + +2000-12-19 Nick Clifton + + * dlltool.c: Add missing support for arm-epoc-pe. + * configure.in: Add missing support for arm-epoc-pe. + * configure: Regenerate. + +2000-12-15 Nick Clifton + + * MAINTAINERS: Add Diego Novillo as a maintainer for the Intel + Mode parts of the x86 port. + +2000-12-04 Andreas Jaeger + + * readelf.c (guess_is_rela): Add EM_X86_64. + (dump_relocations): Add EM_X86_64. + (get_machine_name): Add EM_X86_64. + Include "elf/x86-64.h". + +2000-12-12 Nick Clifton + + * readelf.c: Fix formatting. + +2000-12-11 Jan Hubicka + + * MAINTAINERS: Add myself and Andreas Jaeger as x86_64 maintainer. + +2000-12-07 Andrew Haley + + * readelf.c (display_debug_frames): Only display columns that are + referenced by the frame debug info. + +2000-12-05 Nick Clifton + + * MAINTAINERS: Add Jason Merrill as DWARF2 maintainer. + +2000-12-04 Jason Merrill + + * readelf.c (process_section_headers): Handle linkonce.wi sections. + (display_debug_section): Likewise. + (display_debug_info): Display CU header before bailing. + +2000-12-01 Chris Demetriou + + * readelf.c (get_machine_flags): Recognize MIPS32 ISA in + EF_MIPS_ARCH. Replace use of E_MIPS_MACH_MIPS32 with + E_MIPS_MACH_MIPS32_4K and adjust printed CPU name similarly. + + * readelf.c (get_machine_flags): Add cases for E_MIPS_ARCH_5, + and E_MIPS_ARCH_64. + + * readelf.c (get_machine_flags): Add case for + E_MIPS_MACH_SB1. + +2000-11-30 Richard Earnshaw + + * readelf.c (frame_display_row): Output 's' for DW_CFA_same_value. + +2000-11-28 Hans-Peter Nilsson + + * MAINTAINERS: Add Jörn Rennecke and self as SH maintainers. + Change sourceware.cygnus.com to sources.redhat.com. + Fix typo for "amongst". + +2000-11-28 Nick Clifton + + * strip.1 (COPYING): Mention that the GNU Free Documentation + License is present in the sources, but not the output, and + also available from the GNU website. + (GNU Free Documentation License): Comment out this section. + * strings.1: Ditto. + * size.1: Ditto. + * ranlib.1: Ditto. + * objdump.1: Ditto. + * objcopy.1: Ditto. + * nm.1: Ditto. + * nlmconv.1: Ditto. + * ar.1: Ditto. + * addr2line.1: Ditto. + +2000-11-27 DJ Delorie + + * readelf.c (usage): Add -wf (--debug-dump=frames) option. + (parse_args): Support -wf option. + (process_section_headers): Ditto. + (debug_displays): Ditto. + (display_debug_frames): New, dump *_frame sections. + (frame_need_space): Support for above. + (frame_display_row): Ditto. + * binutils.texi: Document it. + +2000-11-24 Nick Clifton + + * NEWS: Announce support for v5t, v5te and XScale. + +2000-11-22 Nick Clifton + + * readelf.c (get_machine_name): Add EM_JAVELIN, EM_FIREPATH, + EM_ZSP, EM_MMIX, EM_HUANY, EM_PRISM. + (get_section_type_name): Add SHT_GROUP and SHT_SYMTAB_SHNDX. + (get_elf_section_flags: Add SHF_GROUP. + (process_section_headers): Adjust output for 32-bit binaries + to look nice on an 80 column terminal. + +2000-11-20 H.J. Lu + + * readelf.c (get_osabi_name): Change ELFOSABI_MONTEREY to + ELFOSABI_AIX. + +2000-11-17 Richard Henderson + + * readelf.c (display_debug_lines): Adjust last change to + use sizeof (external->li_length). + +2000-11-17 Richard Henderson + + * readelf.c (display_debug_lines): Fix section length check + and end_of_sequence computation. + +2000-11-06 Nick Clifton + + * binutils.texi: Add GNU Free Documentation License. + * objcopy.1: Add GNU Free Documentation License. + * objdump.1: Add GNU Free Documentation License. + * addr2line.1: Add GNU Free Documentation License. + * ar.1: Add GNU Free Documentation License. + * nlmconv.1: Add GNU Free Documentation License. + * nm.1: Add GNU Free Documentation License. + * ranlib.1: Add GNU Free Documentation License. + * size.1: Add GNU Free Documentation License. + * strings.1: Add GNU Free Documentation License. + * strip.1: Add GNU Free Documentation License. + +2000-10-06 Luciano Gemme + + * objcopy.c (--srec-len=nn): New parameter to set the + maximum length of generated Srecords. + (--srec-forceS3): New parameter that restricts the generation of + Srecords to type S3 only. + * binutils.texi: Document new command line switches. + * objcopy.1: Docuemnt the new command line switches. + * NEWS: Announce the existence of the new command line switches. + +2000-10-31 Nick Clifton + + * MAINTAINERS: Add Jim Wilson as the maintainer for the IA64 + code. Add Eric Chrisopher as maintainer of MN10300 port. + +2000-10-12 Roger Sayle + + * Make comma after string after icon/control optional. + +2000-09-13 Anders Norlander + + * readelf.c (get_machine_flags): Also print EF_MIPS_MACH field. + + * NEWS: Mention support for MIPS32. + +2000-09-08 Nick Clifton + + * MAINTAINERS: Add Stephane Carrez as maintainer for 68HC[11|12]. + +2000-09-07 H.J. Lu + + * configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM. + * configure: Rebuild. + +2000-09-06 Alexandre Oliva + + * configure: Rebuilt with new libtool.m4. + +2000-09-05 Nick Clifton + + * aclocal.m4: Regenerate. + * config.in: Regenerate. + * configure: Regenerate. + +2000-09-04 Todd Vierling + + * strip.1: Fix stray '\' in -o formatting. + +2000-09-02 Nick Clifton + + * configure.in: Increase version number to 2.10.91. + * configure: Regenerate. + * aclocal.m4: Regenerate. + * config.in: Regenerate. + * po/binutils.pot: Regenerate. + +2000-08-31 Alexandre Oliva + + * acinclude.m4: Include libtool and gettext macros from the + top level. + * aclocal.m4, configure: Rebuilt. + +2000-08-30 Jamie Guinan + + * resrc.c (close_input_stream): Delete extraneous logic + +2000-08-24 Hans-Peter Nilsson + + * NEWS: Mention support for CRIS. + +2000-08-21 Nick Clifton + + * addr2line.c: Changed email address for Ulrich Lauther. + +2000-08-17 Christopher C. Chimelis + + * objdump.c (LONGEST_ARCH): Set to sizeof("powerpc:common"). + +2000-08-17 Nick Clifton + + * readelf.c (display_debug_pubnames): Only issue warning + message once. Terminate message with a new line. + (display_debug_aranges): Only display version 2 debug info. + +2000-08-14 Todd Vierling + + * objcopy.c (strip_main): Silently accept -d as an alias for -g + for compatibility with old BSD systems. + +2000-08-14 Jason Eckhardt + + * NEWS: Mention i860 support. + +2000-08-11 Carlo Wood + + * addr2line.c (main): Add const to char *. + +2000-08-11 Geoff Keating + + * ar.c (main): Don't crash if called with no arguments + or only '-X32_64' as an argument. + +2000-08-08 DJ Delorie + + * resrc.c: use "gcc -xc" instead of -xc-header + +2000-08-05 Jason Eckhardt + + * readelf.c (elf/i860.h): Include. + (dump_relocations): Add recognition of i860 architecture. + (guess_is_rela): Add recognition of i860 architecture. + +2000-08-03 Nick Clifton + + * MAINTAINERS: Add information about CGEN maintainers. + +2000-07-26 Geoff Keating + + * nm.c (main): Ignore '-X32_64' as an option. + * ar.c (main): Likewise. + * binutils.texi (nm): Document new option. + (ar): Likewise. + +2000-07-23 Michael Sokolov + + * rdcoff.c (external_coff_symbol_p): K&R-ise. + +2000-07-20 H.J. Lu + + * binutils.texi: Put back "@end table" deleted by + accident. + +2000-07-05 Kenneth Block + + * nm.c: Add optional style to demangle switch. + * objdump.c: Add optional style to demangle switch. + * addr2line.c: Add optional style to demangle switch. + * binutils.texi: Document optional style to demangle + switch. + +2000-07-20 Hans-Peter Nilsson + + * MAINTAINERS: Add self as CRIS port maintainer. + * readelf.c: Include elf/cris.h. + (guess_is_rela): Handle EM_CRIS. + (dump_relocations): Ditto. + (get_machine_name): Ditto. + * Makefile.am: Rebuild dependencies. + * Makefile.in: Regenerate. + * po/binutils.pot: Regenerate. + +2000-07-19 H.J. Lu + + * readelf.c (get_dynamic_type): Change "AUXILARY" to + "AUXILIARY". + (process_dynamic_segment): Print out strings for DT_CONFIG, + DT_DEPAUDIT, DT_AUDIT and DT_RUNPATH. + +2000-07-19 Mark Kettenis + + * nm.c (usage): Change output of `nm --help' to include a + description of the purpose of the program and a detailed + description of the accepted options. + +2000-07-19 H.J. Lu + + * readelf.c (process_dynamic_segment): Change DF_1_NODEPLIB + to DF_1_NODEFLIB. + +2000-07-19 H.J. Lu + + * readelf.c (get_dynamic_type): Fix DT_CHECKSUM. + +2000-07-19 H.J. Lu + + * readelf.c (get_dynamic_type): Change DT_FEATURE_1 to + DT_FEATURE. + (process_dynamic_segment): Likewise. + + * readelf.c (get_dynamic_type): Handle DT_CONFIG, DT_DEPAUDIT, + DT_AUDIT, DT_PLTPAD, DT_MOVETAB and DT_CHECKSUM. + (process_dynamic_segment): Handle DTF_1_CONFEXP, DF_1_NODEPLIB, + DF_1_NODUMP and DF_1_CONLFAT. + +2000-07-18 Nick Clifton + + * binutils.texi (readelf): Fix spelling typo. + +2000-07-11 Mark Kettenis + + * objdump.c (usage): Make output of `objdump --help' more + consistent with the rest of the GNU world. Add a line describing + the purpose of the program. + +2000-07-10 David Huggins-Daines + + * stabs.c (parse_stab_range_type): Cast to proper type to fix + warning. + +2000-07-10 Ryan Bradetich + + * readelf.c (get_dynamic_data): Add casts and use unsigned chars + to fix warnings. + (process_symbol_table): Ditto. + (procesS_extended_line_op): Ditto. + (display_debug_lines): Ditto. + (display_debug_pubnames): Ditto. + (read_and_display_attr): Ditto. + +2000-07-09 Nick Clifton + + * MAINTAINERS: Add several more port specific maintainers. + +2000-07-05 Nick Clifton + + * MAINTAINERS: Add blanket write privs for Michael Meissner. + +2000-06-05 DJ Delorie + + * MAINTAINERS: New. + +2000-07-01 Eric Fifer + + * dllwrap.c: Changed mistaken dyn_string_append() calls + to dyn_string_append_cstr(). + +2000-07-01 Alexander Aganichev + + * stabs.c (parse_stab_type): Divide size in bits by 8 as binutils + struct debug_type stores size in bytes. + +2000-07-01 Alan Modra + + * Makefile.am (DEP): Fix 2000-06-22. grep after running dep.sed + (CLEANFILES): Add DEPA. + * Makefile.in: Regenerate. + +2000-06-27 Alan Modra + + * ar.c: Revert incorrect 2000-06-25 patch. + * bucomm.c: Likewise. + +2000-06-25 Mark Elbrecht + + * rdcoff (parse_coff_symbol): Treat GNU weak symbols as external. + (external_coff_symbol_p): New function. + (parse_coff): Use it. + +2000-06-25 Alexander Aganichev + + * ar.c (normalize): Advance past both characters in a DOS based + : filepath prefix. + (main): Likewise. + * bucomm.c (make_tempname): Likewise. + +2000-06-24 Nick Clifton + + * objdump.c (usage): Fix description of --stabs switch. + +2000-06-22 Alan Modra + + * Makefile.am (DEP): grep for leading `/' in DEP1, and fail if we + find one. + * Makefile.in: Regenerate. + +2000-06-20 Alexander Aganichev + + * ar.c (normalize): Correct pointer comparison when checking for + backslashes. + (main): Likewise. + * bucomm.c (make_tempname): Likewise. + + * ieee.c (ieee_start_compilation_unit): Correct pointer comparison + and search for backslashes in the original pathname. + (ieee_add_bb11): Likewise. + +2000-06-18 Nick Clifton + + * ar.c (print_contents): Improve verbose message. + +2000-06-15 H.J. Lu + + * dyn-string.c: Removed. Not needed with dyn-string.c in + libiberty. + * dyn-string.h: Likewise. + + * Makefile.am: Remove references to dyn-string.c and + dyn-string.h. Rebuild dependency. + * Makefile.in: Rebuild. + +2000-06-15 H.J. Lu + + * binutils.texi: Put a warning on copying relocatable object + files between two different formats. + +2000-06-13 DJ Delorie + + * rcparse.y (control): ICON controls take an id as the first + parameter, not an optional string. Also, call new convenience + function that takes res_id's. + * resrc.c (define_control): missing text means zero-length string, + not zero ID. + (define_icon_control): New. + * windres.h: declare define_icon_control. + +2000-06-13 H.J. Lu + + * configure: Regenerate. + +2000-06-08 David O'Brien + + * configure.in (VERSION): Update to show this is the CVS mainline. + +2000-06-02 David O'Brien + + * strings.c (isgraphic): Interpret as a printable character, + analogous to . + +2000-05-30 Alan Modra + + * objdump.c (display_target_list): Use bfd_close_all_done, not + bfd_close to fix crash caused by 2000-05-24 change. + +2000-05-25 DJ Delorie + + * resrc.c (close_input_stream): zero out cpp_pipe after closing it. + +2000-05-26 Alan Modra + + * Makefile.am: Update dependencies with "make dep-am" + * Makefile.in: Regenerate. + +2000-05-26 Eli Zaretskii + + * ar.c: Include filenames.h. + (normalize) [HAVE_DOS_BASED_FILE_SYSTEM]: Support backslashes + and drive letters in file names. + (main): Support backslashes and drive letters in argv[0]. Drop + the .exe suffix, if any, in argv[0] if is_ranlib is negative. Use + FILENAME_CMP instead of strcmp to compare file names. + (open_inarch) [__GO32__]: Don't ifdef errno != ENOENT test for + DJGPP v2. + (do_quick_append) [__GO32__]: Ditto. + (get_pos_bfd, delete_members, move_members, replace_members): + Compare file names with FILENAME_CMP. + + * bucomm.c: Include filenames.h. + (make_tempname) [HAVE_DOS_BASED_FILE_SYSTEM]: Support mixed + forward/backward slashes and drive letters in file names. + + * ieee.c (ieee_start_compilation_unit, ieee_add_bb11): Support + mixed forward/backward slashes and drive letters in file names. + + * strings.c (O_BINARY, setmode, SET_BINARY): Define. + (main) [SET_BINARY]: Use SET_BINARY to switch stdin into binary + mode. + + * objcopy.c: Include filenames.h. + (main) [HAVE_DOS_BASED_FILE_SYSTEM]: Drop the .exe suffix + before comparing to "strip". + Use FILENAME_CMP to compare file names. + + * arsup.c: Include filenames.h. + (map_over_list, ar_delete, ar_replace, ar_extract): Use + FILENAME_CMP to compare file names. + (ar_open): Prepend "tmp-" instead of appending "-tmp", to create + the temporary file name. + + * configure.in: Check for setmode. + * configure: Regenerate. + +2000-05-24 Alan Modra + + * objdump.c (display_target_list): Close the bfd. + (display_info_table): Likewise. + +2000-05-14 H.J. Lu (hjl@gnu.org) + + * objcopy.c (filter_symbols): Don't strip global symbols in + relocatable object files. + +2000-05-14 Alan Modra + + * size.c (usage): Associate short options with corresponding long + option to give a clue as to their function. + +2000-05-14 Philippe De Muyter + + * size.c (main): Accept and ignore `-f' option. + +2000-05-13 Alan Modra + + * bucomm.h (gettext, dgettext, dcgettext, textdomain, + bindtextdomain): Replace defines with those from intl/libgettext.h + to quieten gcc warnings. + +2000-05-12 H.J. Lu + + * nlmconv.c (temp_filename): Removed. + + * nlmconv.c (link_inputs): Use make_temp_file () instead of + choose_temp_base (). + * objdump.c (display_target_list): Likewise. + (display_info_table): Likewise. + +2000-05-08 Alan Modra + + * objcopy.c (setup_section): Add const and gettext calls for err. + +2000-05-02 H.J. Lu + + * readelf.c (get_osabi_name): Handle ELFOSABI_NONE instead of + ELFOSABI_SYSV. Also handle ELFOSABI_NETBSD, ELFOSABI_HURD, + ELFOSABI_SOLARIS, ELFOSABI_MONTEREY, ELFOSABI_IRIX, + ELFOSABI_FREEBSD, ELFOSABI_TRU64, ELFOSABI_MODESTO + and ELFOSABI_OPENBSD. + +2000-05-02 Kazu Hirata + + * coffgrok.c: Add ATTRIBUTE_UNUSED as appropriate. + * srconv.c: Likewise. + * sysdump.c: Likewise. + +2000-04-23 Denis Chertykov + + * readelf.c (guess_is_rela): AVR uses RELA relocations. + (get_machine_name): machine name for EM_AVR added. + +2000-04-21 Richard Henderson + David Mosberger + + * Makefile.am (readelf.o): Add elf/ia64.h. + * Makefile.in: Rebuild. + * readelf.c: Include elf/ia64.h. + (guess_is_rela, dump_relocations): Handle EM_IA_64. + +2000-04-17 Timothy Wall + + * objdump.c (disassemble_data): Set octets per byte *after* + resolving arch/mach for binary files. + +2000-04-14 Michael Sokolov + + * arlex.l: Add directives to increase lex buffer size. + + * objdump.c, readelf.c: Don't include strarg.h or varargs.h. They are + already included by bucomm.h. + +2000-04-10 Philippe De Muyter + + * readelf.c (dynamic_segment_mips_val): Call `sprintf', not + `strftime' since strftime is not available on all systems. + (process_mips_specific): Ditto. + +2000-04-07 Andrew Cagney + + * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add + --enable-build-warnings option. + * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions. + * Makefile.in, configure: Re-generate. + +2000-04-06 Alan Modra + + * addr2line.c: Update copyright. + * objcopy.1: Likewise, and title. + * strings.1: Likewise. + + * version.c (print_version): Add 2000. + + * rddbg.c (read_section_stabs_debugging_info): Don't use + bfd_size_type for strx to avoid printf problems if BFD64. + + * bucomm.c: (report): Remove `static'. + Move inclusion of stdarg.h/vararg.h from here. + * bucomm.h: To here. + (CONST): Change all occurences to const. + (report): Declare it. + (bfd_fatal): Add ATTRIBUTE_NORETURN. + (fatal): Add ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN. + (non_fatal): Add ATTRIBUTE_PRINTF_1. + + * ar.c (main): Use fatal or non_fatal instead of fprintf. + Correct a typo in an error message. + (do_quick_append): Use non_fatal instead of fprintf. + (move_members): Use fatal instead of fprintf, exit. + * coffdump.c (main): Same here. + + * dlltool.c (display): Delete. + (warn): Delete. + (inform): Use `report' instead of `display'. + (rvaafter): Remove trailing \n from fatal error msg. + (rvabefore): Ditto. + (asm_prefix): Ditto. + (yyerror): Replace `warn' with `non_fatal', and remove \n. + (def_name): Likewise. + (run): Likewise. + (scan_all_symbols): Likewise. + (gen_lib_file): Likewise. + (def_library): Likewise. Remove extra program_name too. + (run): Remove \n from inform strings. + (scan_drectve_symbols): Likewise. + (add_excludes): Likewise. + (scan_open_obj_file): Likewise. + (gen_exp_file): Likewise. + (gen_lib_file): Likewise. + (process_duplicates): Likewise. + + * Makefile.am (dllwrap_SOURCES): Add version.c. + * dllwrap.c (program_version): Delete. + (print_version): Delete. + (display): Always print trailing \n. + (warn): New. + (delete_temp_files): Use warn instead of fprintf. Use gettext. + (run): Here too. + (main): And here. + (usage): gettext'ify. + (long_options): Add missing initialisers. + + * nlmconv.c (main): Use fatal/non_fatal instead of fprintf. + (select_output_format): Likewise. + (powerpc_mangle_relocs): Likewise. + (link_inputs): Likewise. + + * nm.c (set_print_radix): Use fatal instead of fprintf, exit. + (set_output_format): Likewise. + (main): Use non_fatal instead of fprintf. + (display_rel_file): Likewise. + + * objdump.c (slurp_symtab): Use non_fatal instead of fprintf. + (slurp_dynamic_symtab): Same here. + (disassemble_data): And here. + (read_section_stabs): And here. + (read_section_stabs): And here. + (dump_bfd): And here. + (main): And here. + (objdump_sprintf): Use fatal instead of fprintf, exit. + (disassemble_data): Same here. + + * rdcoff.c (parse_coff_type): Use non_fatal instead of fprintf. + (parse_coff_struct_type): Same here. + (parse_coff_enum_type): And here. + (parse_coff): And here. + * rddbg.c (read_debugging_info): And here. + * size.c (main): And here. + * windres.c (format_from_name): And here. + * wrstabs.c (stab_write_symbol): Here too. + (write_stabs_in_sections_debugging_info): And here. + (stab_int_type): And here. + (stab_struct_field): And here. + (stab_typdef): And here. + + * rescoff.c (read_coff_rsrc): Use fatal instead of fprintf, exit. + * srconv.c (main): Same here. + * strings.c (main): And here. + (integer_arg): And here. + * sysdump.c (main): And here. + +2000-04-06 Timothy Wall + + * objdump.c (dump_section_header): Print CLINK and BLOCK flags. + +2000-04-06 Jason Merrill + + * readelf.c (decode_location_expression): Loop through multiple + operations. + (read_and_display_attr): Pass in length. + + * readelf.c (read_and_display_attr): Add CU offset to references. + (display_debug_info): Pass it in. + +2000-04-06 Nick Clifton + + * readelf.c (decode_ARM_machine_flags): New function. + (get_machine_flags): Call decode_ARM_machine_flags for ARM + targets. + + (get_machine_name): Catch EM_AVR + +2000-04-05 Alan Modra + + * binutils.texi: Remove optional `=' from long options that have + an `=' in the argument. + * objcopy.1: Here too. Remove extra space on discard-all. + + * binutils.texi (objcopy): Mention --redefine-sym. + * objcopy.1: Here too. + * NEWS: And here. + + * objcopy.c (parse_flags): Split off flag names from error message + gettext as they are not translated. + (copy_main): Similarly split off option name for --add-section, + --set-section-flags, --change-section-vma, --change-section-lma + error messages. + Some white space changes. + + from Matthew Benjamin + * objcopy.c (struct redefine_node): New. + (redefine_sym_list): New. + (redefine_list_append): New. + (lookup_sym_redefinition): New. + (OPTION_REDEFINE_SYM): New. + (copy_options): Add --redefine-sym option. + (copy_usage): Mention it. + (filter_symbols): Rename symbols on redefine_sym_list. + (copy_object): Call filter_symbols if redefine_sym_list != NULL. + (copy_main): Handle OPTION_REDEFINE_SYM. + +2000-04-04 H.J. Lu + + * readelf.c (process_symbol_table): Correctly read in symbol + versioning information. + +2000-04-04 Alan Modra + + * po/binutils.pot: Regenerate. + + * addr2line.c (usage): Restore translated part of bug string. + * ar.c (usage): Likewise. + * nlmconv.c (show_usage): Likewise. + * nm.c (usage): Likewise. + * objcopy.c (copy_usage): Likewise. + (strip_usage): Likewise. + * objdump.c (usage): Likewise. + * readelf.c (usage): Likewise. + * size.c (usage): Likewise. + * strings.c (usage): Likewise. + * windres.c (usage): Likewise. + + * Makefile.am (MKDEP): Use gcc -MM rather than mkdep. + (DEP): Quote when passing vars to sub-make. Add warning + message to end. + (DEP1): Rewrite for "gcc -MM". + (CLEANFILES): Add DEP2. + Update dependencies. + * Makefile.in: Regenerate. + +2000-04-04 H.J. Lu + + * Makefile.am (GENERATED_HFILES): Add rcparse.h + (arparse.h): Depend on arparse.c + (defparse.h, nlmheader.h, rcparse.h, sysinfo.h): Similarly. + +2000-04-03 H.J. Lu (hjl@gnu.org) + + * size.c (usage): Use REPORT_BUGS_TO. + +2000-04-03 Alan Modra + + * bucomm.h: #include "bin-bugs.h" + * addr2line.c (usage): Use REPORT_BUGS_TO. + * ar.c (usage): Likewise. + * nlmconv.c (show_usage): Likewise. + * nm.c (usage): Likewise. + (OPTION_TARGET): Define. + (long_options): Use OPTION_TARGET rather than 200. + (main): Likewise. + + * objcopy.c (copy_usage): Use REPORT_BUGS_TO. + (strip_usage): Likewise. + * objdump.c (usage): Likewise. + * readelf.c (usage): Likewise. + * strings.c (usage): Likewise. + * windres.c (usage): Likewise. + +2000-03-31 John David Anglin + + * readelf.c: Include sys/types.h before sys/stat.h for ultrix. + +2000-03-27 Nick Clifton + + * rddbg.c (read_section_stabs_debugging_info): Catch out of range + string offsets in corrupt stabs entries. + +2000-03-27 Alan Modra + + * readelf.c: Include elf/avr.h + (dump_relocations): Add EM_AVR case. + +2000-03-09 Tim Waugh + + * strings.1: Correct '-bytes' to '--bytes'. + +2000-03-08 H.J. Lu + + * Makefile.am (install-exec-local): Depend on + install-binPROGRAMS for parallel make. + * Makefile.in: Regenerated. + +2000-02-27 Ian Lance Taylor + + From Brad Lucier : + * readelf.c (process_dynamic_segment): Add cast to make sure + argument to %* is int. + +2000-02-25 H.J. Lu + + * configure.in (AC_SEARCH_LIBS): Pass m, not -lm. + +2000-02-24 Nick Clifton + + * configure.in: Add arm-wince, mips-pe and sh-pe targets. + * configure: Regenerate. + + * dlltool.c: Add support for sh-pe and mips-pe targets. + * rescoff.c: Add support for sh-pe and mips-pe targets. + +2000-02-23 H.J. Lu + + * readelf.c (get_osabi_name): Handle ELFOSABI_LINUX. + +2000-02-22 Nick Clifton + + * readelf.c (process_symbol_table): Remove use of ELF_ST_OTHER. + +2000-02-22 Ian Lance Taylor + + From Brad Lucier : + * readelf.c (process_version_sections): Add casts to make sure + argument to %* is an int. + (process_mips_specific): Add casts to make printf arguments match + format. + +2000-02-21 Alan Modra + + * objdump.c (dump_section_header): Change `opb' to unsigned. + (find_symbol_for_address): Same here. + (disassemble_data): And here. Change `addr_offset', + `stop_offset', `nextstop_offset' to unsigned long. + (dump_data): Change opb to unsigned. + +2000-02-18 Frank Ch. Eigler + + * resrc.c: Remove unmatched #if for cygwin. + +2000-02-14 Fernando Nasser + + * binutils.texi: Document the change of flavor name from atpcs-special + to special-atpcs to prevent name conflict in gdb. + +2000-02-08 Timothy Wall + + * objdump.c (show_line): Fix bug preventing printing of the very + first line (line zero) of a file when interlisting source and + assembly. Added option to print entire context from start of file + when the first line from that file is encountered. + +2000-02-03 Timothy Wall + + * objdump.c (dump_section_header, find_symbol_for_address, + show_line, disassemble_bytes, disassemble_data, dump_data): + distinguish between octets and bytes. + +2000-01-27 Thomas de Lellis + + * nm.c (print_symbol_info_bsd): Use bfd_is_undefined_symclass to + check to unresolved symbols. + (print_symbol_info_sysv): Ditto. + (print_symbol_info_posix): Ditto. + + * binutils.texi: Document new 'V' symclass flag for nm. + +2000-01-27 Nick Clifton + + * binutils.texi (objdump): Document new ARM specific + disassembler options. + + * objdump.c (usage): Call disassembler_usage(). + +2000-01-27 Alan Modra + + * readelf.c (get_dynamic_flags): Return buff. + (process_dynamic_segment): Don't pass error strings to printf + as format arg. + (read_and_display_attr): Use lx and ld to print longs. + (process_corefile_note_segment): Cast bfd_vma to unsigned long + before printing. + Update copyright. + +2000-01-17 Nick Clifton + + * readelf.c (get_osabi_name): Recognise ELFOSABI_ARM. + +2000-01-15 Alan Modra + + * debug.c (debug_name_type): Return DEBUG_TYPE_NULL rather than + false. + (debug_tag_type): Here too. + * ieee.c (ieee_builtin_type): And here. + * stabs.c (parse_stab_type, parse_stab_array_type): And here. + +2000-01-13 Nick Clifton + + * readelf.c (get_machine_name): Change EM_S370 to return "IBM + System/370". + +2000-01-11 Nick Clifton + + * readelf.c (get_dynamic_type): Remove DT_ENCODING. + +2000-01-10 Nick Clifton + + * readelf.c (get_note_type): Display NT_WIN32PSTATUS notes. + +2000-01-07 Mumit Khan + + * windres.c (long_options): Add --use-temp-file and + --no-use-temp-file options. + (usage): Document. + (main): Handle. + + * windres.h: Update read_rc_file prototype. + + * resrc.c (cpp_temp_file): New static variable. + (istream_type): New static variable. + (close_pipe): Delete function. + (run_cmd): New static function. + (open_input_stream): New static function. + (close_input_stream): New static function. + (look_for_default): Handle DOS directory separator. Use + open_input_stream instead of popen. + (read_rc_file): Likewise. + + * binutils.texi: Document --use-temp-file, --no-use-temp-file + options. + +2000-01-04 Mumit Khan + + * dlltool.c (create_compat_implib): New variable. + (gen_exp_file): Use. + (make_one_lib_file): Use. + (long_options): Add --compat-implib option. + (usage): Handle. + (main): Handle. + + * dllwrap.c (enum target_type): Rename MINGW32_TARGET to MINGW_TARGET. + (main): Use. Don't look for "32" in cygwin and mingw target names. + +2000-01-03 Nick Clifton + + * binutils.texi: Document new, ARM specific disassembler + command line switch "-M force-thumb". + +For older changes see ChangeLog-9899 + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff -uprN binutils-2.14.90.0.7/binutils/ChangeLog-0203 binutils-2.14.90.0.8/binutils/ChangeLog-0203 --- binutils-2.14.90.0.7/binutils/ChangeLog-0203 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/ChangeLog-0203 2004-01-14 13:07:44.000000000 -0800 @@ -0,0 +1,2181 @@ +2003-12-31 Daniel Jacobowitz + + * MAINTAINERS: Rename CONFIGURE to BUILD SYSTEM and add myself. + +2003-12-29 Nick Clifton + + * readelf.c (debug_line_pointer_size): Replace with an array + called 'debug_line_pointer_sizes'. + (num_debug_line_pointer_sizes): New variable. + (display_debug_lines): Extract pointer size from the + debug_line_pointer_sizes array. + (display_debug_loc): Likewise. + (prescan_debug_info): Fill in the debug_line_pointer_sizes + array. + +2003-12-23 Ralf Baechle + Maciej W. Rozycki + + * objcopy.c (bfd_flags_to_set, bfd_flags_to_clear): New variables + to handle flags for tweaking. + (copy_options): New options: impure, pure, readonly-text, + writable-text. + (copy_usage, copy_object, command_line_switch): Handle the new + options. + * doc/binutils.texi: Document the new options. + +2003-12-22 Jakub Jelinek + + * objdump.c (disassemble_bytes): Subtract rel_offset from printed + reloc address. + (disassemble_section): Set rel_offset to section->vma instead of + pinfo->buffer_vma. + +2003-12-19 Kazuhiro Inaoka + + * readelf.c (guess_is_rela): Changed m32r's default type to RELA. + +2003-12-11 Nick Clifton + + * objcopy.c (strip_usage): Add --only-keep-debug. + (copy_usage): Likewise. + +2003-12-04 Nick Clifton + + * objcopy.c (copy_object): Do not copy the object if the + output file's format cannot be set to that of the input file. + If the input file's format is unknown, fail. + +2003-11-28 Ian Lance Taylor + + * cxxfilt.c (usage): Mention new -p/--no-params options. + +2003-11-28 Alan Modra + + * Makefile.am (install-exec-local): Remove common term from string + comparison. + * Makefile.in: Regenerate. + * doc/Makefile.am: Don't use $<. + * doc/Makefile.in: Regenerate. + +2003-11-27 Nick Clifton + + * rename.c (smart_rename): Make sure that we have write + permission on the destination file before renaming. + +2003-11-26 Daniel Jacobowitz + Nick Clifton + + * readelf.c: Add a comment describing the difference between + readelf and objdump. + * doc/binutils.texi (readelf): Likewise. + +2003-11-25 Danny Smith + + * doc/binutils.texi (dlltool): Document dlltool --temp-prefix + option. + * dlltool.c (usage): Likewise. + +2003-11-22 Ian Lance Taylor + + * cxxfilt.c (long_options): Add --no-params. + (main): Handle -p/--no-params. + * doc/binutils.texi (c++filt): Document -p/--no-params. + +2003-11-19 Alan Modra + + * objdump.c: Wrap long lines, init vars separately from decl. + (disassemble_section): Reset require_sec after call to + find_symbol_for_address. + +2003-11-14 Nick Clifton + + * objdump.c (find_symbol_for_address): Change parameters so + that the entire disassemble_info structure is passed, not just + a few fields. Use the symbol_is_valid field to check the + validity of located symbols and continue searching if they are + not valid. + (objdump_print_addr): Alter parameters passed to + find_symbol_for_address. + (objdump_symbol_at_address): Likewise. + (disassemble_section): Likewise. Also use symbol_is_valid + function to check the validity of located symbols. + +2003-11-13 Tobias Burnus + + * ar.c (open_inarch): Emit a warning when an archive is created + (only shown with -v) in order to confrom to POSIX specification. + +2003-11-11 Wang Li + + * objcopy.c (wildcard): New variable. True if wildcard pattern + matching is allowed in symbol names. + (strip_options): Add -w option to enable wildcard pattern + matching. + (copy_options): Likewise. + (copy_usage): Mention new switch. + (strip_usage): Likewise. + (is_specified_symbol): If performing wildcard matches use fnmatch + to compare symbol names with entries on the symbol list. + (strip_main): Accept -w switch. + (copy_main): Likewise. + * Makefile.am: Add dependency on fnmatch.h for objcopy.c + * Makefile.in: Regenerate. + * doc/binutils.texi: Document new switch. + * NEWS: Mention new switch. + +2003-11-11 Alan Modra + + * objdump.c: Revert rev 1.81 commit. + +2003-11-10 Tobias Burnus + + * ar.c (print_contents): Remove "member" from verbose output in + order to conform to POSIX specification. + +2003-11-10 Alan Modra + + * README: Expand bug reporting information. + +2003-11-07 Jonathan R. Grant + + * bucomm,c (get_file_size): New function. Returns the size of a + file. + * bucomm.h: Add prototype for get_file_size. + * addr2line.c (process_file): Use new function. + * ar.c (main, ranlib_only, ranlib_touch): Likewise. + * nm.c (display_file): Likewise. + * objcopy.c (add_specific_symbols, copy_file, strip_main, + copy_main): Likewise. + * objdump.c (display_file): Likewise. + * size.c (display_file): Likewise. + * strings.c (strings_file): Likewise. + * readelf.c (process_file): Use similar code to get_file_size. + +2003-11-06 Bruno Rohee + + * ieee.c: Fix "the the" typo. + * stabs.c: Likewise. + +2003-10-30 Marshall T. Vandegrift + + * readelf.c (dump_section): Do not dump the contents of SHT_NOBITS + sections - they have no file space assigned to their contents. + +2003-10-28 Segher Boessenkool + + * readelf.c (dump_section): Don't display DEL characters. + +2003-10-27 Kazu Hirata + + * ChangeLog: Fix typos. + * ChangeLog-9197: Likewise. + * ChangeLog-9899: Likewise. + * NEWS: Likewise. + * ar.c: Fix comment typos. + * arsup.c: Likewise. + * coffgrok.c: Likewise. + * debug.c: Likewise. + * debug.h: Likewise. + * dlltool.c: Likewise. + * ieee.c: Likewise. + * nm.c: Likewise. + * objdump.c: Likewise. + * prdbg.c: Likewise. + * readelf.c: Likewise. + * resrc.c: Likewise. + * sysinfo.y: Likewise. + * windres.c: Likewise. + +2003-10-27 Nick Clifton + + * objcopy.c (copy_section): Do not complain when a target does not + support relocations. + (mark_symbols_used_in_relocations): Likewise. + +2003-10-14 Anil Paranjpe + + * objcopy.c (copy_main): Reads machine flags from arch_info + structure. + +2003-10-20 Andrew Cagney + + * coffgrok.h (coff_section): Replace 'struct sec" with "struct + bfd_section". + +2003-10-07 Nathan Sidwell + + * objdump.c (read_section_stabs): Just read one section, return + pointer to it. Add size parameter. + (print_section_stabs): Add string offset parameter. Adjust. + (struct stab_section_names): Add string offset member. + (find_stabs_sections): Correct check for split section suffix, + adjust read_section_stabs and print_section_stabs calls. + (dump_stabs_section): Clear string_offset, free string table. + +2003-10-01 Martin Fuchs + + * resrc.c (define_icon): Fix storage of color attributes 'planes' and + 'bit count' in icon groups. + +2003-09-30 Chris Demetriou + + * NEWS: Add an indication of the cutoff for 2.14. + +2003-09-30 Chris Demetriou + + * readelf.c (get_machine_flags): Handle E_MIPS_ARCH_64R2. + +2003-09-29 H.J. Lu + + * readelf.c (dump_relocations): Support SHN_IA_64_ANSI_COMMON. + (get_symbol_index_type): Likewise. + +2003-09-25 H.J. Lu + + * readelf.c (process_version_sections): Indent version names. + +2003-09-15 Anthony Green + + * dlltool.c (prefix_encode): Fix ISO C90 conversion. + (dlltmp): Ditto. + (dtab): Ditto. + +2003-09-14 Andreas Jaeger + + * addr2line.c: Convert to ISO C90 prototypes, change PTR, remove + unneeded (void *) casts. + * ar.c: Likewise. + * arlex.l: Likewise. + * arparse.y: Likewise. + * arsup.c: Likewise. + * binemul.c: Likewise. + * binemul.h: Likewise. + * bucomm.c: Likewise. + * bucomm.h: Likewise. + * budbg.h: Likewise. + * budemang.c: Likewise. + * budemang.h: Likewise. + * coffdump.c: Likewise. + * coffgrok.c: Likewise. + * cxxfilt.c: Likewise. + * debug.c: Likewise. + * debug.h: Likewise. + * deflex.l: Likewise. + * dlltool.c: Likewise. + * dlltool.h: Likewise. + * dllwrap.c: Likewise. + * emul_aix.c: Likewise. + * filemode.c: Likewise. + * ieee.c: Likewise. + * nlmconv.c: Likewise. + * nlmconv.h: Likewise. + * nlmheader.y: Likewise. + * nm.c: Likewise. + * prdbg.c: Likewise. + * rclex.l: Likewise. + * rcparse.y: Likewise. + * rdcoff.c: Likewise. + * rddbg.c: Likewise. + * rename.c: Likewise. + * resbin.c: Likewise. + * rescoff.c: Likewise. + * resrc.c: Likewise. + * size.c: Likewise. + * srconv.c: Likewise. + * stabs.c: Likewise. + * strings.c: Likewise. + * sysdump.c: Likewise. + * sysinfo.y: Likewise. + * syslex.l: Likewise. + * unwind-ia64.c: Likewise. + * unwind-ia64.h: Likewise. + * version.c: Likewise. + * windres.c: Likewise. + * windres.h: Likewise. + * winduni.c: Likewise. + * wrstabs.c: Likewise. + +2003-09-10 James E Wilson + + * MAINTAINERS: Update my e-mail address. + +2003-09-09 Ian Lance Taylor + + * MAINTAINERS: Update my e-mail address. + +2003-09-04 Nick Clifton + + * MAINTAINERS: Make it clear what should be done with patches to + the top level configure files (other than config.guess and + config.sub). Add binutils@sources.redhat.com as an address to + which patches can be sent. + +2003-09-04 Nick Clifton + + * readelf.c (get_machine_flags): Recognise V850E1 machine type. + +2003-09-03 Andrew Cagney + + * objdump.c: Refer to init_disassemble_info in comments. + (disassemble_data): Replace INIT_DISASSEMBLE_INFO with + init_disassemble_info. + +2003-09-03 Nick Clifton + + * objdump.c (struct objdump_disasm_info): Add new fields + 'dynrelbuf', 'dynrelcount' and 'disassemble_fn'. + (process_section_p): New function: Returns TRUE if a section + can be dumped. + (disassemble_section): New function: Contains the body of + disassemble_data(), but just for one section. + (disassemble_data): Use bfd_map_over_sections to walk section + chain. + (find_stabs_section): New function: Find a stabs containing + section and then dump it. + (dump_stabs_section): New function: Use bfd_map_over_sections + to find the section to dump. + (dump_stabs): Use dump_stabs_section. + (dump_section): New function: Display the contents of a + section. + (dump_data): Use bfd_map_over_sections to display section + contents. + (dump_relocs_in_section): Display the relocs in a given section. + (dump_relocs): Use bfd_map_over_sections to display relocs. + (adjust_addresses): New function: Adjust the vma and lma of + sections. + (dump_bfd): Use bfd_map_over_sections. + * doc/binutils.texi: Document the "objdump -s" (no longer) + dumps empty sections. + +2003-08-24 Jonathan R. Grant + + * objdump.c: Improve comments/documentation. + dump_data: Eliminate duplicate function calls to bfd_section_size. + +2003-09-02 Alan Modra + + * MAINTAINERS: Move Dave Anglin's entry to where it belongs. + +2003-08-21 Nick Clifton + + * po/tr.po: Updated Turkish translation. + +2003-08-14 Alan Modra + + * dep-in.sed: Remove libintl.h. + * Makefile.am (POTFILES.in): Unset LC_COLLATE. + Run "make dep-am". + * Makefile.in: Regenerate. + +2003-08-11 Ian Lance Taylor + + * readelf.c (process_archive): Fix error handling. Remove memory + leak. + + * readelf.c: Add ability to read archives. + (archive_file_offset): New variable. + (archive_file_size): New variable. + (get_data): Include archive_file_offset in file offset + calculation when fseeking. + (process_program_headers): Likewise. + (process_symbol_table): Likewise. + (process_dynamic_segment): Handle computation of end of file + position when the file is in an archive. + (process_object): New function. Contains the body of + process_file(). + (process_archive): New function. Call process_object on each + member of an archive. + (process_file): Detect archives and handle appropriately. + * Makefile.am: Add dependency on aout/ar.h for readelf.c + * Makefile.in: Regenerate. + * NEWS: Document readelf's new ability. + * doc/binutils: Alter text to say that readelf supports archives + and 64-bit ELF files. + +2003-08-08 Nick Clifton + + * po/fr.po: Updated French translation. + +2003-08-05 Alan Modra + + * objcopy.c: Remove unnecessary prototypes and casts. + * objdump.c: Remove unnecessary casts. + * readelf.c: Convert to C90. Remove unnecessary prototypes and casts. + (get_osabi_name): Move so we don't need a forward declaration. + +2003-08-04 Bradley Harrington + Alan Modra + + * objdump.c (include_paths, include_path_count): New vars. + (usage): Describe --include. + (long_options): Add "include". + (add_include_path): New function. + (struct print_file_list): Make filename const. Add modname. + (try_print_file_open, update_source_path): New functions. + (show_line): Use them. + (main): Handle 'I' option. Don't check for NULL xrealloc arg. + +2003-07-30 Alan Modra + + * objdump.c: Remove unnecessary prototypes. + (disassemble_bytes): Add rel_offset parameter. Simplify reloc skipping + code, and print relocs when dump_dynamic_reloc_info. + (disassemble_data): Read and handle dynamic relocs. Correct reloc + skip code. Formatting. + (dump_bfd): Don't dump dynamic relocs when disassembling. + +2003-07-29 Ben Elliston + + * MAINTAINERS: Remove self as M88k maintainer. Future M88k + maintenance defaults to the blanket write privilege maintainers. + +2003-07-29 Michael Meissner + + * MAINTAINERS: Updated my email address. + +2003-07-29 Nick Clifton + + * objdump.c: Update to ISO C. + +2003-07-24 Nick Clifton + + * objdump.c (disassemble_data): Do not ignore sections without the + LOAD flag when disassemble_all is true. Only print a message + about disassembling a section if it contains some data. + + * po/fr.po: Updated French translation. + +2003-07-23 Nick Clifton + + * objcopy.c: Switch to ISO C. Remove debugging code accidentally + left in. Some formatting tidy ups. + +2003-07-22 Salvador Eduardo Tropea + + * objdump.c: New command line option --debugging-tags. + * doc/binutils.texi: Document new command line option. + * prdbg.c: Code to print the debug info as tags compatible + with ctags. + * budbg.h: Adjust prototype. + * NEWS: Mention new switch + +2003-07-18 Nick Clifton + + * objdump.c (main) :Accept multiple -M switch. + * doc/binutils.texi: Document that multiple -M switches are + accepted and that a single -M switch can contain comma + separated options. + +2003-07-17 Nick Clifton + + * objdump.c (main): Issue a warning message if multiple -M + switches are used. + + * doc/binutils.texi (objdump): Update documentation about -M + option. + +2003-07-17 Nick Clifton + + * po/es.po: New Spanish translation. + +2003-07-11 Alan Modra + + * po/binutils.pot: Regenerate. + +2003-07-05 Christopher Faylor + + * dlltool.c (prefix_encode): Use a fixed length for alpha. + +2003-07-04 Christopher Faylor + + * dlltool.c (prefix_encode): New function. Encode temp file prefix + from pid. + (dlltmp): Pass address of pointer being alloced or suffer neverending + mallocs. + (make_one_lib_file): Allocate enough space for new longer stub names. + (gen_lib_file): Ditto. + (main): Generate the temp file prefix from the pid if prefix was not + specified on the command line. + +2003-07-04 Nick Clifton + + * readelf.c (get_data): Print (unsigned) hex values for size and + offset in error messages. + (process_section_headers): If the string table could not be + allocated, do not continue. + +2003-07-01 Jakub Jelinek + + * readelf.c (dynamic_segment_ia64_val): Print address and newline + for sections by default. Comment fix. + +2003-06-28 Danny Smith + + * rcparse.y (res_text_field): New res_id variable. + (res_null_text): New static const struct res_id object, + with empty unicode name field. + (control): Pop parsing of optresidc up one level. Set + res_text_field to $2 except for controls which do not accept + a text field. Set res_text_field to res_null_text for the + special cases (viz. COMBOBOX, EDITTEXT, LISTBOX, SCROLLBAR). + (control_params): Adjust to use res_text_field rather + than optresidc. + (COMBOBOX): Add comment about discrepency between documented + vs. observed default style. + * resrc.c (define_control): Make first param const. + * windres.h (define_control): Adjust prototype. + +2003-06-27 Nick Clifton + + * objcopy.c (copy_object): Replace call to + bfd_create_gnu_debuglink_section with separate calls to + bfd_add_gnu_debuglink_section and + bfd_fill_in_gnu_debuglink_section, separated by a walk over the + symbol tables. + +2003-06-26 Roland McGrath + + * readelf.c (loadaddr): Variable removed. + (dynamic_info, version_info): Fix type long -> bfd_vma. + (program_headers): New variable. + (get_program_headers): New function, broken out of + process_program_headers. + (process_program_headers): Call it. Don't set `loadaddr'. + (slurp_ia64_unwind_table): Use get_program_headers. + (process_corefile_note_segments): Likewise. + (offset_from_vma): New function. + (process_relocs, process_dynamic_segment): Call that instead of + subtracting `loadaddr'. + (process_version_sections, process_symbol_table): Likewise. + (process_mips_specific): Likewise. + +2003-06-26 Nick Clifton + + * objcopy (enum strip_action): Add STRIP_NONDEBUG. + (OPTION_ONLY_KEEP_DEBUG): New. + (strip_options): Add --only-keep-debug. + (copy_options): Likewise. + (is_strip_section): Invert return value if STRIP_NONDEBUG is + active. + (copy_object): Do not copy private data when STRIP_NONDEBUG is + active. + (setup_section): Likewise. + (strip_main): Handle --only-keep-debug. + (copy_main): Likewise. + * NEWS: Mention new switch + * doc/binutils.texi: Document new switch. + +2003-06-25 Alan Modra + + * NEWS: Correct spelling of "relocatable". + * objdump.c: Likewise. + * sysroff.info: Likewise. + +2003-06-19 Nick Clifton + + * readelf.c (print_vma): When printing DEC_5 values, if the + number is bigger than 99999 switch to using hexadecimal + notation. + +2003-06-11 Nick Clifton + + * objcopy.c (gnu_debuglink_filename): New variable. + (OPTION_ADD_GNU_DEBUGLINK): New switch + (copy_options): Describe --add-gnu-debuglink switch. + Mention that --strip-debug removes sections as well. + (is_strip_section): Process the sections removed and kept + lists before checking for debugging sections. + (add_redefine_syms_file): Make function static. + (copy_object): Use is_strip_section. + Check to see if a .gnu_debuglink section should be added. If + so, call bfd_add_gnu_debuglink. + (setup_section): Use is_strip_section. + (copy_section): Use is_strip_section. + (copy_main): Handle OPTION_ADD_GNU_DEBUGLINK. + * NEWS: Mention new objcopy switch. + * doc/binutils.texi: Document new switch. + +2003-06-11 H.J. Lu + + * po/Make-in (DESTDIR): New. + (install-data-yes): Support $(DESTDIR). + (uninstall): Likewise. + +2003-06-11 Alan Modra + + * Makefile.in: Regenerate. + +2003-05-23 Jakub Jelinek + + * readelf.c (get_segment_type): Handle PT_GNU_STACK. + +2003-06-03 Elias Athanasopoulos + + * NEWS: Document the new BSD/POSIX single-character mapping for + .comment/.note sections. + +2003-06-02 Chris Demetriou + Jason Thorpe + + * objcopy.c (redefine_list_append): Add an argument that + indicates the context from which this function is being + called. Change all callers. + (copy_options): Add a new option, --redefine-syms. + (copy_usage): Document new option. + (copy_main): Handle the --redefine-syms option. + * doc/binutils.text (objcopy): Document new option. + +2003-05-31 Richard Henderson + + * readelf.c (byte_get_signed): New. + (get_encoded_value): New. + (display_debug_frames): Use it. Always pre-process opcodes. + +2003-05-20 Michal Ludvig + + * readelf.c (display_debug_frames): Print both registers + for DW_CFA_register. + +2003-05-16 Kelley Cook + + * configure.in: Accept i[3-7]86 variants. Escape '[]' for + i[3-7]86-*-interix. + * configure.in: Regenerate. + +2003-05-13 Michael Eager + + * objcopy.c: Treat identical src/dst file names as if only one + entered. One Windows creating an output file of the same name as + the input file will delete the input file before it is read. + +2003-05-12 Salvador Eduardo Tropea + + * debug.c (debug_get_real_type): Extend test for circular debug + references. + +2003-05-12 Nick Clifton + + * configure.in (ALL_LINGUAS): Add zh_CN. + * configure: Regenerate. + * po/zh_CN.po: New file: Chinese (simplified) translation. + +2003-05-11 Jason Eckhardt + + * MAINTAINERS: Update my mail address. + +2003-05-07 H.J. Lu + + * readelf.c (dump_relocations): Enlarge the type field in wide + mode by one character. + +2003-05-03 Richard Henderson + + * readelf.c (struct Frame_Chunk): Add cfa_exp. + (frame_display_row): Just print "exp" for cfa or register + defined by a location expression. + (display_debug_frames): Handle DW_CFA_def_cfa_expression, + DW_CFA_expression, DW_CFA_MIPS_advance_loc8. + +2003-04-30 H.J. Lu + + * objdump.c (only): Change it to char **. + (only_size): New. + (only_used): New. + (disassemble_data): Check only as an array. + (dump_data): Likewise. + (dump_relocs): Likewise. + (main): Treat only as an array. + +2003-04-24 Dimitrie O. Paun + + * doc/binutils.texi: Fix the documentation for the -fo option. + +2003-04-23 J"orn Rennecke + + * readelf.c (get_machine_name) : Amend return value + to refer to SuperH. + + * readelf.c (decode_location_expression): Don't add a trailing ';'. + +2003-04-23 Dimitrie O. Paun + Nick Clifton + + * windres.c (long_options): Move close to main, where it is used. + Add 'input' and 'output' long options. + (main): Accept "-fo" as an alias for "-o". This is for rc + comptibility. + * doc/binutils.texi: Mention that -fo is accepted as an alias for + -o, but discourage its use. + +2003-04-22 Dimitrie O. Paun + + * windres.c (format_from_name): Make the exit on error + behaviour optional. + (main): Rename the -I option to -J. Introduce -I as a synonym + for --include-dir. For backwards compatibility also support the + old -I behaviour, but issue a deprecation warning. + * doc/binutils.texi: Rename -I to -J. Document the new behaviour + of the -I option. + +2003-04-22 Kazuhiro Inaoka + + * readelf.c: Replace references to Mitsubishi M32R with + references to Renesas M32R. + +2003-04-15 Rohit Kumar Srivastava + + * readelf.c: Replace occurrances of 'Hitachi' with 'Renesas'. + +2003-04-09 Alexandre Oliva + + * doc/binutils.texi (objdump) [--debugging]: Suggest readelf -w + for debugging information types not supported by objdump. + +2003-04-09 Bernd Jendrissek + + * configure.in: Recognize canonical form of i[3-6]86-pe*. + * configure: Regenerate. + +2003-04-09 Alexandre Oliva + + * readelf.c (display_debug_info): Apply RELA relocations on the + entire section. + (byte_put_little_endian, byte_put_big_endian): New functions. + (byte_put): New variable. + (get_file_header): Initialize it. + +2003-04-05 Dimitrie O. Paun + + * windres.c: Add -l for compatibility with wrc, and rc. + Use the short option as a key for long options that have + a synonymous short option. + * doc/binutils.texi: Added -l to the list of options. + +2003-04-03 Dimitrie O. Paun + + * windres.c: Add -U for compatibility with wrc, rc, and cpp. + (main): Just pass the -U option down to the preprocessor. + * doc/binutils.texi: Added -U to the list of options. + +2003-04-01 Dimitrie O. Paun + + * windres.c (usage): Report -r option. + (main): Ignore the -r option. + * doc/binutils.texi: Add -r to the list of options. + +2003-04-01 Bob Wilson + + * MAINTAINERS: Add myself as Xtensa maintainer. + +2003-04-01 Bob Wilson + + * readelf.c: Include "elf/xtensa.h". + (guess_is_rela): Add EM_XTENSA and EM_XTENSA_OLD to list of + targets that use RELA relocations. + (dump_relocations): Call elf_xtensa_reloc_type for + EM_XTENSA and EM_XTENSA_OLD. + (get_machine_name): Handle EM_XTENSA and EM_XTENSA_OLD. + +2003-04-01 Nick Clifton + + * configure.in: Change "arm-pe*" to "arm-*-pe*". Similarly for + thumb-pe*, mcore-pe and mcore-*elf. + * configure: Regenerate. + +2003-03-31 Alexandre Oliva + + * objdump.c (dump_data): Don't truncate the address to long; make + the width large enough, and uniform for all entries in a section. + +2003-03-31 H.J. Lu + + * readelf.c: Include "libiberty.h". + (dynamic_relocations): New. + (process_relocs): Properly handle dynamic relocation. + (process_dynamic_segment): Fill relocation elements in + dynamic_info. + +2003-03-31 Kevin Buettner + + * readelf.c (read_and_display_attr, read_and_display_attr_value): + Add new arguments ``offset_size'' and ``dwarf_version''. Adjust + all callers. + (display_debug_lines, display_debug_pubnames, display_debug_info) + (display_debug_aranges, display_debug_frames, read_and_display_attr) + (read_and_display_attr_value): Add 64-bit DWARF support. + +2003-03-31 Ian Lance Taylor + + * rcparse.y: Replace uses of 'optstringrc' with 'optresid'. + (optresid): Handle a resource id that can be a string or a number. + * resrc.c (define_control): Replace 'text' parameter with 'iid' a + struct res_id. + (define_icon_control): Pass a struct res_id to define_control. + * windres.h (define_control): Change prototype. + +2003-03-24 Elias Athanasopoulos + + * objcopy (OPTION_FORMATS_INFO): Define. + (strip_options): Add "info"/OPTION_FORMATS_INFO option. + (copy_options): Likewise. + (strip_usage): Add "--info" to usage. + (copy_usage): Likewise. + (strip_main): Declare formats_info. Iniatilize it to FALSE. + Handle "info". + (copy_main). Likewise. + * doc/binutils.texi. Document the "--info" option for + objcopy/strip. + * NEWS: Mention the new command line switch. + + * objdump.c (endian_string): Move to bucomm.c. + (display_info): Likewise. + (display_target_list): Likewise. + (display_info_table): Likewise. + (display_target_tables): Likewise. + (main): Assign the return value of display_info to exit_status. + * bucomm.c: Include bfdver.h and libbfd.h + (display_target_list): Call bfd_nonfatal instead of nonfatal and + return 0 on a non-fatal error, 1 on success. + (display_info_table): Likewise. + * bucomm.h (display_info): Provide a prototype. + * Makefile.am (bucomm.o): Add dependencies on bfdver.h and + libbfd.h. + * Makefile.in: Regenerate. + +2003-03-22 Danny Smith + + * dlltool.c (gen_def_file): Put demangled name comments on + own line preceding export name. + +2003-03-17 Nick Clifton + + * objdump.c (disassemble_data): Use disasm_info.fprintf_func not + printf for emitting new lines. + +2003-03-16 Elias Athanasopoulos + + * nm.c (print_symbol_info_bsd): Print the symbol's size instead of + the symbol's value when --size-sort is used, unless -S is used. + doc/binutils.texi (--size-sort): For non-bsd formats both the + value and size of the symbols are displayed. + +2003-03-13 Nick Clifton + + * po/da.po: Update. + +2003-03-12 Nick Clifton + + * MAINTAINERS: Remove Peter Targett as ARC maintainer. + +2003-03-10 Ben Elliston + + * MAINTAINERS: Update my mail address. + +2003-03-06 Elias Athanasopoulos + + * stabs.c (BYTES_IN_WORD): Remove definition. + * wrstabs.c (BYTES_IN_WORD): Likewise. + +2003-03-04 Nick Clifton + + * nm.c (main): Print a warning message if --size-sort and + --undefined-only are used together. + +2003-03-04 Elias Athanasopoulos + + * nm.c (print_symbol): Remove check for undefined_only. + +2003-03-03 Nick Clifton + + * po/da.po: Installed latest translation. + +2003-02-24 Nick Clifton + + * README: Update binutils references to 2.13. + Add paragraph about using --disable-nls. + +2003-02-24 Elias Athanasopoulos + + * doc/binutils.texi (nm --size-sort): Update. + +2003-02-21 James E Wilson + + * MAINTAINERS: Update email address. + +2003-02-21 Ian Wienand + + * readelf.c (get_ia64_dynamic_type): New function. + (dynamic_segment_ia64_val): New function. + (get_dynamic_type): If machine type is EM_IA_64 call + get_ia64_dynamic_val. + (get_ia64_section_type_name): Handle sections with types in the + SHT_IA_64_LOPSREG to SHT_IA_64_HIPSREG range. + (get_dynamic_flags): If machine type is EM_IA_64 call + dynamic_segment_ia64_val. + +2003-02-21 Bob Wilson + + * doc/binutils.texi: Fix typos and obvious texinfo mistakes. Make + section title capitalization more consistent. Update descriptions + of various options to be consistent with the code. Fix errors and + incomplete list in the description of c++filt format options. Remove + information about the linker. Change to be more polite about poor + bug reports. Replace FDL appendix with include of fdl.texi. + * doc/fdl.texi: New file. + +2003-02-21 Roger Sayle + + * objcopy.c (filter_symbols): Fix compilation problems with + HP-UX's C compiler. + +2003-02-19 Christopher Faylor + + * rclex.l (handle_quotes): Fix minor formatting problems introduced in + previous change. + +2003-02-19 Mark Blackburn + + * rclex.l (handle_quotes): Handle strings spanning more than one line. + +2003-02-12 Bob Wilson + + * nm.c (usage): Add `java' and `gnat' demangle styles and make + quotes consistent. + * objdump.c (usage): Ditto. Also fix some typos. + + * readelf.c (parse_args): Include 'H' option in call to getopt_long. + + * debug.c (debug_record_variable): Handle global register variables. + + * stabs.c (parse_stab): For N_SLINE only include + function_start_offset if the symbol is within a function; + otherwise, the value is absolute. + +2003-02-10 Nick Clifton + + * readelf.c (decode_ARM_machine_flags): Handle the + EF_ARM_MAVERICK_FLOAT flag. + +2003-02-04 Andreas Schwab + + * rddbg.c (read_section_stabs_debugging_info): Cast ptrdiff_t to + long and use %ld in printf format. + +2003-01-28 Richard Sandiford + + * readelf.c (dump_relocations): Reorder the r_info field for + little-endian mips elf64. Move #ifdef BFD64 to cover the new code. + +2003-01-21 Daniel Berlin + + * readelf.c (display_debug_loc): Skip address base changes. + +2003-01-17 Fabio Alemagna + + * readelf.c (get_osabi_name): Handle ELFOSABI_AROS, ELFOSABI_OPENVMS + and ELFOSABI_NSK. + +2003-01-16 Alan Modra + + * readelf.c: Include elf/ppc64.h. + (dump_relocations ): Use elf_ppc64_reloc_type. + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + +2003-01-02 Ben Elliston + + * readelf.c (guess_is_rela): Handle EM_IQ2000. + (get_machine_name): Likewise. + (dump_relocations): Likewise. + * NEWS: Mention IQ2000 support. + +2003-01-02 Richard Sandiford + + * readelf.c (get_machine_flags): Handle E_MIPS_ARCH_32R2. + +2002-12-30 Chris Demetriou + + * doc/binutils.texi (objdump): Note MIPS HWR (Hardware Register) + changes in MIPS -M options. + +2002-12-30 Dmitry Diky + + * Makefile.am: Add msp430 target. + * Makefile.in: Regenerate. + * readelf.c: Add support for msp430 target. + +2002-12-27 Chris Demetriou + + * doc/binutils.texi (objdump): Document MIPS -M options. + +2002-12-23 Andreas Schwab + + * readelf.c (main): Reset dump request after each file. + +2002-12-23 Nick Clifton + + * nlmconv.c (main): Pass TRUE as third argument to + bfd_arch_get_compatible. + +2002-12-23 Nick Clifton + + * strings.c (isgraphic): Replace definition with STRING_ISGRAPHIC + macro. Handle 'S' encoding, accepting 8-bit characters. + (main): Parse 'S' encoding. + (get_char): Accept 'S' encoding. + (print_strings): Use STRING_ISGRAPHIC. + (usage): Document support of 'S' encoding. + * doc/binutils.texi: Document support of 'S' encoding/ + * NEWS: Mention new feature. + +2002-12-20 Alan Modra + + * README : Don't use libibery's needed_list or + required_list, instead link libiberty/*.o. + +2002-12-19 Kazu Hirata + + * doc/binutils.texi: Fix typos. + +2002-12-14 John David Anglin + + * doc/binutils.texi: Add missing parenthesis. + +2002-12-15 Nick Kelsey + + * objcopy.c: Add --prefix-symbols= option to rename all + symbols by adding the given prefix to the begining of the symbol + name. This is useful to provide name space separation regardless + of how the object file was created. Added --prefix-sections= + and --prefix-alloc-sections= options to rename all + sections (or all sections with the alloc flag set) by adding the given + prefix to the begining of the symbol name. + * NEWS: Mention this new feature. + * doc/binutils.texi: Document this new feature. + +2002-12-13 Alan Modra + + * dlltool.c (mcore_elf_gen_out_file): Replace all occurrences of + dyn_string_append with dyn_string_append_cstr. + + * emul_aix.c (ar_emul_aix_create): Remove unused function. + +2002-12-10 James Cownie + + * readelf.h (get_TAG_name, get_AT_name, + read_and_display_attr_value): Add support for UPC extensions to + DWARF2 spec. + * NEWS: Mention this new support. + +2002-12-08 Alan Modra + + * NEWS: Mention that bfd no longer declares a "boolean" type. + +2002-12-07 Alan Modra + + * readelf.c (process_program_headers): When setting loadaddr, don't + assume segment size is 4k. Use p_align instead. + (loadaddr): Change from int to long. + (dynamic_addr, dynamic_info, version_info): Likewise. + (process_dynamic_segment ): Likewise. + (process_dynamic_segment): Adjust print format string. + (rela_addr, rela_size): Delete. + (process_relocs): Formatting. + +2002-12-05 Jim Wilson + + * configure.in (OBJDUMP_DEFS): Define SKIP_ZEROES as 16 for IA-64. + * configure: Regenerate. + +2002-12-04 Ian Lance Taylor + + * MAINTAINERS: Change e-mail address back to airs.com. + +2002-12-04 Aldy Hernandez + + * MAINTAINERS: Add self. + +2002-11-30 Alan Modra + + * addr2line.c, ar.c, arsup.c, binemul.c, binemul.h, bucomm.c, bucomm.h, + budbg.h, debug.c, debug.h, dlltool.c, emul_aix.c, ieee.c, nlmconv.c, + nlmconv.h, nlmheader.y, nm.c, objcopy.c, objdump.c, prdbg.c, rdcoff.c, + rddbg.c, readelf.c, rename.c, size.c, stabs.c, strings.c, + unwind-ia64.h, wrstabs.c: Replace boolean with bfd_boolean, true with + TRUE, false with FALSE. Simplify comparisons of bfd_boolean vars + with TRUE/FALSE. Formatting. + +2002-11-29 Jakub Jelinek + + * readelf.c Replace occurrences of Elf32_Internal_* and + Elf64_Internal_* with Elf_Internal_*. + (slurp_rel_relocs): Change Elf_Internal_Rel to Elf_Internal_Rela. + Zero r_addend fields. + (dump_relocations): Remove relas variable, change Elf_Internal_Rel to + Elf_Internal_Rela. + +2002-11-23 Nick Clifton + + * size.c (usage): Fix typo describing switch for hex format. + +2002-11-18 Svein E. Seldal + + * testsuite/binutils-all/objcopy.exp: Disable tic4x from test + * testsuite/binutils-all/objdump.exp: Setup proper values for tic4x + testcase + +2002-11-14 Nick Clifton + + * readelf.c (process_program_headers): Add comment about return + value. Ensure that 0 is returned if the headers are not loaded. + (process_file): If process_section_headers failed to load the + headers disable any tests that rely upon them. Similarly for + process_program_headers. + +2002-11-12 Nick Clifton + + * po/da.po: Updated Danish translation. + +2002-11-12 Klee Dienes + + * rddbg.c (read_section_stabs_debugging_info): Also recognize + LC_SYMTAB.stab/LC_SYMTAB.stabstr as a valid pair of sections. + +2002-11-11 Christopher Faylor + + * MAINTAINERS: Reinstate DJ Delorie as COFF maintainer. Drop COFF from + cgf maintainership. + +2002-11-11 Christopher Faylor + + * MAINTAINERS: Replace DJ Delorie as PE/COFF maintainer. + +2002-11-07 Nick Clifton + + * configure.in (ALL_LINGUAS): Add 'da'. + * configure: Regenerate. + * po/da.po: New Danish translation. + + * readelf.c (get_symbol_index_type): Revert part of previous + patch: Display unknown symbol types in decimal, not hex. + +2002-11-07 Danny Smith + + * dlltool.c (add_excludes): Don't prefix excluded fastcall + symbols with underscore. + (xlate): Ignore add_underscore for decorated fastcall symbols. + +2002-11-07 Eric Kohl + + * deflex.l: Accept '@' as first character of an ID. + * dlltool.c (gen_exp_file): Use existing '@' prefix rather than + ASM_PREFIX for fastcall symbols. + (scan_drectve_symbols): Handle fastcall symbols when generating + undecorated aliases for symbols in drectve section. + (scan_filtered_symbols): Likewise, with export-all. + (xlate): Likewise, with --kill-at. + (make_imp_label): New function to handle fastcall symbols + correctly. + (make_one_lib_file): Use make_imp_label instead of make_label + for imp symbols. + +2002-11-06 Svein E. Seldal + + * MAINTAINERS: Add self as TIC4X maintainer. + +2002-11-06 Hiroyuki Machida + + * readelf.c (get_symbol_index_type): Add hex number to + PROCESSOR-specific, OS-specific, reserved and unknown symbol + types. + +2002-11-04 Alan Modra + + * readelf.c (byte_get_little_endian): Comment typo fix. + (print_symbol): Constify "symbol" arg. Don't pass "symbol" to printf + as the format string. + (dump_relocations): Correct section sym names. + (process_section_headers): Clear symtab_shndx_hdr. + (read_and_display_attr_value): Don't pass indirect string to printf + as the format string. + (display_debug_frames): Indicate when zero terminator found. Decode + DW_EH_PE_pcrel addresses. + +2002-10-23 Svein E. Seldal + + * configure.in: Define SKIP_ZEROES as 32 for tic4x target in + order to ensure proper disassembly of the valid 0-value opcode. + * configure: Regenerate. + * aclocal.m4: Regenerate. + * config.in: Regenerate. + * configure.in: Regenerate. + * doc/Makefile.in: Regenerate. + * po/binutils.pot: Regenerate. + +2002-10-23 Kaz Kojima + + * MAINTAINERS: Add self as SH maintainer. + +2002-10-23 Ben Elliston + + * doc/binutils.texi (objdump): Document -z and move the entry for + --disassemble-zeroes to the end of the options section (for `z'). + +2002-10-21 Nick Clifton + + * MAINTAINERS: Discontinue Hans-Peter Nilsson as SH maintainer. + +2002-10-21 Svein E. Seldal + + * objdump.c (dump_data): Correct addr_offset for opb != 1. + +2002-10-15 Alan Modra + + * bucomm.c (list_supported_targets): Use bfd_target_list. + + * objcopy.c (copy_file): Report ambiguous bfd_object matches, and + other object errors in preference to bfd_core errors. + +2002-10-14 Alan Modra + + * Makefile.am: Run "make dep-am". + * objdump.c: #include "bfdver.h". + * version.c: Likewise. + * Makefile.in: Regenerate. + * config.in: Regenerate. + * configure: Regenerate. + * po/POTFILES.in: Regenerate. + +2002-10-09 Daniel Jacobowitz + + * readelf.c (display_debug_info): Ignore empty .rela.debug_info + sections. Allow relocations against the absolute symbol. Don't + use the value in compunit.cu_abbrev_offset if we found a RELA + relocation. + +2002-10-07 Gordon Chaffee + + * addr2line.c (slurp_symtab): Read in dynamic symbols if no + ordinary ones are available. + +2002-09-30 H.J. Lu + + * readelf.c (get_machine_flags): Handle E_MIPS_MACH_4120, + E_MIPS_MACH_5400 and E_MIPS_MACH_5500. + +2002-09-17 Zack Weinberg + + * Makefile.am (CFILES): Add cxxfilt.c. + (cxxfilt_SOURCES): Now just cxxfilt.c $(BULIBS). + (cxxfilt_LDADD): Delete. + Remove all references to underscore.c. + Regen dependencies. + * configure.in: Define TARGET_PREPENDS_UNDERSCORE in + config.h from $UNDERSCORE, rather than AC_SUBSTing it. + * binutils/cxxfilt.c: Moved here from gcc/cp, minor + adjustments to fit into binutils framework. + * configure, config.in, Makefile.in, doc/Makefile.in: Regenerate. + +2002-09-12 Roland McGrath + + * readelf.c (decode_location_expression): DW_OP_calli -> DW_OP_call_ref + Handle DW_OP_GNU_push_tls_address. + +2002-09-11 Nick Clifton + + * po/tr.po: Updated Turkish translation. + +2002-09-10 Nick Clifton + + * MAINTAINERS: Add Ben Elliston as a maintainer for configure and + testsuite changes. Add paragraphs about testsuite and config + patches. + +2002-08-29 Nick Clifton + + * readelf.c (get_machine_flags): Remove redundant reference to + E_V850EA_ARCH. + +2002-08-28 Alan Modra + + * objdump.c (dump_bfd): Restore lines accidentally deleted in + last commit. + +2002-08-28 Michael Hayes + + * objdump.c (dump_headers): Add printing of HAS_LOAD_PAGE flag. + (dump_bfd_header): Likewise. + +2002-08-27 Alan Modra + + * nm.c: Revert last change. + +2002-08-26 Alan Modra + + * nm.c (display_rel_file): Don't report "no symbols" as an error. + * objdump.c (slurp_symtab): Likewise. + (slurp_dynamic_symtab): Likewise. + (dump_symbols): Likewise. Do print "no symbols" to stdout. + +2002-08-24 Geoffrey Keating + + * MAINTAINERS: Change my mailing address. + +2002-08-23 John David Anglin + + * MAINTAINERS: Add Dave Anglin as HPPA co-maintainer. + +2002-08-22 Nick Clifton + + * MAINTAINERS: Add Jeff Law as (maintainance) maintainer for + HPPA. + +2002-08-21 John David Anglin + + * readelf.c (parse_args): Change debug_dump_opt to static. + +2002-08-16 Sivaguru Sankaridurg + + * stabs.c (parse_stab_argtype): Pass length of physname to + stab_demangle_argtypes. + (stab_demangle_argtypes): Add new parameter - length of physname. + Pass length of physname on to stab_demangle_prefix. + (stab_demangle_prefix): Add new parameter - length of physname. + Use length of physname (if supplied) to compute end of function + name. + +2002-08-15 Alan Modra + + * readelf.c: Include elf/i370.h. + (dump_relocations): Handle EM_S370. + (dynamic_segment_parisc_val): Print \n. + (process_dynamic_segment ): Here too. + +2002-08-14 Nick Clifton + + * nm.c (usage): Change 'gnu-new-abi' to 'gnu-v3'. + * objdump.c (usage): Likewise. + * doc/binutils.texi: Likewise. + +2002-08-14 Luke Dunstan + + * rcparse.y (acc_entry): Don't warn about ALT use with + non-VIRTKEY. + +2002-08-13 H.J. Lu + + * objcopy.c (copy_object): Don't warn about the unsupported + architecture unless the input target is defaulted or the + output architecture is different from the input. + +2002-08-09 Nick Clifton + + * po/sv.po: Updated Swedish translation. + +2002-08-05 Alan Modra + + * prdbg.c (pr_fix_visibility): Remove assert. + +2002-07-31 Nick Clifton + + * addr2line.c (process_file): Rename parameter 'filename' to + 'file_name' in order to avoid shadowing global symbol of the + same name. + (main): Likewise. + +2002-07-30 Jakub Jelinek + + * readelf.c (OPTION_DEBUG_DUMP): Define. + (options): Use it. + (usage): Update help. + (parse_args): Handle --debug-dump separately from -w. + * doc/binutils.texi (readelf): Update documentation. + +2002-07-25 Nick Clifton + + * po/es.po: Updated Spanish translation. + * po/fr.po: Updated French translation. + +2002-07-24 Nick Clifton + + * po/es.po: Updated Spanish translation. + +2002-07-23 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + +2002-07-23 Nick Clifton + + * po/fr.po: Updated French translation. + +2002-07-23 Eric S. Raymond + + * doc/binutils.texi (addr2line ): Correct brackets. + +2002-07-20 Alan Modra + + * budemang.c: Include config.h and string.h/strings.h. + +2002-07-18 Denis Chertykov + Frank Ch. Eigler + + * readelf.c: Include "elf/ip2k.h". + (guess_is_rela): Add support for EM_IP2K and EM_IP2K_OLD. + (dump_relocations): Likewise. + (get_machine_name): Likewise. + * NEWS: Mention IP2K support. + +2002-07-16 Nick Clifton + + * NEWS: Add 'Changes in 2.13'. + +2002-07-10 Jakub Jelinek + + * readelf.c (get_dynamic_type): Handle DT_GNU_PRELINKED, + DT_GNU_CONFLICT* and DT_GNU_LIBLISZ*. + (get_section_type_name): Handle SHT_GNU_LIBLIST. + (process_dynamic_segment): Handle DT_GNU_CONFLICTSZ, + DT_GNU_LIBLISTSZ and DT_GNU_PRELINKED. + (process_gnu_liblist): New. + (process_file): Call it. + +2002-07-03 Alan Modra + + * Makefile.am (check-DEJAGNU): Revert 2002-06-25 change. + * Makefile.in: Regenerate. + +2002-07-02 Alan Modra + + * budemang.c: New file, "demangle" function. + * budemang.h: New file. + * addr2line.c (translate_addresses): Use "demangle". + * nm.c (print_symname): Likewise. + * objdump.c (objdump_print_symname): Likewise. + (dump_symbols): Likewise. Also, don't use bfd_asymbol_name macro + here since that obfuscates. + * rdcoff.c: Don't #include demangle.h. + * Makefile.am (CFILES): Add budemang.c, emul_aix.c, + emul_vanilla.c. Remove emul_$(EMULATION).c. Sort. + (HFILES): Add budemang.h. Sort. + (nm_new_SOURCES, objdump_SOURCES, addr2line_SOURCES): Add budemang.c. + Run "make dep-am". + * Makefile.in: Regenerate. + +2002-07-01 Matt Thomas + + * readelf.c: Include "elf/vax.h". + (guess_is_rela): Move EM_VAX from unknown to RELA case. + (dump_relocations): Handle VAX relocations. + (get_machine_flags): Handle VAX machine flags. + +2002-06-29 Stephane Carrez + + * readelf.c (dump_relocations): Handle 68HC11/68HC12 relocations. + +2002-06-26 Nick Clifton + + * MAINTAINERS: Remove Tom Rix from d10v and pcc maintainerships. + +2002-06-26 Alan Modra + + * nm.c (print_symname): When demangling, strip leading dots from + symbol names to avoid confusing the demangler. + +2002-06-25 H.J. Lu + + * Makefile.am (check-DEJAGNU): Set LC_ALL=C and export it. + * Makefile.in: Regenerated. + +2002-06-21 Igor Schein + + * configure.in: Quote bu_cv_have_fopen64. + * configure: Regenerate. + +2002-06-21 Mitsru Chinen + + * configure.in: Check for strcoll. + * configure: Regenerate. + * config.in: Regenerate. + * nm.c (main): Set locale for LC_COLLATE category. + (non_numeric_forward): Use strcoll if available. + +2002-06-20 Dave Brolley + + * MAINTAINERS: Add self as fr30 and frv maintainer. + +2002-06-18 H.J. Lu (hjl@gnu.org) + + * nm.c: Include "elf/common.h". + (extended_symbol_info): Add elfinfo, a pointer to + elf_symbol_type. + (SYM_SIZE): Use elfinfo if it is not NULL. + (get_symbol_type): New function. + (display_archive): Set print_width for each archive member. + (display_file): Likewise. + (display_rel_file): Don't set print_width here. + (print_object_filename_sysv): Handle print_width. + (print_archive_member_sysv): Likewise. + (print_symbols): Pass (bfd_vma) 0 to print_symbol. + (print_symbol): Set the elfinfo field in extended_symbol_info + for ELF. + (print_object_filename_sysv): Fix the output format. + (print_symbol_info_sysv): Print type and section for ELF. + +2002-06-18 Elias Athanasopoulos + + * nm.c (print_size_symbols): Remove assignment, which makes + the symbol's size equal to its value when --size-sort is + used. + +2002-06-18 Dave Brolley + + From Catherine Moore: + * readelf.c (elf/frv.h): #include it. + (guess_is_rela): Support EM_CYGNUS_FRV. + (dump_relocations): Ditto. + (get_machine_name): Ditto. + * Makefile.am (readelf.o): add dependency on $(INCDIR)/elf/frv.h. + +2002-06-18 Jakub Jelinek + + * readelf.c (get_file_header): Only read the first section header if + e_shoff is non-zero. + +2002-06-15 H.J. Lu (hjl@gnu.org) + + * nm.c (print_size): New variable. Initialize to 0. + (long_options): Add 'S'/"print-size". + (main): Handle 'S'. + (print_symbol_info_bsd): Print size only if print_size is not + 0. + + * doc/binutils.texi: Document -S/--print-size. + +2002-6-13 Elias Athanasopoulos + + * nm.c (struct extended_symbol_info): New structure: Add the size + of the symbols to the information provided by the symbol_info + structure. + (print_symbols): Pass the symbol size to print_symbol. + (print_size_symbols): Pass the symbol size to print_symbol. + (print_symbol): Extra argument: The size of the symbol. Store + this in the extended_symbol_info structure. + (print_symbol_info): Change type of info parameter to + extended_symbol_info. Display the size, if known. + (print_symbol_info_posix): Likewise. + (print_symbol_info_sysv): Likewise. + +2002-06-08 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + * doc/Makefile.in: Regnerate. + + * bucomm.c: Replace CONST with const. + * nm.c: Likewise. + * objdump.c: Likewise. + +2002-06-07 H.J. Lu + + * readelf.c (DW_CFA_GNU_args_size): Don't define. + (DW_CFA_GNU_negative_offset_extended): Likewise. + (DW_CFA_GNU_window_save): Likewise. + (display_debug_frames): Handle DW_CFA_offset_extended_sf, + DW_CFA_def_cfa_sf and DW_CFA_def_cfa_offset_sf. + +2002-06-07 Elias Athanasopoulos + + * nm.c: When computing size of symbols for an ELF target use the + internal size field. + +2002-06-06 John David Anglin + + * testsuite/binutils-all/objcopy.exp: clear xfail for + "hppa*64*-*-hpux*". + * testsuite/binutils-all/hppa/objdump.exp: Return if + "*64*-*-*". + +2002-06-05 Alan Modra + + * objcopy.c (copy_section): Don't copy SEC_GROUP sections. + +2002-06-03 Elias Athanasopoulos + + * objdump.c: Fix formatting. + +2002-05-29 Ben Elliston + + * MAINTAINERS: Add self as M68k maintainer. + +2002-05-28 Kuang Hwa Lin + + * readelf.c: Modified/Added DLX elf support. + +2002-05-27 Nick Clifton + + * arsup.c: Fix formatting. + * debug.c (debug_record_label): Add missing colon to error + message. + * ieee.c (parse_ieee_ty): Fix spelling typo. + * readelf.c (process_program_headers): Remove English assumption + about making a plural word. + (process_section_headers): Likewise. + (process_relocs): Allow quotes to be translated. + (process_unwind): Likewise, + (process_mips_specific): Improve error message. + (get_note_type): Fix spelling typo. + + * configure.in (ALL_LINGUAS): Add sv + * po/sv.po: New file. + +2002-05-27 Alan Modra + + * unwind-ia64.c (unw_print_brmask): Don't use sprintf. + (unw_print_grmask): Likewise. + (unw_print_frmask): Likewise. + +2002-05-26 Kazu Hirata + + * arsup.c: Remove ARGSUSED. + * debug.c: Likewise. + * ieee.c: Likewise. + * nlmconv.c: Likewise. + * prdbg.c: Likewise. + * stabs.c: Likewise. + * wrstabs.c: Likewise. + +2002-05-25 Alan Modra + + * arlex.l: Use #include "" instead of <> for local header files. + * coffdump.c: Likewise. + * coffgrok.c: Likewise. + * nlmconv.c: Likewise. + * nlmheader.y: Likewise. + * srconv.c: Likewise. + * strings.c: Likewise. + * sysdump.c: Likewise. + * unwind-ia64.h: Likewise. + * windres.h: Likewise. + * winduni.h: Likewise. + +2002-05-24 Tom Rix + + * MAINTAINERS: Add self as the d10v maintainer. + +2002-05-24 TAMURA Kent + + * configure.in: Builds dlltool for i386-netbsdpe. + * configure: Regenerate. + +2002-05-23 Kazu Hirata + + * size.c: Fix formatting. + * srconv.c: Likewise. + * stabs.c: Likewise. + * sysdump.c: Likewise. + * unwind-ia64.c: Likewise. + * wrstabs.c: Likewise. + +2002-05-23 Jakub Jelinek + + * readelf.c (get_segment_type): Add PT_TLS. + (get_elf_section_flags): Add SHF_TLS. + (get_dynamic_flags): Optimize. Add DF_STATIC_TLS. + (process_dynamic_segment): Use puts instead of printf. + (get_symbol_type): Support STT_TLS. + * objdump.c (dump_section_header): Remove SEC_CONSTRUCTOR_TEXT, + SEC_CONSTRUCTOR_DATA, SEC_CONSTRUCTOR_BSS. + Add SEC_THREAD_LOCAL. + +2002-05-23 Kazu Hirata + + * rdcoff.c: Fix formatting. + * rddbg.c: Likewise. + * readelf.c: Likewise. + * rename.c: Likewise. + * resbin.c: Likewise. + * resrc.c: Likewise. + * resres.c: Likewise. + +2002-05-21 Kazu Hirata + + * filemode.c: Fix formatting. + * ieee.c: Likewise. + * is-ranlib.c: Likewise. + * is-strip.c: Likewise. + * maybe-ranlib.c: Likewise. + * maybe-strip.c: Likewise. + * nlmconv.c: Likewise. + * nm.c: Likewise. + * not-ranlib.c: Likewise. + * not-strip.c: Likewise. + * objcopy.c: Likewise. + * objdump.c: Likewise. + +2002-05-21 Thiemo Seufer + + * objdump.c (dump_headers): Fix output formatting for ELF32 + architectures in a BFD64 enabled toolchain. + +2002-05-20 Kazu Hirata + + * debug.c: Fix formatting. + * debug.h: Likewise. + * dlltool.c: Likewise. + * dllwrap.c: Likewise. + * emul_aix.c: Likewise. + * emul_vanilla.c: Likewise. + +2002-05-19 Kazu Hirata + + * addr2line.c: Fix formatting. + * ar.c: Likewise. + * arsup.c: Likewise. + * arsup.h: Likewise. + * binemul.c: Likewise. + * binemul.h: Likewise. + * bucomm.c: Likewise. + * coffdump.c: Likewise. + * coffgrok.c: Likewise. + * coffgrok.h: Likewise. + +2002-05-16 Marek Michalkiewicz + + * MAINTAINERS: Add myself as the second AVR port maintainer. + +2002-05-16 Stephane Carrez + + * MAINTAINERS: Update my email address. + +2002-05-09 Nick Clifton + + * MAINTAINERS: Add Jason Thorpe as VAX maintainer. + +2002-05-09 Alan Modra + + * configure.in: Replace `*pe' with `pe' throughout. + * configure: Regenerate. + +2002-05-07 Federico G. Schwindt + + * Makefile.am: Honour DESTDIR. + * Makefile.in: Regenerate. + +2002-05-06 Alan Modra + + * dlltool.c (process_def_file): Add missing prototype. + (new_directive, assemble_file, main): Likewise. + (process_def_file, new_directive): Make static. + (inform): Rewrite using VA_FIXEDARG. + * dllwrap.c (mybasename): Add missing prototype. + (strhash, main): Likewise. + (inform): Rewrite using VA_FIXEDARG. + (warn): Likewise. + (cleanup_and_exit): Use old style function definition. + (strhash): Likewise. + * windres.c (define_resource): Use one memset to clear all of + struct res_resource. + + * rcparse.y: Remove newcmd rule. Move rcparse_discard_strings + call to rules that need no lookahead. Check for no lookahead. + +2002-05-06 Borut Razem + + * rclex.l (get_string): Correct "strings" list handling. + * resrc.c (read_rc_file): Discard strings. + +2002-05-04 Alan Modra + + * ar.c (replace_members): Remove unused var. Formatting fix. + * binemul.c (ar_emul_default_parse_arg): Add ATTRIBUTE_UNUSED. + + * MAINTAINERS: Sort port maintainers by CPU. + +2002-05-04 Bob Byrnes + + * size.c (display_archive): Add last_arfile and code to close archives. + +2002-05-01 Alan Modra + + * nm.c (print_symbol): Check returned filename from + bfd_find_nearest_line is non-NULL. + +2002-04-25 Elena Zannoni + + * readelf.c (get_AT_name): Handle DW_AT_GNU_vector. + +2002-04-24 Christian Groessler + + * MAINTAINERS: Changed my email address. + +2002-04-17 Thiemo Seufer + + * arparse.y: Fix syntax warning. + +2002-04-16 Nick Clifton + + * readelf.c (fetch_location_list): Remove unused function. + + * readelf.c (process_corefile_note_segment): Catch corrupt notes + and display a warning message, then exit the loop. + + * rcparse.y: Set MEMFLAG_DISCARDABLE by default. + +2002-04-15 Nick Clifton + + * resrc.c (write_rc_dialog): If charset is non-default value + display all of the DIALOGEX parameters. + +2002-04-15 Eric Kohl + + * rcparse.y: Allow two to five parameter in FONT statement of + DIALOGEX resources. + * resbin.c (bin_to_res_dialog): Fixed read/write code for dialogex + resource data. + (res_to_bin_dialog): Likewise. + * windres.h: Added misssing charset variable to dialog_ex + structure. + +2002-04-10 Nick Clifton + + * rcparse.y: Set MEMFLAG_PURE by default. + +2002-04-09 Bernd Herd + + * rcparse.y: CLASS definitions in DIALOG resources + are quoted. + Fix typo in BEDIT warning. + Don't add default dialog style when explicit style specified. + Add WS_CAPTION dialog style if CAPTION is specified. + + * rclex.l (handle_quotes): "\xhex" encoding in strings corrected. + (handle_quotes) "\a" escape (used for right justified key + definitions in menus) is encodes as binary 8. + + * resrc.c (write_rc_dialog): Print style even if it is 0. + (write_rc_directory): Fix overlooked sublang shift bug. + (bin_to_res_dialog): Don't print empty dialog caption. + + * resbin.c (bin_to_res_dialog): Use signature to identify + DIALOGEX. + + * windres.c (main): Set default LANGUAGE to english/us. + +2002-04-09 Gunnar Degnbol + + * resrc.c: print CLASS names in quotes + +2002-04-09 J"orn Rennecke + + * MAINTAINERS: Update my email address. + +2002-04-04 Alan Modra + + * dep-in.sed: Cope with absolute paths. + * Makefile.am (dep.sed): Subst TOPDIR. + Run "make dep-am". + * Makefile.in: Regenerate. + +2002-03-27 Peter Targett + + * MAINTAINERS: Update my email address. + +2002-03-21 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + * po/POTFILES.in: Regenerate. + * aclocal.m4: Regenerate. + * config.in: Regenerate. + * configure: Regenerate. + +2002-03-20 Daniel Berlin + + * readelf.c: Add support for displaying dwarf2 location lists. + (do_debug_loc, debug_loc_section, debug_loc_size): New. + (parse_args): Use 'O' as shorthand for displaying location list + section. + (process_section_headers): Handle debug_loc as well. + (load_debug_loc): New. + (free_debug_loc): New. + (fetch_location_list): New. + (display_debug_loc): New. + (display_debug_info): Call load_debug_loc and free_debug_loc. + (debug_displays): We can display .debug_loc now, too. + (usage): Update usage string. + (read_and_display_attr_value): Note location lists, but don't + display them inline. + +2002-03-18 Tom Rix + + * Makefile.am: Add binutils emulation support. + * configure.in: Same. + * configure.tgt: New file. Same. + * ar.c (main): Use ar_emul_parse_arg. + (usage): Use ar_emul_usage. + (replace_members): Use ar_emul_replace, ar_emul_append. + * binemul.c: New file. Define the binutils emulation + layer. Define default methods. + * binemul.h: New file. Binutils emulation layer header file. + * emul_aix.c: New file. AIX binutils emulation. + * emul_vanilla.c: New file. Default binutils emulation. + * Makefile.in: Regenerate. + * configure: Same. + +2002-03-18 Nick Clifton + + * po/fr.po: Updated version. + +2002-03-13 Nick Clifton + + * po/fr.po: Updated version. + +2002-03-07 Daniel Jacobowitz + + * README: Update some version numbers. + +2002-03-07 Daniel Jacobowitz + + * doc/binutils.texi (Target Selection): Fix LD crossreferences. + (Architecture Selection): Likewise. + +2002-03-01 Dmitry Timoshkov + + * dlltool.c (gen_exp_file): Take into account --kill-at (-k) while + generating .exp file. + +2002-02-21 Nick Clifton + + * readelf.c (dump_relocations): Fix typo. + +2002-02-20 Nick Clifton + + * NEWS: Mark 2.12 branch. + +2002-02-18 Timothy Daly + + * readelf.c (dump_relocations): Display 2nd and 3rd reloc + types for 64-bit MIPS. Narrow some fields for 80-char + output. + (dump_relocations): Change spelling from 'unrecognised' + to 'unrecognized'. + (decode_ARM_machine_flags): Likewise. + (parse_args): Likewise. + (read_and_display_attr_value): Likewise. + (display_debug_section): Likewise. + +2002-02-15 Hans-Peter Nilsson + + * NEWS: Mention support for MMIX. + +2002-02-13 Matt Fredette + + * readelf.c (get_machine_flags): Recognize EF_M68000. + +2002-02-12 Alexandre Oliva + + * MAINTAINERS: Added self as MN10300 co-maintainer. + +2002-02-12 Alan Modra + + * readelf.c (get_ppc64_dynamic_type): Handle DT_PPC64_OPD and + DT_PPC64_OPDSZ. + +2002-02-11 Daniel Jacobowitz + + * MAINTAINERS: List myself as branch maintainer. + +2002-02-11 Alan Modra + + * configure: Regenerate. + * objcopy.c: Update copyright date. + * doc/Makefile.in: Regenerate. + +2002-02-10 Daniel Jacobowitz + + * nlmconv.c: Back out localtime PARAMS change. + +2002-02-11 Alan Modra + + * objcopy.c (MKDIR): Define. + (copy_archive): Make name_list.name const. Use MKDIR. + Handle duplicate files in archives by making more temp dirs. + +2002-02-10 Daniel Jacobowitz + + * coffdump.c: Include "getopt.h" after "bucomm.h" + so that macros are defined correctly. + * nlmconv.c: Add PARAMS ((const time_t *)) to localtime + prototype. Prototype main. + * nlmheader.y: Add PARAMS ((int)) to strerror prototype. + +2002-02-06 Alexandre Oliva + + * MAINTAINERS: Added self as SH co-maintainer. + +2002-02-05 Nick Clifton + + * po/tr.po: Updated translation. + +2002-02-01 Alan Modra + + * Makefile.am: Run "make dep-am" + * Makefile.in: Regenerate. + +2002-01-29 Daniel Jacobowitz + + * nm.c (print_value): Mark abfd unused. + +2002-01-29 Daniel Jacobowitz + + * unwind-ia64.c (unw_decoder): Change second argument + to unsigned int, to match function prototypes. + +2002-01-29 Daniel Jacobowitz + + * objdump.c: Include "getopt.h" after "bucomm.h" so that + __GNU_LIBRARY__ will be defined. + * size.c: Likewise. + +2002-01-27 Daniel Jacobowitz + + * configure: Regenerated. + +2002-01-26 Hans-Peter Nilsson + + * doc/Makefile.am (install): Depend on install-info. + * doc/Makefile.in: Regenerate. + +2002-01-25 Jason R. Thorpe + + * objcopy.c (strip_usage): Document -d as an alias + --strip-debug. + + * size.c (usage): Document [-t | --totals] options. + (long_options): Add --totals option. + (main): If the [-t | --totals] option is specified and + the output format is Berkeley-style, print the total + text, data, and bss sizes of all objects listed. + (print_berkeley_format): If the [-t | --totals] option + is specified, track the total text, data, and bss + sizes. + * doc/binutils.texi (size): Document [-t | --totals] options. + (strip): Document -d as an alias for --strip-debug. + * NEWS: Mention new feature of size. + +2002-01-25 Nick Clifton + + * po/fr.po: Updated version. + * po/es.po: Updated version. + +2002-01-23 Nick Clifton + + * addr2line.c (usage): Update text to provide verbose + description of the command line options. + * ar.c (usage): Update text to provide verbose + description of the command line options. + (main): Accept -h and -H when running as ranlib. + * coffdump.c (show_usage): Update text to provide verbose + description of the command line options. + * dlltool.c (main): Accept -H as an alias for --help. + * nlmconv.c (show_usage): Update text to provide verbose + description of the command line options. + * nm.c (usage): Replace OPTIONS with option(s). + (main): Accept -H as an alias for --help. + * objcopy.c (strip_main): Accept -H as an alias for --help. + * objdump.c (main): Accept -v as an alias for --verbose. + * readelf.c (usage): Adjust format to match style used in + other binutils. + * size.c (usage): Update text to provide verbose description + of the command line options. + (main): Accept -v, -h and -H as command line options. + * srconv.c (show_usage): Update text to provide verbose + description of the command line options. + * strings.c (main): Accept -H and -v as command line options. + (usage): Update text to provide verbose description of the + command line options. + * sysdump.c (show_usage): Update text to provide verbose + description of the command line options. + * windres.c (usage): Adjust format to match style used in + other binutils. + + * coffdump.c: Fix formatting. + * nlmconv.c: Fix formatting. + * srconv.c: Fix formatting. + * sysdump.c: Fix formatting. + +2002-01-22 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + +2002-01-18 Andreas Jaeger + + * version.c (print_version): Update year. + +2002-01-17 Alan Modra + + * readelf.c (get_machine_name): Handle EM_PPC64. + (guess_is_rela): Here too. + +2002-01-17 Nick Clifton + + * po/binutils.pot: Regenerate. + * po/fr.po: Regenerate. + * po/tr.po: Regenerate. + +2002-01-16 Nick Clifton + + * po/tr.po: Import new version. + +2002-01-16 Alan Modra + + * readelf.c (get_ppc64_dynamic_type): New. + (get_dynamic_type): Call it. + +2002-01-15 Nick Clifton + + * objcopy.c (copy_usage): Use "options" instead of "switches". + (strip_usage): Use "options" instead of "switches". + * doc/binutils.texi (dlltool): Refer to "options" instead of + "switches". + +2002-01-14 Richard Earnshaw + + * MAINTAINERS: Add self as co-maintainer for the ARM code. + +2001-12-18 Nick Clifton + + * po/es.po: Import from translation project. + * configure.in (ALL_LINGUAS): Add es. + * configure: Regenerate. + +2002-01-09 Jason Thorpe + + * readelf.c (get_netbsd_elfcore_note_type): Use + NT_NETBSDCORE_PROCINFO and NT_NETBSDCORE_FIRSTMACH. + +2002-01-09 Jason Thorpe + + * readelf.c: Update copyright years. + (get_note_type): Return a const char *. + (get_netbsd_elfcore_note_type): New function. + (process_note): Use get_netbsd_elfcore_note_type to get + the note type string for NetBSD ELF core files. + +2002-01-06 Steve Ellcey + + * readelf.c (get_ia64_segment_type): Add support for macros. + (get_segment_type): Add support for IA64 specific macros. + +For older changes see ChangeLog-0001 + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff -uprN binutils-2.14.90.0.7/binutils/ChangeLog-9197 binutils-2.14.90.0.8/binutils/ChangeLog-9197 --- binutils-2.14.90.0.7/binutils/ChangeLog-9197 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/ChangeLog-9197 2004-01-14 13:07:44.000000000 -0800 @@ -5200,7 +5200,7 @@ Thu May 16 16:06:55 1991 Steve Chamberl consistent with gdb and as: Add 0x when printing hex. Don't print extra leading zeros. Attempt to not print "filename.o". - * objdump.c: Add some enum-to-int casts to accomodate old compilers. + * objdump.c: Add some enum-to-int casts to accommodate old compilers. Fri May 3 22:21:44 1991 John Gilmore (gnu at cygint.cygnus.com) diff -uprN binutils-2.14.90.0.7/binutils/ChangeLog.linux binutils-2.14.90.0.8/binutils/ChangeLog.linux --- binutils-2.14.90.0.7/binutils/ChangeLog.linux 2002-09-27 08:33:09.000000000 -0700 +++ binutils-2.14.90.0.8/binutils/ChangeLog.linux 2004-01-14 13:07:44.000000000 -0800 @@ -1,3 +1,7 @@ +2003-11-24 H.J. Lu + + * cxxfilt.c (main): Updated. + 2002-09-18 H.J. Lu * cxxfilt.c: Updated from diff -uprN binutils-2.14.90.0.7/binutils/MAINTAINERS binutils-2.14.90.0.8/binutils/MAINTAINERS --- binutils-2.14.90.0.7/binutils/MAINTAINERS 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/MAINTAINERS 2004-01-14 13:07:44.000000000 -0800 @@ -59,7 +59,8 @@ responsibility among the other maintaine ARM Richard Earnshaw AVR Denis Chertykov AVR Marek Michalkiewicz - CONFIGURE Ben Elliston + BUILD SYSTEM Ben Elliston + BUILD SYSTEM Daniel Jacobowitz CRIS Hans-Peter Nilsson DWARF2 Jason Merrill FR30 Dave Brolley diff -uprN binutils-2.14.90.0.7/binutils/Makefile.am binutils-2.14.90.0.8/binutils/Makefile.am --- binutils-2.14.90.0.7/binutils/Makefile.am 2003-08-21 08:28:48.000000000 -0700 +++ binutils-2.14.90.0.8/binutils/Makefile.am 2004-01-14 13:07:44.000000000 -0800 @@ -350,7 +350,7 @@ install-exec-local: install-binPROGRAMS if [ -f $$i$(EXEEXT) ]; then \ j=`echo $$i | sed -e 's/-new//'`; \ k=`echo $$j | sed '$(transform)'`; \ - if [ "$(DESTDIR)$(bindir)/$$k$(EXEEXT)" != "$(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT)" ]; then \ + 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); \ @@ -440,7 +440,7 @@ not-strip.o: not-strip.c objcopy.o: objcopy.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ $(INCDIR)/symcat.h $(INCDIR)/progress.h bucomm.h config.h \ $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \ - budbg.h $(INCDIR)/filenames.h + budbg.h $(INCDIR)/filenames.h $(INCDIR)/fnmatch.h objdump.o: objdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ $(INCDIR)/symcat.h ../bfd/bfdver.h $(INCDIR)/progress.h \ bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ diff -uprN binutils-2.14.90.0.7/binutils/Makefile.in binutils-2.14.90.0.8/binutils/Makefile.in --- binutils-2.14.90.0.7/binutils/Makefile.in 2003-08-21 08:28:48.000000000 -0700 +++ binutils-2.14.90.0.8/binutils/Makefile.in 2004-01-14 13:07:44.000000000 -0800 @@ -1078,7 +1078,7 @@ install-exec-local: install-binPROGRAMS if [ -f $$i$(EXEEXT) ]; then \ j=`echo $$i | sed -e 's/-new//'`; \ k=`echo $$j | sed '$(transform)'`; \ - if [ "$(DESTDIR)$(bindir)/$$k$(EXEEXT)" != "$(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT)" ]; then \ + 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); \ @@ -1168,7 +1168,7 @@ not-strip.o: not-strip.c objcopy.o: objcopy.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ $(INCDIR)/symcat.h $(INCDIR)/progress.h bucomm.h config.h \ $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \ - budbg.h $(INCDIR)/filenames.h + budbg.h $(INCDIR)/filenames.h $(INCDIR)/fnmatch.h objdump.o: objdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ $(INCDIR)/symcat.h ../bfd/bfdver.h $(INCDIR)/progress.h \ bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ diff -uprN binutils-2.14.90.0.7/binutils/NEWS binutils-2.14.90.0.8/binutils/NEWS --- binutils-2.14.90.0.7/binutils/NEWS 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/NEWS 2004-01-14 13:07:44.000000000 -0800 @@ -1,5 +1,8 @@ -*- text -*- +* objcopy and strip can now take wildcard patterns in symbol names specified on + the command line provided that the --wildcard switch is used to enable them. + * readelf can now parse archives. * objdump now accepts --debugging-tags to print the debug information in a diff -uprN binutils-2.14.90.0.7/binutils/README binutils-2.14.90.0.8/binutils/README --- binutils-2.14.90.0.7/binutils/README 2003-03-19 09:19:13.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/README 2004-01-14 13:07:44.000000000 -0800 @@ -139,9 +139,66 @@ Send bug reports and patches to: bug-binutils@gnu.org. +Please include the following in bug reports: + +- A description of exactly what went wrong, and exactly what should have + happened instead. + +- The configuration name(s) given to the "configure" script. The + "config.status" file should have this information. This is assuming + you built binutils yourself. If you didn't build binutils youself, + then we need information regarding your machine and operating system, + and it may be more appropriate to report bugs to wherever you obtained + binutils. + +- The options given to the tool (gas, objcopy, ld etc.) at run time. + +- The actual input file that caused the problem. + Always mention the version number you are running; this is printed by running any of the binutils with the --version option. We appreciate -reports about bugs, but we do not promise to fix them. +reports about bugs, but we do not promise to fix them, particularly so +when the bug report is against an old version. If you are able, please +consider building the latest tools from CVS to check that your bug has +not already been fixed. + +When reporting problems about gas and ld, it's useful to provide a +testcase that triggers the problem. In the case of a gas problem, we +want input files to gas and command line switches used. The inputs to +gas are _NOT_ .c or .i files, but rather .s files. If your original +source was a C program, you can generate the .s file and see the command +line options by passing -v -save-temps to gcc in addition to all the +usual options you use. The reason we don't want C files is that we +might not have a C compiler around for the target you use. While it +might be possible to build a compiler, that takes considerable time and +disk space, and we might not end up with exactly the same compiler you +use. + +In the case of a ld problem, the input files are .o, .a and .so files, +and possibly a linker script specified with -T. Again, when using gcc +to link, you can see these files by adding options to the gcc command +line. Use -v -save-temps -Wl,-t, except that on targets that use gcc's +collect2, you would add -v -save-temps -Wl,-t,-debug. The -t option +tells ld to print all files and libraries used, so that, for example, +you can associate -lc on the ld command line with the actual libc used. +Note that your simple two line C program to trigger a problem typically +expands into several megabytes of objects by the time you include +libraries. + +It is antisocial to post megabyte sized attachments to mailing lists, so +please put large testcases somewhere on an ftp or web site so that only +interested developers need to download them, or offer to email them on +request. Better still, try to reduce the testcase, for example, try to +develop a ld testcase that doesn't use system libraries. However, +please be sure it is a complete testcase and that it really does +demonstrate the problem. Also, don't bother paring it down if that will +cause large delays in filing the bug report. + +If you expect to be contributing a large number of test cases, it would +be helpful if you would look at the test suite included in the release +(based on the Deja Gnu testing framework, available from the usual ftp +sites) and write test cases to fit into that framework. This is +certainly not required. VMS === diff -uprN binutils-2.14.90.0.7/binutils/addr2line.c binutils-2.14.90.0.8/binutils/addr2line.c --- binutils-2.14.90.0.7/binutils/addr2line.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/addr2line.c 2004-01-14 13:07:44.000000000 -0800 @@ -237,6 +237,9 @@ process_file (const char *file_name, con bfd *abfd; char **matching; + if (get_file_size (file_name) < 1) + return; + abfd = bfd_openr (file_name, target); if (abfd == NULL) bfd_fatal (file_name); diff -uprN binutils-2.14.90.0.7/binutils/ar.c binutils-2.14.90.0.8/binutils/ar.c --- binutils-2.14.90.0.7/binutils/ar.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/ar.c 2004-01-14 13:07:44.000000000 -0800 @@ -750,6 +750,8 @@ open_inarch (const char *archive_filenam || ! bfd_set_format (arch, bfd_archive) || ! bfd_close (arch)) bfd_fatal (archive_filename); + else if (!silent_create) + non_fatal (_("creating %s"), archive_filename); /* If we die creating a new archive, don't leave it around. */ output_filename = archive_filename; @@ -802,7 +804,7 @@ print_contents (bfd *abfd) if (verbose) /* xgettext:c-format */ - printf (_("\n\n\n"), bfd_get_filename (abfd)); + printf (_("\n<%s>\n\n"), bfd_get_filename (abfd)); bfd_seek (abfd, (file_ptr) 0, SEEK_SET); @@ -1305,7 +1307,9 @@ replace_members (bfd *arch, char **files /* Add to the end of the archive. */ after_bfd = get_pos_bfd (&arch->next, pos_end, NULL); - if (ar_emul_append (after_bfd, *files_to_move, verbose)) + + if (get_file_size (* files_to_move) > 0 + && ar_emul_append (after_bfd, *files_to_move, verbose)) changed = TRUE; next_file:; @@ -1324,6 +1328,8 @@ ranlib_only (const char *archname) { bfd *arch; + if (get_file_size (archname) < 1) + return; write_armap = 1; arch = open_inarch (archname, (char *) NULL); if (arch == NULL) @@ -1344,6 +1350,8 @@ ranlib_touch (const char *archname) bfd *arch; char **matching; + if (get_file_size (archname) < 1) + return; f = open (archname, O_RDWR | O_BINARY, 0); if (f < 0) { diff -uprN binutils-2.14.90.0.7/binutils/bucomm.c binutils-2.14.90.0.8/binutils/bucomm.c --- binutils-2.14.90.0.7/binutils/bucomm.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/bucomm.c 2004-01-14 13:07:44.000000000 -0800 @@ -450,3 +450,28 @@ parse_vma (const char *s, const char *ar return ret; } + +/* Returns the size of the named file. If the file does not + exist, or if it is not a real file, then a suitable non-fatal + error message is printed and zero is returned. */ + +off_t +get_file_size (const char * file_name) +{ + struct stat statbuf; + + if (stat (file_name, &statbuf) < 0) + { + if (errno == ENOENT) + non_fatal (_("'%s': No such file"), file_name); + else + non_fatal (_("Warning: could not locate '%s'. reason: %s"), + file_name, strerror (errno)); + } + else if (! S_ISREG (statbuf.st_mode)) + non_fatal (_("Warning: '%s' is not an ordinary file"), file_name); + else + return statbuf.st_size; + + return 0; +} diff -uprN binutils-2.14.90.0.7/binutils/bucomm.h binutils-2.14.90.0.8/binutils/bucomm.h --- binutils-2.14.90.0.7/binutils/bucomm.h 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/bucomm.h 2004-01-14 13:07:44.000000000 -0800 @@ -174,6 +174,8 @@ char *make_tempname (char *); bfd_vma parse_vma (const char *, const char *); +off_t get_file_size (const char *); + extern char *program_name; /* filemode.c */ diff -uprN binutils-2.14.90.0.7/binutils/coffgrok.c binutils-2.14.90.0.8/binutils/coffgrok.c --- binutils-2.14.90.0.7/binutils/coffgrok.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/coffgrok.c 2004-01-14 13:07:44.000000000 -0800 @@ -398,7 +398,7 @@ do_type (int i) case T_ENUM: if (aux->x_sym.x_tagndx.p) { - /* Refering to a enum defined elsewhere */ + /* Referring to a enum defined elsewhere */ res->type = coff_enumref_type; res->u.aenumref.ref = tindex[INDEXOF (aux->x_sym.x_tagndx.p)]; res->size = res->u.aenumref.ref->type->size; diff -uprN binutils-2.14.90.0.7/binutils/configure binutils-2.14.90.0.8/binutils/configure --- binutils-2.14.90.0.7/binutils/configure 2003-05-23 07:18:52.000000000 -0700 +++ binutils-2.14.90.0.8/binutils/configure 2004-01-14 13:07:44.000000000 -0800 @@ -2753,7 +2753,7 @@ EOF fi -ALL_LINGUAS="fr tr ja es sv da zh_CN" +ALL_LINGUAS="fr tr ja es sv da zh_CN ru" # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 @@ -5661,6 +5661,11 @@ do BUILD_DLLTOOL='$(DLLTOOL_PROG)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" ;; + powerpc*-aix5.[01]) + ;; + powerpc*-aix5.*) + OBJDUMP_DEFS="-DAIX_WEAK_SUPPORT" + ;; powerpc*-*-pe* | powerpc*-*-cygwin*) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC" diff -uprN binutils-2.14.90.0.7/binutils/configure.in binutils-2.14.90.0.8/binutils/configure.in --- binutils-2.14.90.0.7/binutils/configure.in 2003-05-23 07:18:52.000000000 -0700 +++ binutils-2.14.90.0.8/binutils/configure.in 2004-01-14 13:07:44.000000000 -0800 @@ -64,7 +64,7 @@ AC_PROG_CC AC_PROG_YACC AM_PROG_LEX -ALL_LINGUAS="fr tr ja es sv da zh_CN" +ALL_LINGUAS="fr tr ja es sv da zh_CN ru" CY_GNU_GETTEXT AM_MAINTAINER_MODE @@ -273,6 +273,13 @@ changequote([,])dnl BUILD_DLLTOOL='$(DLLTOOL_PROG)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" ;; +changequote(,)dnl + powerpc*-aix5.[01]) +changequote([,])dnl + ;; + powerpc*-aix5.*) + OBJDUMP_DEFS="-DAIX_WEAK_SUPPORT" + ;; powerpc*-*-pe* | powerpc*-*-cygwin*) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC" diff -uprN binutils-2.14.90.0.7/binutils/cxxfilt.c binutils-2.14.90.0.8/binutils/cxxfilt.c --- binutils-2.14.90.0.7/binutils/cxxfilt.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/cxxfilt.c 2004-01-14 13:07:44.000000000 -0800 @@ -57,7 +57,8 @@ static void usage (FILE *stream, int status) { fprintf (stream, "\ -Usage: %s [-_] [-n] [--strip-underscores] [--no-strip-underscores] \n", +Usage: %s [-_] [-n] [--strip-underscores] [--no-strip-underscores]\n\ + [-p] [--no-params]\n", program_name); fprintf (stream, "\ @@ -81,6 +82,7 @@ static const struct option long_options[ {"format", required_argument, 0, 's'}, {"demangler", required_argument, 0, 'd'}, {"help", no_argument, 0, 'h'}, + {"no-params", no_argument, 0, 'p'}, {"no-strip-underscores", no_argument, 0, 'n'}, {"version", no_argument, 0, 'v'}, {0, no_argument, 0, 0} @@ -147,13 +149,14 @@ main (int argc, char **argv) const char *valid_symbols; const char *demangler = NULL; const char *options = NULL; + int no_params = 0; program_name = argv[0]; xmalloc_set_program_name (program_name); strip_underscore = TARGET_PREPENDS_UNDERSCORE; - while ((c = getopt_long (argc, argv, "_ns:d:", long_options, (int *) 0)) != EOF) + while ((c = getopt_long (argc, argv, "_nps:d:", long_options, (int *) 0)) != EOF) { switch (c) { @@ -165,6 +168,9 @@ main (int argc, char **argv) case 'n': strip_underscore = 0; break; + case 'p': + no_params = 1; + break; case 'v': print_version ("c++filt"); return (0); @@ -187,6 +193,9 @@ main (int argc, char **argv) } } + if (no_params) + libiberty_demanglers [current_demangling_style].demangling_options + &= ~DMGL_PARAMS;; init_demangler (NULL, options, demangler); if (optind < argc) diff -uprN binutils-2.14.90.0.7/binutils/dlltool.c binutils-2.14.90.0.8/binutils/dlltool.c --- binutils-2.14.90.0.7/binutils/dlltool.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/dlltool.c 2004-01-14 13:07:44.000000000 -0800 @@ -3131,6 +3131,7 @@ usage (FILE *file, int status) fprintf (file, _(" -f --as-flags Pass to the assembler.\n")); fprintf (file, _(" -C --compat-implib Create backward compatible import library.\n")); fprintf (file, _(" -n --no-delete Keep temp files (repeat for extra preservation).\n")); + fprintf (file, _(" -t --temp-prefix Use to construct temp file names.\n")); fprintf (file, _(" -v --verbose Be verbose.\n")); fprintf (file, _(" -V --version Display the program version.\n")); fprintf (file, _(" -h --help Display this information.\n")); diff -uprN binutils-2.14.90.0.7/binutils/doc/Makefile.am binutils-2.14.90.0.8/binutils/doc/Makefile.am --- binutils-2.14.90.0.7/binutils/doc/Makefile.am 2002-02-03 11:22:31.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/doc/Makefile.am 2004-01-14 13:07:44.000000000 -0800 @@ -45,98 +45,98 @@ binutils.info: $(binutils_TEXI) config.t # Man page generation from texinfo addr2line.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Daddr2line < $< > addr2line.pod + -$(TEXI2POD) $(MANCONF) -Daddr2line < $(binutils_TEXI) > addr2line.pod -($(POD2MAN) addr2line.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f addr2line.pod ar.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dar < $< > ar.pod + -$(TEXI2POD) $(MANCONF) -Dar < $(binutils_TEXI) > ar.pod -($(POD2MAN) ar.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f ar.pod dlltool.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Ddlltool < $< > dlltool.pod + -$(TEXI2POD) $(MANCONF) -Ddlltool < $(binutils_TEXI) > dlltool.pod -($(POD2MAN) dlltool.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f dlltool.pod nlmconv.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dnlmconv < $< > nlmconv.pod + -$(TEXI2POD) $(MANCONF) -Dnlmconv < $(binutils_TEXI) > nlmconv.pod -($(POD2MAN) nlmconv.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f nlmconv.pod nm.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dnm < $< > nm.pod + -$(TEXI2POD) $(MANCONF) -Dnm < $(binutils_TEXI) > nm.pod -($(POD2MAN) nm.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f nm.pod objcopy.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dobjcopy < $< > objcopy.pod + -$(TEXI2POD) $(MANCONF) -Dobjcopy < $(binutils_TEXI) > objcopy.pod -($(POD2MAN) objcopy.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f objcopy.pod objdump.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dobjdump < $< > objdump.pod + -$(TEXI2POD) $(MANCONF) -Dobjdump < $(binutils_TEXI) > objdump.pod -($(POD2MAN) objdump.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f objdump.pod ranlib.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dranlib < $< > ranlib.pod + -$(TEXI2POD) $(MANCONF) -Dranlib < $(binutils_TEXI) > ranlib.pod -($(POD2MAN) ranlib.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f ranlib.pod readelf.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dreadelf < $< > readelf.pod + -$(TEXI2POD) $(MANCONF) -Dreadelf < $(binutils_TEXI) > readelf.pod -($(POD2MAN) readelf.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f readelf.pod size.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dsize < $< > size.pod + -$(TEXI2POD) $(MANCONF) -Dsize < $(binutils_TEXI) > size.pod -($(POD2MAN) size.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f size.pod strings.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dstrings < $< > strings.pod + -$(TEXI2POD) $(MANCONF) -Dstrings < $(binutils_TEXI) > strings.pod -($(POD2MAN) strings.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f strings.pod strip.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dstrip < $< > strip.pod + -$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod -($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f strip.pod windres.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dwindres < $< > windres.pod + -$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod -($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f windres.pod cxxfilt.man: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dcxxfilt < $< > $(DEMANGLER_NAME).pod + -$(TEXI2POD) $(MANCONF) -Dcxxfilt < $(binutils_TEXI) > $(DEMANGLER_NAME).pod -($(POD2MAN) $(DEMANGLER_NAME).pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f $(DEMANGLER_NAME).pod diff -uprN binutils-2.14.90.0.7/binutils/doc/Makefile.in binutils-2.14.90.0.8/binutils/doc/Makefile.in --- binutils-2.14.90.0.7/binutils/doc/Makefile.in 2002-10-29 20:09:13.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/doc/Makefile.in 2004-01-14 13:07:44.000000000 -0800 @@ -1,4 +1,4 @@ -# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation @@ -178,7 +178,7 @@ DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = gtar +TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: @@ -444,98 +444,98 @@ binutils.info: $(binutils_TEXI) config.t # Man page generation from texinfo addr2line.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Daddr2line < $< > addr2line.pod + -$(TEXI2POD) $(MANCONF) -Daddr2line < $(binutils_TEXI) > addr2line.pod -($(POD2MAN) addr2line.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f addr2line.pod ar.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dar < $< > ar.pod + -$(TEXI2POD) $(MANCONF) -Dar < $(binutils_TEXI) > ar.pod -($(POD2MAN) ar.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f ar.pod dlltool.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Ddlltool < $< > dlltool.pod + -$(TEXI2POD) $(MANCONF) -Ddlltool < $(binutils_TEXI) > dlltool.pod -($(POD2MAN) dlltool.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f dlltool.pod nlmconv.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dnlmconv < $< > nlmconv.pod + -$(TEXI2POD) $(MANCONF) -Dnlmconv < $(binutils_TEXI) > nlmconv.pod -($(POD2MAN) nlmconv.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f nlmconv.pod nm.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dnm < $< > nm.pod + -$(TEXI2POD) $(MANCONF) -Dnm < $(binutils_TEXI) > nm.pod -($(POD2MAN) nm.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f nm.pod objcopy.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dobjcopy < $< > objcopy.pod + -$(TEXI2POD) $(MANCONF) -Dobjcopy < $(binutils_TEXI) > objcopy.pod -($(POD2MAN) objcopy.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f objcopy.pod objdump.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dobjdump < $< > objdump.pod + -$(TEXI2POD) $(MANCONF) -Dobjdump < $(binutils_TEXI) > objdump.pod -($(POD2MAN) objdump.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f objdump.pod ranlib.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dranlib < $< > ranlib.pod + -$(TEXI2POD) $(MANCONF) -Dranlib < $(binutils_TEXI) > ranlib.pod -($(POD2MAN) ranlib.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f ranlib.pod readelf.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dreadelf < $< > readelf.pod + -$(TEXI2POD) $(MANCONF) -Dreadelf < $(binutils_TEXI) > readelf.pod -($(POD2MAN) readelf.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f readelf.pod size.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dsize < $< > size.pod + -$(TEXI2POD) $(MANCONF) -Dsize < $(binutils_TEXI) > size.pod -($(POD2MAN) size.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f size.pod strings.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dstrings < $< > strings.pod + -$(TEXI2POD) $(MANCONF) -Dstrings < $(binutils_TEXI) > strings.pod -($(POD2MAN) strings.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f strings.pod strip.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dstrip < $< > strip.pod + -$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod -($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f strip.pod windres.1: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dwindres < $< > windres.pod + -$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod -($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f windres.pod cxxfilt.man: $(binutils_TEXI) touch $@ - -$(TEXI2POD) $(MANCONF) -Dcxxfilt < $< > $(DEMANGLER_NAME).pod + -$(TEXI2POD) $(MANCONF) -Dcxxfilt < $(binutils_TEXI) > $(DEMANGLER_NAME).pod -($(POD2MAN) $(DEMANGLER_NAME).pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1) rm -f $(DEMANGLER_NAME).pod diff -uprN binutils-2.14.90.0.7/binutils/doc/binutils.texi binutils-2.14.90.0.8/binutils/doc/binutils.texi --- binutils-2.14.90.0.7/binutils/doc/binutils.texi 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/doc/binutils.texi 2004-01-14 13:07:44.000000000 -0800 @@ -939,6 +939,7 @@ objcopy [@option{-F} @var{bfdname}|@opti [@option{-G} @var{symbolname}|@option{--keep-global-symbol=}@var{symbolname}] [@option{-L} @var{symbolname}|@option{--localize-symbol=}@var{symbolname}] [@option{-W} @var{symbolname}|@option{--weaken-symbol=}@var{symbolname}] + [@option{-w}|@option{--wildcard}] [@option{-x}|@option{--discard-all}] [@option{-X}|@option{--discard-locals}] [@option{-b} @var{byte}|@option{--byte=}@var{byte}] @@ -975,6 +976,10 @@ objcopy [@option{-F} @var{bfdname}|@opti [@option{--prefix-alloc-sections=}@var{string}] [@option{--add-gnu-debuglink=}@var{path-to-file}] [@option{--only-keep-debug}] + [@option{--writable-text}] + [@option{--readonly-text}] + [@option{--pure}] + [@option{--impure}] [@option{-v}|@option{--verbose}] [@option{-V}|@option{--version}] [@option{--help}] [@option{--info}] @@ -1105,6 +1110,22 @@ visible externally. This option may be @itemx --weaken-symbol=@var{symbolname} Make symbol @var{symbolname} weak. This option may be given more than once. +@item -w +@itemx --wildcard +Permit regular expressions in @var{symbolname}s used in other command +line options. The question mark (?), asterisk (*), backslash (\) and +square brackets ([]) operators can be used anywhere in the symbol +name. If the first character of the symbol name is the exclamation +point (!) then the sense of the switch is reversed for that symbol. +For example: + +@smallexample + -w -W !foo -W fo* +@end smallexample + +would cause objcopy to weaken all symbols that start with ``fo'' +except for the symbol ``foo''. + @item -x @itemx --discard-all Do not copy non-global symbols from the source file. @@ -1340,6 +1361,22 @@ a machine is assigned an official code a new code, but other applications still depend on the original code being used. +@item --writable-text +Mark the output text as writable. This option isn't meaningful for all +object file formats. + +@item --readonly-text +Make the output text write protected. This option isn't meaningful for all +object file formats. + +@item --pure +Mark the output file as demand paged. This option isn't meaningful for all +object file formats. + +@item --impure +Mark the output file as impure. This option isn't meaningful for all +object file formats. + @item --prefix-symbols=@var{string} Prefix all symbols in the output file with @var{string}. @@ -2117,6 +2154,7 @@ strip [@option{-F} @var{bfdname} |@optio [@option{-S}|@option{-g}|@option{-d}|@option{--strip-debug}] [@option{-K} @var{symbolname} |@option{--keep-symbol=}@var{symbolname}] [@option{-N} @var{symbolname} |@option{--strip-symbol=}@var{symbolname}] + [@option{-w}|@option{--wildcard}] [@option{-x}|@option{--discard-all}] [@option{-X} |@option{--discard-locals}] [@option{-R} @var{sectionname} |@option{--remove-section=}@var{sectionname}] [@option{-o} @var{file}] [@option{-p}|@option{--preserve-dates}] @@ -2203,6 +2241,22 @@ argument may be specified. @itemx --preserve-dates Preserve the access and modification dates of the file. +@item -w +@itemx --wildcard +Permit regular expressions in @var{symbolname}s used in other command +line options. The question mark (?), asterisk (*), backslash (\) and +square brackets ([]) operators can be used anywhere in the symbol +name. If the first character of the symbol name is the exclamation +point (!) then the sense of the switch is reversed for that symbol. +For example: + +@smallexample + -w -K !foo -K fo* +@end smallexample + +would cause strip to only keep symbols that start with the letters +``fo'', but to discard the symbol ``foo''. + @item -x @itemx --discard-all Remove non-global symbols. @@ -2280,6 +2334,7 @@ the Info entries for @file{binutils}. c++filt [@option{-_}|@option{--strip-underscores}] [@option{-j}|@option{--java}] [@option{-n}|@option{--no-strip-underscores}] + [@option{-p}|@option{--no-params}] [@option{-s} @var{format}|@option{--format=}@var{format}] [@option{--help}] [@option{--version}] [@var{symbol}@dots{}] @c man end @@ -2335,6 +2390,11 @@ syntax. @itemx --no-strip-underscores Do not remove the initial underscore. +@item -p +@itemx --no-params +When demangling the name of a function, do not display the types of +the function's parameters. + @item -s @var{format} @itemx --format=@var{format} @command{c++filt} can decode various methods of mangling, used by @@ -2806,7 +2866,8 @@ dlltool [@option{-d}|@option{--input-def [@option{-a}|@option{--add-indirect}] [@option{-U}|@option{--add-underscore}] [@option{-k}|@option{--kill-at}] [@option{-A}|@option{--add-stdcall-alias}] [@option{-x}|@option{--no-idata4}] [@option{-c}|@option{--no-idata5}] [@option{-i}|@option{--interwork}] - [@option{-n}|@option{--nodelete}] [@option{-v}|@option{--verbose}] + [@option{-n}|@option{--nodelete}] [@option{-t}|@option{--temp-prefix} @var{prefix}] + [@option{-v}|@option{--verbose}] [@option{-h}|@option{--help}] [@option{-V}|@option{--version}] [object-file @dots{}] @c man end @@ -3016,7 +3077,13 @@ between ARM and Thumb code. Makes @command{dlltool} preserve the temporary assembler files it used to create the exports file. If this option is repeated then dlltool will also preserve the temporary object files it uses to create the library -file. +file. + +@item -t @var{prefix} +@itemx --temp-prefix @var{prefix} +Makes @command{dlltool} use @var{prefix} when constructing the names of +temporary assembler and object files. By default, the temp file prefix +is generated from the pid. @item -v @itemx --verbose @@ -3082,6 +3149,11 @@ files. The options control what particu @var{elffile}@dots{} are the object files to be examined. 32-bit and 64-bit ELF files are supported, as are archives containing ELF files. +This program performs a similar function to @command{objdump} but it +goes into more detail and it exists independently of the @sc{bfd} +library, so if there is a bug in @sc{bfd} then readelf will not be +affected. + @c man end @c man begin OPTIONS readelf diff -uprN binutils-2.14.90.0.7/binutils/filemode.c binutils-2.14.90.0.8/binutils/filemode.c --- binutils-2.14.90.0.7/binutils/filemode.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/filemode.c 2004-01-14 13:07:44.000000000 -0800 @@ -136,7 +136,7 @@ mode_string (unsigned long mode, char *s 'd' for directories 'b' for block special files 'c' for character special files - 'm' for multiplexor files + 'm' for multiplexer files 'l' for symbolic links 's' for sockets 'p' for fifos diff -uprN binutils-2.14.90.0.7/binutils/ieee.c binutils-2.14.90.0.8/binutils/ieee.c --- binutils-2.14.90.0.7/binutils/ieee.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/ieee.c 2004-01-14 13:07:44.000000000 -0800 @@ -1234,7 +1234,7 @@ parse_ieee_be (struct ieee_info *info, c switch (info->blockstack.bsp->kind) { case 2: - /* When we end the global typedefs block, we copy out the the + /* When we end the global typedefs block, we copy out the contents of info->vars. This is because the variable indices may be reused in the local blocks. However, we need to preserve them so that we can locate a function returning a diff -uprN binutils-2.14.90.0.7/binutils/nm.c binutils-2.14.90.0.8/binutils/nm.c --- binutils-2.14.90.0.7/binutils/nm.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/nm.c 2004-01-14 13:07:44.000000000 -0800 @@ -602,6 +602,9 @@ display_file (char *filename) bfd *file; char **matching; + if (get_file_size (filename) < 1) + return FALSE; + file = bfd_openr (filename, target); if (file == NULL) { diff -uprN binutils-2.14.90.0.7/binutils/objcopy.c binutils-2.14.90.0.8/binutils/objcopy.c --- binutils-2.14.90.0.7/binutils/objcopy.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/objcopy.c 2004-01-14 13:07:44.000000000 -0800 @@ -1,6 +1,6 @@ /* objcopy.c -- copy object file from input to output, optionally massaging it. Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003 + 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -27,6 +27,8 @@ #include "libiberty.h" #include "budbg.h" #include "filenames.h" +#include "fnmatch.h" +#include "elf-bfd.h" #include /* A list of symbols to explicitly strip out, or to keep. A linked @@ -147,6 +149,10 @@ static bfd_vma pad_to; /* Use alternate machine code? */ static int use_alt_mach_code = 0; +/* Output BFD flags user wants to set or clear */ +static flagword bfd_flags_to_set; +static flagword bfd_flags_to_clear; + /* List of sections to add. */ struct section_add { @@ -180,6 +186,9 @@ static bfd_boolean change_leading_char = /* Whether to remove the leading character from global symbol names. */ static bfd_boolean remove_leading_char = FALSE; +/* Whether to permit wildcard in symbol comparison. */ +static bfd_boolean wildcard = FALSE; + /* List of symbols to strip, keep, localize, keep-global, weaken, or redefine. */ static struct symlist *strip_specific_list = NULL; @@ -233,7 +242,11 @@ enum command_line_switch OPTION_PREFIX_ALLOC_SECTIONS, OPTION_FORMATS_INFO, OPTION_ADD_GNU_DEBUGLINK, - OPTION_ONLY_KEEP_DEBUG + OPTION_ONLY_KEEP_DEBUG, + OPTION_READONLY_TEXT, + OPTION_WRITABLE_TEXT, + OPTION_PURE, + OPTION_IMPURE }; /* Options to handle if running as "strip". */ @@ -261,6 +274,7 @@ static struct option strip_options[] = {"target", required_argument, 0, 'F'}, {"verbose", no_argument, 0, 'v'}, {"version", no_argument, 0, 'V'}, + {"wildcard", no_argument, 0, 'w'}, {0, no_argument, 0, 0} }; @@ -290,6 +304,7 @@ static struct option copy_options[] = {"format", required_argument, 0, 'F'}, /* Obsolete */ {"gap-fill", required_argument, 0, OPTION_GAP_FILL}, {"help", no_argument, 0, 'h'}, + {"impure", no_argument, 0, OPTION_IMPURE}, {"info", no_argument, 0, OPTION_FORMATS_INFO}, {"input-format", required_argument, 0, 'I'}, /* Obsolete */ {"input-target", required_argument, 0, 'I'}, @@ -311,6 +326,8 @@ static struct option copy_options[] = {"prefix-sections", required_argument, 0, OPTION_PREFIX_SECTIONS}, {"prefix-alloc-sections", required_argument, 0, OPTION_PREFIX_ALLOC_SECTIONS}, {"preserve-dates", no_argument, 0, 'p'}, + {"pure", no_argument, 0, OPTION_PURE}, + {"readonly-text", no_argument, 0, OPTION_READONLY_TEXT}, {"redefine-sym", required_argument, 0, OPTION_REDEFINE_SYM}, {"redefine-syms", required_argument, 0, OPTION_REDEFINE_SYMS}, {"remove-leading-char", no_argument, 0, OPTION_REMOVE_LEADING_CHAR}, @@ -331,6 +348,8 @@ static struct option copy_options[] = {"weaken", no_argument, 0, OPTION_WEAKEN}, {"weaken-symbol", required_argument, 0, 'W'}, {"weaken-symbols", required_argument, 0, OPTION_WEAKEN_SYMBOLS}, + {"wildcard", no_argument, 0, 'w'}, + {"writable-text", no_argument, 0, OPTION_WRITABLE_TEXT}, {0, no_argument, 0, 0} }; @@ -385,11 +404,13 @@ copy_usage (FILE *stream, int exit_statu -g --strip-debug Remove all debugging symbols & sections\n\ --strip-unneeded Remove all symbols not needed by relocations\n\ -N --strip-symbol Do not copy symbol \n\ + --only-keep-debug Strip everything but the debug information\n\ -K --keep-symbol Only copy symbol \n\ -L --localize-symbol Force symbol to be marked as a local\n\ -G --keep-global-symbol Localize all symbols except \n\ -W --weaken-symbol Force symbol to be marked as a weak\n\ --weaken Force all global symbols to be marked as weak\n\ + -w --wildcard Permit wildcard in symbol comparasion\n\ -x --discard-all Remove all non-global symbols\n\ -X --discard-locals Remove any compiler-generated symbols\n\ -i --interleave Only copy one out of every bytes\n\ @@ -426,6 +447,10 @@ copy_usage (FILE *stream, int exit_statu --keep-global-symbols -G for all symbols listed in \n\ --weaken-symbols -W for all symbols listed in \n\ --alt-machine-code Use alternate machine code for output\n\ + --writable-text Mark the output text as writable\n\ + --readonly-text Make the output text write protected\n\ + --pure Mark the output file as demand paged\n\ + --impure Mark the output file as impure\n\ --prefix-symbols Add to start of every symbol name\n\ --prefix-sections Add to start of every section name\n\ --prefix-alloc-sections \n\ @@ -457,8 +482,10 @@ strip_usage (FILE *stream, int exit_stat -s --strip-all Remove all symbol and relocation information\n\ -g -S -d --strip-debug Remove all debugging symbols & sections\n\ --strip-unneeded Remove all symbols not needed by relocations\n\ + --only-keep-debug Strip everything but the debug information\n\ -N --strip-symbol= Do not copy symbol \n\ -K --keep-symbol= Only copy symbol \n\ + -w --wildcard Permit wildcard in symbol comparasion\n\ -x --discard-all Remove all non-global symbols\n\ -X --discard-locals Remove any compiler-generated symbols\n\ -v --verbose List all object files modified\n\ @@ -583,28 +610,27 @@ add_specific_symbol (const char *name, s static void add_specific_symbols (const char *filename, struct symlist **list) { - struct stat st; + off_t size; FILE * f; char * line; char * buffer; unsigned int line_count; - if (stat (filename, & st) < 0) - fatal (_("cannot stat: %s: %s"), filename, strerror (errno)); - if (st.st_size == 0) + size = get_file_size (filename); + if (size == 0) return; - buffer = xmalloc (st.st_size + 2); + buffer = xmalloc (size + 2); f = fopen (filename, FOPEN_RT); if (f == NULL) - fatal (_("cannot open: %s: %s"), filename, strerror (errno)); + fatal (_("cannot open '%s': %s"), filename, strerror (errno)); - if (fread (buffer, 1, st.st_size, f) == 0 || ferror (f)) + if (fread (buffer, 1, size, f) == 0 || ferror (f)) fatal (_("%s: fread failed"), filename); fclose (f); - buffer [st.st_size] = '\n'; - buffer [st.st_size + 1] = '\0'; + buffer [size] = '\n'; + buffer [size + 1] = '\0'; line_count = 1; @@ -697,9 +723,26 @@ is_specified_symbol (const char *name, s { struct symlist *tmp_list; - for (tmp_list = list; tmp_list; tmp_list = tmp_list->next) - if (strcmp (name, tmp_list->name) == 0) - return TRUE; + if (wildcard) + { + for (tmp_list = list; tmp_list; tmp_list = tmp_list->next) + if (*(tmp_list->name) != '!') + { + if (!fnmatch (tmp_list->name, name, 0)) + return TRUE; + } + else + { + if (fnmatch (tmp_list->name + 1, name, 0)) + return TRUE; + } + } + else + { + for (tmp_list = list; tmp_list; tmp_list = tmp_list->next) + if (strcmp (name, tmp_list->name) == 0) + return TRUE; + } return FALSE; } @@ -734,7 +777,7 @@ is_strip_section (bfd *abfd ATTRIBUTE_UN return FALSE; } - return strip_symbols == STRIP_NONDEBUG ? TRUE : FALSE; + return FALSE; } /* Choose which symbol entries to copy; put the result in OSYMS. @@ -1042,26 +1085,10 @@ add_redefine_syms_file (const char *file free (buf); } -/* Keep only every `copy_byte'th byte in MEMHUNK, which is *SIZE bytes long. - Adjust *SIZE. */ - -static void -filter_bytes (char *memhunk, bfd_size_type *size) -{ - char *from = memhunk + copy_byte, *to = memhunk, *end = memhunk + *size; - - for (; from < end; from += interleave) - *to++ = *from; - - if (*size % interleave > (bfd_size_type) copy_byte) - *size = (*size / interleave) + 1; - else - *size /= interleave; -} - -/* Copy object file IBFD onto OBFD. */ +/* Copy object file IBFD onto OBFD. + Returns TRUE upon success, FALSE otherwise. */ -static void +static bfd_boolean copy_object (bfd *ibfd, bfd *obfd) { bfd_vma start; @@ -1078,13 +1105,13 @@ copy_object (bfd *ibfd, bfd *obfd) if (ibfd->xvec->byteorder != obfd->xvec->byteorder && ibfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN && obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN) - { - fatal (_("Unable to change endianness of input file(s)")); - return; - } + fatal (_("Unable to change endianness of input file(s)")); if (!bfd_set_format (obfd, bfd_get_format (ibfd))) - RETURN_NONFATAL (bfd_get_filename (obfd)); + { + bfd_nonfatal (bfd_get_filename (obfd)); + return FALSE; + } if (verbose) printf (_("copy from %s(%s) to %s(%s)\n"), @@ -1101,11 +1128,19 @@ copy_object (bfd *ibfd, bfd *obfd) need to be set for a core file. */ if (bfd_get_format (obfd) != bfd_core) { + flagword flags; + + flags = bfd_get_file_flags (ibfd); + flags |= bfd_flags_to_set; + flags &= ~bfd_flags_to_clear; + flags &= bfd_applicable_file_flags (obfd); + if (!bfd_set_start_address (obfd, start) - || !bfd_set_file_flags (obfd, - (bfd_get_file_flags (ibfd) - & bfd_applicable_file_flags (obfd)))) - RETURN_NONFATAL (bfd_get_filename (ibfd)); + || !bfd_set_file_flags (obfd, flags)) + { + bfd_nonfatal (bfd_get_filename (ibfd)); + return FALSE; + } } /* Copy architecture of input file to output file. */ @@ -1114,12 +1149,24 @@ copy_object (bfd *ibfd, bfd *obfd) if (!bfd_set_arch_mach (obfd, iarch, imach) && (ibfd->target_defaulted || bfd_get_arch (ibfd) != bfd_get_arch (obfd))) - non_fatal (_("Warning: Output file cannot represent architecture %s"), - bfd_printable_arch_mach (bfd_get_arch (ibfd), - bfd_get_mach (ibfd))); + { + if (bfd_get_arch (ibfd) == bfd_arch_unknown) + fatal (_("Unable to recognise the format of the input file %s"), + bfd_get_filename (ibfd)); + else + { + non_fatal (_("Warning: Output file cannot represent architecture %s"), + bfd_printable_arch_mach (bfd_get_arch (ibfd), + bfd_get_mach (ibfd))); + return FALSE; + } + } if (!bfd_set_format (obfd, bfd_get_format (ibfd))) - RETURN_NONFATAL (bfd_get_filename (ibfd)); + { + bfd_nonfatal (bfd_get_filename (ibfd)); + return FALSE; + } if (isympp) free (isympp); @@ -1145,12 +1192,14 @@ copy_object (bfd *ibfd, bfd *obfd) { non_fatal (_("can't create section `%s': %s"), padd->name, bfd_errmsg (bfd_get_error ())); - status = 1; - return; + return FALSE; } if (! bfd_set_section_size (obfd, padd->section, padd->size)) - RETURN_NONFATAL (bfd_get_filename (obfd)); + { + bfd_nonfatal (bfd_get_filename (obfd)); + return FALSE; + } pset = find_section_list (padd->name, FALSE); if (pset != NULL) @@ -1162,23 +1211,32 @@ copy_object (bfd *ibfd, bfd *obfd) flags = SEC_HAS_CONTENTS | SEC_READONLY | SEC_DATA; if (! bfd_set_section_flags (obfd, padd->section, flags)) - RETURN_NONFATAL (bfd_get_filename (obfd)); + { + bfd_nonfatal (bfd_get_filename (obfd)); + return FALSE; + } if (pset != NULL) { if (pset->change_vma != CHANGE_IGNORE) if (! bfd_set_section_vma (obfd, padd->section, pset->vma_val)) - RETURN_NONFATAL (bfd_get_filename (obfd)); + { + bfd_nonfatal (bfd_get_filename (obfd)); + return FALSE; + } if (pset->change_lma != CHANGE_IGNORE) { padd->section->lma = pset->lma_val; - + if (! bfd_set_section_alignment (obfd, padd->section, bfd_section_alignment (obfd, padd->section))) - RETURN_NONFATAL (bfd_get_filename (obfd)); + { + bfd_nonfatal (bfd_get_filename (obfd)); + return FALSE; + } } } } @@ -1190,7 +1248,16 @@ copy_object (bfd *ibfd, bfd *obfd) (obfd, gnu_debuglink_filename); if (gnu_debuglink_section == NULL) - RETURN_NONFATAL (gnu_debuglink_filename); + { + bfd_nonfatal (gnu_debuglink_filename); + return FALSE; + } + } + + if (bfd_count_sections (obfd) == 0) + { + non_fatal (_("there are no sections to be copied!")); + return FALSE; } if (gap_fill_set || pad_to_set) @@ -1280,12 +1347,18 @@ copy_object (bfd *ibfd, bfd *obfd) dhandle = NULL; symsize = bfd_get_symtab_upper_bound (ibfd); if (symsize < 0) - RETURN_NONFATAL (bfd_get_filename (ibfd)); + { + bfd_nonfatal (bfd_get_filename (ibfd)); + return FALSE; + } osympp = isympp = xmalloc (symsize); symcount = bfd_canonicalize_symtab (ibfd, isympp); if (symcount < 0) - RETURN_NONFATAL (bfd_get_filename (ibfd)); + { + bfd_nonfatal (bfd_get_filename (ibfd)); + return FALSE; + } if (convert_debugging) dhandle = read_debugging_info (ibfd, isympp, symcount); @@ -1330,7 +1403,7 @@ copy_object (bfd *ibfd, bfd *obfd) if (! write_debugging_info (obfd, dhandle, &symcount, &osympp)) { status = 1; - return; + return FALSE; } } @@ -1347,7 +1420,10 @@ copy_object (bfd *ibfd, bfd *obfd) { if (! bfd_set_section_contents (obfd, padd->section, padd->contents, 0, padd->size)) - RETURN_NONFATAL (bfd_get_filename (obfd)); + { + bfd_nonfatal (bfd_get_filename (obfd)); + return FALSE; + } } } @@ -1355,7 +1431,10 @@ copy_object (bfd *ibfd, bfd *obfd) { if (! bfd_fill_in_gnu_debuglink_section (obfd, gnu_debuglink_section, gnu_debuglink_filename)) - RETURN_NONFATAL (gnu_debuglink_filename); + { + bfd_nonfatal (gnu_debuglink_filename); + return FALSE; + } } if (gap_fill_set || pad_to_set) @@ -1391,7 +1470,10 @@ copy_object (bfd *ibfd, bfd *obfd) if (! bfd_set_section_contents (obfd, osections[i], buf, off, now)) - RETURN_NONFATAL (bfd_get_filename (obfd)); + { + bfd_nonfatal (bfd_get_filename (obfd)); + return FALSE; + } left -= now; off += now; @@ -1414,18 +1496,17 @@ copy_object (bfd *ibfd, bfd *obfd) non_fatal (_("%s: error copying private BFD data: %s"), bfd_get_filename (obfd), bfd_errmsg (bfd_get_error ())); - status = 1; - return; + return FALSE; } /* Switch to the alternate machine code. We have to do this at the very end, because we only initialize the header when we create the first section. */ - if (use_alt_mach_code != 0) - { - if (!bfd_alt_mach_code (obfd, use_alt_mach_code)) - non_fatal (_("unknown alternate machine code, ignored")); - } + if (use_alt_mach_code != 0 + && ! bfd_alt_mach_code (obfd, use_alt_mach_code)) + non_fatal (_("unknown alternate machine code, ignored")); + + return TRUE; } #undef MKDIR @@ -1472,6 +1553,7 @@ copy_archive (bfd *ibfd, bfd *obfd, cons bfd *last_element; struct stat buf; int stat_status = 0; + bfd_boolean delete = TRUE; /* Create an output file for this member. */ output_name = concat (dir, "/", @@ -1513,7 +1595,7 @@ copy_archive (bfd *ibfd, bfd *obfd, cons RETURN_NONFATAL (output_name); if (bfd_check_format (this_element, bfd_object)) - copy_object (this_element, output_bfd); + delete = ! copy_object (this_element, output_bfd); if (!bfd_close (output_bfd)) { @@ -1522,22 +1604,30 @@ copy_archive (bfd *ibfd, bfd *obfd, cons status = 1; } - if (preserve_dates && stat_status == 0) - set_times (output_name, &buf); + if (delete) + { + unlink (output_name); + status = 1; + } + else + { + if (preserve_dates && stat_status == 0) + set_times (output_name, &buf); - /* Open the newly output file and attach to our list. */ - output_bfd = bfd_openr (output_name, output_target); + /* Open the newly output file and attach to our list. */ + output_bfd = bfd_openr (output_name, output_target); - l->obfd = output_bfd; + l->obfd = output_bfd; - *ptr = output_bfd; - ptr = &output_bfd->next; + *ptr = output_bfd; + ptr = &output_bfd->next; - last_element = this_element; + last_element = this_element; - this_element = bfd_openr_next_archived_file (ibfd, last_element); + this_element = bfd_openr_next_archived_file (ibfd, last_element); - bfd_close (last_element); + bfd_close (last_element); + } } *ptr = NULL; @@ -1571,6 +1661,12 @@ copy_file (const char *input_filename, c char **obj_matching; char **core_matching; + if (get_file_size (input_filename) < 1) + { + status = 1; + return; + } + /* To allow us to do "strip *" without dying on the first non-object file, failures are nonfatal. */ ibfd = bfd_openr (input_filename, input_target); @@ -1595,7 +1691,9 @@ copy_file (const char *input_filename, c else if (bfd_check_format_matches (ibfd, bfd_object, &obj_matching)) { bfd *obfd; + bfd_boolean delete; do_copy: + /* bfd_get_target does not return the correct value until bfd_check_format succeeds. */ if (output_target == NULL) @@ -1605,13 +1703,19 @@ copy_file (const char *input_filename, c if (obfd == NULL) RETURN_NONFATAL (output_filename); - copy_object (ibfd, obfd); + delete = ! copy_object (ibfd, obfd); if (!bfd_close (obfd)) RETURN_NONFATAL (output_filename); if (!bfd_close (ibfd)) RETURN_NONFATAL (input_filename); + + if (delete) + { + unlink (output_filename); + status = 1; + } } else { @@ -1806,6 +1910,13 @@ setup_section (bfd *ibfd, sec_ptr isecti if (p != NULL && p->set_flags) flags = p->flags | (flags & (SEC_HAS_CONTENTS | SEC_RELOC)); + else if (strip_symbols == STRIP_NONDEBUG && (flags & SEC_ALLOC) != 0) + { + flags &= ~(SEC_HAS_CONTENTS | SEC_LOAD); + if (obfd->xvec->flavour == bfd_target_elf_flavour) + elf_section_type (osection) = SHT_NOBITS; + } + if (!bfd_set_section_flags (obfd, osection, flags)) { err = _("flags"); @@ -1926,6 +2037,8 @@ copy_section (bfd *ibfd, sec_ptr isectio } bfd_set_reloc (obfd, osection, relcount == 0 ? NULL : relpp, relcount); + if (relcount == 0) + free (relpp); } isection->_cooked_size = isection->_raw_size; @@ -1940,7 +2053,18 @@ copy_section (bfd *ibfd, sec_ptr isectio RETURN_NONFATAL (bfd_get_filename (ibfd)); if (copy_byte >= 0) - filter_bytes (memhunk, &size); + { + /* Keep only every `copy_byte'th byte in MEMHUNK. */ + char *from = memhunk + copy_byte; + char *to = memhunk; + char *end = memhunk + size; + + for (; from < end; from += interleave) + *to++ = *from; + + size = (size + interleave - 1 - copy_byte) / interleave; + osection->lma /= interleave; + } if (!bfd_set_section_contents (obfd, osection, memhunk, 0, size)) RETURN_NONFATAL (bfd_get_filename (obfd)); @@ -2146,7 +2270,7 @@ strip_main (int argc, char *argv[]) struct section_list *p; char *output_file = NULL; - while ((c = getopt_long (argc, argv, "I:O:F:K:N:R:o:sSpdgxXHhVv", + while ((c = getopt_long (argc, argv, "I:O:F:K:N:R:o:sSpdgxXHhVvw", strip_options, (int *) 0)) != EOF) { switch (c) @@ -2209,6 +2333,9 @@ strip_main (int argc, char *argv[]) case 0: /* We've been given a long option. */ break; + case 'w': + wildcard = TRUE; + break; case 'H': case 'h': strip_usage (stdout, 0); @@ -2246,14 +2373,13 @@ strip_main (int argc, char *argv[]) struct stat statbuf; char *tmpname; + if (get_file_size (argv[i]) < 1) + continue; + if (preserve_dates) - { - if (stat (argv[i], &statbuf) < 0) - { - non_fatal (_("%s: cannot stat: %s"), argv[i], strerror (errno)); - continue; - } - } + /* No need to check the return value of stat(). + It has already been checked in get_file_size(). */ + stat (argv[i], &statbuf); if (output_file != NULL) tmpname = output_file; @@ -2294,7 +2420,7 @@ copy_main (int argc, char *argv[]) struct section_list *p; struct stat statbuf; - while ((c = getopt_long (argc, argv, "b:B:i:I:j:K:N:s:O:d:F:L:G:R:SpgxXHhVvW:", + while ((c = getopt_long (argc, argv, "b:B:i:I:j:K:N:s:O:d:F:L:G:R:SpgxXHhVvW:w", copy_options, (int *) 0)) != EOF) { switch (c) @@ -2389,6 +2515,10 @@ copy_main (int argc, char *argv[]) preserve_dates = TRUE; break; + case 'w': + wildcard = TRUE; + break; + case 'x': discard_locals = LOCALS_ALL; break; @@ -2416,7 +2546,7 @@ copy_main (int argc, char *argv[]) case OPTION_ADD_SECTION: { const char *s; - struct stat st; + off_t size; struct section_add *pa; int len; char *name; @@ -2427,8 +2557,9 @@ copy_main (int argc, char *argv[]) if (s == NULL) fatal (_("bad format for %s"), "--add-section"); - if (stat (s + 1, & st) < 0) - fatal (_("cannot stat: %s: %s"), s + 1, strerror (errno)); + size = get_file_size (s + 1); + if (size < 1) + break; pa = xmalloc (sizeof (struct section_add)); @@ -2439,10 +2570,9 @@ copy_main (int argc, char *argv[]) pa->name = name; pa->filename = s + 1; + pa->size = size; + pa->contents = xmalloc (size); - pa->size = st.st_size; - - pa->contents = xmalloc (pa->size); f = fopen (pa->filename, FOPEN_RB); if (f == NULL) @@ -2736,6 +2866,26 @@ copy_main (int argc, char *argv[]) prefix_alloc_sections_string = optarg; break; + case OPTION_READONLY_TEXT: + bfd_flags_to_set |= WP_TEXT; + bfd_flags_to_clear &= ~WP_TEXT; + break; + + case OPTION_WRITABLE_TEXT: + bfd_flags_to_clear |= WP_TEXT; + bfd_flags_to_set &= ~WP_TEXT; + break; + + case OPTION_PURE: + bfd_flags_to_set |= D_PAGED; + bfd_flags_to_clear &= ~D_PAGED; + break; + + case OPTION_IMPURE: + bfd_flags_to_clear |= D_PAGED; + bfd_flags_to_set &= ~D_PAGED; + break; + case 0: /* We've been given a long option. */ break; @@ -2800,7 +2950,8 @@ copy_main (int argc, char *argv[]) if (preserve_dates) if (stat (input_filename, & statbuf) < 0) - fatal (_("Cannot stat: %s: %s"), input_filename, strerror (errno)); + fatal (_("warning: could not locate '%s'. System error message: %s"), + input_filename, strerror (errno)); /* If there is no destination file, or the source and destination files are the same, then create a temp and rename the result into the input. */ diff -uprN binutils-2.14.90.0.7/binutils/objdump.c binutils-2.14.90.0.8/binutils/objdump.c --- binutils-2.14.90.0.7/binutils/objdump.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/objdump.c 2004-01-14 13:07:44.000000000 -0800 @@ -41,7 +41,7 @@ 4. dump_bfd() in turn calls separate functions to display the requested item(s) of information(s). For example disassemble_data() is called if - a disassmebly has been requested. + a disassembly has been requested. When disassembling the code loops through blocks of instructions bounded by symbols, calling disassemble_bytes() on each block. The actual @@ -75,7 +75,8 @@ static int exit_status = 0; static char *default_target = NULL; /* Default at runtime. */ -/* The following variables are set based on arguments passed on command line. */ +/* The following variables are set based on arguments passed on the + command line. */ static int show_version = 0; /* Show the version number. */ static int dump_section_contents; /* -s */ static int dump_section_headers; /* -h */ @@ -116,7 +117,8 @@ static size_t only_used = 0; static const char **include_paths; static int include_path_count; -/* Extra info to pass to the section disassembler and address printing function. */ +/* Extra info to pass to the section disassembler and address printing + function. */ struct objdump_disasm_info { bfd * abfd; @@ -601,9 +603,9 @@ objdump_print_value (bfd_vma vma, struct { char buf[30]; char *p; - struct objdump_disasm_info *aux - = (struct objdump_disasm_info *) info->application_data; + struct objdump_disasm_info *aux; + aux = (struct objdump_disasm_info *) info->application_data; bfd_sprintf_vma (aux->abfd, buf, vma); if (! skip_zeroes) p = buf; @@ -644,14 +646,16 @@ objdump_print_symname (bfd *abfd, struct free (alloc); } -/* Locate a symbol given a bfd, a section, and a VMA. If REQUIRE_SEC - is TRUE, then always require the symbol to be in the section. This - returns NULL if there is no suitable symbol. If PLACE is not NULL, - then *PLACE is set to the index of the symbol in sorted_syms. */ +/* Locate a symbol given a bfd and a section (from INFO->application_data), + and a VMA. If INFO->application_data->require_sec is TRUE, then always + require the symbol to be in the section. Returns NULL if there is no + suitable symbol. If PLACE is not NULL, then *PLACE is set to the index + of the symbol in sorted_syms. */ static asymbol * -find_symbol_for_address (bfd *abfd, asection *sec, bfd_vma vma, - bfd_boolean require_sec, long *place) +find_symbol_for_address (bfd_vma vma, + struct disassemble_info *info, + long *place) { /* @@ Would it speed things up to cache the last two symbols returned, and maybe their address ranges? For many processors, only one memory @@ -662,11 +666,19 @@ find_symbol_for_address (bfd *abfd, asec long min = 0; long max = sorted_symcount; long thisplace; - unsigned int opb = bfd_octets_per_byte (abfd); + struct objdump_disasm_info *aux; + bfd *abfd; + asection *sec; + unsigned int opb; if (sorted_symcount < 1) return NULL; + aux = (struct objdump_disasm_info *) info->application_data; + abfd = aux->abfd; + sec = aux->sec; + opb = bfd_octets_per_byte (abfd); + /* Perform a binary search looking for the closest symbol to the required value. We are searching the range (min, max]. */ while (min + 1 < max) @@ -705,7 +717,7 @@ find_symbol_for_address (bfd *abfd, asec no way to tell what's desired without looking at the relocation table. */ if (sorted_syms[thisplace]->section != sec - && (require_sec + && (aux->require_sec || ((abfd->flags & HAS_RELOC) != 0 && vma >= bfd_get_section_vma (abfd, sec) && vma < (bfd_get_section_vma (abfd, sec) @@ -750,15 +762,22 @@ find_symbol_for_address (bfd *abfd, asec } if (sorted_syms[thisplace]->section != sec - && (require_sec + && (aux->require_sec || ((abfd->flags & HAS_RELOC) != 0 && vma >= bfd_get_section_vma (abfd, sec) && vma < (bfd_get_section_vma (abfd, sec) + bfd_section_size (abfd, sec))))) - { - /* There is no suitable symbol. */ - return NULL; - } + /* There is no suitable symbol. */ + return NULL; + } + + /* Give the target a chance to reject the symbol. */ + while (! info->symbol_is_valid (sorted_syms [thisplace], info)) + { + ++ thisplace; + if (thisplace >= sorted_symcount + || bfd_asymbol_value (sorted_syms [thisplace]) > vma) + return NULL; } if (place != NULL) @@ -817,7 +836,8 @@ objdump_print_addr_with_sym (bfd *abfd, If SKIP_ZEROES is TRUE, don't output leading zeroes. */ static void -objdump_print_addr (bfd_vma vma, struct disassemble_info *info, +objdump_print_addr (bfd_vma vma, + struct disassemble_info *info, bfd_boolean skip_zeroes) { struct objdump_disasm_info *aux; @@ -831,8 +851,7 @@ objdump_print_addr (bfd_vma vma, struct } aux = (struct objdump_disasm_info *) info->application_data; - sym = find_symbol_for_address (aux->abfd, aux->sec, vma, aux->require_sec, - NULL); + sym = find_symbol_for_address (vma, info, NULL); objdump_print_addr_with_sym (aux->abfd, aux->sec, sym, vma, info, skip_zeroes); } @@ -851,16 +870,9 @@ objdump_print_address (bfd_vma vma, stru static int objdump_symbol_at_address (bfd_vma vma, struct disassemble_info * info) { - struct objdump_disasm_info * aux; asymbol * sym; - /* No symbols - do not bother checking. */ - if (sorted_symcount < 1) - return 0; - - aux = (struct objdump_disasm_info *) info->application_data; - sym = find_symbol_for_address (aux->abfd, aux->sec, vma, aux->require_sec, - NULL); + sym = find_symbol_for_address (vma, info, NULL); return (sym != NULL && (bfd_asymbol_value (sym) == vma)); } @@ -1504,7 +1516,8 @@ disassemble_bytes (struct disassemble_in else printf ("\t\t\t"); - objdump_print_value (section->vma + q->address, info, TRUE); + objdump_print_value (section->vma - rel_offset + q->address, + info, TRUE); printf (": %s\t", q->howto->name); @@ -1552,7 +1565,7 @@ static void disassemble_section (bfd *abfd, asection *section, void *info) { struct disassemble_info * pinfo = (struct disassemble_info *) info; - struct objdump_disasm_info * paux = (struct objdump_disasm_info *) pinfo->application_data; + struct objdump_disasm_info * paux; unsigned int opb = pinfo->octets_per_byte; bfd_byte * data = NULL; bfd_size_type datasize = 0; @@ -1581,6 +1594,7 @@ disassemble_section (bfd *abfd, asection return; /* Decide which set of relocs to use. Load them if necessary. */ + paux = (struct objdump_disasm_info *) pinfo->application_data; if (paux->dynrelbuf) { rel_pp = paux->dynrelbuf; @@ -1588,7 +1602,7 @@ disassemble_section (bfd *abfd, asection /* Dynamic reloc addresses are absolute, non-dynamic are section relative. REL_OFFSET specifies the reloc address corresponding to the start of this section. */ - rel_offset = pinfo->buffer_vma; + rel_offset = section->vma; } else { @@ -1660,8 +1674,9 @@ disassemble_section (bfd *abfd, asection printf (_("Disassembly of section %s:\n"), section->name); /* Find the nearest symbol forwards from our current position. */ - sym = find_symbol_for_address (abfd, section, section->vma + addr_offset, - TRUE, &place); + paux->require_sec = TRUE; + sym = find_symbol_for_address (section->vma + addr_offset, info, &place); + paux->require_sec = FALSE; /* Disassemble a block of instructions up to the address associated with the symbol we have just found. Then print the symbol and find the @@ -1669,81 +1684,81 @@ disassemble_section (bfd *abfd, asection or we have reached the end of the address range we are interested in. */ while (addr_offset < stop_offset) { + bfd_vma addr; asymbol *nextsym; unsigned long nextstop_offset; bfd_boolean insns; - if (sym != NULL - && bfd_asymbol_value (sym) <= section->vma + addr_offset) + addr = section->vma + addr_offset; + + if (sym != NULL && bfd_asymbol_value (sym) <= addr) { int x; for (x = place; (x < sorted_symcount - && (bfd_asymbol_value (sorted_syms[x]) - <= section->vma + addr_offset)); + && (bfd_asymbol_value (sorted_syms[x]) <= addr)); ++x) continue; - pinfo->symbols = & sorted_syms[place]; + pinfo->symbols = sorted_syms + place; pinfo->num_symbols = x - place; } else - pinfo->symbols = NULL; + { + pinfo->symbols = NULL; + pinfo->num_symbols = 0; + } if (! prefix_addresses) { pinfo->fprintf_func (pinfo->stream, "\n"); - objdump_print_addr_with_sym (abfd, section, sym, - section->vma + addr_offset, + objdump_print_addr_with_sym (abfd, section, sym, addr, pinfo, FALSE); pinfo->fprintf_func (pinfo->stream, ":\n"); } - if (sym != NULL - && bfd_asymbol_value (sym) > section->vma + addr_offset) + if (sym != NULL && bfd_asymbol_value (sym) > addr) nextsym = sym; else if (sym == NULL) nextsym = NULL; else { +#define is_valid_next_sym(SYM) \ + ((SYM)->section == section \ + && (bfd_asymbol_value (SYM) > bfd_asymbol_value (sym)) \ + && pinfo->symbol_is_valid (SYM, pinfo)) + /* Search forward for the next appropriate symbol in SECTION. Note that all the symbols are sorted together into one big array, and that some sections may have overlapping addresses. */ while (place < sorted_symcount - && (sorted_syms[place]->section != section - || (bfd_asymbol_value (sorted_syms[place]) - <= bfd_asymbol_value (sym)))) + && ! is_valid_next_sym (sorted_syms [place])) ++place; + if (place >= sorted_symcount) nextsym = NULL; else nextsym = sorted_syms[place]; } - if (sym != NULL - && bfd_asymbol_value (sym) > section->vma + addr_offset) - { - nextstop_offset = bfd_asymbol_value (sym) - section->vma; - if (nextstop_offset > stop_offset) - nextstop_offset = stop_offset; - } + if (sym != NULL && bfd_asymbol_value (sym) > addr) + nextstop_offset = bfd_asymbol_value (sym) - section->vma; else if (nextsym == NULL) nextstop_offset = stop_offset; else - { - nextstop_offset = bfd_asymbol_value (nextsym) - section->vma; - if (nextstop_offset > stop_offset) - nextstop_offset = stop_offset; - } + nextstop_offset = bfd_asymbol_value (nextsym) - section->vma; + + if (nextstop_offset > stop_offset) + nextstop_offset = stop_offset; /* If a symbol is explicitly marked as being an object rather than a function, just dump the bytes without disassembling them. */ if (disassemble_all || sym == NULL - || bfd_asymbol_value (sym) > section->vma + addr_offset + || bfd_asymbol_value (sym) > addr || ((sym->flags & BSF_OBJECT) == 0 && (strstr (bfd_asymbol_name (sym), "gnu_compiled") == NULL) @@ -1790,7 +1805,7 @@ disassemble_data (bfd *abfd) /* Sort the symbols into section and symbol order. */ qsort (sorted_syms, sorted_symcount, sizeof (asymbol *), compare_symbols); - init_disassemble_info (&disasm_info, stdout, fprintf); + init_disassemble_info (&disasm_info, stdout, (fprintf_ftype) fprintf); disasm_info.application_data = (void *) &aux; aux.abfd = abfd; @@ -1846,6 +1861,9 @@ disassemble_data (bfd *abfd) instead. */ disasm_info.endian = BFD_ENDIAN_UNKNOWN; + /* Allow the target to customize the info structure. */ + disassemble_init_for_target (& disasm_info); + /* Pre-load the dynamic relocs if we are going to be dumping them along with the disassembly. */ if (dump_dynamic_reloc_info) @@ -1858,12 +1876,15 @@ disassemble_data (bfd *abfd) if (relsize > 0) { aux.dynrelbuf = xmalloc (relsize); - aux.dynrelcount = bfd_canonicalize_dynamic_reloc (abfd, aux.dynrelbuf, dynsyms); + aux.dynrelcount = bfd_canonicalize_dynamic_reloc (abfd, + aux.dynrelbuf, + dynsyms); if (aux.dynrelcount < 0) bfd_fatal (bfd_get_filename (abfd)); /* Sort the relocs by address. */ - qsort (aux.dynrelbuf, aux.dynrelcount, sizeof (arelent *), compare_relocs); + qsort (aux.dynrelbuf, aux.dynrelcount, sizeof (arelent *), + compare_relocs); } } @@ -1928,7 +1949,9 @@ read_section_stabs (bfd *abfd, const cha using string table section STRSECT_NAME (in `strtab'). */ static void -print_section_stabs (bfd *abfd, const char *stabsect_name, unsigned *string_offset_ptr) +print_section_stabs (bfd *abfd, + const char *stabsect_name, + unsigned *string_offset_ptr) { int i; unsigned file_string_table_offset = 0; @@ -2401,7 +2424,9 @@ dump_reloc_set (bfd *abfd, asection *sec } static void -dump_relocs_in_section (bfd *abfd, asection *section, void *dummy ATTRIBUTE_UNUSED) +dump_relocs_in_section (bfd *abfd, + asection *section, + void *dummy ATTRIBUTE_UNUSED) { arelent **relpp; long relcount; @@ -2500,7 +2525,9 @@ add_include_path (const char *path) } static void -adjust_addresses (bfd *abfd ATTRIBUTE_UNUSED, asection *section, void *dummy ATTRIBUTE_UNUSED) +adjust_addresses (bfd *abfd ATTRIBUTE_UNUSED, + asection *section, + void *dummy ATTRIBUTE_UNUSED) { section->vma += adjust_section_vma; section->lma += adjust_section_vma; @@ -2624,7 +2651,11 @@ display_bfd (bfd *abfd) static void display_file (char *filename, char *target) { - bfd *file, *arfile = NULL; + bfd *file; + bfd *arfile = NULL; + + if (get_file_size (filename) < 1) + return; file = bfd_openr (filename, target); if (file == NULL) Binary files binutils-2.14.90.0.7/binutils/po/da.gmo and binutils-2.14.90.0.8/binutils/po/da.gmo differ Binary files binutils-2.14.90.0.7/binutils/po/es.gmo and binutils-2.14.90.0.8/binutils/po/es.gmo differ Binary files binutils-2.14.90.0.7/binutils/po/fr.gmo and binutils-2.14.90.0.8/binutils/po/fr.gmo differ diff -uprN binutils-2.14.90.0.7/binutils/po/ru.po binutils-2.14.90.0.8/binutils/po/ru.po --- binutils-2.14.90.0.7/binutils/po/ru.po 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/po/ru.po 2004-01-14 13:07:44.000000000 -0800 @@ -0,0 +1,4889 @@ +# Translation of binutils-2.14rel030712.ru.po to Russian +# Copyright (C) 2003 Free Software Foundation, Inc. +# This file is distributed under the same license as the binutils package. +# Pavel Maryanov , 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: binutils 2.14rel030712\n" +"POT-Creation-Date: 2003-07-11 13:56+0930\n" +"PO-Revision-Date: 2003-12-29 13:06+0200\n" +"Last-Translator: Pavel Maryanov \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=KOI8-R\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0.2\n" + +#: addr2line.c:74 +#, c-format +msgid "Usage: %s [option(s)] [addr(s)]\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [ÁÄÒÅÓ(Á)]\n" + +#: addr2line.c:75 +msgid " Convert addresses into line number/file name pairs.\n" +msgstr "ëÏÎ×ÅÒÔÉÒÕÅÔ ÁÄÒÅÓÁ × ÐÁÒÙ ÎÏÍÅÒ_ÓÔÒÏËÉ/ÉÍÑ_ÆÁÊÌÁ.\n" + +#: addr2line.c:76 +msgid " If no addresses are specified on the command line, they will be read from stdin\n" +msgstr " åÓÌÉ ÁÄÒÅÓÁ ÎÅ ÕËÁÚÁÎÙ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ, ÏÎÉ ÂÕÄÕÔ ÐÒÏÞÉÔÁÎÙ ÉÚ stdin\n" + +#: addr2line.c:77 +msgid "" +" The options are:\n" +" -b --target= Set the binary file format\n" +" -e --exe= Set the input file name (default is a.out)\n" +" -s --basenames Strip directory names\n" +" -f --functions Show function names\n" +" -C --demangle[=style] Demangle function names\n" +" -h --help Display this information\n" +" -v --version Display the program's version\n" +"\n" +msgstr "" +" ïÐÃÉÉ:\n" +" -b --target= õÓÔÁÎÏ×ÉÔØ ÆÏÒÍÁÔ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n" +" -e --exe= õÓÔÁÎÏ×ÉÔØ ÉÍÑ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ (ÐÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ a.out)\n" +" -s --basenames ÷ÙÄÅÌÉÔØ ÉÍÅÎÁ ËÁÔÁÌÏÇÏ×\n" +" -f --functions ðÏËÁÚÁÔØ ÉÍÅÎÁ ÆÕÎËÃÉÊ\n" +" -C --demangle[=ÓÔÉÌØ] òÁÓÛÉÆÒÏ×ÁÔØ ÉÍÅÎÁ ÆÕÎËÃÉÊ\n" +" -h --help ðÏËÁÚÁÔØ ÜÔÕ ÉÎÆÏÒÍÁÃÉÀ\n" +" -v --version ðÏËÁÚÁÔØ ×ÅÒÓÉÀ ÐÒÏÇÒÁÍÍÙ\n" +"\n" + +#: addr2line.c:89 ar.c:297 coffdump.c:479 nlmconv.c:1121 objcopy.c:484 +#: objcopy.c:518 readelf.c:2649 size.c:104 srconv.c:1962 strings.c:673 +#: sysdump.c:774 windres.c:702 +#, c-format +msgid "Report bugs to %s\n" +msgstr "ïÔÞÅÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n" + +#: addr2line.c:245 +#, c-format +msgid "%s: can not get addresses from archive" +msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÁÄÒÅÓÁ ÉÚ ÁÒÈÉ×Á" + +#: addr2line.c:317 nm.c:433 objdump.c:2693 +#, c-format +msgid "unknown demangling style `%s'" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÔÉÌØ ÒÁÓÛÉÆÒÏ×ËÉ `%s'" + +#: ar.c:238 +#, c-format +msgid "no entry %s in archive\n" +msgstr "× ÁÒÈÉ×Å ÎÅÔ ÐÕÎËÔÁ %s\n" + +#: ar.c:255 +#, c-format +msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n" +msgstr "" +"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ ÜÍÕÌÑÃÉÉ] [-]{dmpqrstx}[abcfilNoPsSuvV] [ÉÍÑ_ÞÌÅÎÁ]\n" +" [ÓÞÅÔ] ÆÁÊÌ_ÁÒÈÉ×Á ÆÁÊÌ...\n" + +#: ar.c:258 +#, c-format +msgid " %s -M [\n" +"\n" +msgstr "" +"\n" +"<ÞÌÅÎ %s>\n" +"\n" + +#: ar.c:857 ar.c:925 +#, c-format +msgid "%s is not a valid archive" +msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ×ÅÒÎÙÍ ÁÒÈÉ×ÏÍ" + +#: ar.c:893 +#, c-format +msgid "stat returns negative size for %s" +msgstr "stat ×ÏÚ×ÒÁÔÉÌ ÏÔÒÉÃÁÔÅÌØÎÙÊ ÒÁÚÍÅÒ ÄÌÑ %s" + +#: ar.c:1020 +#, c-format +msgid "%s is not an archive" +msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÁÒÈÉ×ÏÍ" + +#: ar.c:1027 +#, c-format +msgid "creating %s" +msgstr "ÓÏÚÄÁÅÔÓÑ %s" + +#: ar.c:1233 +#, c-format +msgid "No member named `%s'\n" +msgstr "îÅÔ ÞÌÅÎÁ Ó ÉÍÅÎÅÍ `%s'\n" + +#: ar.c:1285 +#, c-format +msgid "no entry %s in archive %s!" +msgstr "ÐÕÎËÔÁ %s ÎÅÔ × ÁÒÈÉ×Å %s!" + +#: ar.c:1422 +#, c-format +msgid "%s: no archive map to update" +msgstr "%s: ÎÅÔ ËÁÒÔÙ ÁÒÈÉ×Á ÄÌÑ ÏÂÎÏ×ÌÅÎÉÑ" + +#: arsup.c:86 +#, c-format +msgid "No entry %s in archive.\n" +msgstr "ÐÕÎËÔÁ %s ÎÅÔ × ÁÒÈÉ×Å.\n" + +#: arsup.c:117 +#, c-format +msgid "Can't open file %s\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ %s\n" + +#: arsup.c:172 +#, c-format +msgid "%s: Can't open output archive %s\n" +msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÙÈÏÄÎÏÊ ÁÒÈÉ× %s\n" + +#: arsup.c:189 +#, c-format +msgid "%s: Can't open input archive %s\n" +msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÈÏÄÎÏÊ ÁÒÈÉ× %s\n" + +#: arsup.c:198 +#, c-format +msgid "%s: file %s is not an archive\n" +msgstr "%s: ÆÁÊÌ %s ÎÅ Ñ×ÌÑÅÔÓÑ ÁÒÈÉ×ÏÍ\n" + +#: arsup.c:241 +#, c-format +msgid "%s: no output archive specified yet\n" +msgstr "%s: ×ÙÈÏÄÎÏÊ ÁÒÈÉ× ÅÝÅ ÎÅ ÕËÁÚÁÎ\n" + +#: arsup.c:262 arsup.c:301 arsup.c:343 arsup.c:364 arsup.c:430 +#, c-format +msgid "%s: no open output archive\n" +msgstr "%s: ÎÅÔ ÏÔËÒÙÔÏÇÏ ×ÙÈÏÄÎÏÇÏ ÁÒÈÉ×Á\n" + +#: arsup.c:273 arsup.c:385 arsup.c:411 +#, c-format +msgid "%s: can't open file %s\n" +msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ %s\n" + +#: arsup.c:328 arsup.c:407 arsup.c:489 +#, c-format +msgid "%s: can't find module file %s\n" +msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÆÁÊÌ ÍÏÄÕÌÑ %s\n" + +#: arsup.c:439 +#, c-format +msgid "Current open archive is %s\n" +msgstr "ôÅËÕÝÉÊ ÏÔËÒÙÔÙÊ ÁÒÈÉ× - %s\n" + +#: arsup.c:464 +#, c-format +msgid "%s: no open archive\n" +msgstr "%s: ÎÅÔ ÏÔËÒÙÔÏÇÏ ÁÒÈÉ×Á\n" + +#: binemul.c:39 +#, c-format +msgid " No emulation specific options\n" +msgstr " îÅÔ ÏÐÃÉÊ, ÓÐÅÃÉÆÉÞÎÙÈ ÄÌÑ ÜÍÕÌÑÃÉÉ\n" + +#. Macros for common output. +#: binemul.h:52 +#, c-format +msgid " emulation options: \n" +msgstr " ÏÐÃÉÉ ÜÍÕÌÑÃÉÉ: \n" + +#: bucomm.c:113 +#, c-format +msgid "can't set BFD default target to `%s': %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÃÅÌØ BFD ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÁ `%s': %s" + +#: bucomm.c:125 +#, c-format +msgid "%s: Matching formats:" +msgstr "%s: æÏÒÍÁÔÙ ÓÏ×ÐÁÄÅÎÉÑ:" + +#: bucomm.c:142 +msgid "Supported targets:" +msgstr "ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÃÅÌÉ:" + +#: bucomm.c:144 +#, c-format +msgid "%s: supported targets:" +msgstr "%s: ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÃÅÌÉ:" + +#: bucomm.c:162 +msgid "Supported architectures:" +msgstr "ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÁÒÈÉÔÅËÔÕÒÙ:" + +#: bucomm.c:164 +#, c-format +msgid "%s: supported architectures:" +msgstr "%s: ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÁÒÈÉÔÅËÔÕÒÙ:" + +#: bucomm.c:360 +#, c-format +msgid "BFD header file version %s\n" +msgstr "æÁÊÌ ÚÁÇÏÌÏ×ËÁ BFD ×ÅÒÓÉÑ %s\n" + +#: bucomm.c:467 +#, c-format +msgid "%s: bad number: %s" +msgstr "%s: ÐÌÏÈÏÅ ÞÉÓÌÏ: %s" + +#: coffdump.c:107 +#, c-format +msgid "#lines %d " +msgstr "#ÓÔÒÏËÉ %d " + +#: coffdump.c:471 sysdump.c:767 +#, c-format +msgid "Usage: %s [option(s)] in-file\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] in-ÆÁÊÌ\n" + +#: coffdump.c:472 +msgid " Print a human readable interpretation of a SYSROFF object file\n" +msgstr " ÷Ù×ÏÄÉÔ ÕÄÏÂÏÞÉÔÁÅÍÕÀ ÄÌÑ ÞÅÌÏ×ÅËÁ ÉÎÔÅÒÐÒÅÔÁÃÉÀ ÏÂßÅËÔÎÏÇÏ ÆÁÊÌÁ SYSROFF\n" + +#: coffdump.c:473 +msgid "" +" The options are:\n" +" -h --help Display this information\n" +" -v --version Display the program's version\n" +"\n" +msgstr "" +" ïÐÃÉÉ:\n" +" -h --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" +" -v --version ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n" +"\n" + +#: coffdump.c:541 srconv.c:2052 sysdump.c:831 +msgid "no input file specified" +msgstr "ÎÅ ÕËÁÚÁÎ ×ÈÏÄÎÏÊ ÆÁÊÌ" + +#: debug.c:654 +msgid "debug_add_to_current_namespace: no current file" +msgstr "debug_add_to_current_namespace: ÎÅÔ ÔÅËÕÝÅÇÏ ÆÁÊÌÁ" + +#: debug.c:737 +msgid "debug_start_source: no debug_set_filename call" +msgstr "debug_start_source: ÎÅÔ ×ÙÚÏ×Á debug_set_filename" + +#: debug.c:796 +msgid "debug_record_function: no debug_set_filename call" +msgstr "debug_record_function: ÎÅÔ ×ÙÚÏ×Á debug_set_filename" + +#: debug.c:852 +msgid "debug_record_parameter: no current function" +msgstr "debug_record_parameter: ÎÅÔ ÔÅËÕÝÅÊ ÆÕÎËÃÉÉ" + +#: debug.c:886 +msgid "debug_end_function: no current function" +msgstr "debug_end_function: ÎÅÔ ÔÅËÕÝÅÊ ÆÕÎËÃÉÉ" + +#: debug.c:892 +msgid "debug_end_function: some blocks were not closed" +msgstr "debug_end_function: ÎÅËÏÔÏÒÙÅ ÂÌÏËÉ ÎÅ ÂÙÌÉ ÚÁËÒÙÔÙ" + +#: debug.c:922 +msgid "debug_start_block: no current block" +msgstr "debug_start_block: ÎÅÔ ÔÅËÕÝÅÇÏ ÂÌÏËÁ" + +#: debug.c:960 +msgid "debug_end_block: no current block" +msgstr "debug_end_block: ÎÅÔ ÔÅËÕÝÅÇÏ ÂÌÏËÁ" + +#: debug.c:967 +msgid "debug_end_block: attempt to close top level block" +msgstr "debug_end_block: ÐÏÐÙÔËÁ ÚÁËÒÙÔØ ÂÌÏË ×ÅÒÈÎÅÇÏ ÕÒÏ×ÎÑ" + +#: debug.c:993 +msgid "debug_record_line: no current unit" +msgstr "debug_record_line: ÎÅÔ ÔÅËÕÝÅÇÏ ÍÏÄÕÌÑ" + +#. FIXME +#: debug.c:1047 +msgid "debug_start_common_block: not implemented" +msgstr "debug_start_common_block: ÎÅ ×ÙÐÏÌÎÅÎ" + +#. FIXME +#: debug.c:1059 +msgid "debug_end_common_block: not implemented" +msgstr "debug_end_common_block: ÎÅ ×ÙÐÏÌÎÅÎ" + +#. FIXME. +#: debug.c:1153 +msgid "debug_record_label: not implemented" +msgstr "debug_record_label: ÎÅ ×ÙÐÏÌÎÅÎ" + +#: debug.c:1179 +msgid "debug_record_variable: no current file" +msgstr "debug_record_variable: ÎÅÔ ÔÅËÕÝÅÇÏ ÆÁÊÌÁ" + +#: debug.c:1762 +msgid "debug_make_undefined_type: unsupported kind" +msgstr "debug_make_undefined_type: ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÔÉÐ" + +#: debug.c:1963 +msgid "debug_name_type: no current file" +msgstr "debug_name_type: ÎÅÔ ÔÅËÕÝÅÇÏ ÆÁÊÌÁ" + +#: debug.c:2011 +msgid "debug_tag_type: no current file" +msgstr "debug_tag_type: ÎÅÔ ÔÅËÕÝÅÇÏ ÆÁÊÌÁ" + +#: debug.c:2019 +msgid "debug_tag_type: extra tag attempted" +msgstr "debug_tag_type: ÏÐÒÏÂÏ×ÁÎ ÄÏÐÏÌÎÉÔÅÌØÎÙÊ ÔÜÇ" + +#: debug.c:2058 +#, c-format +msgid "Warning: changing type size from %d to %d\n" +msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÉÚÍÅÎÑÅÔÓÑ ÒÁÚÍÅÒ ÔÉÐÁ Ó %d ÎÁ %d\n" + +#: debug.c:2082 +msgid "debug_find_named_type: no current compilation unit" +msgstr "debug_find_named_type: ÎÅÔ ÔÅËÕÝÅÇÏ ÍÏÄÕÌÑ ËÏÍÐÉÌÑÃÉÉ" + +#: debug.c:2189 +#, c-format +msgid "debug_get_real_type: circular debug information for %s\n" +msgstr "debug_get_real_type: ÃÉÒËÕÌÑÒÎÁÑ ÏÔÌÁÄÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÄÌÑ %s\n" + +#: debug.c:2650 +msgid "debug_write_type: illegal type encountered" +msgstr "debug_write_type: ×ÓÔÒÅÞÅÎ ÎÅ×ÅÒÎÙÊ ÔÉÐ" + +#: dlltool.c:812 dlltool.c:837 dlltool.c:863 +#, c-format +msgid "Internal error: Unknown machine type: %d" +msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÍÁÛÉÎÙ: %d" + +#: dlltool.c:900 +#, c-format +msgid "Can't open def file: %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ def: %s" + +#: dlltool.c:905 +#, c-format +msgid "Processing def file: %s" +msgstr "ïÂÒÁÂÁÔÙ×ÁÅÔÓÑ ÆÁÊÌ def: %s" + +#: dlltool.c:909 +msgid "Processed def file" +msgstr "ïÂÒÁÂÏÔÁÎ ÆÁÊÌ def" + +#: dlltool.c:935 +#, c-format +msgid "Syntax error in def file %s:%d" +msgstr "ïÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ × ÆÁÊÌÅ def %s:%d" + +#: dlltool.c:974 +#, c-format +msgid "NAME: %s base: %x" +msgstr "NAME: %s base: %x" + +#: dlltool.c:977 dlltool.c:996 +msgid "Can't have LIBRARY and NAME" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÍÅÔØ LIBRARY É NAME" + +#: dlltool.c:993 +#, c-format +msgid "LIBRARY: %s base: %x" +msgstr "LIBRARY: %s base: %x" + +#: dlltool.c:1251 resrc.c:271 +#, c-format +msgid "wait: %s" +msgstr "ÏÖÉÄÁÎÉÅ: %s" + +#: dlltool.c:1256 dllwrap.c:430 resrc.c:276 +#, c-format +msgid "subprocess got fatal signal %d" +msgstr "ÐÏÄÐÒÏÃÅÓÓ ÐÏÌÕÞÉÌ ÆÁÔÁÌØÎÙÊ ÓÉÇÎÁÌ %d" + +#: dlltool.c:1262 dllwrap.c:437 resrc.c:283 +#, c-format +msgid "%s exited with status %d" +msgstr "%s ÚÁ×ÅÒÛÅÎ ÓÏ ÓÔÁÔÕÓÏÍ %d" + +#: dlltool.c:1294 +#, c-format +msgid "Sucking in info from %s section in %s" +msgstr "÷ÓÁÓÙ×ÁÅÔÓÑ ÉÎÆÏÒÍÁÃÉÑ ÉÚ ÒÁÚÄÅÌÁ %s × %s" + +#: dlltool.c:1423 +#, c-format +msgid "Excluding symbol: %s" +msgstr "óÉÍ×ÏÌ ÉÓËÌÀÞÅÎÉÑ: %s" + +#: dlltool.c:1518 dlltool.c:1529 nm.c:1004 nm.c:1015 +#, c-format +msgid "%s: no symbols" +msgstr "%s: ÎÅÔ ÓÉÍ×ÏÌÏ×" + +#. FIXME: we ought to read in and block out the base relocations. +#: dlltool.c:1556 +#, c-format +msgid "Done reading %s" +msgstr "þÔÅÎÉÅ ×ÙÐÏÌÎÅÎÏ %s" + +#: dlltool.c:1567 +#, c-format +msgid "Unable to open object file: %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÏÂßÅËÔÎÙÊ ÆÁÊÌ: %s" + +#: dlltool.c:1570 +#, c-format +msgid "Scanning object file %s" +msgstr "óËÁÎÉÒÕÅÔÓÑ ÏÂßÅËÔÎÙÊ ÆÁÊÌ %s" + +#: dlltool.c:1585 +#, c-format +msgid "Cannot produce mcore-elf dll from archive file: %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÆÏÒÍÉÒÏ×ÁÔØ mcore-elf dll ÉÚ ÆÁÊÌÁ ÁÒÈÉ×Á: %s" + +#: dlltool.c:1677 +msgid "Adding exports to output file" +msgstr "üËÓÐÏÒÔÎÙÅ ÄÁÎÎÙÅ ÄÏÂÁ×ÌÑÀÔÓÑ × ×ÙÈÏÄÎÏÊ ÆÁÊÌ" + +#: dlltool.c:1724 +msgid "Added exports to output file" +msgstr "üËÓÐÏÒÔÎÙÅ ÄÁÎÎÙÅ ÄÏÂÁ×ÌÅÎÙ × ×ÙÈÏÄÎÏÊ ÆÁÊÌ" + +#: dlltool.c:1848 +#, c-format +msgid "Generating export file: %s" +msgstr "çÅÎÅÒÉÒÕÅÔÓÑ ÆÁÊÌ ÜËÓÐÏÒÔÁ: %s" + +#: dlltool.c:1853 +#, c-format +msgid "Unable to open temporary assembler file: %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ ÁÓÓÅÍÂÌÅÒÁ: %s" + +#: dlltool.c:1856 +#, c-format +msgid "Opened temporary file: %s" +msgstr "ïÔËÒÙÔÙÊ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ: %s" + +#: dlltool.c:2086 +msgid "Generated exports file" +msgstr "óÇÅÎÅÒÉÒÏ×ÁÎ ÆÁÊÌ ÜËÓÐÏÒÔÁ" + +#: dlltool.c:2378 +#, c-format +msgid "bfd_open failed open stub file: %s" +msgstr "bfd_open ÎÅ ÓÍÏÇ ÏÔËÒÙÔØ ÆÁÊÌ stub: %s" + +#: dlltool.c:2381 +#, c-format +msgid "Creating stub file: %s" +msgstr "óÏÚÄÁÅÔÓÑ ÆÁÊÌ stub: %s" + +#: dlltool.c:2766 +#, c-format +msgid "failed to open temporary head file: %s" +msgstr "ÓÂÏÊ ÐÒÉ ÏÔËÒÙÔÉÉ ×ÒÅÍÅÎÎÏÇÏ ÇÏÌÏ×ÎÏÇÏ ÆÁÊÌÁ: %s" + +#: dlltool.c:2825 +#, c-format +msgid "failed to open temporary tail file: %s" +msgstr "ÓÂÏÊ ÐÒÉ ÏÔËÒÙÔÉÉ ×ÒÅÍÅÎÎÏÇÏ ËÏÎÅÞÎÏÇÏ ÆÁÊÌÁ: %s" + +#: dlltool.c:2892 +#, c-format +msgid "Can't open .lib file: %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ .lib: %s" + +#: dlltool.c:2895 +#, c-format +msgid "Creating library file: %s" +msgstr "óÏÚÄÁÅÔÓÑ ÆÁÊÌ ÂÉÂÌÉÏÔÅËÉ: %s" + +#: dlltool.c:2951 +#, c-format +msgid "cannot delete %s: %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ %s: %s" + +#: dlltool.c:2955 +msgid "Created lib file" +msgstr "óÏÚÄÁÎ lib-ÆÁÊÌ" + +#: dlltool.c:3062 +#, c-format +msgid "Warning, ignoring duplicate EXPORT %s %d,%d" +msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ, ÐÒÏÐÕÓËÁÅÔÓÑ ÐÏ×ÔÏÒÑÀÝÉÊÓÑ EXPORT %s %d,%d" + +#: dlltool.c:3068 +#, c-format +msgid "Error, duplicate EXPORT with oridinals: %s" +msgstr "ïÛÉÂËÁ, EXPORT ÐÏ×ÔÏÒÑÅÔÓÑ Ó ÐÏÒÑÄËÏ×ÙÍÉ ÞÉÓÌÉÔÅÌØÎÙÍÉ: %s" + +#: dlltool.c:3191 +msgid "Processing definitions" +msgstr "ïÂÒÁÂÁÔÙ×ÁÀÔÓÑ ÏÐÉÓÁÎÉÑ" + +#: dlltool.c:3223 +msgid "Processed definitions" +msgstr "ïÐÉÓÁÎÉÑ ÏÂÒÁÂÏÔÁÎÙ" + +#. xgetext:c-format +#: dlltool.c:3234 dllwrap.c:495 +#, c-format +msgid "Usage %s \n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ %s <ÏÐÃÉÉ> <ÏÂßÅËÔÎÙÅ_ÆÁÊÌÙ>\n" + +#. xgetext:c-format +#: dlltool.c:3236 +#, c-format +msgid " -m --machine Create as DLL for . [default: %s]\n" +msgstr " -m --machine <ÍÁÛÉÎÁ> óÏÚÄÁÎÉÅ ËÁË DLL ÄÌÑ <ÍÁÛÉÎÙ>. [ÐÏ ÕÍÏÌÞÁÎÉÀ: %s]\n" + +#: dlltool.c:3237 +msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" +msgstr " ×ÏÚÍÏÖÎÏ <ÍÁÛÉÎÁ>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" + +#: dlltool.c:3238 +msgid " -e --output-exp Generate an export file.\n" +msgstr " -e --output-exp <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÆÁÊÌÁ ÜËÓÐÏÒÔÁ.\n" + +#: dlltool.c:3239 +msgid " -l --output-lib Generate an interface library.\n" +msgstr " -l --output-lib <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÂÉÂÌÉÏÔÅËÉ ÉÎÔÅÒÆÅÊÓÁ.\n" + +#: dlltool.c:3240 +msgid " -a --add-indirect Add dll indirects to export file.\n" +msgstr " -a --add-indirect äÏÂÁ×ÌÅÎÉÅ ÎÅÐÒÑÍÙÈ dll × ÆÁÊÌ ÜËÓÐÏÒÔÁ.\n" + +#: dlltool.c:3241 +msgid " -D --dllname Name of input dll to put into interface lib.\n" +msgstr " -D --dllname <ÉÍÑ> éÍÑ ×ÈÏÄÎÏÊ dll ÄÌÑ ÐÏÍÅÝÅÎÉÑ × ÂÉÂÌÉÏÔÅËÕ ÉÎÔÅÒÆÅÊÓÁ.\n" + +#: dlltool.c:3242 +msgid " -d --input-def Name of .def file to be read in.\n" +msgstr " -d --input-def éÍÑ ÆÁÊÌÁ .def ÄÌÑ ÓÞÉÔÙ×ÁÎÉÑ.\n" + +#: dlltool.c:3243 +msgid " -z --output-def Name of .def file to be created.\n" +msgstr " -z --output-def éÍÑ ÓÏÚÄÁ×ÁÅÍÏÇÏ ÆÁÊÌÁ .def.\n" + +#: dlltool.c:3244 +msgid " --export-all-symbols Export all symbols to .def\n" +msgstr " --export-all-symbols üËÓÐÏÒÔ ×ÓÅÈ ÓÉÍ×ÏÌÏ× × .def\n" + +#: dlltool.c:3245 +msgid " --no-export-all-symbols Only export listed symbols\n" +msgstr " --no-export-all-symbols üËÓÐÏÒÔ ÔÏÌØËÏ ÐÅÒÅÞÉÓÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n" + +#: dlltool.c:3246 +msgid " --exclude-symbols Don't export \n" +msgstr " --exclude-symbols <ÓÐÉÓÏË> îÅ ÜËÓÐÏÒÔÉÒÏ×ÁÔØ <ÓÐÉÓÏË>\n" + +#: dlltool.c:3247 +msgid " --no-default-excludes Clear default exclude symbols\n" +msgstr " --no-default-excludes ïÞÉÓÔËÁ ÓÉÍ×ÏÌÏ× ÉÓËÌÀÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ\n" + +#: dlltool.c:3248 +msgid " -b --base-file Read linker generated base file.\n" +msgstr " -b --base-file þÔÅÎÉÅ ÓÏÚÄÁÎÎÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÏÍ base-ÆÁÊÌÁ.\n" + +#: dlltool.c:3249 +msgid " -x --no-idata4 Don't generate idata$4 section.\n" +msgstr " -x --no-idata4 îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$4.\n" + +#: dlltool.c:3250 +msgid " -c --no-idata5 Don't generate idata$5 section.\n" +msgstr " -c --no-idata5 îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$5.\n" + +#: dlltool.c:3251 +msgid " -U --add-underscore Add underscores to symbols in interface library.\n" +msgstr " -U --add-underscore äÏÂÁ×ÌÅÎÉÅ ÓÉÍ×ÏÌÏ× ÐÏÄÞÅÒËÉ×ÁÎÉÑ Ë ÓÉÍ×ÏÌÁÍ × ÂÉÂÌÉÏÔÅËÅ ÉÎÔÅÒÆÅÊÓÁ.\n" + +#: dlltool.c:3252 +msgid " -k --kill-at Kill @ from exported names.\n" +msgstr " -k --kill-at õÄÁÌÅÎÉÅ @ ÉÚ ÜËÓÐÏÒÔÉÒÏ×ÁÎÎÙÈ ÉÍÅÎ.\n" + +#: dlltool.c:3253 +msgid " -A --add-stdcall-alias Add aliases without @.\n" +msgstr " -A --add-stdcall-alias äÏÂÁ×ÌÅÎÉÅ ÁÌÉÁÓÏ× ÂÅÚ @.\n" + +#: dlltool.c:3254 +msgid " -S --as Use for assembler.\n" +msgstr " -S --as <ÉÍÑ> éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> ÄÌÑ ÁÓÓÅÍÂÌÅÒÁ.\n" + +#: dlltool.c:3255 +msgid " -f --as-flags Pass to the assembler.\n" +msgstr " -f --as-flags <ÆÌÁÇÉ> ðÅÒÅÄÁÞÁ <ÆÌÁÇÏ×> × ÁÓÓÅÍÂÌÅÒ.\n" + +#: dlltool.c:3256 +msgid " -C --compat-implib Create backward compatible import library.\n" +msgstr " -C --compat-implib óÏÚÄÁÎÉÅ ÂÉÂÌÉÏÔÅËÉ ÉÍÐÏÒÔÁ Ó ÏÂÒÁÔÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔØÀ.\n" + +#: dlltool.c:3257 +msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n" +msgstr " -n --no-delete ïÓÔÁ×ÌÑÔØ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ (ÐÏ×ÔÏÒ ÄÌÑ ÄÏÐ. ÚÁÝÉÔÙ).\n" + +#: dlltool.c:3258 +msgid " -v --verbose Be verbose.\n" +msgstr " -v --verbose ðÏÄÒÏÂÎÙÊ ÒÅÖÉÍ.\n" + +#: dlltool.c:3259 +msgid " -V --version Display the program version.\n" +msgstr " -V --version ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ.\n" + +#: dlltool.c:3260 +msgid " -h --help Display this information.\n" +msgstr " -h --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n" + +#: dlltool.c:3262 +msgid " -M --mcore-elf Process mcore-elf object files into .\n" +msgstr " -M --mcore-elf <×ÙÈ_ÉÍÑ> ïÂÒÁÂÏÔËÁ ÏÂßÅËÔÎÏÇÏ ÆÁÊÌÁ mcore-elf × <×ÙÈ_ÉÍÑ>.\n" + +#: dlltool.c:3263 +msgid " -L --linker Use as the linker.\n" +msgstr " -L --linker <ÉÍÑ> éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> × ËÁÞÅÓÔ×Å ËÏÍÐÏÎÏ×ÝÉËÁ.\n" + +#: dlltool.c:3264 +msgid " -F --linker-flags Pass to the linker.\n" +msgstr " -F --linker-flags <ÆÌÁÇÉ> ðÅÒÅÄÁÞÁ <ÆÌÁÇÏ×> ËÏÍÐÏÎÏ×ÝÉËÕ.\n" + +#: dlltool.c:3418 +#, c-format +msgid "Unable to open base-file: %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ base-ÆÁÊÌ: %s" + +#: dlltool.c:3450 +#, c-format +msgid "Machine '%s' not supported" +msgstr "íÁÛÉÎÁ '%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" + +#: dlltool.c:3553 dllwrap.c:214 +#, c-format +msgid "Tried file: %s" +msgstr "ïÐÒÏÂÏ×ÁÎÎÙÊ ÆÁÊÌ: %s" + +#: dlltool.c:3560 dllwrap.c:221 +#, c-format +msgid "Using file: %s" +msgstr "éÓÐÏÌØÚÕÅÔÓÑ ÆÁÊÌ: %s" + +#: dllwrap.c:308 +#, c-format +msgid "Keeping temporary base file %s" +msgstr "ïÓÔÁ×ÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ base-ÆÁÊÌ %s" + +#: dllwrap.c:310 +#, c-format +msgid "Deleting temporary base file %s" +msgstr "õÄÁÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ base-ÆÁÊÌ %s" + +#: dllwrap.c:324 +#, c-format +msgid "Keeping temporary exp file %s" +msgstr "ïÓÔÁ×ÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ exp-ÆÁÊÌ %s" + +#: dllwrap.c:326 +#, c-format +msgid "Deleting temporary exp file %s" +msgstr "õÄÁÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ exp-ÆÁÊÌ %s" + +#: dllwrap.c:339 +#, c-format +msgid "Keeping temporary def file %s" +msgstr "ïÓÔÁ×ÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ def-ÆÁÊÌ %s" + +#: dllwrap.c:341 +#, c-format +msgid "Deleting temporary def file %s" +msgstr "õÄÁÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ def-ÆÁÊÌ %s" + +#: dllwrap.c:496 +msgid " Generic options:\n" +msgstr " ïÂÝÉÅ ÏÐÃÉÉ:\n" + +#: dllwrap.c:497 +msgid " --quiet, -q Work quietly\n" +msgstr " --quiet, -q íÏÌÞÁÌÉ×ÙÊ ÒÅÖÉÍ\n" + +#: dllwrap.c:498 +msgid " --verbose, -v Verbose\n" +msgstr " --verbose, -v ðÏÄÒÏÂÎÙÊ ÒÅÖÉÍ\n" + +#: dllwrap.c:499 +msgid " --version Print dllwrap version\n" +msgstr " --version ÷Ù×ÏÄ ×ÅÒÓÉÉ dllwrap\n" + +#: dllwrap.c:500 +msgid " --implib Synonym for --output-lib\n" +msgstr " --implib <×ÙÈ_ÉÍÑ> óÉÎÏÎÉÍ ÄÌÑ --output-lib\n" + +#: dllwrap.c:501 +#, c-format +msgid " Options for %s:\n" +msgstr " ïÐÃÉÉ ÄÌÑ %s:\n" + +#: dllwrap.c:502 +msgid " --driver-name Defaults to \"gcc\"\n" +msgstr " --driver-name <ÄÒÁÊ×ÅÒ> úÎÁÞÅÎÉÑ ÄÌÑ \"gcc\" ÐÏ ÕÍÏÌÞÁÎÉÀ\n" + +#: dllwrap.c:503 +msgid " --driver-flags Override default ld flags\n" +msgstr " --driver-flags <ÆÌÁÇÉ> ðÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÆÌÁÇÏ× ld ÐÏ ÕÍÏÌÞÁÎÉÀ\n" + +#: dllwrap.c:504 +msgid " --dlltool-name Defaults to \"dlltool\"\n" +msgstr " --dlltool-name úÎÁÞÅÎÉÑ ÄÌÑ \"dlltool\" ÐÏ ÕÍÏÌÞÁÎÉÀ\n" + +#: dllwrap.c:505 +msgid " --entry Specify alternate DLL entry point\n" +msgstr " --entry <ÐÕÎËÔ> õËÁÚÁÎÉÅ ÁÌØÔÅÒÎÁÔÉ×ÎÏÊ ÔÏÞËÉ ×ÈÏÄÁ DLL\n" + +#: dllwrap.c:506 +msgid " --image-base Specify image base address\n" +msgstr " --image-base õËÁÚÁÎÉÅ ÂÁÚÏ×ÏÇÏ ÁÄÒÅÓÁ ÏÂÒÁÚÁ\n" + +#: dllwrap.c:507 +msgid " --target i386-cygwin32 or i386-mingw32\n" +msgstr " --target <ÍÁÛÉÎÁ> i386-cygwin32 ÉÌÉ i386-mingw32\n" + +#: dllwrap.c:508 +msgid " --dry-run Show what needs to be run\n" +msgstr " --dry-run ðÏËÁÚÁÔØ, ÞÔÏ ÄÏÌÖÎÏ ÂÙÔØ ÚÁÐÕÝÅÎÏ\n" + +#: dllwrap.c:509 +msgid " --mno-cygwin Create Mingw DLL\n" +msgstr " --mno-cygwin óÏÚÄÁÎÉÅ Mingw DLL\n" + +#: dllwrap.c:510 +msgid " Options passed to DLLTOOL:\n" +msgstr " ïÐÃÉÉ, ÐÅÒÅÄÁ×ÁÅÍÙÅ × DLLTOOL:\n" + +#: dllwrap.c:511 +msgid " --machine \n" +msgstr " --machine <ÍÁÛÉÎÁ>\n" + +#: dllwrap.c:512 +msgid " --output-exp Generate export file.\n" +msgstr " --output-exp <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÆÁÊÌÁ ÜËÓÐÏÒÔÁ.\n" + +#: dllwrap.c:513 +msgid " --output-lib Generate input library.\n" +msgstr " --output-lib <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ×ÈÏÄÎÏÊ ÂÉÂÌÉÏÔÅËÉ.\n" + +#: dllwrap.c:514 +msgid " --add-indirect Add dll indirects to export file.\n" +msgstr " --add-indirect äÏÂÁ×ÌÅÎÉÅ ÎÅÐÒÑÍÙÈ dll × ÆÁÊÌ ÜËÓÐÏÒÔÁ.\n" + +#: dllwrap.c:515 +msgid " --dllname Name of input dll to put into output lib.\n" +msgstr " --dllname <ÉÍÑ> éÍÑ ×ÈÏÄÎÏÊ dll ÄÌÑ ÐÏÍÅÝÅÎÉÑ × ×ÙÈÏÄÎÕÀ ÂÉÂÌÉÏÔÅËÕ.\n" + +#: dllwrap.c:516 +msgid " --def Name input .def file\n" +msgstr " --def éÍÑ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ .def\n" + +#: dllwrap.c:517 +msgid " --output-def Name output .def file\n" +msgstr " --output-def éÍÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ .def\n" + +#: dllwrap.c:518 +msgid " --export-all-symbols Export all symbols to .def\n" +msgstr " --export-all-symbols üËÓÐÏÒÔ ×ÓÅÈ ÓÉÍ×ÏÌÏ× × .def\n" + +#: dllwrap.c:519 +msgid " --no-export-all-symbols Only export .drectve symbols\n" +msgstr " --no-export-all-symbols üËÓÐÏÒÔ ÔÏÌØËÏ ÓÉÍ×ÏÌÏ× .drectve\n" + +#: dllwrap.c:520 +msgid " --exclude-symbols Exclude from .def\n" +msgstr " --exclude-symbols <ÓÐÉÓÏË> éÓËÌÀÞÉÔØ <ÓÐÉÓÏË> ÉÚ .def\n" + +#: dllwrap.c:521 +msgid " --no-default-excludes Zap default exclude symbols\n" +msgstr " --no-default-excludes õÄÁÌÅÎÉÅ ÓÉÍ×ÏÌÏ× ÉÓËÌÀÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ\n" + +#: dllwrap.c:522 +msgid " --base-file Read linker generated base file\n" +msgstr " --base-file þÔÅÎÉÅ ÓÏÚÄÁÎÎÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÏÍ base-ÆÁÊÌÁ.\n" + +#: dllwrap.c:523 +msgid " --no-idata4 Don't generate idata$4 section\n" +msgstr " --no-idata4 îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$4.\n" + +#: dllwrap.c:524 +msgid " --no-idata5 Don't generate idata$5 section\n" +msgstr " --no-idata5 îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$5.\n" + +#: dllwrap.c:525 +msgid " -U Add underscores to .lib\n" +msgstr " -U äÏÂÁ×ÌÅÎÉÅ ÓÉÍ×ÏÌÏ× ÐÏÄÞÅÒËÉ×ÁÎÉÑ × .lib\n" + +#: dllwrap.c:526 +msgid " -k Kill @ from exported names\n" +msgstr " -k õÄÁÌÅÎÉÅ @ ÉÚ ÜËÓÐÏÒÔÉÒÏ×ÁÎÎÙÈ ÉÍÅÎ.\n" + +#: dllwrap.c:527 +msgid " --add-stdcall-alias Add aliases without @\n" +msgstr " --add-stdcall-alias äÏÂÁ×ÌÅÎÉÅ ÁÌÉÁÓÏ× ÂÅÚ @\n" + +#: dllwrap.c:528 +msgid " --as Use for assembler\n" +msgstr " --as <ÉÍÑ> éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> ÄÌÑ ÁÓÓÅÍÂÌÅÒÁ\n" + +#: dllwrap.c:529 +msgid " --nodelete Keep temp files.\n" +msgstr " --nodelete ïÓÔÁ×ÌÑÔØ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ.\n" + +#: dllwrap.c:530 +msgid " Rest are passed unmodified to the language driver\n" +msgstr " ïÓÔÁÌØÎÏÅ ÂÅÚ ÉÚÍÅÎÅÎÉÊ ÐÅÒÅÄÁÎÏ ÑÚÙËÏ×ÏÍÕ ÄÒÁÊ×ÅÒÕ\n" + +#: dllwrap.c:802 +msgid "Must provide at least one of -o or --dllname options" +msgstr "îÅÏÂÈÏÄÉÍÏ ÐÒÅÄÏÓÔÁ×ÉÔØ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÏÄÎÕ ÉÚ ÏÐÃÉÊ -o ÉÌÉ --dllname" + +#: dllwrap.c:830 +msgid "" +"no export definition file provided.\n" +"Creating one, but that may not be what you want" +msgstr "" +"ÎÅ ÐÒÅÄÏÓÔÁ×ÌÅÎ ÆÁÊÌ ÏÐÉÓÁÎÉÑ ÜËÓÐÏÒÔÁ.\n" +"ïÎ ÓÏÚÄÁÅÔÓÑ, ÎÏ ÜÔÏ ÍÏÖÅÔ ÂÙÔØ ÎÅ ÔÏ, ÞÔÏ ×ÁÍ ÎÕÖÎÏ" + +#: dllwrap.c:992 +#, c-format +msgid "DLLTOOL name : %s\n" +msgstr "DLLTOOL ÉÍÑ : %s\n" + +#: dllwrap.c:993 +#, c-format +msgid "DLLTOOL options : %s\n" +msgstr "DLLTOOL ÏÐÃÉÉ : %s\n" + +#: dllwrap.c:994 +#, c-format +msgid "DRIVER name : %s\n" +msgstr "DRIVER ÉÍÑ : %s\n" + +#: dllwrap.c:995 +#, c-format +msgid "DRIVER options : %s\n" +msgstr "DRIVER ÏÐÃÉÉ : %s\n" + +#: emul_aix.c:58 +#, c-format +msgid " [-g] - 32 bit small archive\n" +msgstr " [-g] - 32-ÂÉÔÎÙÊ ÍÁÌÅÎØËÉÊ ÁÒÈÉ×\n" + +#: emul_aix.c:59 +msgid " [-X32] - ignores 64 bit objects\n" +msgstr " [-X32] - ÐÒÏÐÕÓËÁÅÔ 64-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n" + +#: emul_aix.c:60 +msgid " [-X64] - ignores 32 bit objects\n" +msgstr " [-X64] - ÐÒÏÐÕÓËÁÅÔ 32-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n" + +#: emul_aix.c:61 +msgid " [-X32_64] - accepts 32 and 64 bit objects\n" +msgstr " [-X32_64] - ÄÏÐÕÓËÁÅÔ 32- É 64-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n" + +#: ieee.c:326 +msgid "unexpected end of debugging information" +msgstr "ÎÅÏÖÉÄÁÎÎÏÅ ÏËÏÎÞÁÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ" + +#: ieee.c:421 +msgid "invalid number" +msgstr "ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ" + +#: ieee.c:480 +msgid "invalid string length" +msgstr "ÎÅ×ÅÒÎÁÑ ÄÌÉÎÁ ÓÔÒÏËÉ" + +#: ieee.c:537 ieee.c:578 +msgid "expression stack overflow" +msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ" + +#: ieee.c:557 +msgid "unsupported IEEE expression operator" +msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÏÐÅÒÁÔÏÒ ×ÙÒÁÖÅÎÉÑ IEEE" + +#: ieee.c:572 +msgid "unknown section" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÒÁÚÄÅÌ" + +#: ieee.c:593 +msgid "expression stack underflow" +msgstr "ÏÐÕÓÔÏÛÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ" + +#: ieee.c:607 +msgid "expression stack mismatch" +msgstr "ÎÅÓÏ×ÐÁÄÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ" + +#: ieee.c:646 +msgid "unknown builtin type" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ×ÓÔÒÏÅÎÎÙÊ ÔÉÐ" + +#: ieee.c:791 +msgid "BCD float type not supported" +msgstr "ä×ÏÉÞÎÏ-ËÏÄÉÒÏ×ÁÎÎÙÊ ÄÅÓÑÔÉÞÎÙÊ ÔÉÐ Ó ÐÌÁ×ÁÀÝÅÊ ÚÁÐÑÔÏÊ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" + +#: ieee.c:937 +msgid "unexpected number" +msgstr "ÎÅÏÖÉÄÁÎÎÏÅ ÞÉÓÌÏ" + +#: ieee.c:944 +msgid "unexpected record type" +msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÍÂÉÎÉÒÏ×ÁÎÎÙÊ ÔÉÐ" + +#: ieee.c:977 +msgid "blocks left on stack at end" +msgstr "× ËÏÎÃÅ ÓÔÅËÁ ÏÓÔÁÌÉÓØ ÂÌÏËÉ" + +#: ieee.c:1242 +msgid "unknown BB type" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ BB" + +#: ieee.c:1251 +msgid "stack overflow" +msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÓÔÅËÁ" + +#: ieee.c:1276 +msgid "stack underflow" +msgstr "ÏÐÕÓÔÏÛÅÎÉÅ ÓÔÅËÁ" + +#: ieee.c:1390 ieee.c:1462 ieee.c:2161 +msgid "illegal variable index" +msgstr "ÎÅ×ÅÒÎÙÊ ÉÎÄÅËÓ ÐÅÒÅÍÅÎÎÏÊ" + +#: ieee.c:1440 +msgid "illegal type index" +msgstr "ÎÅ×ÅÒÎÙÊ ÉÎÄÅËÓ ÔÉÐÁ" + +#: ieee.c:1450 ieee.c:1487 +msgid "unknown TY code" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ËÏÄ TY" + +#: ieee.c:1469 +msgid "undefined variable in TY" +msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ × TY" + +#. Pascal file name. FIXME. +#: ieee.c:1880 +msgid "Pascal file name not supported" +msgstr "éÍÑ ÆÁÊÌÁ Pascal ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" + +#: ieee.c:1928 +msgid "unsupported qualifier" +msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ËÌÁÓÓÉÆÉËÁÔÏÒ" + +#: ieee.c:2199 +msgid "undefined variable in ATN" +msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ × ATN" + +#: ieee.c:2242 +msgid "unknown ATN type" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ATN" + +#. Reserved for FORTRAN common. +#: ieee.c:2364 +msgid "unsupported ATN11" +msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ATN11" + +#. We have no way to record this information. FIXME. +#: ieee.c:2391 +msgid "unsupported ATN12" +msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ATN12" + +#: ieee.c:2451 +msgid "unexpected string in C++ misc" +msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÓÔÒÏËÁ × C++ misc" + +#: ieee.c:2464 +msgid "bad misc record" +msgstr "ÐÌÏÈÁÑ ÚÁÐÉÓØ misc" + +#: ieee.c:2507 +msgid "unrecognized C++ misc record" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ C++ ÚÁÐÉÓØ misc" + +#: ieee.c:2624 +msgid "undefined C++ object" +msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÙÊ ÏÂßÅËÔ C++" + +#: ieee.c:2658 +msgid "unrecognized C++ object spec" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÏÂßÅËÔÁ C++" + +#: ieee.c:2694 +msgid "unsupported C++ object type" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÔÉÐ ÏÂßÅËÔÁ C++" + +#: ieee.c:2704 +msgid "C++ base class not defined" +msgstr "ÂÁÚÏ×ÙÊ ËÌÁÓÓ C++ ÎÅ ÏÐÒÅÄÅÌÅÎ" + +#: ieee.c:2716 ieee.c:2821 +msgid "C++ object has no fields" +msgstr "ÏÂßÅËÔ C++ ÎÅ ÉÍÅÅÔ ÐÏÌÅÊ" + +#: ieee.c:2735 +msgid "C++ base class not found in container" +msgstr "ÂÁÚÏ×ÙÊ ËÌÁÓÓ C++ ÎÅ ÎÁÊÄÅÎ × ËÏÎÅÊÎÅÒÅ" + +#: ieee.c:2842 +msgid "C++ data member not found in container" +msgstr "ÜÌÅÍÅÎÔ ËÌÁÓÓÁ C++ ÎÅ ÎÁÊÄÅÎ × ËÏÎÔÅÊÎÅÒÅ" + +#: ieee.c:2883 ieee.c:3033 +msgid "unknown C++ visibility" +msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ×ÉÄÉÍÏÓÔØ C++" + +#: ieee.c:2917 +msgid "bad C++ field bit pos or size" +msgstr "ÎÅ×ÅÒÎÙÊ Ä×ÏÉÞÎÙÊ ÒÁÚÒÑÄ ÉÌÉ ÒÁÚÍÅÒ ÐÏÌÑ C++" + +#: ieee.c:3009 +msgid "bad type for C++ method function" +msgstr "ÎÅ×ÅÒÎÙÊ ÔÉÐ ÆÕÎËÃÉÉ ÍÅÔÏÄÁ C++" + +#: ieee.c:3019 +msgid "no type information for C++ method function" +msgstr "ÎÅÔ ÉÎÆÏÒÍÁÃÉÉ Ï ÔÉÐÅ ÄÌÑ ÆÕÎËÃÉÉ ÍÅÔÏÄÁ C++" + +#: ieee.c:3058 +msgid "C++ static virtual method" +msgstr "ÓÔÁÔÉÞÅÓËÉÊ ×ÉÒÔÕÁÌØÎÙÊ ÍÅÔÏÄ C++" + +#: ieee.c:3153 +msgid "unrecognized C++ object overhead spec" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÓÌÕÖÅÂÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÏÂßÅËÔÁ C++" + +#: ieee.c:3192 +msgid "undefined C++ vtable" +msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ×ÉÒÔÕÁÌØÎÁÑ ÔÁÂÌÉÃÁ C++" + +#: ieee.c:3263 +msgid "C++ default values not in a function" +msgstr "ÚÎÁÞÅÎÉÑ C++ ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÅ × ÆÕÎËÃÉÉ" + +#: ieee.c:3303 +msgid "unrecognized C++ default type" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÔÉÐ C++ ÐÏ ÕÍÏÌÞÁÎÉÀ" + +#: ieee.c:3334 +msgid "reference parameter is not a pointer" +msgstr "ÓÓÙÌÏÞÎÙÊ ÐÁÒÁÍÅÔÒ ÎÅ Ñ×ÌÑÅÔÓÑ ÕËÁÚÁÔÅÌÅÍ" + +#: ieee.c:3419 +msgid "unrecognized C++ reference type" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÓÓÙÌÏÞÎÙÊ ÔÉÐ C++" + +#: ieee.c:3501 +msgid "C++ reference not found" +msgstr "ÓÓÙÌËÁ C++ ÎÅ ÎÁÊÄÅÎÁ" + +#: ieee.c:3509 +msgid "C++ reference is not pointer" +msgstr "ÓÓÙÌËÁ C++ ÎÅ Ñ×ÌÑÅÔÓÑ ÕËÁÚÁÔÅÌÅÍ" + +#: ieee.c:3538 ieee.c:3546 +msgid "missing required ASN" +msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÔÒÅÂÕÅÍÙÊ ASN" + +#: ieee.c:3576 ieee.c:3584 +msgid "missing required ATN65" +msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÔÒÅÂÕÅÍÙÊ ATN65" + +#: ieee.c:3598 +msgid "bad ATN65 record" +msgstr "ÐÌÏÈÁÑ ÚÁÐÉÓØ ATN65" + +#: ieee.c:4286 +msgid "IEEE numeric overflow: 0x" +msgstr "ÞÉÓÌÏ×ÏÅ ÐÅÒÅÐÏÌÎÅÎÉÅ IEEE: 0x" + +#: ieee.c:4332 +#, c-format +msgid "IEEE string length overflow: %u\n" +msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÄÌÉÎÙ ÓÔÒÏËÉ IEEE: %u\n" + +#: ieee.c:5382 +#, c-format +msgid "IEEE unsupported integer type size %u\n" +msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ÃÅÌÏÇÏ ÔÉÐÁ IEEE %u\n" + +#: ieee.c:5418 +#, c-format +msgid "IEEE unsupported float type size %u\n" +msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ÔÉÐÁ Ó ÐÌÁ×ÁÀÝÅÊ ÚÁÐÑÔÏÊ IEEE %u\n" + +#: ieee.c:5454 +#, c-format +msgid "IEEE unsupported complex type size %u\n" +msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ËÏÍÐÌÅËÓÎÏÇÏ ÔÉÐÁ IEEE%u\n" + +#: nlmconv.c:282 srconv.c:2043 +msgid "input and output files must be different" +msgstr "×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÁÊÌÙ ÄÏÌÖÎÙ ÂÙÔØ ÒÁÚÌÉÞÎÙÍÉ" + +#: nlmconv.c:329 +msgid "input file named both on command line and with INPUT" +msgstr "×ÈÏÄÎÏÊ ÆÁÊÌ ÎÁÚ×ÁÎ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ É × INPUT" + +#: nlmconv.c:338 +msgid "no input file" +msgstr "ÎÅÔ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ" + +#: nlmconv.c:368 +msgid "no name for output file" +msgstr "ÎÅÔ ÉÍÅÎÉ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ" + +#: nlmconv.c:382 +msgid "warning: input and output formats are not compatible" +msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ ÎÅ ÓÏ×ÍÅÓÔÉÍÙ" + +#: nlmconv.c:411 +msgid "make .bss section" +msgstr "ÓÏÚÄÁÎÉÅ ÒÁÚÄÅÌÁ .bss" + +#: nlmconv.c:420 +msgid "make .nlmsections section" +msgstr "ÓÏÚÄÁÎÉÅ ÒÁÚÄÅÌÁ .nlmsections" + +#: nlmconv.c:422 +msgid "set .nlmsections flags" +msgstr "ÕÓÔÁÎÏ×ËÁ ÆÌÁÇÏ× .nlmsections" + +#: nlmconv.c:450 +msgid "set .bss vma" +msgstr "ÕÓÔÁÎÏ×ËÁ .bss vma" + +#: nlmconv.c:457 +msgid "set .data size" +msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ .data" + +#: nlmconv.c:637 +#, c-format +msgid "warning: symbol %s imported but not in import list" +msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÉÍ×ÏÌ %s ÉÍÐÏÒÔÉÒÏ×ÁÎ, ÎÏ ÅÇÏ ÎÅÔ × ÓÐÉÓËÅ ÉÍÐÏÒÔÁ" + +#: nlmconv.c:657 +msgid "set start address" +msgstr "ÕÓÔÁÎÏ×ËÁ ÎÁÞÁÌØÎÏÇÏ ÁÄÒÅÓÁ" + +#: nlmconv.c:706 +#, c-format +msgid "warning: START procedure %s not defined" +msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: START-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ" + +#: nlmconv.c:708 +#, c-format +msgid "warning: EXIT procedure %s not defined" +msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: EXIT-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ" + +#: nlmconv.c:710 +#, c-format +msgid "warning: CHECK procedure %s not defined" +msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: CHECK-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ" + +#: nlmconv.c:731 nlmconv.c:920 +msgid "custom section" +msgstr "ÒÁÚÄÅÌ custom" + +#: nlmconv.c:752 nlmconv.c:949 +msgid "help section" +msgstr "ÒÁÚÄÅÌ help" + +#: nlmconv.c:774 nlmconv.c:967 +msgid "message section" +msgstr "ÒÁÚÄÅÌ message" + +#: nlmconv.c:790 nlmconv.c:1000 +msgid "module section" +msgstr "ÒÁÚÄÅÌ module" + +#: nlmconv.c:810 nlmconv.c:1016 +msgid "rpc section" +msgstr "ÒÁÚÄÅÌ rpc" + +#. There is no place to record this information. +#: nlmconv.c:846 +#, c-format +msgid "%s: warning: shared libraries can not have uninitialized data" +msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÏ×ÍÅÓÔÎÏ ÉÓÐÏÌØÚÕÅÍÙÅ ÂÉÂÌÉÏÔÅËÉ ÎÅ ÍÏÇÕÔ ÉÍÅÔØ ÎÅÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÎÙÅ ÄÁÎÎÙÅ" + +#: nlmconv.c:867 nlmconv.c:1035 +msgid "shared section" +msgstr "ÒÁÚÄÅÌ shared" + +#: nlmconv.c:875 +msgid "warning: No version number given" +msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: îÅ ÕËÁÚÁÎ ÎÏÍÅÒ ×ÅÒÓÉÉ" + +#: nlmconv.c:915 nlmconv.c:944 nlmconv.c:962 nlmconv.c:1011 nlmconv.c:1030 +#, c-format +msgid "%s: read: %s" +msgstr "%s: ÞÔÅÎÉÅ: %s" + +#: nlmconv.c:937 +msgid "warning: MAP and FULLMAP are not supported; try ld -M" +msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: MAP É FULLMAP ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ; ÐÏÐÒÏÂÕÊÔÅ ld -M" + +#: nlmconv.c:1109 +#, c-format +msgid "Usage: %s [option(s)] [in-file [out-file]]\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [in-ÆÁÊÌ [out-ÆÁÊÌ]]\n" + +#: nlmconv.c:1110 +msgid " Convert an object file into a NetWare Loadable Module\n" +msgstr " ëÏÎ×ÅÒÔÉÒÕÅÔ ÏÂßÅËÔÎÙÊ ÆÁÊÌ × ÚÁÇÒÕÖÁÅÍÙÊ ÍÏÄÕÌØ ÓÉÓÔÅÍÙ NetWare\n" + +#: nlmconv.c:1111 +msgid "" +" The options are:\n" +" -I --input-target= Set the input binary file format\n" +" -O --output-target= Set the output binary file format\n" +" -T --header-file= Read for NLM header information\n" +" -l --linker= Use for any linking\n" +" -d --debug Display on stderr the linker command line\n" +" -h --help Display this information\n" +" -v --version Display the program's version\n" +msgstr "" +" ïÐÃÉÉ:\n" +" -I --input-target= õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ ×ÈÏÄÎÏÇÏ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n" +" -O --output-target= õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ ×ÙÈÏÄÎÏÇÏ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n" +" -T --header-file=<ÆÁÊÌ> þÔÅÎÉÅ <ÆÁÊÌÁ> Ó ÉÎÆÏÒÍÁÃÉÅÊ ÚÁÇÏÌÏ×ËÁ NLM\n" +" -l --linker=<ËÏÍÐÏÎÏ×ÝÉË> éÓÐÏÌØÚÏ×ÁÎÉÅ <ËÏÍÐÏÎÏ×ÝÉËÁ> ÄÌÑ ÌÀÂÏÇÏ Ó×ÑÚÙ×ÁÎÉÑ\n" +" -d --debug ÷Ù×ÏÄ ÎÁ stderr ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ËÏÍÐÏÎÏ×ÝÉËÁ\n" +" -h --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" +" -v --version ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n" + +#: nlmconv.c:1153 +#, c-format +msgid "support not compiled in for %s" +msgstr "ÏÔËÏÍÐÉÌÉÒÏ×ÁÎ ÂÅÚ ÐÏÄÄÅÒÖËÉ %s" + +#: nlmconv.c:1193 +msgid "make section" +msgstr "ÒÁÚÄÅÌ make" + +#: nlmconv.c:1207 +msgid "set section size" +msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ ÒÁÚÄÅÌÁ" + +#: nlmconv.c:1213 +msgid "set section alignment" +msgstr "ÕÓÔÁÎÏ×ËÁ ÏÒÉÅÎÔÁÃÉÉ ÒÁÚÄÅÌÁ" + +#: nlmconv.c:1217 +msgid "set section flags" +msgstr "ÕÓÔÁÎÏ×ËÁ ÆÌÁÇÏ× ÒÁÚÄÅÌÁ" + +#: nlmconv.c:1228 +msgid "set .nlmsections size" +msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ .nlmsections" + +#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338 +msgid "set .nlmsection contents" +msgstr "ÕÓÔÁÎÏ×ËÁ ÓÏÄÅÒÖÉÍÏÇÏ .nlmsections" + +#: nlmconv.c:1839 +msgid "stub section sizes" +msgstr "ÒÁÚÍÅÒÙ ÒÁÚÄÅÌÁ ÚÁÇÌÕÛËÉ" + +#: nlmconv.c:1888 +msgid "writing stub" +msgstr "ÚÁÐÉÓÙ×ÁÅÔÓÑ ÚÁÇÌÕÛËÁ" + +#: nlmconv.c:1977 +#, c-format +msgid "unresolved PC relative reloc against %s" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÏÅ ÏÔÎÏÓÉÔÅÌØÎÏÅ ÐÅÒÅÍÅÝÅÎÉÅ ÐÏ ÓÞÅÔÞÉËÕ ËÏÍÁÎÄ × %s" + +#: nlmconv.c:2041 +#, c-format +msgid "overflow when adjusting relocation against %s" +msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÐÒÉ ÒÅÇÕÌÉÒÏ×ËÅ ÐÅÒÅÍÅÝÅÎÉÑ × %s" + +#: nlmconv.c:2158 +#, c-format +msgid "%s: execution of %s failed: " +msgstr "%s: ×ÙÐÏÌÎÅÎÉÅ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: " + +#: nlmconv.c:2173 +#, c-format +msgid "Execution of %s failed" +msgstr "÷ÙÐÏÌÎÅÎÉÅ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ" + +#: nm.c:283 size.c:85 strings.c:657 +#, c-format +msgid "Usage: %s [option(s)] [file(s)]\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [ÆÁÊÌ(Ù)]\n" + +#: nm.c:284 +msgid " List symbols in [file(s)] (a.out by default).\n" +msgstr " ÷Ù×ÏÄÉÔ ÓÐÉÓÏË ÓÉÍ×ÏÌÏ× × [ÆÁÊÌ(Ù)] (ÐÏ ÕÍÏÌÞÁÎÉÀ × a.out).\n" + +#: nm.c:285 +msgid "" +" The options are:\n" +" -a, --debug-syms Display debugger-only symbols\n" +" -A, --print-file-name Print name of the input file before every symbol\n" +" -B Same as --format=bsd\n" +" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n" +" The STYLE, if specified, can be `auto' (the default),\n" +" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n" +" or `gnat'\n" +" --no-demangle Do not demangle low-level symbol names\n" +" -D, --dynamic Display dynamic symbols instead of normal symbols\n" +" --defined-only Display only defined symbols\n" +" -e (ignored)\n" +" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n" +" `sysv' or `posix'. The default is `bsd'\n" +" -g, --extern-only Display only external symbols\n" +" -l, --line-numbers Use debugging information to find a filename and\n" +" line number for each symbol\n" +" -n, --numeric-sort Sort symbols numerically by address\n" +" -o Same as -A\n" +" -p, --no-sort Do not sort the symbols\n" +" -P, --portability Same as --format=posix\n" +" -r, --reverse-sort Reverse the sense of the sort\n" +" -S, --print-size Print size of defined symbols\n" +" -s, --print-armap Include index for symbols from archive members\n" +" --size-sort Sort symbols by size\n" +" -t, --radix=RADIX Use RADIX for printing symbol values\n" +" --target=BFDNAME Specify the target object format as BFDNAME\n" +" -u, --undefined-only Display only undefined symbols\n" +" -X 32_64 (ignored)\n" +" -h, --help Display this information\n" +" -V, --version Display this program's version number\n" +"\n" +msgstr "" +" ïÐÃÉÉ:\n" +" -a, --debug-syms ÷Ù×ÏÄ ÔÏÌØËÏ ÏÔÌÁÄÏÞÎÙÈ ÓÉÍ×ÏÌÏ×\n" +" -A, --print-file-name ÷Ù×ÏÄ ÉÍÅÎÉ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ ÐÅÒÅÄ ËÁÖÄÙÍ ÓÉÍ×ÏÌÏÍ\n" +" -B ôÏ ÖÅ, ÞÔÏ É --format=bsd\n" +" -C, --demangle[=óôéìø] äÅËÏÄÉÒÏ×ÁÎÉÅ ÎÉÚËÏÕÒÏ×ÎÅ×ÙÈ ÉÍÅÎ ÓÉÍ×ÏÌÏ× × ÉÍÅÎÁ\n" +" ÕÒÏ×ÎÑ ÐÏÌØÚÏ×ÁÔÅÌÑ\n" +" óôéìø, ÅÓÌÉ ÕËÁÚÁÎ, ÍÏÖÅÔ ÂÙÔØ `auto' (ÐÏ ÕÍÏÌÞÁÎÉÀ),\n" +" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n" +" ÉÌÉ `gnat'\n" +" --no-demangle îÅ ÒÁÓÛÉÆÒÏ×Ù×ÁÔØ ÎÉÚËÏÕÒÏ×ÎÅ×ÙÅ ÉÍÅÎÁ ÓÉÍ×ÏÌÏ×\n" +" -D, --dynamic ÷Ù×ÏÄ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ× ×ÍÅÓÔÏ ÎÏÒÍÁÌØÎÙÈ ÓÉÍ×ÏÌÏ×\n" +" --defined-only ÷Ù×ÏÄ ÔÏÌØËÏ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n" +" -e (ÐÒÏÐÕÝÅÎÁ)\n" +" -f, --format=æïòíáô éÓÐÏÌØÚÏ×ÁÎÉÅ æïòíáô × ËÁÞÅÓÔ×Å ×ÙÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ.\n" +" æïòíáô ÍÏÖÅÔ ÂÙÔØ `bsd', `sysv' ÉÌÉ `posix'. ðÏ ÕÍÏÌÞÁÎÉÀ `bsd'\n" +" -g, --extern-only ÷Ù×ÏÄ ÔÏÌØËÏ ×ÎÅÛÎÉÈ ÓÉÍ×ÏÌÏ×\n" +" -l, --line-numbers éÓÐÏÌØÚÏ×ÁÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÄÌÑ ÎÁÈÏÖÄÅÎÉÑ\n" +" ÉÍÅÎÉ ÆÁÊÌÁ É ÎÏÍÅÒÁ ÓÔÒÏËÉ ÄÌÑ ËÁÖÄÏÇÏ ÓÉÍ×ÏÌÁ\n" +" -n, --numeric-sort óÏÒÔÉÒÏ×ËÁ ÓÉÍ×ÏÌÏ× ÐÏ ÁÄÒÅÓÕ\n" +" -o ôÏ ÖÅ, ÞÔÏ É -A\n" +" -p, --no-sort âÅÚ ÓÏÒÔÉÒÏ×ËÉ ÓÉÍ×ÏÌÏ×\n" +" -P, --portability ôÏ ÖÅ, ÞÔÏ É --format=posix\n" +" -r, --reverse-sort óÏÒÔÉÒÏ×ËÁ × ÏÂÒÁÔÎÏÍ ÐÏÒÑÄËÅ\n" +" -S, --print-size ÷Ù×ÏÄ ÒÁÚÍÅÒÁ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n" +" -s, --print-armap ÷ËÌÀÞÅÎÉÅ ÉÎÄÅËÓÁ ÄÌÑ ÓÉÍ×ÏÌÏ× ÉÚ ÞÌÅÎÏ× ÁÒÈÉ×Á\n" +" --size-sort óÏÒÔÉÒÏ×ËÁ ÓÉÍ×ÏÌÏ× ÐÏ ÒÁÚÍÅÒÕ\n" +" -t, --radix=RADIX éÓÐÏÌØÚÏ×ÁÎÉÅ RADIX ÄÌÑ ×Ù×ÏÄÁ ÚÎÁÞÅÎÉÊ ÓÉÍ×ÏÌÏ×\n" +" --target=BFD-éíñ õËÁÚÁÎÉÅ ÃÅÌÅ×ÏÇÏ ÆÏÒÍÁÔÁ ÏÂßÅËÔÁ ËÁË BFD-éíñ\n" +" -u, --undefined-only ÷Ù×ÏÄ ÔÏÌØËÏ ÎÅ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n" +" -X 32_64 (ÐÒÏÐÕÝÅÎÁ)\n" +" -h, --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" +" -V, --version ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n" +"\n" + +#: nm.c:319 objdump.c:250 +#, c-format +msgid "Report bugs to %s.\n" +msgstr "ïÔÞÅÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n" + +#: nm.c:352 +#, c-format +msgid "%s: invalid radix" +msgstr "%s: ÎÅ×ÅÒÎÙÊ radix" + +#: nm.c:377 +#, c-format +msgid "%s: invalid output format" +msgstr "%s: ÎÅ×ÅÒÎÙÊ ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔ" + +#: nm.c:494 +msgid "Only -X 32_64 is supported" +msgstr "ðÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÔÏÌØËÏ -X 32_64" + +#: nm.c:514 +msgid "Using the --size-sort and --undefined-only options together" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ ×ÍÅÓÔÅ ÏÐÃÉÊ --size-sort É --undefined-only" + +#: nm.c:515 +msgid "will produce no output, since undefined symbols have no size." +msgstr "ÎÅ ÄÁÓÔ ×ÙÈÏÄÎÙÈ ÄÁÎÎÙÈ, Ô.Ë. ÎÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÎÅ ÉÍÅÀÔ ÒÁÚÍÅÒÁ." + +#: nm.c:543 +#, c-format +msgid "data size %ld" +msgstr "ÒÁÚÍÅÒ ÄÁÎÎÙÈ %ld" + +#: nm.c:568 readelf.c:5809 readelf.c:5845 +#, c-format +msgid ": %d" +msgstr "<ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ>: %d" + +#: nm.c:570 readelf.c:5811 readelf.c:5857 +#, c-format +msgid ": %d" +msgstr "<ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó>: %d" + +#: nm.c:572 readelf.c:5813 readelf.c:5860 +#, c-format +msgid ": %d" +msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %d" + +#: nm.c:1376 +#, c-format +msgid "" +"\n" +"\n" +"Undefined symbols from %s:\n" +"\n" +msgstr "" +"\n" +"\n" +"îÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÉÚ %s:\n" +"\n" + +#: nm.c:1378 +#, c-format +msgid "" +"\n" +"\n" +"Symbols from %s:\n" +"\n" +msgstr "" +"\n" +"\n" +"óÉÍ×ÏÌÙ ÉÚ %s:\n" +"\n" + +#: nm.c:1380 nm.c:1438 +msgid "" +"Name Value Class Type Size Line Section\n" +"\n" +msgstr "" +"éÍÑ úÎÁÞ. ëÌÁÓÓ ôÉÐ òÁÚÍÅÒ óÔÒÏËÁ òÁÚÄÅÌ\n" +"\n" + +#: nm.c:1383 nm.c:1441 +msgid "" +"Name Value Class Type Size Line Section\n" +"\n" +msgstr "" +"éÍÑ úÎÁÞ. ëÌÁÓÓ ôÉÐ òÁÚÍÅÒ óÔÒÏËÁ òÁÚÄÅÌ\n" +"\n" + +#: nm.c:1434 +#, c-format +msgid "" +"\n" +"\n" +"Undefined symbols from %s[%s]:\n" +"\n" +msgstr "" +"\n" +"\n" +"îÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÉÚ %s[%s]:\n" +"\n" + +#: nm.c:1436 +#, c-format +msgid "" +"\n" +"\n" +"Symbols from %s[%s]:\n" +"\n" +msgstr "" +"\n" +"\n" +"óÉÍ×ÏÌÙ ÉÚ %s[%s]:\n" +"\n" + +#: nm.c:1658 +msgid "" +"\n" +"Archive index:\n" +msgstr "" +"\n" +"éÎÄÅËÓ ÁÒÈÉ×Á:\n" + +#: objcopy.c:414 srconv.c:1952 +#, c-format +msgid "Usage: %s [option(s)] in-file [out-file]\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] in-ÆÁÊÌ [out-ÆÁÊÌ]\n" + +#: objcopy.c:415 +msgid " Copies a binary file, possibly transforming it in the process\n" +msgstr " ëÏÐÉÒÕÅÔ Ä×ÏÉÞÎÙÊ ÆÁÊÌ, ×ÏÚÍÏÖÎÏ, ÐÒÅÏÂÒÁÚÏ×Ù×ÁÑ ÅÇÏ × ÐÒÏÃÅÓÓÅ\n" + +#: objcopy.c:416 objcopy.c:495 +msgid " The options are:\n" +msgstr " ïÐÃÉÉ:\n" + +#: objcopy.c:417 +msgid "" +" -I --input-target Assume input file is in format \n" +" -O --output-target Create an output file in format \n" +" -B --binary-architecture Set arch of output file, when input is binary\n" +" -F --target Set both input and output format to \n" +" --debugging Convert debugging information, if possible\n" +" -p --preserve-dates Copy modified/access timestamps to the output\n" +" -j --only-section Only copy section into the output\n" +" --add-gnu-debuglink= Add section .gnu_debuglink linking to \n" +" -R --remove-section Remove section from the output\n" +" -S --strip-all Remove all symbol and relocation information\n" +" -g --strip-debug Remove all debugging symbols & sections\n" +" --strip-unneeded Remove all symbols not needed by relocations\n" +" -N --strip-symbol Do not copy symbol \n" +" -K --keep-symbol Only copy symbol \n" +" -L --localize-symbol Force symbol to be marked as a local\n" +" -G --keep-global-symbol Localize all symbols except \n" +" -W --weaken-symbol Force symbol to be marked as a weak\n" +" --weaken Force all global symbols to be marked as weak\n" +" -x --discard-all Remove all non-global symbols\n" +" -X --discard-locals Remove any compiler-generated symbols\n" +" -i --interleave Only copy one out of every bytes\n" +" -b --byte Select byte in every interleaved block\n" +" --gap-fill Fill gaps between sections with \n" +" --pad-to Pad the last section up to address \n" +" --set-start Set the start address to \n" +" {--change-start|--adjust-start} \n" +" Add to the start address\n" +" {--change-addresses|--adjust-vma} \n" +" Add to LMA, VMA and start addresses\n" +" {--change-section-address|--adjust-section-vma} {=|+|-}\n" +" Change LMA and VMA of section by \n" +" --change-section-lma {=|+|-}\n" +" Change the LMA of section by \n" +" --change-section-vma {=|+|-}\n" +" Change the VMA of section by \n" +" {--[no-]change-warnings|--[no-]adjust-warnings}\n" +" Warn if a named section does not exist\n" +" --set-section-flags =\n" +" Set section 's properties to \n" +" --add-section = Add section found in to output\n" +" --rename-section =[,] Rename section to \n" +" --change-leading-char Force output format's leading character style\n" +" --remove-leading-char Remove leading character from global symbols\n" +" --redefine-sym = Redefine symbol name to \n" +" --redefine-syms --redefine-sym for all symbol pairs \n" +" listed in \n" +" --srec-len Restrict the length of generated Srecords\n" +" --srec-forceS3 Restrict the type of generated Srecords to S3\n" +" --strip-symbols -N for all symbols listed in \n" +" --keep-symbols -K for all symbols listed in \n" +" --localize-symbols -L for all symbols listed in \n" +" --keep-global-symbols -G for all symbols listed in \n" +" --weaken-symbols -W for all symbols listed in \n" +" --alt-machine-code Use alternate machine code for output\n" +" --prefix-symbols Add to start of every symbol name\n" +" --prefix-sections Add to start of every section name\n" +" --prefix-alloc-sections \n" +" Add to start of every allocatable\n" +" section name\n" +" -v --verbose List all object files modified\n" +" -V --version Display this program's version number\n" +" -h --help Display this output\n" +" --info List object formats & architectures supported\n" +msgstr "" +" -I --input-target ðÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ×ÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ \n" +" -O --output-target óÏÚÄÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ \n" +" -B --binary-architecture <ÁÒÈ> õÓÔÁÎÏ×ÉÔØ ÁÒÈÉÔÅËÔÕÒÕ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ, ËÏÇÄÁ ×ÈÏÄÎÏÊ ÆÁÊÌ Ä×ÏÉÞÎÙÊ\n" +" -F --target õÓÔÁÎÏ×ÉÔØ ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ × \n" +" --debugging ðÒÅÏÂÒÁÚÏ×ÁÔØ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ, ÅÓÌÉ ÜÔÏ ×ÏÚÍÏÖÎÏ\n" +" -p --preserve-dates ëÏÐÉÒÏ×ÁÔØ ×ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ/ÄÏÓÔÕÐÁ ÎÁ ×Ù×ÏÄ\n" +" -j --only-section <ÉÍÑ> ëÏÐÉÒÏ×ÁÔØ ÒÁÚÄÅÌ <ÉÍÑ> ÎÁ ×Ù×ÏÄ\n" +" --add-gnu-debuglink=<ÆÁÊÌ> äÏÂÁ×ÌÅÎÉÅ Ó×ÑÚÙ×ÁÎÉÑ ÒÁÚÄÅÌÁ .gnu_debuglink × <ÆÁÊÌ>\n" +" -R --remove-section <ÉÍÑ> õÄÁÌÉÔØ ÒÁÚÄÅÌ <ÉÍÑ> ÉÚ ×Ù×ÏÄÁ\n" +" -S --strip-all õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ É ÉÎÆÏÒÍÁÃÉÀ Ï ÐÅÒÅÍÅÝÅÎÉÉ\n" +" -g --strip-debug õÄÁÌÉÔØ ×ÓÅ ÏÔÌÁÄÏÞÎÙÅ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ\n" +" --strip-unneeded õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ, ÎÅ ÎÕÖÎÙÅ ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÊ\n" +" -N --strip-symbol <ÉÍÑ> îÅ ËÏÐÉÒÏ×ÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ>\n" +" -K --keep-symbol <ÉÍÑ> ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÓÉÍ×ÏÌ <ÉÍÑ>\n" +" -L --localize-symbol <ÉÍÑ> ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÞÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ> ËÁË ÌÏËÁÌØÎÙÊ\n" +" -G --keep-global-symbol <ÉÍÑ> ìÏËÁÌÉÚÏ×ÁÔØ ×ÓÅ ÓÉÍ×ÏÌÙ ËÒÏÍÅ <ÉÍÑ>\n" +" -W --weaken-symbol <ÉÍÑ> ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÔÉÔØ ÓÉÍ×ÏÌ <ÉÍÑ> ËÁË ÓÌÁÂÙÊ\n" +" --weaken ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÔÉÔØ ÇÌÏÂÁÌØÎÙÅ ÓÉÍ×ÏÌÙ ËÁË ÓÌÁÂÙÅ\n" +" -x --discard-all õÄÁÌÉÔØ ×ÓÅ ÎÅÇÌÏÂÁÌØÎÙÅ ÓÉÍ×ÏÌÙ\n" +" -X --discard-locals õÄÁÌÉÔØ ÌÀÂÙÅ ÓÉÍ×ÏÌÙ, ÓÇÅÎÅÒÉÒÏ×ÁÎÎÙÅ ËÏÍÐÉÌÑÔÏÒÏÍ\n" +" -i --interleave <ÞÉÓÌÏ> ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÏÄÉÎ ÂÁÊÔ ÞÅÒÅÚ ËÁÖÄÏÅ <ÞÉÓÌÏ> ÂÁÊÔ\n" +" -b --byte <ÎÏÍÅÒ> ÷ÙÂÒÁÔØ ÂÁÊÔ <ÎÏÍÅÒ> × ËÁÖÄÏÍ ÞÅÒÅÄÕÀÝÅÍÓÑ ÂÌÏËÅ\n" +" --gap-fill <ÚÎÁÞÅÎÉÅ> úÁÐÏÌÎÉÔØ ÐÒÏÍÅÖÕÔËÉ ÍÅÖÄÕ ÒÁÚÄÅÌÁÍÉ <ÚÎÁÞÅÎÉÅÍ>\n" +" --pad-to <ÁÄÒÅÓ> úÁÐÏÌÎÉÔØ ÐÏÓÌÅÄÎÉÊ ÒÁÚÄÅÌ ÄÏ ÁÄÒÅÓÁ <ÁÄÒÅÓ>\n" +" --set-start <ÁÄÒÅÓ> õÓÔÁÎÏ×ÉÔØ ÎÁÞÁÌØÎÙÊ ÁÄÒÅÓ × <ÁÄÒÅÓ>\n" +" {--change-start|--adjust-start} <ÐÒÉÒÁÝÅÎÉÅ>\n" +" äÏÂÁ×ÉÔØ <ÐÒÉÒÁÝÅÎÉÅ> Ë ÎÁÞÁÌØÎÏÍÕ ÁÄÒÅÓÕ\n" +" {--change-addresses|--adjust-vma} <ÐÒÉÒÁÝÅÎÉÅ>\n" +" äÏÂÁ×ÉÔØ <ÐÒÉÒÁÝÅÎÉÅ> Ë LMA, VMA É ÎÁÞÁÌØÎÏÍÕ ÁÄÒÅÓÁÍ\n" +" {--change-section-address|--adjust-section-vma} <ÉÍÑ>{=|+|-}<ÚÎÁÞÅÎÉÅ>\n" +" éÚÍÅÎÉÔØ LMA É VMA ÒÁÚÄÅÌÁ <ÉÍÑ> ÎÁ <ÚÎÁÞÅÎÉÅ>\n" +" --change-section-lma <ÉÍÑ>{=|+|-}<ÚÎÁÞÅÎÉÅ>\n" +" éÚÍÅÎÉÔØ LMA ÒÁÚÄÅÌÁ <ÉÍÑ> ÎÁ <ÚÎÁÞÅÎÉÅ>\n" +" --change-section-vma <ÉÍÑ>{=|+|-}<ÚÎÁÞÅÎÉÅ>\n" +" éÚÍÅÎÉÔØ VMA ÒÁÚÄÅÌÁ <ÉÍÑ> ÎÁ <ÚÎÁÞÅÎÉÅ>\n" +" {--[no-]change-warnings|--[no-]adjust-warnings}\n" +" ðÒÅÄÕÐÒÅÄÉÔØ, ÅÓÌÉ ÎÁÚ×ÁÎÎÙÊ ÒÁÚÄÅÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ\n" +" --set-section-flags <ÉÍÑ>=<ÆÌÁÇÉ>\n" +" õÓÔÁÎÏ×ÉÔØ Ó×ÏÊÓÔ×Á ÒÁÚÄÅÌÁ <ÉÍÑ> × <ÆÌÁÇÉ>\n" +" --add-section <ÉÍÑ>=<ÆÁÊÌ> äÏÂÁ×ÉÔØ ÒÁÚÄÅÌ <ÉÍÑ>, ÎÁÊÄÅÎÎÙÊ × <ÆÁÊÌÅ>, ÎÁ ×Ù×ÏÄ\n" +" --rename-section <ÓÔÁÒ>=<ÎÏ×>[,<ÆÌÁÇÉ>] ðÅÒÅÉÍÅÎÏ×ÁÔØ ÒÁÚÄÅÌ <ÓÔÁÒ> ÎÁ <ÎÏ×>\n" +" --change-leading-char ðÒÉÎÕÄÉÔÅÌØÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÉÌØ ÚÁÇÌÁ×ÎÏÇÏ ÓÉÍ×ÏÌÁ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ\n" +" --remove-leading-char õÄÁÌÉÔØ ÚÁÇÌÁ×ÎÙÊ ÓÉÍ×ÏÌ ÉÚ ÇÌÏÂÁÌØÎÙÈ ÓÉÍ×ÏÌÏ×\n" +" --redefine-sym <ÓÔÁÒ>=<ÎÏ×> ðÅÒÅÏÐÒÅÄÅÌÉÔØ ÉÍÑ ÓÉÍ×ÏÌÁ <ÓÔÁÒ> ÎÁ <ÎÏ×>\n" +" --redefine-syms <ÆÁÊÌ> --redefine-sym ÄÌÑ ×ÓÅÈ ÐÁÒ ÓÉÍ×ÏÌÏ×,\n" +" ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" +" --srec-len <ÞÉÓÌÏ> ïÇÒÁÎÉÞÉÔØ ÄÌÉÎÕ ÓÏÚÄÁÎÎÙÈ S-ÚÁÐÉÓÅÊ\n" +" --srec-forceS3 ïÇÒÁÎÉÞÉÔØ ÔÉÐ ÓÏÚÄÁÎÎÙÈ S-ÚÁÐÉÓÅÊ ÄÏ S3\n" +" --strip-symbols <ÆÁÊÌ> -N ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" +" --keep-symbols <ÆÁÊÌ> -K ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" +" --localize-symbols <ÆÁÊÌ> -L ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" +" --keep-global-symbols <ÆÁÊÌ> -G ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" +" --weaken-symbols <ÆÁÊÌ> -W ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n" +" --alt-machine-code <ÉÎÄÅËÓ> éÓÐÏÌØÚÏ×ÁÔØ ÁÌØÔÅÒÎÁÔÉ×ÎÙÊ ËÏÄ ÍÁÛÉÎÙ ÄÌÑ ×Ù×ÏÄÁ\n" +" --prefix-symbols <ÐÒÅÆÉËÓ> äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ ÓÉÍ×ÏÌÁ\n" +" --prefix-sections <ÐÒÅÆÉËÓ> äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ ÒÁÚÄÅÌÁ\n" +" --prefix-alloc-sections <ÐÒÅÆÉËÓ>\n" +" äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ\n" +" ÎÁÚÎÁÞÁÅÍÏÇÏ ÒÁÚÄÅÌÁ\n" +" -v --verbose ðÅÒÅÞÉÓÌÉÔØ ×ÓÅ ÍÏÄÉÆÉÃÉÒÏ×ÁÎÎÙÅ ÏÂßÅËÔÎÙÅ ÆÁÊÌÙ\n" +" -V --version ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n" +" -h --help ÷Ù×ÅÓÔÉ ÜÔÕ ÓÐÒÁ×ËÕ\n" +" --info ðÅÒÅÞÉÓÌÉÔØ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒÙ\n" + +#: objcopy.c:493 +#, c-format +msgid "Usage: %s in-file(s)\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s <ÏÐÃÉÉ> in-ÆÁÊÌ(Ù)\n" + +#: objcopy.c:494 +msgid " Removes symbols and sections from files\n" +msgstr " õÄÁÌÑÅÔ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ ÉÚ ÆÁÊÌÏ×\n" + +#: objcopy.c:496 +msgid "" +" -I --input-target= Assume input file is in format \n" +" -O --output-target= Create an output file in format \n" +" -F --target= Set both input and output format to \n" +" -p --preserve-dates Copy modified/access timestamps to the output\n" +" -R --remove-section= Remove section from the output\n" +" -s --strip-all Remove all symbol and relocation information\n" +" -g -S -d --strip-debug Remove all debugging symbols & sections\n" +" --strip-unneeded Remove all symbols not needed by relocations\n" +" -N --strip-symbol= Do not copy symbol \n" +" -K --keep-symbol= Only copy symbol \n" +" -x --discard-all Remove all non-global symbols\n" +" -X --discard-locals Remove any compiler-generated symbols\n" +" -v --verbose List all object files modified\n" +" -V --version Display this program's version number\n" +" -h --help Display this output\n" +" --info List object formats & architectures supported\n" +" -o Place stripped output into \n" +msgstr "" +" -I --input-target= ðÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ×ÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ \n" +" -O --output-target= óÏÚÄÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ \n" +" -F --target= õÓÔÁÎÏ×ÉÔØ ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ × \n" +" -p --preserve-dates ëÏÐÉÒÏ×ÁÔØ ×ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ/ÄÏÓÔÕÐÁ ÎÁ ×Ù×ÏÄ\n" +" -R --remove-section <ÉÍÑ> õÄÁÌÉÔØ ÒÁÚÄÅÌ <ÉÍÑ> ÉÚ ×Ù×ÏÄÁ\n" +" -s --strip-all õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ É ÉÎÆÏÒÍÁÃÉÀ Ï ÐÅÒÅÍÅÝÅÎÉÉ\n" +" -g -S -d --strip-debug õÄÁÌÉÔØ ×ÓÅ ÏÔÌÁÄÏÞÎÙÅ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ\n" +" --strip-unneeded õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ, ÎÅ ÎÕÖÎÙÅ ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÊ\n" +" -N --strip-symbol=<ÉÍÑ> îÅ ËÏÐÉÒÏ×ÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ>\n" +" -K --keep-symbol=<ÉÍÑ> ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÓÉÍ×ÏÌ <ÉÍÑ>\n" +" -x --discard-all õÄÁÌÉÔØ ×ÓÅ ÎÅÇÌÏÂÁÌØÎÙÅ ÓÉÍ×ÏÌÙ\n" +" -X --discard-locals õÄÁÌÉÔØ ÌÀÂÙÅ ÓÉÍ×ÏÌÙ, ÓÇÅÎÅÒÉÒÏ×ÁÎÎÙÅ ËÏÍÐÉÌÑÔÏÒÏÍ\n" +" -v --verbose ðÅÒÅÞÉÓÌÉÔØ ×ÓÅ ÍÏÄÉÆÉÃÉÒÏ×ÁÎÎÙÅ ÏÂßÅËÔÎÙÅ ÆÁÊÌÙ\n" +" -V --version ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n" +" -h --help ÷Ù×ÅÓÔÉ ÜÔÕ ÓÐÒÁ×ËÕ\n" +" --info ðÅÒÅÞÉÓÌÉÔØ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒÙ\n" +" -o <ÆÁÊÌ> ðÏÍÅÓÔÉÔØ ÇÏÌÙÅ ×ÙÈÏÄÎÙÅ ÄÁÎÎÙÅ × <ÆÁÊÌ>\n" + +#: objcopy.c:567 +#, c-format +msgid "unrecognized section flag `%s'" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÆÌÁÇ ÒÁÚÄÅÌÁ `%s'" + +#: objcopy.c:568 +#, c-format +msgid "supported flags: %s" +msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÌÁÇÉ: %s" + +#: objcopy.c:645 objcopy.c:2526 +#, c-format +msgid "cannot stat: %s: %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ stat: %s: %s" + +#: objcopy.c:652 objcopy.c:2544 +#, c-format +msgid "cannot open: %s: %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s: %s" + +#: objcopy.c:655 objcopy.c:2548 +#, c-format +msgid "%s: fread failed" +msgstr "%s: fread ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ" + +#: objcopy.c:728 +#, c-format +msgid "Ignoring rubbish found on line %d of %s" +msgstr "ðÒÏÐÕÓËÁÅÔÓÑ ÍÕÓÏÒ, ÎÁÊÄÅÎÎÙÊ × ÓÔÒÏËÅ %d ÉÚ %s" + +#: objcopy.c:979 +#, c-format +msgid "%s: Multiple redefinition of symbol \"%s\"" +msgstr "%s: íÎÏÇÏËÒÁÔÎÏÅ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ \"%s\"" + +#: objcopy.c:983 +#, c-format +msgid "%s: Symbol \"%s\" is target of more than one redefinition" +msgstr "%s: óÉÍ×ÏÌ \"%s\" Ñ×ÌÑÅÔÓÑ ÃÅÌØÀ ÂÏÌÅÅ, ÞÅÍ ÏÄÎÏÇÏ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ" + +#: objcopy.c:1010 +#, c-format +msgid "couldn't open symbol redefinition file %s (error: %s)" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ ÓÉÍ×ÏÌÁ %s (ÏÛÉÂËÁ: %s)" + +#: objcopy.c:1088 +#, c-format +msgid "%s: garbage at end of line %d" +msgstr "%s: ÍÕÓÏÒ × ËÏÎÃÅ ÓÔÒÏËÉ %d" + +#: objcopy.c:1091 +#, c-format +msgid "%s: missing new symbol name at line %d" +msgstr "%s: ÏÔÓÕÔÓÔ×ÕÅÔ ÉÍÑ ÎÏ×ÏÇÏ ÓÉÍ×ÏÌÁ × ÓÔÒÏËÅ %d" + +#: objcopy.c:1101 +#, c-format +msgid "%s: premature end of file at line %d" +msgstr "%s: ÐÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ × ÓÔÒÏËÅ %d" + +#: objcopy.c:1147 +msgid "Unable to change endianness of input file(s)" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ endianness ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ" + +#: objcopy.c:1155 +#, c-format +msgid "copy from %s(%s) to %s(%s)\n" +msgstr "ËÏÐÉÒÏ×ÁÎÉÅ ÉÚ %s(%s) × %s(%s)\n" + +#: objcopy.c:1182 +#, c-format +msgid "Warning: Output file cannot represent architecture %s" +msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÷ÙÈÏÄÎÏÊ ÆÁÊÌ ÎÅ ÍÏÖÅÔ ÐÒÅÄÏÓÔÁ×ÉÔØ ÁÒÈÉÔÅËÔÕÒÕ %s" + +#: objcopy.c:1211 +#, c-format +msgid "can't create section `%s': %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÒÁÚÄÅÌ `%s': %s" + +#: objcopy.c:1304 +#, c-format +msgid "Can't fill gap after %s: %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÐÏÌÎÉÔØ ÐÒÏÍÅÖÕÔÏË ÐÏÓÌÅ %s: %s" + +#: objcopy.c:1329 +#, c-format +msgid "Can't add padding to %s: %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÚÁÐÏÌÎÅÎÉÅ × %s: %s" + +#: objcopy.c:1485 +#, c-format +msgid "%s: error copying private BFD data: %s" +msgstr "%s: ÏÛÉÂËÁ ËÏÐÉÒÏ×ÁÎÉÑ ÞÁÓÔÎÙÈ ÄÁÎÎÙÈ BFD: %s" + +#: objcopy.c:1498 +msgid "unknown alternate machine code, ignored" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÁÌØÔÅÒÎÁÔÉ×ÎÙÊ ËÏÄ ÍÁÛÉÎÙ, ÐÒÏÐÕÝÅÎ" + +#: objcopy.c:1531 objcopy.c:1561 +#, c-format +msgid "cannot mkdir %s for archive copying (error: %s)" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ mkdir %s ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ ÁÒÈÉ×Á (ÏÛÉÂËÁ: %s)" + +#: objcopy.c:1749 +#, c-format +msgid "Multiple renames of section %s" +msgstr "íÎÏÇÏËÒÁÔÎÙÅ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ ÒÁÚÄÅÌÁ %s" + +#: objcopy.c:1840 +msgid "making" +msgstr "ÓÏÚÄÁÅÔÓÑ" + +#: objcopy.c:1849 +msgid "size" +msgstr "ÒÁÚÍÅÒ" + +#: objcopy.c:1863 +msgid "vma" +msgstr "vma" + +#: objcopy.c:1888 +msgid "alignment" +msgstr "ÏÒÉÅÎÔÁÃÉÑ" + +#: objcopy.c:1896 +msgid "flags" +msgstr "ÆÌÁÇÉ" + +#: objcopy.c:1918 +msgid "private data" +msgstr "ÞÁÓÔÎÙÅ ÄÁÎÎÙÅ" + +#: objcopy.c:1926 +#, c-format +msgid "%s: section `%s': error in %s: %s" +msgstr "%s: ÒÁÚÄÅÌ `%s': ÏÛÉÂËÁ × %s: %s" + +#: objcopy.c:2199 +#, c-format +msgid "%s: can't create debugging section: %s" +msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÏÔÌÁÄÏÞÎÙÊ ÒÁÚÄÅÌ: %s" + +#: objcopy.c:2214 +#, c-format +msgid "%s: can't set debugging section contents: %s" +msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÏÔÌÁÄÏÞÎÏÇÏ ÒÁÚÄÅÌÁ: %s" + +#: objcopy.c:2223 +#, c-format +msgid "%s: don't know how to write debugging information for %s" +msgstr "%s: ÎÅ ÉÚ×ÅÓÔÎÏ, ËÁË ÚÁÐÉÓÁÔØ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÄÌÑ %s" + +#: objcopy.c:2346 +#, c-format +msgid "%s: cannot stat: %s" +msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ stat: %s" + +#: objcopy.c:2400 +msgid "byte number must be non-negative" +msgstr "ÎÏÍÅÒ ÂÁÊÔÁ ÄÏÌÖÅÎ ÂÙÔØ ÎÅÏÔÒÉÃÁÔÅÌØÎÙÍ" + +#: objcopy.c:2410 +msgid "interleave must be positive" +msgstr "ÞÅÒÅÄÏ×ÁÎÉÅ ÄÏÌÖÎÏ ÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ" + +#: objcopy.c:2430 objcopy.c:2438 +#, c-format +msgid "%s both copied and removed" +msgstr "ÏÂÁ %s ÓËÏÐÉÒÏ×ÁÎÙ É ÕÄÁÌÅÎÙ" + +#: objcopy.c:2523 objcopy.c:2593 objcopy.c:2693 objcopy.c:2724 objcopy.c:2748 +#: objcopy.c:2752 objcopy.c:2772 +#, c-format +msgid "bad format for %s" +msgstr "ÐÌÏÈÏÊ ÆÏÒÍÁÔ ÄÌÑ %s" + +#: objcopy.c:2662 +#, c-format +msgid "Warning: truncating gap-fill from 0x%s to 0x%x" +msgstr "ðÒÅÄÕÐÒÅÖÅÄÎÉÅ: ÏÂÒÅÚÁÅÔÓÑ ÚÁÐÏÌÎÅÎÉÅ ÐÒÏÍÅÖÕÔËÁ ÏÔ 0x%s ÄÏ 0x%x" + +#: objcopy.c:2818 +msgid "alternate machine code index must be positive" +msgstr "ÉÎÄÅËÓ ÁÌØÔÅÒÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ÍÁÛÉÎÙ ÄÏÌÖÅÎ ÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ" + +#: objcopy.c:2856 +msgid "byte number must be less than interleave" +msgstr "ÎÏÍÅÒ ÂÁÊÔÁ ÄÏÌÖÅÎ ÂÙÔØ ÍÅÎØÛÅ ÞÅÒÅÄÏ×ÁÎÉÑ" + +#: objcopy.c:2883 +#, c-format +msgid "architecture %s unknown" +msgstr "ÁÒÈÉÔÅËÔÕÒÁ %s ÎÅ ÉÚ×ÅÓÔÎÁ" + +#: objcopy.c:2887 +msgid "Warning: input target 'binary' required for binary architecture parameter." +msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: 'Ä×ÏÉÞÎÙÊ' ÃÅÌÅ×ÏÊ ×ÈÏÄÎÏÊ ÆÁÊÌ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÐÁÒÁÍÅÔÒÁ Ä×ÏÉÞÎÏÊ ÁÒÈÉÔÅËÔÕÒÙ." + +#: objcopy.c:2888 +#, c-format +msgid " Argument %s ignored" +msgstr " áÒÇÕÍÅÎÔ %s ÐÒÏÐÕÝÅÎ" + +#: objcopy.c:2894 +#, c-format +msgid "Cannot stat: %s: %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ stat: %s: %s" + +#: objcopy.c:2934 objcopy.c:2948 +#, c-format +msgid "%s %s%c0x%s never used" +msgstr "%s %s%c0x%s ÎÉËÏÇÄÁ ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ" + +#: objdump.c:197 +#, c-format +msgid "Usage: %s \n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s <ÏÐÃÉÉ> <ÆÁÊÌ(Ù)>\n" + +#: objdump.c:198 +msgid " Display information from object .\n" +msgstr " ïÔÏÂÒÁÖÁÅÔ ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÏÂßÅËÔÁ <ÆÁÊÌ(Ù)>.\n" + +#: objdump.c:199 +msgid " At least one of the following switches must be given:\n" +msgstr " äÏÌÖÅÎ ÂÙÔØ ÕËÁÚÁÎ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÏÄÉÎ ÉÚ ÓÌÅÄÕÀÝÉÈ ËÌÀÞÅÊ:\n" + +#: objdump.c:200 +msgid "" +" -a, --archive-headers Display archive header information\n" +" -f, --file-headers Display the contents of the overall file header\n" +" -p, --private-headers Display object format specific file header contents\n" +" -h, --[section-]headers Display the contents of the section headers\n" +" -x, --all-headers Display the contents of all headers\n" +" -d, --disassemble Display assembler contents of executable sections\n" +" -D, --disassemble-all Display assembler contents of all sections\n" +" -S, --source Intermix source code with disassembly\n" +" -s, --full-contents Display the full contents of all sections requested\n" +" -g, --debugging Display debug information in object file\n" +" -G, --stabs Display (in raw form) any STABS info in the file\n" +" -t, --syms Display the contents of the symbol table(s)\n" +" -T, --dynamic-syms Display the contents of the dynamic symbol table\n" +" -r, --reloc Display the relocation entries in the file\n" +" -R, --dynamic-reloc Display the dynamic relocation entries in the file\n" +" -v, --version Display this program's version number\n" +" -i, --info List object formats and architectures supported\n" +" -H, --help Display this information\n" +msgstr "" +" -a, --archive-headers ÷Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ ÚÁÇÏÌÏ×ËÁ ÁÒÈÉ×Á\n" +" -f, --file-headers ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÚÁÇÏÌÏ×ËÁ ×ÓÅÇÏ ÆÁÊÌÁ\n" +" -p, --private-headers ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÚÁÇÏÌÏ×ËÁ ÆÁÊÌÁ, ÓÐÅÃÉÆÉÞÎÏÇÏ ÄÌÑ ÆÏÒÍÁÔÁ ÏÂßÅËÔÁ\n" +" -h, --[section-]headers ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÏ×\n" +" -x, --all-headers ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ×ÓÅÈ ÚÁÇÏÌÏ×ËÏ×\n" +" -d, --disassemble ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÁÓÓÅÍÂÌÅÒÁ ÉÓÐÏÌÎÑÅÍÙÈ ÒÁÚÄÅÌÏ×\n" +" -D, --disassemble-all ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÁÓÓÅÍÂÌÅÒÁ ×ÓÅÈ ÒÁÚÄÅÌÏ×\n" +" -S, --source ðÅÒÅÍÅÛÁÔØ ÉÓÈÏÄÎÙÊ ËÏÄ Ó ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅÍ\n" +" -s, --full-contents ÷Ù×ÅÓÔÉ ÐÏÌÎÏÅ ÓÏÄÅÒÖÉÍÏÅ ×ÓÅÈ ÚÁÐÒÏÛÅÎÎÙÈ ÒÁÚÄÅÌÏ×\n" +" -g, --debugging ÷Ù×ÅÓÔÉ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ × ÏÂßÅËÔÎÏÍ ÆÁÊÌÅ\n" +" -G, --stabs ÷Ù×ÅÓÔÉ (× ÓÙÒÏÊ ÆÏÒÍÅ) ÌÀÂÕÀ ÉÎÆÏÒÍÁÃÉÀ STABS × ÆÁÊÌÅ\n" +" -t, --syms ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÔÁÂÌÉÃ(Ù) ÓÉÍ×ÏÌÏ×\n" +" -T, --dynamic-syms ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n" +" -r, --reloc ÷Ù×ÅÓÔÉ ÐÕÎËÔÙ ÐÅÒÅÍÅÝÅÎÉÑ × ÆÁÊÌÅ\n" +" -R, --dynamic-reloc ÷Ù×ÅÓÔÉ ÐÕÎËÔÙ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÐÅÒÅÍÅÝÅÎÉÑ × ÆÁÊÌÅ\n" +" -v, --version ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n" +" -i, --info ÷Ù×ÅÓÔÉ ÓÐÉÓÏË ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ ÆÏÒÍÁÔÏ× ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒ\n" +" -H, --help ÷Ù×ÅÓÔÉ ÜÔÕ ÉÎÆÏÒÍÁÃÉÀ\n" + +#: objdump.c:222 +msgid "" +"\n" +" The following switches are optional:\n" +msgstr "" +"\n" +" óÌÅÄÕÀÝÉÅ ËÌÀÞÉ Ñ×ÌÑÀÔÓÑ ÏÐÃÉÏÎÁÌØÎÙÍÉ:\n" + +#: objdump.c:223 +msgid "" +" -b, --target=BFDNAME Specify the target object format as BFDNAME\n" +" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n" +" -j, --section=NAME Only display information for section NAME\n" +" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n" +" -EB --endian=big Assume big endian format when disassembling\n" +" -EL --endian=little Assume little endian format when disassembling\n" +" --file-start-context Include context from start of file (with -S)\n" +" -l, --line-numbers Include line numbers and filenames in output\n" +" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n" +" The STYLE, if specified, can be `auto', `gnu',\n" +" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n" +" or `gnat'\n" +" -w, --wide Format output for more than 80 columns\n" +" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n" +" --start-address=ADDR Only process data whose address is >= ADDR\n" +" --stop-address=ADDR Only process data whose address is <= ADDR\n" +" --prefix-addresses Print complete address alongside disassembly\n" +" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n" +" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n" +"\n" +msgstr "" +" -b, --target=BFD-éíñ õËÁÚÁÔØ ÃÅÌÅ×ÏÊ ÆÏÒÍÁÔ ÏÂßÅËÔÁ ËÁË BFD-éíñ\n" +" -m, --architecture=íáûéîá õËÁÚÁÔØ ÃÅÌÅ×ÕÀ ÁÒÈÉÔÅËÔÕÒÕ ËÁË íáûéîá\n" +" -j, --section=éíñ ÷Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ ÔÏÌØËÏ ÄÌÑ ÒÁÚÄÅÌÁ éíñ\n" +" -M, --disassembler-options=OPT ðÅÒÅÄÁÔØ ÔÅËÓÔ OPT × ÄÉÚÁÓÓÅÍÂÌÅÒ\n" +" -EB --endian=big ðÒÅÄÐÏÌÏÖÉÔØ ÆÏÒÍÁÔ big endian ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n" +" -EL --endian=little ðÒÅÄÐÏÌÏÖÉÔØ ÆÏÒÍÁÔ little endian ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n" +" --file-start-context ÷ËÌÀÞÉÔØ ËÏÎÔÅËÓÔ ÉÚ ÎÁÞÁÌÁ ÆÁÊÌÁ (Ó -S)\n" +" -l, --line-numbers ÷ËÌÀÞÉÔØ ÎÏÍÅÒÁ ÓÔÒÏË É ÉÍÅÎÁ ÆÁÊÌÏ× ÎÁ ×Ù×ÏÄÅ\n" +" -C, --demangle[=óôéìø] äÅËÏÄÉÒÏ×ÁÔØ ÓËÏÒÒÅËÔÉÒÏ×ÁÎÎÙÅ/ÏÂÒÁÂÏÔÁÎÎÙÅ ÉÍÅÎÁ ÓÉÍ×ÏÌÏ×\n" +" óôéìø, ÅÓÌÉ ÕËÁÚÁÎ, ÍÏÖÅÔ ÂÙÔØ `auto', `gnu',\n" +" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n" +" ÉÌÉ `gnat'\n" +" -w, --wide æÏÒÍÁÔÉÒÏ×ÁÔØ ×Ù×ÏÄ ÄÌÑ ÂÏÌÅÅ,šÞÅÍ 80 ËÏÌÏÎÏË\n" +" -z, --disassemble-zeroes îÅ ÐÒÏÐÕÓËÁÔØ ÂÌÏËÉ ÎÕÌÅÊ ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n" +" --start-address=áäòåó ïÂÒÁÂÏÔÁÔØ ÔÏÌØËÏ ÄÁÎÎÙÅ, ÁÄÒÅÓ ËÏÔÏÒÙÈ >= áäòåó\n" +" --stop-address=áäòåó ïÂÒÁÂÏÔÁÔØ ÔÏÌØËÏ ÄÁÎÎÙÅ, ÁÄÒÅÓ ËÏÔÏÒÙÈ <= áäòåó\n" +" --prefix-addresses ÷Ù×ÅÓÔÉ ÐÏÌÎÙÊ ÁÄÒÅÓ ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n" +" --[no-]show-raw-insn ÷Ù×ÅÓÔÉ hex ÐÒÉ ÓÉÍ×ÏÌÉÞÅÓËÏÍ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n" +" --adjust-vma=óíåýåîéå äÏÂÁ×ÉÔØ óíåýåîéå ËÏ ×ÓÅÍ ÁÄÒÅÓÁÍ ×Ù×ÏÄÉÍÙÈ ÒÁÚÄÅÌÏ×\n" +"\n" + +#: objdump.c:391 +msgid "Sections:\n" +msgstr "òÁÚÄÅÌÙ:\n" + +#: objdump.c:394 objdump.c:398 +msgid "Idx Name Size VMA LMA File off Algn" +msgstr "éÎÄ éÍÑ òÁÚÍÅÒ VMA LMA æÁÊÌ ÷ÙÒÁ×" + +#: objdump.c:400 +msgid "Idx Name Size VMA LMA File off Algn" +msgstr "éÎÄ éÍÑ òÁÚÍÅÒ VMA LMA æÁÊÌ ÷ÙÒÁ×" + +#: objdump.c:404 +msgid " Flags" +msgstr " æÌÁÇÉ" + +#: objdump.c:406 +msgid " Pg" +msgstr " óÔÒ" + +#: objdump.c:451 +#, c-format +msgid "%s: not a dynamic object" +msgstr "%s: ÎÅ ÄÉÎÁÍÉÞÅÓËÉÊ ÏÂßÅËÔ" + +#: objdump.c:1144 +msgid "Out of virtual memory" +msgstr "îÅÈ×ÁÔËÁ ×ÉÒÔÕÁÌØÎÏÊ ÐÁÍÑÔÉ" + +#: objdump.c:1574 +#, c-format +msgid "Can't use supplied machine %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÅÄÓÔÁ×ÌÅÎÎÕÀ ÍÁÛÉÎÕ %s" + +#: objdump.c:1592 +#, c-format +msgid "Can't disassemble for architecture %s\n" +msgstr "äÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÎÅ×ÏÚÍÏÖÎÏ ÄÌÑ ÁÒÈÉÔÅËÔÕÒÙ %s\n" + +#: objdump.c:1682 +#, c-format +msgid "Disassembly of section %s:\n" +msgstr "äÉÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÒÁÚÄÅÌÁ %s:\n" + +#: objdump.c:1847 +#, c-format +msgid "" +"No %s section present\n" +"\n" +msgstr "" +"òÁÚÄÅÌ %s ÏÔÓÕÔÓÔ×ÕÅÔ\n" +"\n" + +#: objdump.c:1854 +#, c-format +msgid "%s has no %s section" +msgstr "%s ÎÅ ÉÍÅÅÔ ÒÁÚÄÅÌÁ %s" + +#: objdump.c:1868 +#, c-format +msgid "Reading %s section of %s failed: %s" +msgstr "þÔÅÎÉÅ %s ÒÁÚÄÅÌÁ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: %s" + +#: objdump.c:1880 +#, c-format +msgid "Reading %s section of %s failed: %s\n" +msgstr "þÔÅÎÉÅ %s ÒÁÚÄÅÌÁ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: %s\n" + +#: objdump.c:1923 +#, c-format +msgid "" +"Contents of %s section:\n" +"\n" +msgstr "" +"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n" +"\n" + +#: objdump.c:2021 +#, c-format +msgid "architecture: %s, " +msgstr "ÁÒÈÉÔÅËÔÕÒÁ: %s, " + +#: objdump.c:2024 +#, c-format +msgid "flags 0x%08x:\n" +msgstr "ÆÌÁÇÉ 0x%08x:\n" + +#: objdump.c:2038 +msgid "" +"\n" +"start address 0x" +msgstr "" +"\n" +"ÎÁÞÁÌØÎÙÊ ÁÄÒÅÓ 0x" + +#: objdump.c:2071 +#, c-format +msgid "" +"\n" +"%s: file format %s\n" +msgstr "" +"\n" +"%s: ÆÏÒÍÁÔ ÆÁÊÌÁ %s\n" + +#: objdump.c:2111 +#, c-format +msgid "%s: printing debugging information failed" +msgstr "%s: ×Ù×ÏÄ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ" + +#: objdump.c:2190 +#, c-format +msgid "In archive %s:\n" +msgstr "÷ ÁÒÈÉ×Å %s:\n" + +#: objdump.c:2249 +#, c-format +msgid "Contents of section %s:\n" +msgstr "óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n" + +#: objdump.c:2369 +msgid "no symbols\n" +msgstr "ÎÅÔ ÓÉÍ×ÏÌÏ×\n" + +#: objdump.c:2718 +msgid "unrecognized -E option" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÐÃÉÑ -E" + +#: objdump.c:2729 +#, c-format +msgid "unrecognized --endian type `%s'" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ --endian ÔÉÐ `%s'" + +#: rdcoff.c:206 +#, c-format +msgid "parse_coff_type: Bad type code 0x%x" +msgstr "parse_coff_type: ðÌÏÈÏÊ ËÏÄ ÔÉÐÁ 0x%x" + +#: rdcoff.c:424 rdcoff.c:532 rdcoff.c:731 +#, c-format +msgid "bfd_coff_get_syment failed: %s" +msgstr "bfd_coff_get_syment ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s" + +#: rdcoff.c:440 rdcoff.c:751 +#, c-format +msgid "bfd_coff_get_auxent failed: %s" +msgstr "bfd_coff_get_auxent ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s" + +#: rdcoff.c:818 +#, c-format +msgid "%ld: .bf without preceding function" +msgstr "%ld: .bf ÂÅÚ ÐÒÅÄÛÅÓÔ×ÕÀÝÅÊ ÆÕÎËÃÉÉ" + +#: rdcoff.c:868 +#, c-format +msgid "%ld: unexpected .ef\n" +msgstr "%ld: ÎÅÏÖÉÄÁÎÎÙÊ .ef\n" + +#: rddbg.c:91 +#, c-format +msgid "%s: no recognized debugging information" +msgstr "%s: ÎÅÔ ÒÁÓÐÏÚÎÁÎÎÏÊ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ" + +#: rddbg.c:415 +msgid "Last stabs entries before error:\n" +msgstr "ðÏÓÌÅÄÎÉÅ ÐÕÎËÔÙ stabs ÐÅÒÅÄ ÏÛÉÂËÏÊ:\n" + +#: readelf.c:455 +#, c-format +msgid "%s: Error: " +msgstr "%s: ïÛÉÂËÁ: " + +#: readelf.c:466 +#, c-format +msgid "%s: Warning: " +msgstr "%s: ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: " + +#: readelf.c:488 +#, c-format +msgid "Unable to seek to 0x%x for %s\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ 0x%x ÄÌÑ %s\n" + +#: readelf.c:499 +#, c-format +msgid "Out of memory allocating 0x%x bytes for %s\n" +msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÓÐÒÅÄÅÌÅÎÉÉ 0x%x ÂÁÊÔ ÄÌÑ %s\n" + +#: readelf.c:507 +#, c-format +msgid "Unable to read in 0x%x bytes of %s\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÚÕÞÉÔØ ÐÏÓÒÅÄÓÔ×ÏÍ ÞÔÅÎÉÑ 0x%x ÂÁÊÔ %s\n" + +#: readelf.c:560 readelf.c:614 readelf.c:798 readelf.c:833 +#, c-format +msgid "Unhandled data length: %d\n" +msgstr "äÌÉÎÁ ÎÅÏÂÒÁÂÁÔÙ×ÁÅÍÙÈ ÄÁÎÎÙÈ: %d\n" + +#: readelf.c:924 +msgid "Don't know about relocations on this machine architecture\n" +msgstr "îÅÉÚ×ÅÓÔÎÏ Ï ÐÅÒÅÍÅÝÅÎÉÑÈ ÄÌÑ ÜÔÏÊ ÁÒÈÉÔÅËÔÕÒÙ ÍÁÛÉÎÙ\n" + +#: readelf.c:946 readelf.c:975 readelf.c:1021 readelf.c:1049 +msgid "relocs" +msgstr "ÐÅÒÅÍÅÝÅÎÉÑ" + +#: readelf.c:957 readelf.c:986 readelf.c:1031 readelf.c:1059 +msgid "out of memory parsing relocs" +msgstr "ÎÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÚÂÏÒÅ ÐÅÒÅÍÅÝÅÎÉÊ" + +#: readelf.c:1112 +msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n" +msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ×. éÍÑ ÓÉÍ×ÏÌÁ + Addend\n" + +#: readelf.c:1114 +msgid " Offset Info Type Sym.Value Sym. Name + Addend\n" +msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ× éÍÑ ÓÉÍ×. + Addend\n" + +#: readelf.c:1119 +msgid " Offset Info Type Sym. Value Symbol's Name\n" +msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ× éÍÑ ÓÉÍ×ÏÌÁ\n" + +#: readelf.c:1121 +msgid " Offset Info Type Sym.Value Sym. Name\n" +msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ× éÍÑ ÓÉÍ×.\n" + +#: readelf.c:1129 +msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n" +msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞÅÎÉÅ ÓÉÍ×. éÍÑ ÓÉÍ×ÏÌÁ + Addend\n" + +#: readelf.c:1131 +msgid " Offset Info Type Sym. Value Sym. Name + Addend\n" +msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ×. éÍÑ ÓÉÍ×. + Addend\n" + +#: readelf.c:1136 +msgid " Offset Info Type Symbol's Value Symbol's Name\n" +msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞÅÎÉÅ ÓÉÍ×. éÍÑ ÓÉÍ×ÏÌÁ\n" + +#: readelf.c:1138 +msgid " Offset Info Type Sym. Value Sym. Name\n" +msgstr " óÍÅÝÅÎÉÅ éÎÆÏ ôÉÐ úÎÁÞ.ÓÉÍ×. éÍÑ ÓÉÍ×.\n" + +#: readelf.c:1414 readelf.c:1416 readelf.c:1492 readelf.c:1494 readelf.c:1503 +#: readelf.c:1505 +#, c-format +msgid "unrecognized: %-7lx" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ: %-7lx" + +#: readelf.c:1466 +#, c-format +msgid "" +msgstr "<ÉÎÄÅËÓ ÔÁÂÌÉÃÙ ÓÔÒÏË %3ld>" + +#: readelf.c:1743 +#, c-format +msgid "Processor Specific: %lx" +msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ: %lx" + +#: readelf.c:1762 +#, c-format +msgid "Operating System specific: %lx" +msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ: %lx" + +#: readelf.c:1765 readelf.c:2417 +#, c-format +msgid ": %lx" +msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %lx" + +#: readelf.c:1779 +msgid "NONE (None)" +msgstr "îåô (îÅÔ)" + +#: readelf.c:1780 +msgid "REL (Relocatable file)" +msgstr "REL (ðÅÒÅÍÅÝÁÅÍÙÊ ÆÁÊÌ)" + +#: readelf.c:1781 +msgid "EXEC (Executable file)" +msgstr "EXEC (éÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ)" + +#: readelf.c:1782 +msgid "DYN (Shared object file)" +msgstr "DYN (óÏ×Í. ÉÓÐ. ÏÂßÅËÔÎÙÊ ÆÁÊÌ)" + +#: readelf.c:1783 +msgid "CORE (Core file)" +msgstr "CORE (ïÓÎÏ×ÎÏÊ ÆÁÊÌ)" + +#: readelf.c:1787 +#, c-format +msgid "Processor Specific: (%x)" +msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ: (%x)" + +#: readelf.c:1789 +#, c-format +msgid "OS Specific: (%x)" +msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó: (%x)" + +#: readelf.c:1791 readelf.c:1898 readelf.c:2574 +#, c-format +msgid ": %x" +msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %x" + +#: readelf.c:1804 +msgid "None" +msgstr "îÅÔ" + +#: readelf.c:2616 +msgid "Usage: readelf elf-file(s)\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: readelf <ÏÐÃÉÉ> elf-ÆÁÊÌ(Ù)\n" + +#: readelf.c:2617 +msgid " Display information about the contents of ELF format files\n" +msgstr " ïÔÏÂÒÁÖÁÅÔ ÉÎÆÏÒÍÁÃÉÀ Ï ÓÏÄÅÒÖÉÍÏÍ ÆÁÊÌÏ× × ÆÏÒÍÁÔÅ ELF\n" + +#: readelf.c:2618 +msgid "" +" Options are:\n" +" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n" +" -h --file-header Display the ELF file header\n" +" -l --program-headers Display the program headers\n" +" --segments An alias for --program-headers\n" +" -S --section-headers Display the sections' header\n" +" --sections An alias for --section-headers\n" +" -e --headers Equivalent to: -h -l -S\n" +" -s --syms Display the symbol table\n" +" --symbols An alias for --syms\n" +" -n --notes Display the core notes (if present)\n" +" -r --relocs Display the relocations (if present)\n" +" -u --unwind Display the unwind info (if present)\n" +" -d --dynamic Display the dynamic segment (if present)\n" +" -V --version-info Display the version sections (if present)\n" +" -A --arch-specific Display architecture specific information (if any).\n" +" -D --use-dynamic Use the dynamic section info when displaying symbols\n" +" -x --hex-dump= Dump the contents of section \n" +" -w[liaprmfFso] or\n" +" --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n" +" Display the contents of DWARF2 debug sections\n" +msgstr "" +" ïÐÃÉÉ:\n" +" -a --all üË×É×ÁÌÅÎÔÎÁ: -h -l -S -s -r -d -V -A -I\n" +" -h --file-header ÷Ù×ÏÄ ÚÁÇÏÌÏ×ËÁ ÆÁÊÌÁ ELF\n" +" -l --program-headers ÷Ù×ÏÄ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ\n" +" --segments áÌÉÁÓ ÄÌÑ --program-headers\n" +" -S --section-headers ÷Ù×ÏÄ ÚÁÇÏÌÏ×ËÁ ÒÁÚÄÅÌÏ×\n" +" --sections áÌÉÁÓ ÄÌÑ --section-headers\n" +" -e --headers üË×É×ÁÌÅÎÔÎÁ: -h -l -S\n" +" -s --syms ÷Ù×ÏÄ ÔÁÂÌÉÃÙ ÓÉÍ×ÏÌÏ×\n" +" --symbols áÌÉÁÓ ÄÌÑ --syms\n" +" -n --notes ÷Ù×ÏÄ ÏÓÎÏ×ÎÙÈ ÚÁÐÉÓÅÊ (ÅÓÌÉ ÉÍÅÀÔÓÑ)\n" +" -r --relocs ÷Ù×ÏÄ ÐÅÒÅÍÅÝÅÎÉÊ (ÅÓÌÉ ÉÍÅÀÔÓÑ)\n" +" -u --unwind ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ÒÁÓÐÉÓÙ×ÁÎÉÉ (ÅÓÌÉ ÉÍÅÅÔÓÑ)\n" +" -d --dynamic ÷Ù×ÏÄ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ (ÅÓÌÉ ÉÍÅÅÔÓÑ)\n" +" -V --version-info ÷Ù×ÏÄ ÒÁÚÄÅÌÏ× Ó ×ÅÒÓÉÅÊ (ÅÓÌÉ ÉÍÅÀÔÓÑ)\n" +" -A --arch-specific ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ, ÓÐÅÃÉÆÉÞÎÏÊ ÄÌÑ ÁÒÈÉÔÅËÔÕÒÙ (ÅÓÌÉ ÉÍÅÅÔÓÑ).\n" +" -D --use-dynamic éÓÐÏÌØÚÏ×ÁÎÉÅ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ ÒÁÚÄÅÌÁ ÐÒÉ ×Ù×ÏÄÅ ÓÉÍ×ÏÌÏ×\n" +" -x --hex-dump=<ÎÏÍÅÒ> äÁÍÐ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ <ÎÏÍÅÒ>\n" +" -w[liaprmfFso] ÉÌÉ\n" +" --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n" +" ÷Ù×ÏÄ ÓÏÄÅÒÖÉÍÏÇÏ ÏÔÌÁÄÏÞÎÙÈ ÒÁÚÄÅÌÏ× DWARF2\n" + +#: readelf.c:2640 +msgid "" +" -i --instruction-dump=\n" +" Disassemble the contents of section \n" +msgstr "" +" -i --instruction-dump=<ÎÏÍÅÒ>\n" +" äÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ <ÎÏÍÅÒ>\n" + +#: readelf.c:2644 +msgid "" +" -I --histogram Display histogram of bucket list lengths\n" +" -W --wide Allow output width to exceed 80 characters\n" +" -H --help Display this information\n" +" -v --version Display the version number of readelf\n" +msgstr "" +" -I --histogram ÷Ù×ÏÄ ÇÉÓÔÏÇÒÁÍÍÙ ÄÌÉÎ ÓÐÉÓËÁ ÕÞÁÓÔËÁ ÐÁÍÑÔÉ\n" +" -W --wide òÁÚÒÅÛÅÎÉÅ ÛÉÒÉÎÙ ×Ù×ÏÄÁ ÂÏÌÅÅ 80 ÓÉÍ×ÏÌÏ×\n" +" -H --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" +" -v --version ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ readelf\n" + +#: readelf.c:2666 readelf.c:10765 +msgid "Out of memory allocating dump request table." +msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÚÍÅÝÅÎÉÉ ÄÁÍÐÁ ÔÁÂÌÉÃÙ ÚÁÐÒÏÓÁ." + +#: readelf.c:2830 readelf.c:2906 +#, c-format +msgid "Unrecognized debug option '%s'\n" +msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÔÌÁÄÏÞÎÁÑ ÏÐÃÉÑ '%s'\n" + +#: readelf.c:2940 +#, c-format +msgid "Invalid option '-%c'\n" +msgstr "îÅ×ÅÒÎÁÑ ÏÐÃÉÑ '-%c'\n" + +#: readelf.c:2953 +msgid "Nothing to do.\n" +msgstr "îÅÞÅÇÏ ×ÙÐÏÌÎÑÔØ.\n" + +#: readelf.c:2966 readelf.c:2983 readelf.c:5366 +msgid "none" +msgstr "ÎÅÔ" + +#: readelf.c:2970 readelf.c:2987 readelf.c:3018 +#, c-format +msgid "" +msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ: %x>" + +#: readelf.c:2984 +msgid "2's complement, little endian" +msgstr "ÄÏÐÏÌÎÅÎÉÅ ÄÏ 2, little endian" + +#: readelf.c:2985 +msgid "2's complement, big endian" +msgstr "ÄÏÐÏÌÎÅÎÉÅ ÄÏ 2, big endian" + +#: readelf.c:3015 +msgid "Standalone App" +msgstr "éÚÏÌÉÒÏ×ÁÎÎÏÅ ÐÒÉÌÏÖÅÎÉÅ" + +#: readelf.c:3034 +msgid "Not an ELF file - it has the wrong magic bytes at the start\n" +msgstr "îÅ ELF-ÆÁÊÌ - ÏÎ ÓÏÄÅÒÖÉÔ ÎÅ×ÅÒÎÙÅ magic-ÂÁÊÔÙ × ÎÁÞÁÌÅ\n" + +#: readelf.c:3042 +msgid "ELF Header:\n" +msgstr "úÁÇÏÌÏ×ÏË ELF:\n" + +#: readelf.c:3043 +msgid " Magic: " +msgstr " Magic: " + +#: readelf.c:3047 +#, c-format +msgid " Class: %s\n" +msgstr " ëÌÁÓÓ: %s\n" + +#: readelf.c:3049 +#, c-format +msgid " Data: %s\n" +msgstr " äÁÎÎÙÅ: %s\n" + +#: readelf.c:3051 +#, c-format +msgid " Version: %d %s\n" +msgstr " ÷ÅÒÓÉÑ: %d %s\n" + +#: readelf.c:3058 +#, c-format +msgid " OS/ABI: %s\n" +msgstr " OS/ABI: %s\n" + +#: readelf.c:3060 +#, c-format +msgid " ABI Version: %d\n" +msgstr " ÷ÅÒÓÉÑ ABI: %d\n" + +#: readelf.c:3062 +#, c-format +msgid " Type: %s\n" +msgstr " ôÉÐ: %s\n" + +#: readelf.c:3064 +#, c-format +msgid " Machine: %s\n" +msgstr " íÁÛÉÎÁ: %s\n" + +#: readelf.c:3066 +#, c-format +msgid " Version: 0x%lx\n" +msgstr " ÷ÅÒÓÉÑ: 0x%lx\n" + +#: readelf.c:3069 +msgid " Entry point address: " +msgstr " áÄÒÅÓ ÔÏÞËÉ ×ÈÏÄÁ: " + +#: readelf.c:3071 +msgid "" +"\n" +" Start of program headers: " +msgstr "" +"\n" +" îÁÞÁÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ: " + +#: readelf.c:3073 +msgid "" +" (bytes into file)\n" +" Start of section headers: " +msgstr "" +" (ÂÁÊÔ × ÆÁÊÌÅ)\n" +" îÁÞÁÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ: " + +#: readelf.c:3075 +msgid " (bytes into file)\n" +msgstr " (ÂÁÊÔ × ÆÁÊÌÅ)\n" + +#: readelf.c:3077 +#, c-format +msgid " Flags: 0x%lx%s\n" +msgstr " æÌÁÇÉ: 0x%lx%s\n" + +#: readelf.c:3080 +#, c-format +msgid " Size of this header: %ld (bytes)\n" +msgstr " òÁÚÍÅÒ ÜÔÏÇÏ ÚÁÇÏÌÏ×ËÁ: %ld (ÂÁÊÔ)\n" + +#: readelf.c:3082 +#, c-format +msgid " Size of program headers: %ld (bytes)\n" +msgstr " òÁÚÍÅÒ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ: %ld (ÂÁÊÔ)\n" + +#: readelf.c:3084 +#, c-format +msgid " Number of program headers: %ld\n" +msgstr " þÉÓÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ: %ld\n" + +#: readelf.c:3086 +#, c-format +msgid " Size of section headers: %ld (bytes)\n" +msgstr " òÁÚÍÅÒ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ: %ld (ÂÁÊÔ)\n" + +#: readelf.c:3088 +#, c-format +msgid " Number of section headers: %ld" +msgstr " þÉÓÌÏ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ: %ld" + +#: readelf.c:3093 +#, c-format +msgid " Section header string table index: %ld" +msgstr " éÎÄÅËÓ ÔÁÂÌ. ÓÔÒÏË ÚÁÇÏÌ. ÒÁÚÄÅÌÁ: %ld" + +#: readelf.c:3127 readelf.c:3163 +msgid "program headers" +msgstr "ÚÁÇÏÌÏ×ËÉ ÐÒÏÇÒÁÍÍÙ" + +#: readelf.c:3203 readelf.c:3480 readelf.c:3526 readelf.c:3589 readelf.c:3656 +#: readelf.c:4715 readelf.c:4758 readelf.c:4948 readelf.c:5917 readelf.c:5931 +#: readelf.c:10411 +msgid "Out of memory\n" +msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ\n" + +#: readelf.c:3231 +msgid "" +"\n" +"There are no program headers in this file.\n" +msgstr "" +"\n" +"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ.\n" + +#: readelf.c:3237 +#, c-format +msgid "" +"\n" +"Elf file type is %s\n" +msgstr "" +"\n" +"ôÉÐ elf-ÆÁÊÌÁ - %s\n" + +#: readelf.c:3238 +msgid "Entry point " +msgstr "ôÏÞËÁ ×ÈÏÄÁ " + +#: readelf.c:3240 +#, c-format +msgid "" +"\n" +"There are %d program headers, starting at offset " +msgstr "" +"\n" +"éÍÅÅÔÓÑ %d ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ " + +#: readelf.c:3252 readelf.c:3254 +msgid "" +"\n" +"Program Headers:\n" +msgstr "" +"\n" +"úÁÇÏÌÏ×ËÉ ÐÒÏÇÒÁÍÍÙ:\n" + +#: readelf.c:3258 +msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" +msgstr " ôÉÐ óÍÅÝ. ÷ÉÒÔ.ÁÄÒ æÉÚ.ÁÄÒ òÚÍ.ÆÊÌ òÚÍ.ÐÍ æÌÇ ÷ÙÒÁ×Î\n" + +#: readelf.c:3261 +msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" +msgstr " ôÉÐ óÍÅÝ. ÷ÉÒÔ.ÁÄÒ æÉÚ.ÁÄÒ òÚÍ.ÆÊÌ òÚÍ.ÐÍ æÌÇ ÷ÙÒÁ×Î\n" + +#: readelf.c:3265 +msgid " Type Offset VirtAddr PhysAddr\n" +msgstr " ôÉÐ óÍÅÝ. ÷ÉÒÔ.ÁÄÒ æÉÚ.ÁÄÒ\n" + +#: readelf.c:3267 +msgid " FileSiz MemSiz Flags Align\n" +msgstr " òÚÍ.ÆÊÌ òÚÍ.ÐÍ æÌÁÇÉ ÷ÙÒÁ×Î\n" + +#: readelf.c:3360 +msgid "more than one dynamic segment\n" +msgstr "ÂÏÌÅÅ ÏÄÎÏÇÏ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ\n" + +#: readelf.c:3368 +msgid "Unable to find program interpreter name\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÉÍÑ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ ÐÒÏÇÒÁÍÍÙ\n" + +#: readelf.c:3375 +#, c-format +msgid "" +"\n" +" [Requesting program interpreter: %s]" +msgstr "" +"\n" +" [úÁÐÒÁÛÉ×ÁÅÍÙÊ ÉÎÔÅÒÐÒÅÔÁÔÏÒ ÐÒÏÇÒÁÍÍÙ: %s]" + +#: readelf.c:3387 +msgid "" +"\n" +" Section to Segment mapping:\n" +msgstr "" +"\n" +" óÏÏÔ×ÅÔÓÔ×ÉÅ ÒÁÚÄÅÌ-ÓÅÇÍÅÎÔ:\n" + +#: readelf.c:3388 +msgid " Segment Sections...\n" +msgstr " óÅÇÍÅÎÔ òÁÚÄÅÌÙ...\n" + +#: readelf.c:3437 +msgid "Cannot interpret virtual addresses without program headers.\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÔØ ×ÉÒÔÕÁÌØÎÙÅ ÁÄÒÅÓÁ ÂÅÚ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ.\n" + +#: readelf.c:3453 +#, c-format +msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n" +msgstr "÷ÉÒÔÕÁÌØÎÙÊ ÁÄÒÅÓ 0x%lx ÎÅ ÒÁÚÍÅÝÅÎ × ËÁËÏÍ-ÌÉÂÏ ÓÅÇÍÅÎÔÅ PT_LOAD.\n" + +#: readelf.c:3471 readelf.c:3517 +msgid "section headers" +msgstr "ÚÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÏ×" + +#: readelf.c:3565 readelf.c:3632 +msgid "symbols" +msgstr "ÓÉÍ×ÏÌÙ" + +#: readelf.c:3576 readelf.c:3643 +msgid "symtab shndx" +msgstr "symtab shndx" + +#: readelf.c:3745 +msgid "" +"\n" +"There are no sections in this file.\n" +msgstr "" +"\n" +"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÒÁÚÄÅÌÏ×.\n" + +#: readelf.c:3751 +#, c-format +msgid "There are %d section headers, starting at offset 0x%lx:\n" +msgstr "éÍÅÅÔÓÑ %d ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ 0x%lx:\n" + +#: readelf.c:3768 readelf.c:4098 readelf.c:4433 readelf.c:6070 +msgid "string table" +msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË" + +#: readelf.c:3793 +msgid "File contains multiple dynamic symbol tables\n" +msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉà ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n" + +#: readelf.c:3805 +msgid "File contains multiple dynamic string tables\n" +msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉà ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË\n" + +#: readelf.c:3811 +msgid "dynamic strings" +msgstr "ÄÉÎÁÍÉÞÅÓËÉÅ ÓÔÒÏËÉ" + +#: readelf.c:3817 +msgid "File contains multiple symtab shndx tables\n" +msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉà symtab shndx\n" + +#: readelf.c:3855 +msgid "" +"\n" +"Section Headers:\n" +msgstr "" +"\n" +"úÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÏ×:\n" + +#: readelf.c:3857 +msgid "" +"\n" +"Section Header:\n" +msgstr "" +"\n" +"úÁÇÏÌÏ×ÏË ÒÁÚÄÅÌÁ:\n" + +#: readelf.c:3861 +msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n" +msgstr " [îÍ] éÍÑ ôÉÐ áÄÒÅÓ óÍÅÝ òÁÚÍ ES æÌÇ óÓ éÎÆ Al\n" + +#: readelf.c:3864 +msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n" +msgstr " [îÍ] éÍÑ ôÉÐ áÄÒÅÓ óÍÅÝ òÁÚÍ ES æÌÇ ìË éÎÆ Al\n" + +#: readelf.c:3867 +msgid " [Nr] Name Type Address Offset\n" +msgstr " [îÍ] éÍÑ ôÉÐ áÄÒÅÓ óÍÅÝÅÎÉÅ\n" + +#: readelf.c:3868 +msgid " Size EntSize Flags Link Info Align\n" +msgstr " òÁÚÍÅÒ òÁÚÍ.Ent æÌÁÇÉ óÓÙÌË éÎÆÏ ÷ÙÒÁ×Î\n" + +#: readelf.c:3963 +msgid "" +"Key to Flags:\n" +" W (write), A (alloc), X (execute), M (merge), S (strings)\n" +" I (info), L (link order), G (group), x (unknown)\n" +" O (extra OS processing required) o (OS specific), p (processor specific)\n" +msgstr "" +"ïÂÏÚÎÁÞÅÎÉÑ ÆÌÁÇÏ×:\n" +" W (ÚÁÐÉÓØ), A (ÎÁÚÎÁÞ), X (ÉÓÐÏÌÎÑÅÍÙÊ), M (ÓÌÉÑÎÉÅ), S (ÓÔÒÏËÉ)\n" +" I (ÉÎÆÏ), L (ÐÏÒÑÄÏË ÓÓÙÌÏË), G (ÇÒÕÐÐÁ), x (ÎÅÉÚ×.)\n" +" O (ÔÒÅÂ. ÄÏÐ. ÏÂÒÁÂÏÔËÁ ïó) o (ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó), p (ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ)\n" + +#: readelf.c:4031 +#, c-format +msgid "" +"\n" +"'%s' relocation section at offset 0x%lx contains %ld bytes:\n" +msgstr "" +"\n" +"'%s' ÒÁÚÄÅÌ ÐÅÒÅÍÅÝÅÎÉÑ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %ld ÂÁÊÔ:\n" + +#: readelf.c:4043 +msgid "" +"\n" +"There are no dynamic relocations in this file.\n" +msgstr "" +"\n" +"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÉÈ ÐÅÒÅÍÅÝÅÎÉÊ .\n" + +#: readelf.c:4070 +msgid "" +"\n" +"Relocation section " +msgstr "" +"\n" +"òÁÚÄÅÌ ÐÅÒÅÍÅÝÅÎÉÑ " + +#: readelf.c:4075 readelf.c:4496 readelf.c:4510 +#, c-format +msgid "'%s'" +msgstr "'%s'" + +#: readelf.c:4077 readelf.c:4512 +#, c-format +msgid " at offset 0x%lx contains %lu entries:\n" +msgstr " ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n" + +#: readelf.c:4115 +msgid "" +"\n" +"There are no relocations in this file.\n" +msgstr "" +"\n" +"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÐÅÒÅÍÅÝÅÎÉÊ.\n" + +#: readelf.c:4299 +msgid "unwind table" +msgstr "ÒÁÚ×ÅÒÎÕÔÁÑ ÔÁÂÌÉÃÁ" + +#: readelf.c:4350 readelf.c:4362 readelf.c:8499 readelf.c:8511 +#, c-format +msgid "Skipping unexpected symbol type %u\n" +msgstr "ðÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ÓÉÍ×ÏÌÁ %u\n" + +#: readelf.c:4370 +#, c-format +msgid "Skipping unexpected relocation type %s\n" +msgstr "ðÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ÐÅÒÅÍÅÝÅÎÉÑ %s\n" + +#: readelf.c:4415 readelf.c:4440 +msgid "" +"\n" +"There are no unwind sections in this file.\n" +msgstr "" +"\n" +"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÒÁÚ×ÅÒÎÕÔÙÈ ÒÁÚÄÅÌÏ×.\n" + +#: readelf.c:4491 +msgid "" +"\n" +"Could not find unwind info section for " +msgstr "" +"\n" +"îÅ×ÏÚÍÏÖÎÏ ÂÙÌÏ ÎÁÊÔÉ ÒÁÚÄÅÌ Ó ÒÁÚ×ÅÒÎÕÔÏÊ ÉÎÆÏÒÍÁÃÉÅÊ ÄÌÑ" + +#: readelf.c:4503 +msgid "unwind info" +msgstr "ÒÁÚ×ÅÒÎÕÔÁÑ ÉÎÆÏÒÍÁÃÉÑ" + +#: readelf.c:4505 +msgid "" +"\n" +"Unwind section " +msgstr "" +"\n" +"òÁÚ×ÅÒÎÕÔÙÊ ÒÁÚÄÅÌ " + +#: readelf.c:4699 readelf.c:4742 +msgid "dynamic segment" +msgstr "ÄÉÎÁÍÉÞÅÓËÉÊ ÓÅÇÍÅÎÔ" + +#: readelf.c:4820 +msgid "" +"\n" +"There is no dynamic segment in this file.\n" +msgstr "" +"\n" +"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ.\n" + +#: readelf.c:4854 +msgid "Unable to seek to end of file!" +msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÄÏ ËÏÎÃÁ ÆÁÊÌÁ!" + +#: readelf.c:4865 +msgid "Unable to determine the number of symbols to load\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÞÉÓÌÏ ÚÁÇÒÕÖÁÅÍÙÈ ÓÉÍ×ÏÌÏ×\n" + +#: readelf.c:4895 +msgid "Unable to seek to end of file\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÄÏ ËÏÎÃÁ ÆÁÊÌÁ\n" + +#: readelf.c:4901 +msgid "Unable to determine the length of the dynamic string table\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÄÌÉÎÕ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË\n" + +#: readelf.c:4906 +msgid "dynamic string table" +msgstr "ÔÁÂÌÉÃÁ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË" + +#: readelf.c:4941 +msgid "symbol information" +msgstr "ÉÎÆÏÒÍÁÃÉÑ Ï ÓÉÍ×ÏÌÅ" + +#: readelf.c:4965 +#, c-format +msgid "" +"\n" +"Dynamic segment at offset 0x%lx contains %ld entries:\n" +msgstr "" +"\n" +"äÉÎÁÍÉÞÅÓËÉÊ ÓÅÇÍÅÎÔ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n" + +#: readelf.c:4968 +msgid " Tag Type Name/Value\n" +msgstr " ôÅÇ ôÉÐ éÍÑ/úÎÁÞ\n" + +#: readelf.c:5004 +msgid "Auxiliary library" +msgstr "÷ÓÐÏÍÏÇÁÔÅÌØÎÁÑ ÂÉÂÌÉÏÔÅËÁ" + +#: readelf.c:5008 +msgid "Filter library" +msgstr "âÉÂÌÉÏÔÅËÁ ÆÉÌØÔÒÏ×" + +#: readelf.c:5012 +msgid "Configuration file" +msgstr "æÁÊÌ ÎÁÓÔÒÏÊËÉ" + +#: readelf.c:5016 +msgid "Dependency audit library" +msgstr "âÉÂÌÉÏÔÅËÁ ÁÕÄÉÔÁ ÚÁ×ÉÓÉÍÏÓÔÅÊ" + +#: readelf.c:5020 +msgid "Audit library" +msgstr "âÉÂÌÉÏÔÅËÁ ÁÕÄÉÔÁ" + +#: readelf.c:5038 readelf.c:5066 readelf.c:5094 +msgid "Flags:" +msgstr "æÌÁÇÉ:" + +#: readelf.c:5041 readelf.c:5069 readelf.c:5096 +msgid " None\n" +msgstr " îÅÔ\n" + +#: readelf.c:5217 +#, c-format +msgid "Shared library: [%s]" +msgstr "óÏ×Í. ÉÓÐ. ÂÉÂÌÉÏÔÅËÁ: [%s]" + +#: readelf.c:5220 +msgid " program interpreter" +msgstr " ÉÎÔÅÒÐÒÅÔÁÔÏÒ ÐÒÏÇÒÁÍÍÙ" + +#: readelf.c:5224 +#, c-format +msgid "Library soname: [%s]" +msgstr "âÉÂÌÉÏÔÅËÁ soname: [%s]" + +#: readelf.c:5228 +#, c-format +msgid "Library rpath: [%s]" +msgstr "âÉÂÌÉÏÔÅËÁ rpath: [%s]" + +#: readelf.c:5232 +#, c-format +msgid "Library runpath: [%s]" +msgstr "âÉÂÌÉÏÔÅËÁ runpath: [%s]" + +#: readelf.c:5296 +#, c-format +msgid "Not needed object: [%s]\n" +msgstr "îÅÎÕÖÎÙÊ ÏÂßÅËÔ: [%s]\n" + +#: readelf.c:5412 +#, c-format +msgid "" +"\n" +"Version definition section '%s' contains %ld entries:\n" +msgstr "" +"\n" +"òÁÚÄÅÌ ÏÐÉÓÁÎÉÑ ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n" + +#: readelf.c:5415 +msgid " Addr: 0x" +msgstr " áÄÒÅÓ: 0x" + +#: readelf.c:5417 readelf.c:5612 +#, c-format +msgid " Offset: %#08lx Link: %lx (%s)\n" +msgstr " óÍÅÝÅÎÉÅ: %#08lx óÓÙÌËÁ: %lx (%s)\n" + +#: readelf.c:5424 +msgid "version definition section" +msgstr "ÒÁÚÄÅÌ ÏÐÉÓÁÎÉÑ ×ÅÒÓÉÉ" + +#: readelf.c:5450 +#, c-format +msgid " %#06x: Rev: %d Flags: %s" +msgstr " %#06x: òÅ×ÉÚÉÑ: %d æÌÁÇÉ: %s" + +#: readelf.c:5453 +#, c-format +msgid " Index: %d Cnt: %d " +msgstr " éÎÄÅËÓ: %d óÞÅÔÞÉË: %d " + +#: readelf.c:5464 +#, c-format +msgid "Name: %s\n" +msgstr "éÍÑ: %s\n" + +#: readelf.c:5466 +#, c-format +msgid "Name index: %ld\n" +msgstr "éÎÄÅËÓ ÉÍÅÎÉ: %ld\n" + +#: readelf.c:5481 +#, c-format +msgid " %#06x: Parent %d: %s\n" +msgstr " %#06x: òÏÄÉÔÅÌØ %d: %s\n" + +#: readelf.c:5484 +#, c-format +msgid " %#06x: Parent %d, name index: %ld\n" +msgstr " %#06x: òÏÄÉÔÅÌØ %d, ÉÎÄÅËÓ ÉÍÅÎÉ: %ld\n" + +#: readelf.c:5503 +#, c-format +msgid "" +"\n" +"Version needs section '%s' contains %ld entries:\n" +msgstr "" +"\n" +"òÁÚÄÅÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n" + +#: readelf.c:5506 +msgid " Addr: 0x" +msgstr " áÄÒÅÓ: 0x" + +#: readelf.c:5508 +#, c-format +msgid " Offset: %#08lx Link to section: %ld (%s)\n" +msgstr " óÍÅÝÅÎÉÅ: %#08lx óÓÙÌËÁ ÎÁ ÒÁÚÄÅÌ: %ld (%s)\n" + +#: readelf.c:5514 +msgid "version need section" +msgstr "ÒÁÚÄÅÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ ×ÅÒÓÉÉ" + +#: readelf.c:5536 +#, c-format +msgid " %#06x: Version: %d" +msgstr " %#06x: ÷ÅÒÓÉÑ: %d" + +#: readelf.c:5539 +#, c-format +msgid " File: %s" +msgstr " æÁÊÌ: %s" + +#: readelf.c:5541 +#, c-format +msgid " File: %lx" +msgstr " æÁÊÌ: %lx" + +#: readelf.c:5543 +#, c-format +msgid " Cnt: %d\n" +msgstr " óÞÅÔÞÉË: %d\n" + +#: readelf.c:5561 +#, c-format +msgid " %#06x: Name: %s" +msgstr " %#06x: éÍÑ: %s" + +#: readelf.c:5564 +#, c-format +msgid " %#06x: Name index: %lx" +msgstr " %#06x: éÎÄÅËÓ ÉÍÅÎÉ: %lx" + +#: readelf.c:5567 +#, c-format +msgid " Flags: %s Version: %d\n" +msgstr " æÌÁÇÉ: %s ÷ÅÒÓÉÑ: %d\n" + +#: readelf.c:5603 +msgid "version string table" +msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË ×ÅÒÓÉÉ" + +#: readelf.c:5607 +#, c-format +msgid "" +"\n" +"Version symbols section '%s' contains %d entries:\n" +msgstr "" +"\n" +"òÁÚÄÅÌ ÓÉÍ×ÏÌÏ× ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n" + +#: readelf.c:5610 +msgid " Addr: " +msgstr " áÄÒÅÓ: " + +#: readelf.c:5622 +msgid "version symbol data" +msgstr "ÄÁÎÎÙÅ ÓÉÍ×ÏÌÁ ×ÅÒÓÉÉ" + +#: readelf.c:5649 +msgid " 0 (*local*) " +msgstr " 0 (*ÌÏËÁÌØÎÙÊ*) " + +#: readelf.c:5653 +msgid " 1 (*global*) " +msgstr " 1 (*ÇÌÏÂÁÌØÎÙÊ*) " + +#: readelf.c:5689 readelf.c:6129 +msgid "version need" +msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ" + +#: readelf.c:5699 +msgid "version need aux (2)" +msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ aux (2)" + +#: readelf.c:5741 readelf.c:6192 +msgid "version def" +msgstr "ÏÐÉÓÁÎÉÅ ×ÅÒÓÉÉ" + +#: readelf.c:5760 readelf.c:6207 +msgid "version def aux" +msgstr "ÏÐÉÓÁÎÉÅ ×ÅÒÓÉÉ aux" + +#: readelf.c:5791 +msgid "" +"\n" +"No version information found in this file.\n" +msgstr "" +"\n" +"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅ ÎÁÊÄÅÎÁ ÉÎÆÏÒÍÁÃÉÑ Ï ×ÅÒÓÉÉ.\n" + +#: readelf.c:5923 +msgid "Unable to read in dynamic data\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÄÉÎÁÍÉÞÅÓËÉÅ ÄÁÎÎÙÅ\n" + +#: readelf.c:5967 +msgid "Unable to seek to start of dynamic information" +msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÏÔ ÎÁÞÁÌÁ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ" + +#: readelf.c:5973 +msgid "Failed to read in number of buckets\n" +msgstr "óÂÏÊ ÐÒÉ ÓÞÉÔÙ×ÁÎÉÉ ÞÉÓÌÁ ÏÂÌÁÓÔÅÊ ÐÁÍÑÔÉ\n" + +#: readelf.c:5979 +msgid "Failed to read in number of chains\n" +msgstr "óÂÏÊ ÐÒÉ ÓÞÉÔÙ×ÁÎÉÉ ÞÉÓÌÁ ÃÅÐÏÞÅË\n" + +#: readelf.c:5999 +msgid "" +"\n" +"Symbol table for image:\n" +msgstr "" +"\n" +"ôÁÂÌÉÃÁ ÓÉÍ×ÏÌÏ× ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ:\n" + +#: readelf.c:6001 +msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" +msgstr " ïÂÌÁÓÔÉ: úÎÁÞ òÁÚÍÅÒ ôÉÐ ó×ÑÚ Vis éÎÄÅËÓ ÉÍÅÎÉ\n" + +#: readelf.c:6003 +msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" +msgstr " ïÂÌÁÓÔÉ: úÎÁÞ òÁÚÍÅÒ ôÉÐ ó×ÑÚ Vis éÎÄÅËÓ ÉÍÅÎÉ\n" + +#: readelf.c:6048 +#, c-format +msgid "" +"\n" +"Symbol table '%s' contains %lu entries:\n" +msgstr "" +"\n" +"ôÁÂÌÉÃÁ ÓÉÍ×ÏÌÏ× '%s' ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n" + +#: readelf.c:6052 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr " þÉÓ: úÎÁÞ òÁÚÍ ôÉÐ ó×ÑÚ Vis éÎÄÅËÓ ÉÍÅÎÉ\n" + +#: readelf.c:6054 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr " þÉÓ: úÎÁÞ òÁÚÍ ôÉÐ ó×ÑÚ Vis éÎÄÅËÓ ÉÍÅÎÉ\n" + +#: readelf.c:6101 +msgid "version data" +msgstr "ÄÁÎÎÙÅ ×ÅÒÓÉÉ" + +#: readelf.c:6142 +msgid "version need aux (3)" +msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ aux (3)" + +#: readelf.c:6167 +msgid "bad dynamic symbol" +msgstr "ÎÅ×ÅÒÎÙÊ ÄÉÎÁÍÉÞÅÓËÉÊ ÓÉÍ×ÏÌ" + +#: readelf.c:6230 +msgid "" +"\n" +"Dynamic symbol information is not available for displaying symbols.\n" +msgstr "" +"\n" +"éÎÆÏÒÍÁÃÉÑ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÉÍ×ÏÌÁ ÎÅ ÄÏÓÔÕÐÎÁ ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ ÓÉÍ×ÏÌÏ×.\n" + +#: readelf.c:6242 +#, c-format +msgid "" +"\n" +"Histogram for bucket list length (total of %d buckets):\n" +msgstr "" +"\n" +"çÉÓÔÏÇÒÁÍÍÁ ÄÌÑ ÄÌÉÎÙ ÓÐÉÓËÁ ÏÂÌÁÓÔÅÊ ÐÁÍÑÔÉ (×ÓÅÇÏ %d ÏÂÌÁÓÔÅÊ):\n" + +#: readelf.c:6244 +#, c-format +msgid " Length Number %% of total Coverage\n" +msgstr " äÌÉÎÁ þÉÓÌÏ %% ÏÔ ×ÓÅÇÏ ïÈ×ÁÔ\n" + +#: readelf.c:6249 readelf.c:6268 readelf.c:9898 readelf.c:10090 +msgid "Out of memory" +msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ" + +#: readelf.c:6317 +#, c-format +msgid "" +"\n" +"Dynamic info segment at offset 0x%lx contains %d entries:\n" +msgstr "" +"\n" +"óÅÇÍÅÎÔ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n" + +#: readelf.c:6320 +msgid " Num: Name BoundTo Flags\n" +msgstr " þÉÓ: éÍÑ çÒÁÎÉÃÁ æÌÁÇÉ\n" + +#: readelf.c:6373 +#, c-format +msgid "" +"\n" +"Assembly dump of section %s\n" +msgstr "" +"\n" +"óÂÏÒÏÞÎÙÊ ÄÁÍÐ ÒÁÚÄÅÌÁ %s\n" + +#: readelf.c:6396 +#, c-format +msgid "" +"\n" +"Section '%s' has no data to dump.\n" +msgstr "" +"\n" +"òÁÚÄÅÌ '%s' ÎÅ ÓÏÄÅÒÖÉÔ ÄÁÎÎÙÈ ÄÌÑ ÄÁÍÐÁ.\n" + +#: readelf.c:6401 +#, c-format +msgid "" +"\n" +"Hex dump of section '%s':\n" +msgstr "" +"\n" +"Hex-ÄÁÍÐ ÒÁÚÄÅÌÁ '%s':\n" + +#: readelf.c:6406 +msgid "section data" +msgstr "ÄÁÎÎÙÅ ÒÁÚÄÅÌÁ" + +#: readelf.c:6555 +msgid "badly formed extended line op encountered!\n" +msgstr "×ÓÔÒÅÞÅÎ ÎÅ×ÅÒÎÏ ÓÆÏÒÍÉÒÏ×ÁÎÎÙÊ ÒÁÓÛÉÒÅÎÎÙÊ line-up!\n" + +#: readelf.c:6562 +#, c-format +msgid " Extended opcode %d: " +msgstr " òÁÓÛÉÒÅÎÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: " + +#: readelf.c:6567 +msgid "" +"End of Sequence\n" +"\n" +msgstr "" +"ëÏÎÅà ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ\n" +"\n" + +#: readelf.c:6573 +#, c-format +msgid "set Address to 0x%lx\n" +msgstr "ÕÓÔÁÎÏ×ËÁ ÁÄÒÅÓÁ × 0x%lx\n" + +#: readelf.c:6578 +msgid " define new File Table entry\n" +msgstr " ÏÐÒÅÄÅÌÅÎÉÅ ÎÏ×ÏÇÏ ÐÕÎËÔÁ ôÁÂÌÉÃÙ ÆÁÊÌÏ×\n" + +#: readelf.c:6579 readelf.c:6726 +msgid " Entry\tDir\tTime\tSize\tName\n" +msgstr " ðÕÎËÔ\tëÁÔÁÌÏÇ\t÷ÒÅÍÑ\tòÁÚÍÅÒ\téÍÑ\n" + +#: readelf.c:6581 +#, c-format +msgid " %d\t" +msgstr " %d\t" + +#: readelf.c:6584 readelf.c:6586 readelf.c:6588 readelf.c:6738 readelf.c:6740 +#: readelf.c:6742 +#, c-format +msgid "%lu\t" +msgstr "%lu\t" + +#: readelf.c:6589 +#, c-format +msgid "" +"%s\n" +"\n" +msgstr "" +"%s\n" +"\n" + +#: readelf.c:6593 +#, c-format +msgid "UNKNOWN: length %d\n" +msgstr "îåéú÷åóôîùê: ÄÌÉÎÁ %d\n" + +#: readelf.c:6621 +#, c-format +msgid "" +"\n" +"Dump of debug contents of section %s:\n" +"\n" +msgstr "" +"\n" +"äÁÍÐ ÄÌÑ ÏÔÌÁÄËÉ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ %s:\n" +"\n" + +#: readelf.c:6649 +msgid "The line info appears to be corrupt - the section is too small\n" +msgstr "ðÏÈÏÖÅ, ÞÔÏ ÓÔÒÏËÁ ÉÎÆÏ ÐÏ×ÒÅÖÄÅÎÁ - ÒÁÚÄÅÌ ÓÌÉÛËÏÍ ÍÁÌ\n" + +#: readelf.c:6658 +msgid "Only DWARF version 2 and 3 line info is currently supported.\n" +msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ÓÔÒÏËÉ ÉÎÆÏ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n" + +#: readelf.c:6679 +#, c-format +msgid " Length: %ld\n" +msgstr " äÌÉÎÁ: %ld\n" + +#: readelf.c:6680 +#, c-format +msgid " DWARF Version: %d\n" +msgstr " DWARF ×ÅÒÓÉÑ: %d\n" + +#: readelf.c:6681 +#, c-format +msgid " Prologue Length: %d\n" +msgstr " äÌÉÎÁ ÐÒÏÌÏÇÁ: %d\n" + +#: readelf.c:6682 +#, c-format +msgid " Minimum Instruction Length: %d\n" +msgstr " íÉÎÉÍ. ÄÌÉÎÁ ÉÎÓÔÒÕËÃÉÉ: %d\n" + +#: readelf.c:6683 +#, c-format +msgid " Initial value of 'is_stmt': %d\n" +msgstr " îÁÞ. ÚÎÁÞÅÎÉÅ 'is_stmt': %d\n" + +#: readelf.c:6684 +#, c-format +msgid " Line Base: %d\n" +msgstr " ïÓÎÏ×ÁÎÉÅ ÓÔÒÏËÉ: %d\n" + +#: readelf.c:6685 +#, c-format +msgid " Line Range: %d\n" +msgstr " äÉÁÐÁÚÏÎ ÓÔÒÏËÉ: %d\n" + +#: readelf.c:6686 +#, c-format +msgid " Opcode Base: %d\n" +msgstr " ïÓÎÏ×ÁÎÉÅ ËÏÄÁ ÏÐÅÒÁÃÉÉ: %d\n" + +#: readelf.c:6695 +msgid "" +"\n" +" Opcodes:\n" +msgstr "" +"\n" +" ëÏÄÙ ÏÐÅÒÁÃÉÊ:\n" + +#: readelf.c:6698 +#, c-format +msgid " Opcode %d has %d args\n" +msgstr " ëÏÄ ÏÐÅÒÁÃÉÉ %d ÓÏÄÅÒÖÉÔ %d ÁÒÇÕÍÅÎÔÏ×\n" + +#: readelf.c:6704 +msgid "" +"\n" +" The Directory Table is empty.\n" +msgstr "" +"\n" +" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ× ÐÕÓÔÁ.\n" + +#: readelf.c:6707 +msgid "" +"\n" +" The Directory Table:\n" +msgstr "" +"\n" +" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ×:\n" + +#: readelf.c:6711 +#, c-format +msgid " %s\n" +msgstr " %s\n" + +#: readelf.c:6722 +msgid "" +"\n" +" The File Name Table is empty.\n" +msgstr "" +"\n" +" ôÁÂÌÉÃÁ ÉÍÅÎ ÆÁÊÌÏ× ÐÕÓÔÁ.\n" + +#: readelf.c:6725 +msgid "" +"\n" +" The File Name Table:\n" +msgstr "" +"\n" +" ôÁÂÌÉÃÁ ÉÍÅÎ ÆÁÊÌÏ×:\n" + +#: readelf.c:6733 +#, c-format +msgid " %d\t" +msgstr " %d\t" + +#: readelf.c:6744 +#, c-format +msgid "%s\n" +msgstr "%s\n" + +#. Now display the statements. +#: readelf.c:6752 +msgid "" +"\n" +" Line Number Statements:\n" +msgstr "" +"\n" +" ïÐÅÒÁÔÏÒÙ ÎÏÍÅÒÁ ÓÔÒÏËÉ:\n" + +#: readelf.c:6768 +#, c-format +msgid " Special opcode %d: advance Address by %d to 0x%lx" +msgstr " óÐÅÃÉÁÌØÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: ÐÒÏÄ×ÉÖÅÎÉÅ ÁÄÒÅÓÁ ÎÁ %d × 0x%lx" + +#: readelf.c:6772 +#, c-format +msgid " and Line by %d to %d\n" +msgstr " É ÓÔÒÏËÉ ÎÁ %d × %d\n" + +#: readelf.c:6783 +msgid " Copy\n" +msgstr " ëÏÐÉÑ\n" + +#: readelf.c:6790 +#, c-format +msgid " Advance PC by %d to %lx\n" +msgstr " ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ %d × %lx\n" + +#: readelf.c:6798 +#, c-format +msgid " Advance Line by %d to %d\n" +msgstr " ðÒÏÄ×ÉÖÅÎÉÅ ÓÔÒÏËÉ ÎÁ %d × %d\n" + +#: readelf.c:6805 +#, c-format +msgid " Set File Name to entry %d in the File Name Table\n" +msgstr " õÓÔÁÎÏ×ËÁ ÉÍÅÎÉ ÆÁÊÌÁ × ÐÕÎËÔ %d × ÔÁÂÌÉÃÅ ÉÍÅÎ ÆÁÊÌÏ×\n" + +#: readelf.c:6813 +#, c-format +msgid " Set column to %d\n" +msgstr " õÓÔÁÎÏ×ËÁ ÓÔÏÌÂÃÁ × %d\n" + +#: readelf.c:6820 +#, c-format +msgid " Set is_stmt to %d\n" +msgstr " õÓÔÁÎÏ×ËÁ is_stmt × %d\n" + +#: readelf.c:6825 +msgid " Set basic block\n" +msgstr " õÓÔÁÎÏ×ËÁ ÂÁÚÏ×ÏÇÏ ÂÌÏËÁ\n" + +#: readelf.c:6833 +#, c-format +msgid " Advance PC by constant %d to 0x%lx\n" +msgstr " ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ÐÏÓÔÏÑÎÎÕÀ %d × 0x%lx\n" + +#: readelf.c:6841 +#, c-format +msgid " Advance PC by fixed size amount %d to 0x%lx\n" +msgstr " ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ×ÅÌÉÞÉÎÕ ÆÉËÓÉÒÏ×ÁÎÎÏÇÏ ÒÁÚÍÅÒÁ %d × 0x%lx\n" + +#: readelf.c:6846 +msgid " Set prologue_end to true\n" +msgstr " õÓÔÁÎÏ×ËÁ prologue_end × `ÉÓÔÉÎÁ'\n" + +#: readelf.c:6850 +msgid " Set epilogue_begin to true\n" +msgstr " õÓÔÁÎÏ×ËÁ epilogue_begin × `ÉÓÔÉÎÁ'\n" + +#: readelf.c:6856 +#, c-format +msgid " Set ISA to %d\n" +msgstr " õÓÔÁÎÏ×ËÁ ISA × %d\n" + +#: readelf.c:6860 +#, c-format +msgid " Unknown opcode %d with operands: " +msgstr " îÅÉÚ×ÅÓÔÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d Ó ÏÐÅÒÁÎÄÁÍÉ: " + +#: readelf.c:6891 readelf.c:7371 readelf.c:7443 +#, c-format +msgid "" +"Contents of the %s section:\n" +"\n" +msgstr "" +"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n" +"\n" + +#: readelf.c:6931 +msgid "Only DWARF 2 and 3 pubnames are currently supported\n" +msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ pubname ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3\n" + +#: readelf.c:6938 +#, c-format +msgid " Length: %ld\n" +msgstr " äÌÉÎÁ: %ld\n" + +#: readelf.c:6940 +#, c-format +msgid " Version: %d\n" +msgstr " ÷ÅÒÓÉÑ: %d\n" + +#: readelf.c:6942 +#, c-format +msgid " Offset into .debug_info section: %ld\n" +msgstr " óÍÅÝÅÎÉÅ × ÒÁÚÄÅÌ .debug_info: %ld\n" + +#: readelf.c:6944 +#, c-format +msgid " Size of area in .debug_info section: %ld\n" +msgstr " òÁÚÍ. ÏÂÌÁÓÔÉ × ÒÁÚÄÅÌÅ .debug_info: %ld\n" + +#: readelf.c:6947 +msgid "" +"\n" +" Offset\tName\n" +msgstr "" +"\n" +" óÍÅÝÅÎÉÅ\téÍÑ\n" + +#: readelf.c:7042 +#, c-format +msgid "Unknown TAG value: %lx" +msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ TAG: %lx" + +#: readelf.c:7156 +#, c-format +msgid "Unknown AT value: %lx" +msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ AT: %lx " + +#: readelf.c:7193 +#, c-format +msgid "Unknown FORM value: %lx" +msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ FORM: %lx" + +#: readelf.c:7392 +#, c-format +msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n" +msgstr " DW_MACINFO_start_file - ÎÏÍÅÒ_ÓÔÒÏËÉ: %d ÎÏÍÅÒ_ÆÁÊÌÁ: %d\n" + +#: readelf.c:7397 +msgid " DW_MACINFO_end_file\n" +msgstr " DW_MACINFO_end_file\n" + +#: readelf.c:7405 +#, c-format +msgid " DW_MACINFO_define - lineno : %d macro : %s\n" +msgstr " DW_MACINFO_define - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n" + +#: readelf.c:7413 +#, c-format +msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" +msgstr " DW_MACINFO_undef - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n" + +#: readelf.c:7424 +#, c-format +msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" +msgstr " DW_MACINFO_vendor_ext - ËÏÎÓÔÁÎÔÁ : %d ÓÔÒÏËÁ : %s\n" + +#: readelf.c:7452 +msgid " Number TAG\n" +msgstr " þÉÓÌÏ TAG\n" + +#: readelf.c:7458 +#, c-format +msgid " %ld %s [%s]\n" +msgstr " %ld %s [%s]\n" + +#: readelf.c:7461 +msgid "has children" +msgstr "ÉÍÅÅÔ ÐÏÔÏÍËÏ×" + +#: readelf.c:7461 +msgid "no children" +msgstr "ÎÅÔ ÐÏÔÏÍËÏ×" + +#: readelf.c:7465 +#, c-format +msgid " %-18s %s\n" +msgstr " %-18s %s\n" + +#: readelf.c:7486 +#, c-format +msgid " %lu byte block: " +msgstr " %lu-ÂÁÊÔÏ×ÙÊ ÂÌÏË: " + +#: readelf.c:7814 +msgid "(User defined location op)" +msgstr "(ïÐÒÅÄÅÌÅÎÎÏÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)" + +#: readelf.c:7816 +msgid "(Unknown location op)" +msgstr "(îÅÉÚ×ÅÓÔÎÏÅ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)" + +#: readelf.c:7855 +msgid "debug_loc section data" +msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_loc" + +#: readelf.c:7887 +msgid "" +"\n" +"The .debug_loc section is empty.\n" +msgstr "" +"\n" +"òÁÚÄÅÌ .debug_loc ÐÕÓÔ.\n" + +#: readelf.c:7891 +msgid "" +"Contents of the .debug_loc section:\n" +"\n" +msgstr "" +"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ .debug_loc:\n" +"\n" + +#: readelf.c:7892 +msgid "" +"\n" +" Offset Begin End Expression\n" +msgstr "" +"\n" +" óÍÅÝ. îÁÞÁÌÏ ëÏÎÅà òÁÓÛÉÒÅÎÉÅ\n" + +#: readelf.c:7968 +msgid "debug_str section data" +msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_str" + +#: readelf.c:7987 +msgid "" +msgstr "<ÎÅÔ ÒÁÚÄÅÌÁ .debug_str>" + +#: readelf.c:7990 +msgid "" +msgstr "<ÓÍÅÝÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ>" + +#: readelf.c:8009 +msgid "" +"\n" +"The .debug_str section is empty.\n" +msgstr "" +"\n" +"òÁÚÄÅÌ .debug_str ÐÕÓÔ.\n" + +#: readelf.c:8013 +msgid "" +"Contents of the .debug_str section:\n" +"\n" +msgstr "" +"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ .debug_str:\n" +"\n" + +#: readelf.c:8088 +msgid "Internal error: DWARF version is not 2 or 3.\n" +msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÏÍÅÒ ×ÅÒÓÉÉ DWARF ÎÅ 2 ÉÌÉ 3.\n" + +#: readelf.c:8203 +#, c-format +msgid " (indirect string, offset: 0x%lx): %s" +msgstr " (ËÏÓ×ÅÎÎÁÑ ÓÔÒÏËÁ, ÓÍÅÝÅÎÉÅ: 0x%lx): %s" + +#: readelf.c:8212 +#, c-format +msgid "Unrecognized form: %d\n" +msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÆÏÒÍÁ: %d\n" + +#: readelf.c:8226 +msgid "(not inlined)" +msgstr "(ÎÅ ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)" + +#: readelf.c:8229 +msgid "(inlined)" +msgstr "(×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)" + +#: readelf.c:8232 +msgid "(declared as inline but ignored)" +msgstr "(ÏÂßÑ×ÌÅÎ ËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÎÏ ÐÒÏÐÕÝÅÎ)" + +#: readelf.c:8235 +msgid "(declared as inline and inlined)" +msgstr "(ÏÂßÑ×ÌÅÎ ËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÔÁË É ÅÓÔØ)" + +#: readelf.c:8238 +#, c-format +msgid " (Unknown inline attribute value: %lx)" +msgstr " (îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ ×ÎÕÔÒÉÓÔÒÏÞÎÏÇÏ ÁÔÒÉÂÕÔÁ: %lx)" + +#: readelf.c:8419 readelf.c:8646 +#, c-format +msgid "" +"The section %s contains:\n" +"\n" +msgstr "" +"òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n" +"\n" + +#: readelf.c:8535 +#, c-format +msgid " Compilation Unit @ %lx:\n" +msgstr " åÄÉÎÉÃÁ ËÏÍÐÉÌÑÃÉÉ @ %lx:\n" + +#: readelf.c:8536 +#, c-format +msgid " Length: %ld\n" +msgstr " äÌÉÎÁ: %ld\n" + +#: readelf.c:8537 +#, c-format +msgid " Version: %d\n" +msgstr " ÷ÅÒÓÉÑ: %d\n" + +#: readelf.c:8538 +#, c-format +msgid " Abbrev Offset: %ld\n" +msgstr " óÍÅÝ. ÁÂÂÒÅ×: %ld\n" + +#: readelf.c:8539 +#, c-format +msgid " Pointer Size: %d\n" +msgstr " òÁÚÍ. ÕËÁÚÁÔ: %d\n" + +#: readelf.c:8543 +msgid "Only version 2 and 3 DWARF debug information is currently supported.\n" +msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÏÔÌÁÄÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n" + +#: readelf.c:8563 +msgid "Unable to locate .debug_abbrev section!\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÒÁÚÄÅÌÁ .debug_abbrev!\n" + +#: readelf.c:8569 +msgid "debug_abbrev section data" +msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_abbrev" + +#: readelf.c:8606 +#, c-format +msgid "Unable to locate entry %lu in the abbreviation table\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÐÕÎËÔÁ %lu × ÔÁÂÌÉÃÅ ÁÂÂÒÅ×ÉÁÃÉÉ\n" + +#: readelf.c:8611 +#, c-format +msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" +msgstr " <%d><%lx>: îÏÍÅÒ ÁÂÂÒÅ×: %lu (%s)\n" + +#: readelf.c:8691 +msgid "Only DWARF 2 and 3 aranges are currently supported.\n" +msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ aganges ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n" + +#: readelf.c:8695 +#, c-format +msgid " Length: %ld\n" +msgstr " äÌÉÎÁ: %ld\n" + +#: readelf.c:8696 +#, c-format +msgid " Version: %d\n" +msgstr " ÷ÅÒÓÉÑ: %d\n" + +#: readelf.c:8697 +#, c-format +msgid " Offset into .debug_info: %lx\n" +msgstr " óÍÅÝÅÎÉÅ × .debug_info: %lx\n" + +#: readelf.c:8698 +#, c-format +msgid " Pointer Size: %d\n" +msgstr " òÁÚÍ. ÕËÁÚÁÔ: %d\n" + +#: readelf.c:8699 +#, c-format +msgid " Segment Size: %d\n" +msgstr " òÁÚÍ. ÓÅÇÍ.: %d\n" + +#: readelf.c:8701 +msgid "" +"\n" +" Address Length\n" +msgstr "" +"\n" +" áÄÒÅÓ äÌÉÎÁ\n" + +#: readelf.c:8903 +#, c-format +msgid "The section %s contains:\n" +msgstr "òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n" + +#: readelf.c:9538 +#, c-format +msgid "Displaying the debug contents of section %s is not yet supported.\n" +msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÒÁÚÄÅÌÁ %s ÅÝÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ.\n" + +#: readelf.c:9634 +#, c-format +msgid "" +"\n" +"Section '%s' has no debugging data.\n" +msgstr "" +"\n" +"òÁÚÄÅÌ '%s' ÎÅ ÓÏÄÅÒÖÉÔ ÏÔÌÁÄÏÞÎÙÈ ÄÁÎÎÙÈ.\n" + +#: readelf.c:9639 readelf.c:9701 +msgid "debug section data" +msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ ÏÔÌÁÄËÉ" + +#: readelf.c:9655 +#, c-format +msgid "Unrecognized debug section: %s\n" +msgstr "îÅÒÁÓÐÏÚÎÁÎÎÙÊ ÒÁÚÄÅÌ ÏÔÌÁÄËÉ: %s\n" + +#: readelf.c:9729 +msgid "Some sections were not dumped because they do not exist!\n" +msgstr "äÌÑ ÎÅËÏÔÏÒÙÈ ÒÁÚÄÅÌÏ× ÎÅ ÂÙÌ ×ÙÐÏÌÎÅÎ ÄÁÍÐ, ÐÏÔÏÍÕ ÞÔÏ ÏÎÉ ÎÅ ÓÕÝÅÓÔ×ÕÀÔ!\n" + +#: readelf.c:9806 readelf.c:10170 +msgid "liblist" +msgstr "liblist" + +#: readelf.c:9891 +msgid "options" +msgstr "ÏÐÃÉÉ" + +#: readelf.c:9922 +#, c-format +msgid "" +"\n" +"Section '%s' contains %d entries:\n" +msgstr "" +"\n" +"òÁÚÄÅÌ '%s' ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n" + +#: readelf.c:10083 +msgid "conflict list found without a dynamic symbol table" +msgstr "ÓÐÉÓÏË ËÏÎÆÌÉËÔÏ× ÎÁÊÄÅÎ ÂÅÚ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×" + +#: readelf.c:10101 readelf.c:10117 +msgid "conflict" +msgstr "ËÏÎÆÌÉËÔ" + +#: readelf.c:10127 +#, c-format +msgid "" +"\n" +"Section '.conflict' contains %ld entries:\n" +msgstr "" +"\n" +"òÁÚÄÅÌ '.conflict' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n" + +#: readelf.c:10129 +msgid " Num: Index Value Name" +msgstr " îÏÍ: éÎÄÅËÓ úÎÁÞ. éÍÑ" + +#: readelf.c:10178 +msgid "liblist string table" +msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË liblist" + +#: readelf.c:10187 +#, c-format +msgid "" +"\n" +"Library list section '%s' contains %lu entries:\n" +msgstr "" +"\n" +"òÁÚÄÅÌ ÓÐÉÓËÁ ÂÉÂÌÉÏÔÅË '%s' ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n" + +#: readelf.c:10236 +msgid "NT_PRSTATUS (prstatus structure)" +msgstr "NT_PRSTATUS (ÓÔÒÕËÔÕÒÁ prstatus)" + +#: readelf.c:10237 +msgid "NT_FPREGSET (floating point registers)" +msgstr "NT_FPREGSET (ÒÅÇÉÓÔÒÙ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ)" + +#: readelf.c:10238 +msgid "NT_PRPSINFO (prpsinfo structure)" +msgstr "NT_PRPSINFO (ÓÔÒÕËÔÕÒÁ prpsinfo)" + +#: readelf.c:10239 +msgid "NT_TASKSTRUCT (task structure)" +msgstr "NT_TASKSTRUCT (ÓÔÒÕËÔÕÒÁ task)" + +#: readelf.c:10240 +msgid "NT_PRXFPREG (user_xfpregs structure)" +msgstr "NT_PRXFPREG (ÓÔÒÕËÔÕÒÁ user_xfpregs)" + +#: readelf.c:10241 +msgid "NT_PSTATUS (pstatus structure)" +msgstr "NT_PSTATUS (ÓÔÒÕËÔÕÒÁ pstatus)" + +#: readelf.c:10242 +msgid "NT_FPREGS (floating point registers)" +msgstr "NT_FPREGS (ÒÅÇÉÓÔÒÙ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ)" + +#: readelf.c:10243 +msgid "NT_PSINFO (psinfo structure)" +msgstr "NT_PSINFO (ÓÔÒÕËÔÕÒÁ psinfo)" + +#: readelf.c:10244 +msgid "NT_LWPSTATUS (lwpstatus_t structure)" +msgstr "NT_LWPSTATUS (ÓÔÒÕËÔÕÒÁ lwpstatus_t)" + +#: readelf.c:10245 +msgid "NT_LWPSINFO (lwpsinfo_t structure)" +msgstr "NT_LWPSINFO (ÓÔÒÕËÔÕÒÁ lwpsinfo_t)" + +#: readelf.c:10246 +msgid "NT_WIN32PSTATUS (win32_pstatus structure)" +msgstr "NT_WIN32PSTATUS (ÓÔÒÕËÔÕÒÁ win32_pstatus)" + +#: readelf.c:10248 readelf.c:10272 +#, c-format +msgid "Unknown note type: (0x%08x)" +msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ËÏÍÍÅÎÔÁÒÉÑ: (0x%08x)" + +#. NetBSD core "procinfo" structure. +#: readelf.c:10262 +msgid "NetBSD procinfo structure" +msgstr "óÔÒÕËÔÕÒÁ procinfo NetBSD" + +#: readelf.c:10289 readelf.c:10303 +msgid "PT_GETREGS (reg structure)" +msgstr "PT_GETREGS (ÓÔÒÕËÔÕÒÁ reg)" + +#: readelf.c:10291 readelf.c:10305 +msgid "PT_GETFPREGS (fpreg structure)" +msgstr "PT_GETFPREGS (ÓÔÒÕËÔÕÒÁ fpreg)" + +#: readelf.c:10311 +#, c-format +msgid "PT_FIRSTMACH+%d" +msgstr "PT_FIRSTMACH+%d" + +#: readelf.c:10365 +msgid "notes" +msgstr "ËÏÍÍÅÎÔÁÒÉÉ" + +#: readelf.c:10371 +#, c-format +msgid "" +"\n" +"Notes at offset 0x%08lx with length 0x%08lx:\n" +msgstr "" +"\n" +"ëÏÍÍÅÎÔÁÒÉÉ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%08lx ÄÌÉÎÏÊ 0x%08lx:\n" + +#: readelf.c:10373 +msgid " Owner\t\tData size\tDescription\n" +msgstr " ÷ÌÁÄÅÌÅÃ\t\tòÁÚÍÅÒ ÄÁÎÎÙÈ\tïÐÉÓÁÎÉÅ\n" + +#: readelf.c:10392 +#, c-format +msgid "corrupt note found at offset %x into core notes\n" +msgstr "ÎÁÊÄÅÎ ÐÏ×ÒÅÖÄÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ ÓÏ ÓÍÅÝÅÎÉÅÍ %x × ÈÒÁÎÉÌÉÝÅ ËÏÍÍÅÎÔÁÒÉÅ×\n" + +#: readelf.c:10394 +#, c-format +msgid " type: %x, namesize: %08lx, descsize: %08lx\n" +msgstr " ÔÉÐ: %x, ÒÁÚÍ_ÉÍÅÎÉ: %08lx, ÒÁÚÍ_ÏÐÉÓ: %08lx\n" + +#: readelf.c:10476 +msgid "No note segments present in the core file.\n" +msgstr "÷ ÆÁÊÌÅ ÓÏÄÅÒÖÉÍÏÇÏ ÏÔÓÕÔÓÔ×ÕÀÔ ÓÅÇÍÅÎÔÙ ËÏÍÍÅÎÔÁÒÉÅ×.\n" + +#: readelf.c:10560 +msgid "" +"This instance of readelf has been built without support for a\n" +"64 bit data type and so it cannot read 64 bit ELF files.\n" +msgstr "" +"üÔÁ ËÏÐÉÑ readelf ÂÙÌÁ ÓÏÂÒÁÎÁ ÂÅÚ ÐÏÄÄÅÒÖËÉ 64-ÂÉÔÎÏÇÏ ÔÉÐÁ\n" +"ÄÁÎÎÙÈ, É ÐÏÜÔÏÍÕ ÏÎÁ ÎÅ ÍÏÖÅÔ ÞÉÔÁÔØ 64-ÂÉÔÎÙÅ ÆÁÊÌÙ ELF.\n" + +#: readelf.c:10606 +#, c-format +msgid "Cannot stat input file %s.\n" +msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat ÄÌÑ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ %s.\n" + +#: readelf.c:10613 +#, c-format +msgid "Input file %s not found.\n" +msgstr "÷ÈÏÄÎÏÊ ÆÁÊÌ %s ÎÅ ÎÁÊÄÅÎ.\n" + +#: readelf.c:10619 +#, c-format +msgid "%s: Failed to read file header\n" +msgstr "%s: óÂÏÊ ÐÒÉ ÞÔÅÎÉÉ ÚÁÇÏÌÏ×ËÁ ÆÁÊÌÁ\n" + +#: readelf.c:10633 +#, c-format +msgid "" +"\n" +"File: %s\n" +msgstr "" +"\n" +"æÁÊÌ: %s\n" + +#: rename.c:132 +#, c-format +msgid "%s: cannot set time: %s" +msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ: %s" + +#. We have to clean up here. +#: rename.c:171 rename.c:204 +#, c-format +msgid "%s: rename: %s" +msgstr "%s: ÐÅÒÅÉÍÅÎÏ×ÁÔØ: %s" + +#: rename.c:212 +#, c-format +msgid "%s: simple_copy: %s" +msgstr "%s: ÐÒÏÓÔÏ_ÓËÏÐÉÒÏ×ÁÔØ: %s" + +#: resbin.c:134 +#, c-format +msgid "%s: not enough binary data" +msgstr "%s: ÎÅÄÏÓÔÁÔÏÞÎÏ Ä×ÏÉÞÎÙÈ ÄÁÎÎÙÈ" + +#: resbin.c:153 +msgid "null terminated unicode string" +msgstr "ÓÔÒÏËÁ unicode, ÚÁ×ÅÒÛÅÎÎÁÑ `0'" + +#: resbin.c:183 resbin.c:189 +msgid "resource ID" +msgstr "ID ÒÅÓÕÒÓÁ" + +#: resbin.c:233 +msgid "cursor" +msgstr "ÕËÁÚÁÔÅÌØ" + +#: resbin.c:267 resbin.c:274 +msgid "menu header" +msgstr "ÚÁÇÏÌÏ×ÏË menu" + +#: resbin.c:284 +msgid "menuex header" +msgstr "ÚÁÇÏÌÏ×ÏË menuex" + +#: resbin.c:288 +msgid "menuex offset" +msgstr "ÓÍÅÝÅÎÉÅ menuex" + +#: resbin.c:295 +#, c-format +msgid "unsupported menu version %d" +msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÁÑ ×ÅÒÓÉÑ menu %d" + +#: resbin.c:323 resbin.c:338 resbin.c:404 +msgid "menuitem header" +msgstr "ÚÁÇÏÌÏ×ÏË menuitem" + +#: resbin.c:434 +msgid "menuitem" +msgstr "menuitem" + +#: resbin.c:475 resbin.c:503 +msgid "dialog header" +msgstr "ÚÁÇÏÌÏ×ÏË ÄÉÁÌÏÇÁ" + +#: resbin.c:493 +#, c-format +msgid "unexpected DIALOGEX version %d" +msgstr "ÎÅÐÒÅÄ×ÉÄÅÎÎÁÑ ×ÅÒÓÉÑ DIALOGEX %d" + +#: resbin.c:538 +msgid "dialog font point size" +msgstr "ÒÁÚÍÅÒ × ÐÕÎËÔÁÈ ÛÒÉÆÔÁ ÄÉÁÌÏÇÁ" + +#: resbin.c:546 +msgid "dialogex font information" +msgstr "ÉÎÆÏÒÍÁÃÉÑ Ï ÛÒÉÆÔÅ dialogex" + +#: resbin.c:572 resbin.c:590 +msgid "dialog control" +msgstr "ÕÐÒÁ×ÌÅÎÉÅ ÄÉÁÌÏÇÏÍ" + +#: resbin.c:582 +msgid "dialogex control" +msgstr "ÕÐÒÁ×ÌÅÎÉÅ dialogex" + +#: resbin.c:611 +msgid "dialog control end" +msgstr "ËÏÎÅà ÕÐÒÁ×ÌÅÎÉÑ ÄÉÁÌÏÇÏÍ" + +#: resbin.c:623 +msgid "dialog control data" +msgstr "ÄÁÎÎÙÅ ÕÐÒÁ×ÌÅÎÉÑ ÄÉÁÌÏÇÏÍ" + +#: resbin.c:666 +msgid "stringtable string length" +msgstr "ÄÌÉÎÁ ÓÔÒÏËÉ stringtable" + +#: resbin.c:676 +msgid "stringtable string" +msgstr "ÓÔÒÏËÁ stringtable" + +#: resbin.c:709 +msgid "fontdir header" +msgstr "ÚÁÇÏÌÏ×ÏË fontdir" + +#: resbin.c:722 +msgid "fontdir" +msgstr "fontdir" + +#: resbin.c:738 +msgid "fontdir device name" +msgstr "ÉÍÑ ÕÓÔÒÏÊÓÔ×Á fontdir" + +#: resbin.c:744 +msgid "fontdir face name" +msgstr "ÉÍÑ ÇÁÒÎÉÔÕÒÙ fontdir" + +#: resbin.c:787 +msgid "accelerator" +msgstr "ÁËÓÅÌÅÒÁÔÏÒ" + +#: resbin.c:851 +msgid "group cursor header" +msgstr "ÚÁÇÏÌÏ×ÏË ÕËÁÚÁÔÅÌÑ ÇÒÕÐÐÙ" + +#: resbin.c:855 +#, c-format +msgid "unexpected group cursor type %d" +msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ÕËÁÚÁÔÅÌÑ ÇÒÕÐÐÙ %d" + +#: resbin.c:870 +msgid "group cursor" +msgstr "ÕËÁÚÁÔÅÌØ ÇÒÕÐÐÙ" + +#: resbin.c:909 +msgid "group icon header" +msgstr "ÚÁÇÏÌÏ×ÏË ÚÎÁÞËÁ ÇÒÕÐÐÙ" + +#: resbin.c:913 +#, c-format +msgid "unexpected group icon type %d" +msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ÚÎÁÞËÁ ÇÒÕÐÐÙ %d" + +#: resbin.c:928 +msgid "group icon" +msgstr "ÚÎÁÞÏË ÇÒÕÐÐÙ" + +#: resbin.c:999 resbin.c:1218 +msgid "unexpected version string" +msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÓÔÒÏËÁ ×ÅÒÓÉÉ" + +#: resbin.c:1033 +#, c-format +msgid "version length %d does not match resource length %lu" +msgstr "ÄÌÉÎÁ ×ÅÒÓÉÉ %d ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÄÌÉÎÅ ÒÅÓÕÒÓÁ %lu" + +#: resbin.c:1037 +#, c-format +msgid "unexpected version type %d" +msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ×ÅÒÓÉÉ %d" + +#: resbin.c:1049 +#, c-format +msgid "unexpected fixed version information length %d" +msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÄÌÉÎÁ ÉÎÆÏÒÍÁÃÉÉ Ï ÆÉËÓÉÒÏ×ÁÎÎÏÊ ×ÅÒÓÉÉ %d" + +#: resbin.c:1052 +msgid "fixed version info" +msgstr "ÉÎÆÏÒÍÁÃÉÑ Ï ÆÉËÓÉÒÏ×ÁÎÎÏÊ ×ÅÒÓÉÉ" + +#: resbin.c:1056 +#, c-format +msgid "unexpected fixed version signature %lu" +msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÓÉÇÎÁÔÕÒÁ ÆÉËÓÉÒÏ×ÁÎÎÏÊ ×ÅÒÓÉÉ %lu" + +#: resbin.c:1060 +#, c-format +msgid "unexpected fixed version info version %lu" +msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ×ÅÒÓÉÑ ÉÎÆÏÒÍÁÃÉÉ Ï ÆÉËÓÉÒÏ×ÁÎÎÏÊ ×ÅÒÓÉÉ %lu" + +#: resbin.c:1089 +msgid "version var info" +msgstr "ÉÎÆÏÒÍÁÃÉÑ Ï ÐÅÒÅÍÅÎÎÏÊ ×ÅÒÓÉÉ" + +#: resbin.c:1106 +#, c-format +msgid "unexpected stringfileinfo value length %d" +msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÄÌÉÎÁ ÚÎÁÞÅÎÉÑ stringfileinfo %d" + +#: resbin.c:1116 +#, c-format +msgid "unexpected version stringtable value length %d" +msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÄÌÉÎÁ ÚÎÁÞÅÎÉÑ ×ÅÒÓÉÉ stringtable %d" + +#: resbin.c:1150 +#, c-format +msgid "unexpected version string length %d != %d + %d" +msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÄÌÉÎÁ ÓÔÒÏËÉ ×ÅÒÓÉÉ %d != %d + %d" + +#: resbin.c:1161 +#, c-format +msgid "unexpected version string length %d < %d" +msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÄÌÉÎÁ ÓÔÒÏËÉ ×ÅÒÓÉÉ %d < %d" + +#: resbin.c:1178 +#, c-format +msgid "unexpected varfileinfo value length %d" +msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÄÌÉÎÁ ÚÎÁÞÅÎÉÑ varfileinfo %d" + +#: resbin.c:1197 +msgid "version varfileinfo" +msgstr "×ÅÒÓÉÑ varfileinfo" + +#: resbin.c:1212 +#, c-format +msgid "unexpected version value length %d" +msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÄÌÉÎÁ ÚÎÁÞÅÎÉÑ ×ÅÒÓÉÉ %d" + +#: rescoff.c:128 +msgid "filename required for COFF input" +msgstr "ÔÒÅÂÕÅÔÓÑ ÉÍÑ ÄÌÑ ×ÈÏÄÎÏÇÏ COFF" + +#: rescoff.c:145 +#, c-format +msgid "%s: no resource section" +msgstr "%s: ÎÅÔ ÒÁÚÄÅÌÁ ÒÅÓÕÒÓÏ×" + +#: rescoff.c:152 +msgid "can't read resource section" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ÒÁÚÄÅÌ ÒÅÓÕÒÓÏ×" + +#: rescoff.c:178 +#, c-format +msgid "%s: %s: address out of bounds" +msgstr "%s: %s: ÁÄÒÅÓ ÚÁ ÐÒÅÄÅÌÁÍÉ ÇÒÁÎÉÃ" + +#: rescoff.c:197 +msgid "directory" +msgstr "ËÁÔÁÌÏÇ" + +#: rescoff.c:225 +msgid "named directory entry" +msgstr "ÉÍÅÎÏ×ÁÎÎÙÊ ÜÌÅÍÅÎÔ ËÁÔÁÌÏÇÁ" + +#: rescoff.c:234 +msgid "directory entry name" +msgstr "ÉÍÑ ÜÌÅÍÅÎÔÁ ËÁÔÁÌÏÇÁ" + +#: rescoff.c:254 +msgid "named subdirectory" +msgstr "ÉÍÅÎÏ×ÁÎÎÙÊ ÐÏÄËÁÔÁÌÏÇ" + +#: rescoff.c:262 +msgid "named resource" +msgstr "ÉÍÅÎÏ×ÁÎÎÙÊ ÒÅÓÕÒÓ" + +#: rescoff.c:277 +msgid "ID directory entry" +msgstr "ID ÜÌÅÍÅÎÔÁ ËÁÔÁÌÏÇÁ" + +#: rescoff.c:294 +msgid "ID subdirectory" +msgstr "ID ÐÏÄËÁÔÁÌÏÇÁ" + +#: rescoff.c:302 +msgid "ID resource" +msgstr "ID ÒÅÓÕÒÓÁ" + +#: rescoff.c:328 +msgid "resource type unknown" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÒÅÓÕÒÓÁ" + +#: rescoff.c:331 +msgid "data entry" +msgstr "ÜÌÅÍÅÎÔ ÄÁÎÎÙÈ" + +#: rescoff.c:339 +msgid "resource data" +msgstr "ÄÁÎÎÙÅ ÒÅÓÕÒÓÁ" + +#: rescoff.c:344 +msgid "resource data size" +msgstr "ÒÁÚÍÅÒ ÄÁÎÎÙÈ ÒÅÓÕÒÓÁ" + +#: rescoff.c:439 +msgid "filename required for COFF output" +msgstr "ÔÒÅÂÕÅÔÓÑ ÉÍÑ ÆÁÊÌÁ ÄÌÑ ×ÙÈÏÄÎÏÇÏ COFF" + +#: rescoff.c:738 +msgid "can't get BFD_RELOC_RVA relocation type" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÔÉÐ ÐÅÒÅÍÅÝÅÎÉÑ BFD_RELOC_RVA" + +#: resrc.c:240 resrc.c:312 +#, c-format +msgid "can't open temporary file `%s': %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ `%s': %s" + +#: resrc.c:246 +#, c-format +msgid "can't redirect stdout: `%s': %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÎÁÐÒÁ×ÉÔØ stdout: `%s': %s" + +#: resrc.c:262 +#, c-format +msgid "%s %s: %s" +msgstr "%s %s: %s" + +#: resrc.c:308 +#, c-format +msgid "can't execute `%s': %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ `%s': %s" + +#: resrc.c:317 +#, c-format +msgid "Using temporary file `%s' to read preprocessor output\n" +msgstr "éÓÐÏÌØÚÕÅÔÓÑ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ `%s' ÄÌÑ ÞÔÅÎÉÑ ×ÙÈÏÄÎÙÈ ÄÁÎÎÙÈ ÐÒÅÐÒÏÃÅÓÓÏÒÁ\n" + +#: resrc.c:324 +#, c-format +msgid "can't popen `%s': %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ popen `%s': %s" + +#: resrc.c:326 +msgid "Using popen to read preprocessor output\n" +msgstr "éÓÐÏÌØÚÕÅÔÓÑ popen ÄÌÑ ÞÔÅÎÉÑ ×ÙÈÏÄÎÙÈ ÄÁÎÎÙÈ ÐÒÅÐÒÏÃÅÓÓÏÒÁ\n" + +#: resrc.c:369 +#, c-format +msgid "Tried `%s'\n" +msgstr "ïÐÒÏÂÏ×ÁÎ `%s'\n" + +#: resrc.c:380 +#, c-format +msgid "Using `%s'\n" +msgstr "éÓÐÏÌØÚÕÅÔÓÑ `%s'\n" + +#: resrc.c:542 +#, c-format +msgid "%s:%d: %s\n" +msgstr "%s:%d: %s\n" + +#: resrc.c:551 +#, c-format +msgid "%s: unexpected EOF" +msgstr "%s: ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ" + +#: resrc.c:608 +#, c-format +msgid "%s: read of %lu returned %lu" +msgstr "%s: ÐÒÉ ÞÔÅÎÉÉ %lu ÂÙÌÏ ×ÏÚ×ÒÁÝÅÎÏ %lu" + +#: resrc.c:650 resrc.c:905 resrc.c:1178 resrc.c:1332 +#, c-format +msgid "stat failed on bitmap file `%s': %s" +msgstr "stat ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ ÄÌÑ ÆÁÊÌÁ ÂÉÔÏ×ÏÇÏ ÏÂÒÁÚÁ `%s': %s" + +#: resrc.c:703 +#, c-format +msgid "cursor file `%s' does not contain cursor data" +msgstr "ÆÁÊÌ ËÕÒÓÏÒÁ `%s' ÎÅ ÓÏÄÅÒÖÉÔ ÄÁÎÎÙÈ ËÕÒÓÏÒÁ" + +#: resrc.c:735 resrc.c:1049 +#, c-format +msgid "%s: fseek to %lu failed: %s" +msgstr "%s: fseek ÄÌÑ %lu ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s" + +#: resrc.c:873 +msgid "help ID requires DIALOGEX" +msgstr "ÄÌÑ ID ÓÐÒÁ×ËÉ ÔÒÅÂÕÅÔÓÑ DIALOGEX" + +#: resrc.c:875 +msgid "control data requires DIALOGEX" +msgstr "ÄÌÑ ÕÐÒÁ×ÌÅÎÉÑ ÄÁÎÎÙÍÉ ÔÒÅÂÕÅÔÓÑ DIALOGEX" + +#: resrc.c:1018 +#, c-format +msgid "icon file `%s' does not contain icon data" +msgstr "ÆÁÊÌ ÚÎÁÞËÁ `%s' ÎÅ ÓÏÄÅÒÖÉÔ ÄÁÎÎÙÈ ÚÎÁÞËÁ" + +#: resrc.c:1537 +#, c-format +msgid "can't open `%s' for output: %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ `%s' ÄÌÑ ×Ù×ÏÄÁ ÄÁÎÎÙÈ: %s" + +#: size.c:86 +msgid " Displays the sizes of sections inside binary files\n" +msgstr " ïÔÏÂÒÁÖÁÅÔ ÒÁÚÍÅÒÙ ÒÁÚÄÅÌÏ× ×ÎÕÔÒÉ Ä×ÏÉÞÎÙÈ ÆÁÊÌÏ×\n" + +#: size.c:87 +msgid " If no input file(s) are specified, a.out is assumed\n" +msgstr " åÓÌÉ ×ÈÏÄÎÙÅ ÆÁÊÌÙ ÎÅ ÕËÁÚÁÎÙ, ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ÆÁÊÌ a.out\n" + +#: size.c:88 +#, c-format +msgid "" +" The options are:\n" +" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n" +" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n" +" -t --totals Display the total sizes (Berkeley only)\n" +" --target= Set the binary file format\n" +" -h --help Display this information\n" +" -v --version Display the program's version\n" +"\n" +msgstr "" +" ïÐÃÉÉ:\n" +" -A|-B --format={sysv|berkeley} ÷ÙÂÏÒ ÓÔÉÌÑ ×Ù×ÏÄÁ ÄÁÎÎÙÈ (ÐÏ ÕÍÏÌÞÁÎÉÀ %s)\n" +" -o|-d|-x --radix={8|10|16} ÷Ù×ÏÄ ÞÉÓÅÌ × ×ÏÓØÍÅÒÉÞÎÏÍ, ÄÅÓÑÔÉÞÎÏÍ\n" +" ÉÌÉ ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÏÍ ÆÏÒÍÁÔÅ\n" +" -t --totals ÷Ù×ÏÄ ÓÕÍÍÁÒÎÙÈ ÒÁÚÍÅÒÏ× (ÔÏÌØËÏ Berkeley)\n" +" --target= õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n" +" -h --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" +" -v --version ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n" +"\n" + +#: size.c:160 +#, c-format +msgid "invalid argument to --format: %s" +msgstr "ÎÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ --format: %s" + +#: size.c:187 +#, c-format +msgid "Invalid radix: %s\n" +msgstr "îÅ×ÅÒÎÙÊ radix: %s\n" + +#: srconv.c:1953 +msgid "Convert a COFF object file into a SYSROFF object file\n" +msgstr "ðÒÅÏÂÒÁÚÏ×Ù×ÁÅÔ ÏÂßÅËÔÎÙÊ ÆÁÊÌ COFF × ÏÂßÅËÔÎÙÊ ÆÁÊÌ SYSROFF\n" + +#: srconv.c:1954 +msgid "" +" The options are:\n" +" -q --quick (Obsolete - ignoerd)\n" +" -n --noprescan Do not perform a scan to convert commons into defs\n" +" -d --debug Display information about what is being done\n" +" -h --help Display this information\n" +" -v --version Print the program's version number\n" +msgstr "" +" ïÐÃÉÉ:\n" +" -q --quick (ÕÓÔÁÒÅÌÁ - ÉÇÎÏÒÉÒÕÅÔÓÑ)\n" +" -n --noprescan îÅ ×ÙÐÏÌÎÑÔØ ÓËÁÎÉÒÏ×ÁÎÉÅ ÄÌÑ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ commons × defs\n" +" -d --debug ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ÔÏÍ, ÞÔÏ ×ÙÐÏÌÎÑÅÔÓÑ\n" +" -h --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" +" -v --version ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n" + +#: srconv.c:2099 +#, c-format +msgid "unable to open output file %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ %s" + +#: stabs.c:346 stabs.c:1755 +msgid "numeric overflow" +msgstr "ÞÉÓÌÏ×ÏÅ ÐÅÒÅÐÏÌÎÅÎÉÅ" + +#: stabs.c:357 +#, c-format +msgid "Bad stab: %s\n" +msgstr "ðÌÏÈÏÊ stab: %s\n" + +#: stabs.c:367 +#, c-format +msgid "Warning: %s: %s\n" +msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: %s: %s\n" + +#: stabs.c:488 +msgid "N_LBRAC not within function\n" +msgstr "N_LBRAC ×ÎÅ ÆÕÎËÃÉÉ\n" + +#: stabs.c:527 +msgid "Too many N_RBRACs\n" +msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ N_RBRACs\n" + +#: stabs.c:773 +msgid "unknown C++ encoded name" +msgstr "ÎÅÉÚ×ÅÓÔÎÏÅ ËÏÄÉÒÏ×ÁÎÎÏÅ ÉÍÑ C++" + +#. Complain and keep going, so compilers can invent new +#. cross-reference types. +#: stabs.c:1293 +msgid "unrecognized cross reference type" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÔÉÐ ÐÅÒÅËÒÅÓÔÎÏÊ ÓÓÙÌËÉ" + +#. Does this actually ever happen? Is that why we are worrying +#. about dealing with it rather than just calling error_type? +#: stabs.c:1847 +msgid "missing index type" +msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÉÎÄÅËÓÎÙÊ ÔÉÐ" + +#: stabs.c:2174 +msgid "unknown virtual character for baseclass" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ×ÉÒÔÕÁÌØÎÙÊ ÓÉÍ×ÏÌ ÄÌÑ baseclass" + +#: stabs.c:2192 +msgid "unknown visibility character for baseclass" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ ×ÉÄÉÍÏÓÔÉ ÄÌÑ baseclass" + +#: stabs.c:2384 +msgid "unnamed $vb type" +msgstr "ÂÅÚÙÍÑÎÎÙÊ ÔÉÐ $vb" + +#: stabs.c:2390 +msgid "unrecognized C++ abbreviation" +msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÁÂÂÒÅ×ÉÁÔÕÒÁ C++" + +#: stabs.c:2470 +msgid "unknown visibility character for field" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ ×ÉÄÉÍÏÓÔÉ ÄÌÑ field" + +#: stabs.c:2726 +msgid "const/volatile indicator missing" +msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÉÎÄÉËÁÔÏÒ ÐÏÓÔÏÑÎÎÏÊ/ÐÅÒÅÍÅÎÎÏÊ" + +#: stabs.c:2967 +#, c-format +msgid "No mangling for \"%s\"\n" +msgstr "îÅÔ ËÏÄÉÒÏ×ÁÎÉÑ ÄÌÑ \"%s\"\n" + +#: stabs.c:3281 +msgid "Undefined N_EXCL" +msgstr "îÅÏÐÒÅÄÅÌÅÎÎÙÊ N_EXCL" + +#: stabs.c:3369 +#, c-format +msgid "Type file number %d out of range\n" +msgstr "îÏÍÅÒ ÆÁÊÌÁ ÔÉÐÁ %d ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÉÁÐÁÚÏÎÁ\n" + +#: stabs.c:3374 +#, c-format +msgid "Type index number %d out of range\n" +msgstr "îÏÍÅÒ ÉÎÄÅËÓÁ ÔÉÐÁ %d ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÉÁÐÁÚÏÎÁ\n" + +#: stabs.c:3461 +#, c-format +msgid "Unrecognized XCOFF type %d\n" +msgstr "îÅÒÁÓÐÏÚÎÁÎÎÙÊ ÔÉÐ XCOFF %d\n" + +#: stabs.c:3762 +#, c-format +msgid "bad mangled name `%s'\n" +msgstr "ÐÌÏÈÏÅ ÓËÏÒÒÅËÔÉÒÏ×ÁÎÎÏÅ ÉÍÑ `%s'\n" + +#: stabs.c:3859 +msgid "no argument types in mangled string\n" +msgstr "ÎÅÔ ÔÉÐÏ× ÁÒÇÕÍÅÎÔÏ× × ÓËÏÒÒÅËÔÉÒÏ×ÁÎÎÏÊ ÓÔÒÏËÅ\n" + +#: strings.c:208 +#, c-format +msgid "invalid number %s" +msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ %s" + +#: strings.c:647 +#, c-format +msgid "invalid integer argument %s" +msgstr "ÎÅ×ÅÒÎÙÊ ÃÅÌÏÞÉÓÌÅÎÎÙÊ ÁÒÇÕÍÅÎÔ %s" + +#: strings.c:658 +msgid " Display printable strings in [file(s)] (stdin by default)\n" +msgstr " ÷Ù×ÏÄÉÔ ÐÒÉÇÏÄÎÙÅ ÄÌÑ ÐÅÞÁÔÉ ÓÔÒÏËÉ × [ÆÁÊÌ(ÁÈ)] (ÐÏ ÕÍÏÌÞÁÎÉÀ stdin)\n" + +#: strings.c:659 +msgid "" +" The options are:\n" +" -a - --all Scan the entire file, not just the data section\n" +" -f --print-file-name Print the name of the file before each string\n" +" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n" +" - least [number] characters (default 4).\n" +" -t --radix={o,x,d} Print the location of the string in base 8, 10 or 16\n" +" -o An alias for --radix=o\n" +" -T --target= Specify the binary file format\n" +" -e --encoding={s,S,b,l,B,L} Select character size and endianness:\n" +" s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n" +" -h --help Display this information\n" +" -v --version Print the program's version number\n" +msgstr "" +" ïÐÃÉÉ:\n" +" -a - --all óËÁÎÉÒÏ×ÁÎÉÅ ×ÓÅÇÏ ÆÁÊÌÁ, Á ÎÅ ÔÏÌØËÏ ÒÁÚÄÅÌÁ ÄÁÎÎÙÈ\n" +" -f --print-file-name ÷Ù×ÏÄ ÉÍÅÎÉ ÆÁÊÌÁ ÐÅÒÅÄ ËÁÖÄÏÊ ÓÔÒÏËÏÊ\n" +" -n --bytes=[ÞÉÓÌÏ] ïÂÎÁÒÕÖÅÎÉÅ É ×Ù×ÏÄ ÌÀÂÙÈ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÅÊ Ó ÚÁ×ÅÒÛÁÀÝÉÍ\n" +" -<ÞÉÓÌÏ> ÎÕÌÅÍ ÄÌÉÎÏÊ × [ÞÉÓÌÏ] ÓÉÍ×ÏÌÏ× (ÐÏ ÕÍÏÌÞÁÎÉÀ 4).\n" +" -t --radix={o,x,d} ÷Ù×ÏÄ ÍÅÓÔÏÐÏÌÏÖÅÎÉÑ ÓÔÒÏËÉ ÐÏ ÏÓÎÏ×ÁÎÉÀ 8, 10 ÉÌÉ 16\n" +" -o áÌÉÁÓ ÄÌÑ --radix=o\n" +" -T --target= õËÁÚÁÎÉÅ ÆÏÒÍÁÔÁ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n" +" -e --encoding={s,S,b,l,B,L} ÷ÙÂÏÒ ÒÁÚÍÅÒÁ ÓÉÍ×ÏÌÁ É endianness:\n" +" s = 7-ÂÉÔ, S = 8-ÂÉÔ, {b,l} = 16-ÂÉÔ, {B,L} = 32-ÂÉÔ\n" +" -h --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" +" -v --version ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n" + +#: sysdump.c:768 +msgid "Print a human readable interpretation of a SYSROFF object file\n" +msgstr "÷Ù×ÏÄ ÕÄÏÂÏÞÉÔÁÅÍÏÊ ÄÌÑ ÞÅÌÏ×ÅËÁ ÉÎÔÅÒÐÒÅÔÁÃÉÉ ÏÂßÅËÔÎÏÇÏ ÆÁÊÌÁ SYSROFF\n" + +#: sysdump.c:769 +msgid "" +" The options are:\n" +" -h --help Display this information\n" +" -v --version Print the program's version number\n" +msgstr "" +" ïÐÃÉÉ:\n" +" -h --help ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n" +" -v --version ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n" + +#: sysdump.c:836 +#, c-format +msgid "cannot open input file %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÈÏÄÎÏÊ ÆÁÊÌ %s" + +#: version.c:36 +msgid "Copyright 2002 Free Software Foundation, Inc.\n" +msgstr "Copyright 2002 Free Software Foundation, Inc.\n" + +#: version.c:37 +msgid "" +"This program is free software; you may redistribute it under the terms of\n" +"the GNU General Public License. This program has absolutely no warranty.\n" +msgstr "" +"üÔÁ ÐÒÏÇÒÁÍÍÁ Ñ×ÌÑÅÔÓÑ ÏÔËÒÙÔÙÍ ÐÒÏÇÒÁÍÍÎÙÍ ÏÂÅÓÐÅÞÅÎÉÅÍ; ×Ù ÍÏÖÅÔÅ\n" +"ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÅÅ ÄÁÌÅÅ ÓÏÇÌÁÓÎÏ ÕÓÌÏ×ÉÑÍÉ GNU General Public License.\n" +"üÔÁ ÐÒÏÇÒÁÍÍÁ ÎÅ ÉÍÅÅÔ ÁÂÓÏÌÀÔÎÏ ÎÉËÁËÉÈ ÇÁÒÁÎÔÉÊ.\n" + +#: windres.c:205 +#, c-format +msgid "can't open %s `%s': %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ %s `%s': %s " + +#: windres.c:384 +msgid ": expected to be a directory\n" +msgstr ": ÏÖÉÄÁÌÏÓØ, ÞÔÏ ÜÔÏ ËÁÔÁÌÏÇ\n" + +#: windres.c:396 +msgid ": expected to be a leaf\n" +msgstr ": ÏÖÉÄÁÌÏÓØ, ÞÔÏ ÜÔÏ leaf\n" + +#: windres.c:405 +#, c-format +msgid "%s: warning: " +msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: " + +#: windres.c:407 +msgid ": duplicate value\n" +msgstr ": ÐÏ×ÔÏÒÑÀÝÅÅÓÑ ÚÎÁÞÅÎÉÅ\n" + +#: windres.c:569 +#, c-format +msgid "unknown format type `%s'" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÆÏÒÍÁÔÁ `%s'" + +#: windres.c:570 +#, c-format +msgid "%s: supported formats:" +msgstr "%s: ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ:" + +#. Otherwise, we give up. +#: windres.c:655 +#, c-format +msgid "can not determine type of file `%s'; use the -I option" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÔÉÐ ÆÁÊÌÁ `%s'; ÉÓÐÏÌØÚÕÊÔÅ ÏÐÃÉÀ -I" + +#: windres.c:669 +#, c-format +msgid "Usage: %s [option(s)] [input-file] [output-file]\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [×ÈÏÄÎÏÊ_ÆÁÊÌ] [×ÙÈÏÄÎÏÊ_ÆÁÊÌ]\n" + +#: windres.c:671 +msgid "" +" The options are:\n" +" -i --input= Name input file\n" +" -o --output= Name output file\n" +" -J --input-format= Specify input format\n" +" -O --output-format= Specify output format\n" +" -F --target= Specify COFF target\n" +" --preprocessor= Program to use to preprocess rc file\n" +" -I --include-dir= Include directory when preprocessing rc file\n" +" -D --define [=] Define SYM when preprocessing rc file\n" +" -U --undefine Undefine SYM when preprocessing rc file\n" +" -v --verbose Verbose - tells you what it's doing\n" +" -l --language= Set language when reading rc file\n" +" --use-temp-file Use a temporary file instead of popen to read\n" +" the preprocessor output\n" +" --no-use-temp-file Use popen (default)\n" +msgstr "" +" ïÐÃÉÉ:\n" +" -i --input=<ÆÁÊÌ> éÍÑ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ\n" +" -o --output=<ÆÁÊÌ> éÍÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ\n" +" -J --input-format=<ÆÏÒÍÁÔ> õËÁÚÁÎÉÅ ×ÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ\n" +" -O --output-format=<ÆÏÒÍÁÔ> õËÁÚÁÎÉÅ ×ÙÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ\n" +" -F --target=<ÃÅÌØ> õËÁÚÁÎÉÅ ÃÅÌÉ COFF\n" +" --preprocessor=<ÐÒÏÇÒÁÍÍÁ> ðÒÏÇÒÁÍÍÁ ÄÌÑ ÐÒÅÄ×ÁÒÉÔÅÌØÎÏÊ ÏÂÒÁÂÏÔËÉ ÆÁÊÌÁ rc\n" +" -I --include-dir=<ËÁÔÁÌÏÇ> ÷ËÌÀÞÁÅÍÙÊ ËÁÔÁÌÏÇ ÐÒÉ ÐÒÅÄ×ÁÒÉÔÅÌØÎÏÊ ÏÂÒÁÂÏÔËÅ ÆÁÊÌÁ rc\n" +" -D --define [=<ÚÎÁÞ>] ïÐÒÅÄÅÌÅÎÉÅ SYM ÐÒÉ ÐÒÅÄ×ÁÒÉÔÅÌØÎÏÊ ÏÂÒÁÂÏÔËÅ ÆÁÊÌÁ rc\n" +" -U --undefine ïÔÍÅÎÁ ÏÐÒÅÄÅÌÅÎÉÑ SYM ÐÒÉ ÐÒÅÄ×ÁÒÉÔÅÌØÎÏÊ ÏÂÒÁÂÏÔËÅ ÆÁÊÌÁ rc\n" +" -v --verbose ðÏÄÒÏÂÎÏ - ÓÏÏÂÝÁÅÔ ×ÁÍ Ï ×ÓÅÈ Ó×ÏÉÈ ÄÅÊÓÔ×ÉÑÈ\n" +" -l --language=<ÚÎÁÞ> õÓÔÁÎÏ×ËÁ ÑÚÙËÁ ÐÒÉ ÞÔÅÎÉÉ ÆÁÊÌÁ rc\n" +" --use-temp-file éÓÐÏÌØÚÏ×ÁÎÉÅ ×ÒÅÍÅÎÎÏÇÏ ÆÁÊÌÁ ×ÍÅÓÔÏ popen\n" +" ÄÌÑ ÞÔÅÎÉÑ ×ÙÈÏÄÎÙÈ ÄÁÎÎÙÈ ÐÒÅÐÒÏÃÅÓÓÏÒÁ\n" +" --no-use-temp-file éÓÐÏÌØÚÏ×ÁÎÉÅ popen (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n" + +#: windres.c:687 +msgid " --yydebug Turn on parser debugging\n" +msgstr " --yydebug ÷ËÌÀÞÅÎÉÅ ÏÔÌÁÄËÉ ÐÁÒÓÅÒÁ\n" + +#: windres.c:690 +msgid "" +" -r Ignored for compatibility with rc\n" +" -h --help Print this help message\n" +" -V --version Print version information\n" +msgstr "" +" -r ðÒÏÐÕÝÅÎÁ ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó rc\n" +" -h --help ÷Ù×ÏÄ ÜÔÏÇÏ ÓÐÒÁ×ÏÞÎÏÇÏ ÓÏÏÂÝÅÎÉÑ\n" +" -V --version ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÅÒÓÉÉ\n" + +#: windres.c:694 +msgid "" +"FORMAT is one of rc, res, or coff, and is deduced from the file name\n" +"extension if not specified. A single file name is an input file.\n" +"No input-file is stdin, default rc. No output-file is stdout, default rc.\n" +msgstr "" +"FORMAT Ñ×ÌÑÅÔÓÑ ÏÄÎÉÍ ÉÚ rc, res ÉÌÉ coff, É ÏÐÒÅÄÅÌÑÅÔÓÑ ÐÏ ÒÁÓÛÉÒÅÎÉÀ\n" +"ÉÍÅÎÉ ÆÁÊÌÁ, ÅÓÌÉ ÎÅ ÂÙÌ ÕËÁÚÁÎ. ïÄÉÎÏÞÎÏÅ ÉÍÑ ÆÁÊÌÁ Ñ×ÌÑÅÔÓÑ ×ÈÏÄÎÙÍ ÆÁÊÌÏÍ.\n" +"âÅÚ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ ÉÓÐÏÌØÚÕÅÔ stdin, ÐÏ ÕÍÏÌÞÁÎÉÀ rc. âÅÚ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ\n" +"ÉÓÐÏÌØÚÕÅÔÓÑ stdout, ÐÏ ÕÍÏÌÞÁÎÉÀ rc.\n" + +#: windres.c:833 +msgid "invalid option -f\n" +msgstr "ÎÅ×ÅÒÎÁÑ ÏÐÃÉÑ -f\n" + +#: windres.c:838 +msgid "No filename following the -fo option.\n" +msgstr "îÅÔ ÉÍÅÎÉ ÆÁÊÌÁ ÐÏÓÌÅ ÏÐÃÉÉ -fo.\n" + +#: windres.c:896 +msgid "Option -I is deprecated for setting the input format, please use -J instead.\n" +msgstr "ïÐÃÉÑ -I ËÒÁÊÎÅ ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ×ÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ, ÐÏÖÁÌÕÊÓÔÁ, ÉÓÐÏÌØÚÕÊÔÅ -J.\n" + +#: windres.c:1014 +msgid "no resources" +msgstr "ÎÅÔ ÒÅÓÕÒÓÏ×" + +#: wrstabs.c:395 wrstabs.c:2055 +#, c-format +msgid "string_hash_lookup failed: %s" +msgstr "string_hash_lookup ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s" + +#: wrstabs.c:695 +#, c-format +msgid "stab_int_type: bad size %u" +msgstr "stab_int_type: ÎÅ×ÅÒÎÙÊ ÒÁÚÍÅÒ %u" + +#: wrstabs.c:1495 +#, c-format +msgid "%s: warning: unknown size for field `%s' in struct" +msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅÉÚ×ÅÓÔÎÙÊ ÒÁÚÍÅÒ ÐÏÌÑ `%s' × struct" Binary files binutils-2.14.90.0.7/binutils/po/sv.gmo and binutils-2.14.90.0.8/binutils/po/sv.gmo differ Binary files binutils-2.14.90.0.7/binutils/po/tr.gmo and binutils-2.14.90.0.8/binutils/po/tr.gmo differ Binary files binutils-2.14.90.0.7/binutils/po/zh_CN.gmo and binutils-2.14.90.0.8/binutils/po/zh_CN.gmo differ diff -uprN binutils-2.14.90.0.7/binutils/prdbg.c binutils-2.14.90.0.8/binutils/prdbg.c --- binutils-2.14.90.0.7/binutils/prdbg.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/prdbg.c 2004-01-14 13:07:44.000000000 -0800 @@ -2055,7 +2055,7 @@ tg_struct_field (void *p, const char *na if (! tg_fix_visibility (info, visibility)) return FALSE; - /* It happends, a bug? */ + /* It happens, a bug? */ if (! name[0]) return TRUE; diff -uprN binutils-2.14.90.0.7/binutils/readelf.c binutils-2.14.90.0.8/binutils/readelf.c --- binutils-2.14.90.0.7/binutils/readelf.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/readelf.c 2004-01-14 13:07:44.000000000 -0800 @@ -21,7 +21,25 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* The difference between readelf and objdump: + Both programs are capabale of displaying the contents of ELF format files, + so why does the binutils project have two file dumpers ? + + The reason is that objdump sees an ELF file through a BFD filter of the + world; if BFD has a bug where, say, it disagrees about a machine constant + in e_flags, then the odds are good that it will remain internally + consistent. The linker sees it the BFD way, objdump sees it the BFD way, + GAS sees it the BFD way. There was need for a tool to go find out what + the file actually says. + + This is why the readelf program does not link against the BFD library - it + exists as an independent program to help verify the correct working of BFD. + + There is also the case that readelf can provide more information about an + ELF file than is provided by objdump. In particular it can display DWARF + debugging information which (at the moment) objdump cannot. */ + #include #include #include @@ -600,7 +618,6 @@ guess_is_rela (unsigned long e_machine) case EM_DLX: case EM_OPENRISC: case EM_OR32: - case EM_M32R: case EM_CYGNUS_M32R: case EM_D10V: case EM_CYGNUS_D10V: @@ -650,6 +667,7 @@ guess_is_rela (unsigned long e_machine) case EM_IQ2000: case EM_XTENSA: case EM_XTENSA_OLD: + case EM_M32R: return TRUE; case EM_MMA: @@ -6055,7 +6073,7 @@ dump_section (Elf_Internal_Shdr *section bytes = section->sh_size; - if (bytes == 0) + if (bytes == 0 || section->sh_type == SHT_NOBITS) { printf (_("\nSection '%s' has no data to dump.\n"), SECTION_NAME (section)); @@ -6253,15 +6271,137 @@ process_extended_line_op (unsigned char return len; } +/* Finds section NAME inside FILE and returns a + pointer to it, or NULL upon failure. */ + +static Elf_Internal_Shdr * +find_section (const char * name) +{ + Elf_Internal_Shdr *sec; + unsigned int i; + + for (i = elf_header.e_shnum, sec = section_headers + i - 1; + i; --i, --sec) + if (strcmp (SECTION_NAME (sec), name) == 0) + break; + + if (i && sec && sec->sh_size != 0) + return sec; + + return NULL; +} + /* Size of pointers in the .debug_line section. This information is not really present in that section. It's obtained before dumping the debug sections by doing some pre-scan of the .debug_info section. */ -static int debug_line_pointer_size = 4; +static unsigned int * debug_line_pointer_sizes = NULL; +static unsigned int num_debug_line_pointer_sizes = 0; + +/* Locate and scan the .debug_info section in the file and record the pointer + sizes for the compilation units in it. Usually an executable will have + just one pointer size, but this is not guaranteed, and so we try not to + make any assumptions. Returns zero upon failure, or the number of + compilation units upon success. */ + +static unsigned int +get_debug_line_pointer_sizes (FILE * file) +{ + Elf_Internal_Shdr * section; + unsigned char * start; + unsigned char * end; + unsigned char * begin; + unsigned long length; + unsigned int num_units; + unsigned int unit; + + section = find_section (".debug_info"); + if (section == NULL) + return 0; + + length = section->sh_size; + start = get_data (NULL, file, section->sh_offset, section->sh_size, + _("extracting pointer sizes from .debug_info section")); + if (start == NULL) + return 0; + + end = start + section->sh_size; + /* First scan the section to get the number of comp units. */ + for (begin = start, num_units = 0; begin < end; num_units++) + { + /* Read the first 4 bytes. For a 32-bit DWARF section, this will + be the length. For a 64-bit DWARF section, it'll be the escape + code 0xffffffff followed by an 8 byte length. */ + length = byte_get (begin, 4); + + if (length == 0xffffffff) + { + length = byte_get (begin + 4, 8); + begin += length + 12; + } + else + begin += length + 4; + } + + if (num_units == 0) + { + error (_("No comp units in .debug_info section ?")); + free (start); + return 0; + } + + /* Then allocate an array to hold the pointer sizes. */ + debug_line_pointer_sizes = malloc (num_units * sizeof * debug_line_pointer_sizes); + if (debug_line_pointer_sizes == NULL) + { + error (_("Not enough memory for a pointer size array of %u entries"), + num_units); + free (start); + return 0; + } + + /* Populate the array. */ + for (begin = start, unit = 0; begin < end; unit++) + { + length = byte_get (begin, 4); + if (length == 0xffffffff) + { + /* For 64-bit DWARF, the 1-byte address_size field is 22 bytes + from the start of the section. This is computed as follows: + + unit_length: 12 bytes + version: 2 bytes + debug_abbrev_offset: 8 bytes + ----------------------------- + Total: 22 bytes */ + + debug_line_pointer_sizes [unit] = byte_get (begin + 22, 1); + length = byte_get (begin + 4, 8); + begin += length + 12; + } + else + { + /* For 32-bit DWARF, the 1-byte address_size field is 10 bytes from + the start of the section: + + unit_length: 4 bytes + version: 2 bytes + debug_abbrev_offset: 4 bytes + ----------------------------- + Total: 10 bytes */ + + debug_line_pointer_sizes [unit] = byte_get (begin + 10, 1); + begin += length + 4; + } + } + + free (start); + num_debug_line_pointer_sizes = num_units; + return num_units; +} static int display_debug_lines (Elf_Internal_Shdr *section, - unsigned char * start, - FILE *file ATTRIBUTE_UNUSED) + unsigned char *start, FILE *file) { unsigned char *hdrptr; DWARF2_Internal_LineInfo info; @@ -6272,12 +6412,18 @@ display_debug_lines (Elf_Internal_Shdr * int i; int offset_size; int initial_length_size; + unsigned int comp_unit = 0; printf (_("\nDump of debug contents of section %s:\n\n"), SECTION_NAME (section)); + if (num_debug_line_pointer_sizes == 0) + get_debug_line_pointer_sizes (file); + while (data < end) { + unsigned int pointer_size; + hdrptr = data; /* Check the length of the block. */ @@ -6331,6 +6477,19 @@ display_debug_lines (Elf_Internal_Shdr * info.li_line_base <<= 24; info.li_line_base >>= 24; + /* Get the pointer size from the comp unit associated + with this block of line number information. */ + if (comp_unit >= num_debug_line_pointer_sizes) + { + error (_("Not enough comp units for .debug_lines section\n")); + return 0; + } + else + { + pointer_size = debug_line_pointer_sizes [comp_unit]; + comp_unit ++; + } + printf (_(" Length: %ld\n"), info.li_length); printf (_(" DWARF Version: %d\n"), info.li_version); printf (_(" Prologue Length: %d\n"), info.li_prologue_length); @@ -6339,6 +6498,7 @@ display_debug_lines (Elf_Internal_Shdr * printf (_(" Line Base: %d\n"), info.li_line_base); printf (_(" Line Range: %d\n"), info.li_line_range); printf (_(" Opcode Base: %d\n"), info.li_opcode_base); + printf (_(" (Pointer size: %u)\n"), pointer_size); end_of_sequence = data + info.li_length + initial_length_size; @@ -6431,7 +6591,7 @@ display_debug_lines (Elf_Internal_Shdr * { case DW_LNS_extended_op: data += process_extended_line_op (data, info.li_default_is_stmt, - debug_line_pointer_size); + pointer_size); break; case DW_LNS_copy: @@ -7470,20 +7630,14 @@ static void load_debug_loc (FILE *file) { Elf_Internal_Shdr *sec; - unsigned int i; /* If it is already loaded, do nothing. */ if (debug_loc_contents != NULL) return; /* Locate the .debug_loc section. */ - for (i = 0, sec = section_headers; - i < elf_header.e_shnum; - i++, sec++) - if (strcmp (SECTION_NAME (sec), ".debug_loc") == 0) - break; - - if (i == elf_header.e_shnum || sec->sh_size == 0) + sec = find_section (".debug_loc"); + if (sec == NULL) return; debug_loc_size = sec->sh_size; @@ -7506,13 +7660,13 @@ free_debug_loc (void) static int display_debug_loc (Elf_Internal_Shdr *section, - unsigned char *start, - FILE *file ATTRIBUTE_UNUSED) + unsigned char *start, FILE *file) { unsigned char *section_end; unsigned long bytes; unsigned char *section_begin = start; bfd_vma addr; + unsigned int comp_unit = 0; addr = section->sh_addr; bytes = section->sh_size; @@ -7524,6 +7678,9 @@ display_debug_loc (Elf_Internal_Shdr *se return 0; } + if (num_debug_line_pointer_sizes == 0) + get_debug_line_pointer_sizes (file); + printf (_("Contents of the .debug_loc section:\n\n")); printf (_("\n Offset Begin End Expression\n")); @@ -7533,21 +7690,29 @@ display_debug_loc (Elf_Internal_Shdr *se unsigned long end; unsigned short length; unsigned long offset; + unsigned int pointer_size; offset = start - section_begin; + /* Get the pointer size from the comp unit associated + with this block of location information. */ + if (comp_unit >= num_debug_line_pointer_sizes) + { + error (_("Not enough comp units for .debug_loc section\n")); + return 0; + } + else + { + pointer_size = debug_line_pointer_sizes [comp_unit]; + comp_unit ++; + } + while (1) { - /* Normally, the lists in the debug_loc section are related to a - given compilation unit, and thus, we would use the pointer size - of that compilation unit. However, since we are displaying it - separately here, we either have to store pointer sizes of all - compilation units, or assume they don't change. We assume, - like the debug_line display, that it doesn't change. */ - begin = byte_get (start, debug_line_pointer_size); - start += debug_line_pointer_size; - end = byte_get (start, debug_line_pointer_size); - start += debug_line_pointer_size; + begin = byte_get (start, pointer_size); + start += pointer_size; + end = byte_get (start, pointer_size); + start += pointer_size; if (begin == 0 && end == 0) break; @@ -7563,7 +7728,7 @@ display_debug_loc (Elf_Internal_Shdr *se start += 2; printf (" %8.8lx %8.8lx %8.8lx (", offset, begin, end); - decode_location_expression (start, debug_line_pointer_size, length); + decode_location_expression (start, pointer_size, length); printf (")\n"); start += length; @@ -7580,20 +7745,14 @@ static void load_debug_str (FILE *file) { Elf_Internal_Shdr *sec; - unsigned int i; /* If it is already loaded, do nothing. */ if (debug_str_contents != NULL) return; /* Locate the .debug_str section. */ - for (i = 0, sec = section_headers; - i < elf_header.e_shnum; - i++, sec++) - if (strcmp (SECTION_NAME (sec), ".debug_str") == 0) - break; - - if (i == elf_header.e_shnum || sec->sh_size == 0) + sec = find_section (".debug_str"); + if (sec == NULL) return; debug_str_size = sec->sh_size; @@ -8055,7 +8214,6 @@ display_debug_info (Elf_Internal_Shdr *s unsigned char *hdrptr; unsigned char *cu_abbrev_offset_ptr; unsigned char *tags; - unsigned int i; int level; unsigned long cu_offset; int offset_size; @@ -8179,13 +8337,8 @@ display_debug_info (Elf_Internal_Shdr *s unsigned char *begin; /* Locate the .debug_abbrev section and process it. */ - for (i = 0, sec = section_headers; - i < elf_header.e_shnum; - i++, sec++) - if (strcmp (SECTION_NAME (sec), ".debug_abbrev") == 0) - break; - - if (i == elf_header.e_shnum || sec->sh_size == 0) + sec = find_section (".debug_abbrev"); + if (sec == NULL) { warn (_("Unable to locate .debug_abbrev section!\n")); return 0; @@ -9149,80 +9302,31 @@ display_debug_not_supported (Elf_Interna return 1; } -/* Pre-scan the .debug_info section to record the size of address. - When dumping the .debug_line, we use that size information, assuming - that all compilation units have the same address size. */ -static int -prescan_debug_info (Elf_Internal_Shdr *section ATTRIBUTE_UNUSED, - unsigned char *start, - FILE *file ATTRIBUTE_UNUSED) -{ - unsigned long length; - - /* Read the first 4 bytes. For a 32-bit DWARF section, this will - be the length. For a 64-bit DWARF section, it'll be the escape - code 0xffffffff followed by an 8 byte length. For the purposes - of this prescan, we don't care about the actual length, but the - presence of the escape bytes does affect the location of the byte - which describes the address size. */ - length = byte_get (start, 4); - - if (length == 0xffffffff) - { - /* For 64-bit DWARF, the 1-byte address_size field is 22 bytes - from the start of the section. This is computed as follows: - - unit_length: 12 bytes - version: 2 bytes - debug_abbrev_offset: 8 bytes - ----------------------------- - Total: 22 bytes */ - - debug_line_pointer_size = byte_get (start + 22, 1); - } - else - { - /* For 32-bit DWARF, the 1-byte address_size field is 10 bytes from - the start of the section: - unit_length: 4 bytes - version: 2 bytes - debug_abbrev_offset: 4 bytes - ----------------------------- - Total: 10 bytes */ - - debug_line_pointer_size = byte_get (start + 10, 1); - } - return 0; -} - - /* A structure containing the name of a debug section and a pointer - to a function that can decode it. The third field is a prescan - function to be run over the section before displaying any of the - sections. */ +/* A structure containing the name of a debug section + and a pointer to a function that can decode it. */ struct { const char *const name; int (*display) (Elf_Internal_Shdr *, unsigned char *, FILE *); - int (*prescan) (Elf_Internal_Shdr *, unsigned char *, FILE *); } debug_displays[] = { - { ".debug_abbrev", display_debug_abbrev, NULL }, - { ".debug_aranges", display_debug_aranges, NULL }, - { ".debug_frame", display_debug_frames, NULL }, - { ".debug_info", display_debug_info, prescan_debug_info }, - { ".debug_line", display_debug_lines, NULL }, - { ".debug_pubnames", display_debug_pubnames, NULL }, - { ".eh_frame", display_debug_frames, NULL }, - { ".debug_macinfo", display_debug_macinfo, NULL }, - { ".debug_str", display_debug_str, NULL }, - { ".debug_loc", display_debug_loc, NULL }, - { ".debug_pubtypes", display_debug_not_supported, NULL }, - { ".debug_ranges", display_debug_not_supported, NULL }, - { ".debug_static_func", display_debug_not_supported, NULL }, - { ".debug_static_vars", display_debug_not_supported, NULL }, - { ".debug_types", display_debug_not_supported, NULL }, - { ".debug_weaknames", display_debug_not_supported, NULL } + { ".debug_abbrev", display_debug_abbrev }, + { ".debug_aranges", display_debug_aranges }, + { ".debug_frame", display_debug_frames }, + { ".debug_info", display_debug_info }, + { ".debug_line", display_debug_lines }, + { ".debug_pubnames", display_debug_pubnames }, + { ".eh_frame", display_debug_frames }, + { ".debug_macinfo", display_debug_macinfo }, + { ".debug_str", display_debug_str }, + { ".debug_loc", display_debug_loc }, + { ".debug_pubtypes", display_debug_not_supported }, + { ".debug_ranges", display_debug_not_supported }, + { ".debug_static_func", display_debug_not_supported }, + { ".debug_static_vars", display_debug_not_supported }, + { ".debug_types", display_debug_not_supported }, + { ".debug_weaknames", display_debug_not_supported } }; static int @@ -9277,42 +9381,6 @@ process_section_contents (FILE *file) if (! do_dump) return 1; - /* Pre-scan the debug sections to find some debug information not - present in some of them. For the .debug_line, we must find out the - size of address (specified in .debug_info and .debug_aranges). */ - for (i = 0, section = section_headers; - i < elf_header.e_shnum && i < num_dump_sects; - i++, section++) - { - char *name = SECTION_NAME (section); - int j; - - if (section->sh_size == 0) - continue; - - /* See if there is some pre-scan operation for this section. */ - for (j = NUM_ELEM (debug_displays); j--;) - if (strcmp (debug_displays[j].name, name) == 0) - { - if (debug_displays[j].prescan != NULL) - { - bfd_size_type length; - unsigned char *start; - - length = section->sh_size; - start = get_data (NULL, file, section->sh_offset, length, - _("debug section data")); - if (!start) - return 0; - - debug_displays[j].prescan (section, start, file); - free (start); - } - - break; - } - } - for (i = 0, section = section_headers; i < elf_header.e_shnum && i < num_dump_sects; i++, section++) @@ -10457,14 +10525,24 @@ process_file (char *file_name) if (stat (file_name, &statbuf) < 0) { - error (_("Cannot stat input file %s.\n"), file_name); + if (errno == ENOENT) + error (_("'%s': No such file\n"), file_name); + else + error (_("Could not locate '%s'. System error message: %s\n"), + file_name, strerror (errno)); + return 1; + } + + if (! S_ISREG (statbuf.st_mode)) + { + error (_("'%s' is not an ordinary file\n"), file_name); return 1; } file = fopen (file_name, "rb"); if (file == NULL) { - error (_("Input file %s not found.\n"), file_name); + error (_("Input file '%s' is not readable.\n"), file_name); return 1; } diff -uprN binutils-2.14.90.0.7/binutils/rename.c binutils-2.14.90.0.8/binutils/rename.c --- binutils-2.14.90.0.7/binutils/rename.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/rename.c 2004-01-14 13:07:44.000000000 -0800 @@ -159,14 +159,18 @@ smart_rename (const char *from, const ch if (ret != 0) { /* We have to clean up here. */ - - non_fatal (_("%s: rename: %s"), to, strerror (errno)); + non_fatal (_("unable to rename '%s' reason: %s"), to, strerror (errno)); unlink (from); } #else /* Use rename only if TO is not a symbolic link and has - only one hard link. */ - if (! exists || (!S_ISLNK (s.st_mode) && s.st_nlink == 1)) + only one hard link, and we have permission to write to it. */ + if (! exists + || (!S_ISLNK (s.st_mode) + && S_ISREG (s.st_mode) + && (s.st_mode & S_IWUSR) + && s.st_nlink == 1) + ) { ret = rename (from, to); if (ret == 0) @@ -193,7 +197,7 @@ smart_rename (const char *from, const ch else { /* We have to clean up here. */ - non_fatal (_("%s: rename: %s"), to, strerror (errno)); + non_fatal (_("unable to rename '%s' reason: %s"), to, strerror (errno)); unlink (from); } } @@ -201,7 +205,7 @@ smart_rename (const char *from, const ch { ret = simple_copy (from, to); if (ret != 0) - non_fatal (_("%s: simple_copy: %s"), to, strerror (errno)); + non_fatal (_("unable to copy file '%s' reason: %s"), to, strerror (errno)); if (preserve_dates) set_times (to, &s); diff -uprN binutils-2.14.90.0.7/binutils/size.c binutils-2.14.90.0.8/binutils/size.c --- binutils-2.14.90.0.7/binutils/size.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/size.c 2004-01-14 13:07:44.000000000 -0800 @@ -341,8 +341,12 @@ display_archive (bfd *file) static void display_file (char *filename) { - bfd *file = bfd_openr (filename, target); + bfd *file; + if (get_file_size (filename) < 1) + return; + + file = bfd_openr (filename, target); if (file == NULL) { bfd_nonfatal (filename); diff -uprN binutils-2.14.90.0.7/binutils/stabs.c binutils-2.14.90.0.8/binutils/stabs.c --- binutils-2.14.90.0.7/binutils/stabs.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/stabs.c 2004-01-14 13:07:44.000000000 -0800 @@ -1,5 +1,5 @@ /* stabs.c -- Parse stabs debugging information - Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 + Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Written by Ian Lance Taylor . @@ -201,6 +201,11 @@ static debug_type stab_find_tagged_type (void *, struct stab_handle *, const char *, int, enum debug_type_kind); static debug_type *stab_demangle_argtypes (void *, struct stab_handle *, const char *, bfd_boolean *, unsigned int); +static debug_type *stab_demangle_v3_argtypes + (void *, struct stab_handle *, const char *, bfd_boolean *); +static debug_type stab_demangle_v3_arg + (void *, struct stab_handle *, struct demangle_component *, debug_type, + bfd_boolean *); /* Save a string in memory. */ @@ -1993,7 +1998,7 @@ parse_stab_enum_type (void *dhandle, con describing the type. PP points to a character pointer that points to the next unconsumed token - in the the stabs string. For example, given stabs "A:T4=s4a:1,0,32;;", + in the stabs string. For example, given stabs "A:T4=s4a:1,0,32;;", *PP will point to "4a:1,0,32;;". */ static debug_type @@ -2526,7 +2531,7 @@ parse_stab_members (void *dhandle, struc } else { - /* This is a completely wierd case. In order to stuff in the + /* This is a completely weird case. In order to stuff in the names that might contain colons (the usual name delimiter), Mike Tiemann defined a different name format which is signalled if the identifier is "op$". In that case, the @@ -2814,6 +2819,7 @@ parse_stab_argtypes (void *dhandle, stru bfd_boolean is_full_physname_constructor; bfd_boolean is_constructor; bfd_boolean is_destructor; + bfd_boolean is_v3; debug_type *args; bfd_boolean varargs; unsigned int physname_len = 0; @@ -2833,8 +2839,9 @@ parse_stab_argtypes (void *dhandle, stru && (argtypes[1] == '$' || argtypes[1] == '.') && argtypes[2] == '_') || strncmp (argtypes, "__dt", 4) == 0); + is_v3 = argtypes[0] == '_' && argtypes[1] == 'Z'; - if (is_destructor || is_full_physname_constructor) + if (is_destructor || is_full_physname_constructor || is_v3) *pphysname = argtypes; else { @@ -3697,6 +3704,10 @@ stab_demangle_argtypes (void *dhandle, s { struct stab_demangle_info minfo; + /* Check for the g++ V3 ABI. */ + if (physname[0] == '_' && physname[1] == 'Z') + return stab_demangle_v3_argtypes (dhandle, info, physname, pvarargs); + minfo.dhandle = dhandle; minfo.info = info; minfo.args = NULL; @@ -5045,3 +5056,294 @@ stab_demangle_remember_type (struct stab return TRUE; } + +/* Demangle names encoded using the g++ V3 ABI. The newer versions of + g++ which use this ABI do not encode ordinary method argument types + in a mangled name; they simply output the argument types. However, + for a static method, g++ simply outputs the return type and the + physical name. So in that case we need to demangle the name here. + Here PHYSNAME is the physical name of the function, and we set the + variable pointed at by PVARARGS to indicate whether this function + is varargs. This returns NULL, or a NULL terminated array of + argument types. */ + +static debug_type * +stab_demangle_v3_argtypes (void *dhandle, struct stab_handle *info, + const char *physname, bfd_boolean *pvarargs) +{ + struct demangle_component *dc; + void *mem; + unsigned int alloc, count; + debug_type *pargs; + + dc = cplus_demangle_v3_components (physname, DMGL_PARAMS | DMGL_ANSI, &mem); + if (dc == NULL) + { + stab_bad_demangle (physname); + return NULL; + } + + /* We expect to see TYPED_NAME, and the right subtree describes the + function type. */ + if (dc->type != DEMANGLE_COMPONENT_TYPED_NAME + || dc->u.s_binary.right->type != DEMANGLE_COMPONENT_FUNCTION_TYPE) + { + fprintf (stderr, _("Demangled name is not a function\n")); + free (mem); + return NULL; + } + + alloc = 10; + pargs = (debug_type *) xmalloc (alloc * sizeof *pargs); + *pvarargs = FALSE; + + count = 0; + + for (dc = dc->u.s_binary.right->u.s_binary.right; + dc != NULL; + dc = dc->u.s_binary.right) + { + debug_type arg; + bfd_boolean varargs; + + if (dc->type != DEMANGLE_COMPONENT_ARGLIST) + { + fprintf (stderr, _("Unexpected type in demangle tree\n")); + free (mem); + return NULL; + } + + arg = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left, + NULL, &varargs); + if (arg == NULL) + { + if (varargs) + { + *pvarargs = TRUE; + continue; + } + free (mem); + return NULL; + } + + if (count + 1 >= alloc) + { + alloc += 10; + pargs = (debug_type *) xrealloc (pargs, alloc * sizeof *pargs); + } + + pargs[count] = arg; + ++count; + } + + pargs[count] = DEBUG_TYPE_NULL; + + free (mem); + + return pargs; +} + +/* Convert a struct demangle_component tree describing an argument + type into a debug_type. */ + +static debug_type +stab_demangle_v3_arg (void *dhandle, struct stab_handle *info, + struct demangle_component *dc, debug_type context, + bfd_boolean *pvarargs) +{ + debug_type dt; + + if (pvarargs != NULL) + *pvarargs = FALSE; + + switch (dc->type) + { + /* FIXME: These are demangle component types which we probably + need to handle one way or another. */ + case DEMANGLE_COMPONENT_LOCAL_NAME: + case DEMANGLE_COMPONENT_TYPED_NAME: + case DEMANGLE_COMPONENT_TEMPLATE_PARAM: + case DEMANGLE_COMPONENT_CTOR: + case DEMANGLE_COMPONENT_DTOR: + case DEMANGLE_COMPONENT_JAVA_CLASS: + case DEMANGLE_COMPONENT_RESTRICT_THIS: + case DEMANGLE_COMPONENT_VOLATILE_THIS: + case DEMANGLE_COMPONENT_CONST_THIS: + case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL: + case DEMANGLE_COMPONENT_COMPLEX: + case DEMANGLE_COMPONENT_IMAGINARY: + case DEMANGLE_COMPONENT_VENDOR_TYPE: + case DEMANGLE_COMPONENT_FUNCTION_TYPE: + case DEMANGLE_COMPONENT_ARRAY_TYPE: + case DEMANGLE_COMPONENT_PTRMEM_TYPE: + case DEMANGLE_COMPONENT_ARGLIST: + default: + fprintf (stderr, _("Unrecognized demangle component\n")); + return NULL; + + case DEMANGLE_COMPONENT_NAME: + if (context != NULL) + { + const debug_field *fields; + + fields = debug_get_fields (dhandle, context); + if (fields != NULL) + { + /* Try to find this type by looking through the context + class. */ + for (; *fields != DEBUG_FIELD_NULL; fields++) + { + debug_type ft; + const char *dn; + + ft = debug_get_field_type (dhandle, *fields); + if (ft == NULL) + return NULL; + dn = debug_get_type_name (dhandle, ft); + if (dn != NULL + && (int) strlen (dn) == dc->u.s_name.len + && strncmp (dn, dc->u.s_name.s, dc->u.s_name.len) == 0) + return ft; + } + } + } + return stab_find_tagged_type (dhandle, info, dc->u.s_name.s, + dc->u.s_name.len, DEBUG_KIND_ILLEGAL); + + case DEMANGLE_COMPONENT_QUAL_NAME: + context = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left, + context, NULL); + if (context == NULL) + return NULL; + return stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.right, + context, NULL); + + case DEMANGLE_COMPONENT_TEMPLATE: + { + char *p; + size_t alc; + + /* We print this component to get a class name which we can + use. FIXME: This probably won't work if the template uses + template parameters which refer to an outer template. */ + p = cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, dc, 20, &alc); + if (p == NULL) + { + fprintf (stderr, _("Failed to print demangled template\n")); + return NULL; + } + dt = stab_find_tagged_type (dhandle, info, p, strlen (p), + DEBUG_KIND_CLASS); + free (p); + return dt; + } + + case DEMANGLE_COMPONENT_SUB_STD: + return stab_find_tagged_type (dhandle, info, dc->u.s_string.string, + dc->u.s_string.len, DEBUG_KIND_ILLEGAL); + + case DEMANGLE_COMPONENT_RESTRICT: + case DEMANGLE_COMPONENT_VOLATILE: + case DEMANGLE_COMPONENT_CONST: + case DEMANGLE_COMPONENT_POINTER: + case DEMANGLE_COMPONENT_REFERENCE: + dt = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left, NULL, + NULL); + if (dt == NULL) + return NULL; + + switch (dc->type) + { + default: + abort (); + case DEMANGLE_COMPONENT_RESTRICT: + /* FIXME: We have no way to represent restrict. */ + return dt; + case DEMANGLE_COMPONENT_VOLATILE: + return debug_make_volatile_type (dhandle, dt); + case DEMANGLE_COMPONENT_CONST: + return debug_make_const_type (dhandle, dt); + case DEMANGLE_COMPONENT_POINTER: + return debug_make_pointer_type (dhandle, dt); + case DEMANGLE_COMPONENT_REFERENCE: + return debug_make_reference_type (dhandle, dt); + } + + case DEMANGLE_COMPONENT_BUILTIN_TYPE: + { + char *p; + size_t alc; + debug_type ret; + + /* We print this component in order to find out the type name. + FIXME: Should we instead expose the + demangle_builtin_type_info structure? */ + p = cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, dc, 20, &alc); + if (p == NULL) + { + fprintf (stderr, _("Couldn't get demangled builtin type\n")); + return NULL; + } + + /* The mangling is based on the type, but does not itself + indicate what the sizes are. So we have to guess. */ + if (strcmp (p, "signed char") == 0) + ret = debug_make_int_type (dhandle, 1, FALSE); + else if (strcmp (p, "bool") == 0) + ret = debug_make_bool_type (dhandle, 1); + else if (strcmp (p, "char") == 0) + ret = debug_make_int_type (dhandle, 1, FALSE); + else if (strcmp (p, "double") == 0) + ret = debug_make_float_type (dhandle, 8); + else if (strcmp (p, "long double") == 0) + ret = debug_make_float_type (dhandle, 8); + else if (strcmp (p, "float") == 0) + ret = debug_make_float_type (dhandle, 4); + else if (strcmp (p, "__float128") == 0) + ret = debug_make_float_type (dhandle, 16); + else if (strcmp (p, "unsigned char") == 0) + ret = debug_make_int_type (dhandle, 1, TRUE); + else if (strcmp (p, "int") == 0) + ret = debug_make_int_type (dhandle, 4, FALSE); + else if (strcmp (p, "unsigned int") == 0) + ret = debug_make_int_type (dhandle, 4, TRUE); + else if (strcmp (p, "long") == 0) + ret = debug_make_int_type (dhandle, 4, FALSE); + else if (strcmp (p, "unsigned long") == 0) + ret = debug_make_int_type (dhandle, 4, TRUE); + else if (strcmp (p, "__int128") == 0) + ret = debug_make_int_type (dhandle, 16, FALSE); + else if (strcmp (p, "unsigned __int128") == 0) + ret = debug_make_int_type (dhandle, 16, TRUE); + else if (strcmp (p, "short") == 0) + ret = debug_make_int_type (dhandle, 2, FALSE); + else if (strcmp (p, "unsigned short") == 0) + ret = debug_make_int_type (dhandle, 2, TRUE); + else if (strcmp (p, "void") == 0) + ret = debug_make_void_type (dhandle); + else if (strcmp (p, "wchar_t") == 0) + ret = debug_make_int_type (dhandle, 4, TRUE); + else if (strcmp (p, "long long") == 0) + ret = debug_make_int_type (dhandle, 8, FALSE); + else if (strcmp (p, "unsigned long long") == 0) + ret = debug_make_int_type (dhandle, 8, TRUE); + else if (strcmp (p, "...") == 0) + { + if (pvarargs == NULL) + fprintf (stderr, _("Unexpected demangled varargs\n")); + else + *pvarargs = TRUE; + ret = NULL; + } + else + { + fprintf (stderr, _("Unrecognized demangled builtin type\n")); + ret = NULL; + } + + free (p); + + return ret; + } + } +} diff -uprN binutils-2.14.90.0.7/binutils/strings.c binutils-2.14.90.0.8/binutils/strings.c --- binutils-2.14.90.0.7/binutils/strings.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/strings.c 2004-01-14 13:07:44.000000000 -0800 @@ -370,6 +370,9 @@ strings_object_file (const char *file) static bfd_boolean strings_file (char *file) { + if (get_file_size (file) < 1) + return FALSE; + /* If we weren't told to scan the whole file, try to open it as an object file and only look at initialized data sections. If that fails, fall back to the diff -uprN binutils-2.14.90.0.7/binutils/testsuite/ChangeLog binutils-2.14.90.0.8/binutils/testsuite/ChangeLog --- binutils-2.14.90.0.7/binutils/testsuite/ChangeLog 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/testsuite/ChangeLog 2004-01-14 13:07:44.000000000 -0800 @@ -1,1040 +1,9 @@ -2003-10-06 Dave Brolley - * binutils-all/objdump.exp (cpu_expected): Add fr550. - -2003-09-29 H.J. Lu - - * binutils-all/readelf.exp: Use is_elf_format. - - * binutils-all/readelf.h: Support IA64/ILP32. - * binutils-all/readelf.s: Likewise. - * binutils-all/readelf.ss: Likewise. - - * lib/utils-lib.exp (proc is_elf_format): Copy from ld - testsuite. Add ia64-*-hpux*. - -2003-06-29 Danny Smith - - * binutils-all/objcopy.exp: Initialise $test_prog to - testprog.exe on mingw targeted systems too. - -2003-06-28 Danny Smith - - * binutils-all/windres/checkbox.rc: New file. - * binutils-all/windres/checkbox.rsd: New file. - * binutils-all/windres/combobox.rc: New file. - * binutils-all/windres/combobox.rsd: New file. - * binutils-all/windres/edittext.rc: New file. - * binutils-all/windres/edittext.rsd: New file. - * binutils-all/windres/listbox.rc: New file. - * binutils-all/windres/listbox.rsd: New file. - * binutils-all/windres/scrollbar.rc: New file. - * binutils-all/windres/scrollbar.rsd: New file. - -2003-06-27 Thiemo Seufer - - * binutils-all/readelf.ss-tmips: Adjust symbol indices. - -2003-06-19 Nick Clifton - - * binutils-all/objcopy.exp: Replace occurances of testprog with - $test_prog. Initialise this variable to testprog.exe on Cygwin - targeted systems. - -2003-04-26 Nick Clifton - - * binutils-all/readelf.exp (prune_read_warnings): Rename to - prune_readelf_wi_warnings. - (readelf_wi_test): New proc: Test 'readelf -wi' by grepping - through its output. - Replace invocation of "readelf_test -wi" with "readelf_wi_test" - * binutils-all/readelf.wi: Delete. - -2003-04-23 Nick Clifton - - * binutils-all/readelf.exp (proc prune_readelf_warnings): New - function. - (proc readelf_test): Prune warning messages. - (readelf_test -wi): Add more expected failures. - * binutils-all/readelf.wi: Severly reduce expected output. - * binutils-all/testprog.c (string): Explicitly use unsigned - chars. - (stdio.h, string.h): Remove inclusion. - -2003-04-23 J"orn Rennecke - - * binutils-all/readelf.wi: Update. - -2003-04-22 Dimitrie O. Paun - - * binutils-all/windres/windres.exp: Add test for the new -J - option. Remove use of -I as it now generates a warning message. - -2003-04-03 Nick Clifton - - * binutils-all/windres/dialogid.rc: Replace "Static" with - "classname" so that compilation will match behaviour of the - Windows resource compiler. - -2003-03-31 Nick Clifton - - * binutils-all/windres/dialogid.rc: New test source file. - * binutils-all/windres/dialogid.rsd: New test expected results. - -2002-11-07 Casper S. Hornstrup - - * binutils-all/dlltool.exp: New file for testing dlltool. - * binutils-all/fastcall.def: New file for testing fastcall - exports. - * config/default.exp: Set DLLTOOL variable. - -2002-08-27 Alan Modra - - * binutils-all/objcopy.exp: Revert last change. - -2002-08-26 Alan Modra - - * binutils-all/objcopy.exp (strip_test): Adjust for "no symbols" on - stdout. - (strip_executable): Likewise. - -2002-08-13 Alan Modra - - * binutils-all/objdump.exp (cpus_expected): Add fr500, ip2022, - tic80, tms320c30. - * binutils-all/objcopy.exp (simple copy): Revise xfails. - -2002-05-29 Alan Modra - - * binutils-all/objcopy.exp (strip_test_with_saving_a_symbol): - Revert 2001-11-15. Instead allow `D main'. - -2002-04-16 Eric Kohl - - * binutils-all/windres/dialog0.rc: New test case: Check default - attributes for dialogs - * binutils-all/windres/dialog0.rsd: New file: Expected output. - * binutils-all/windres/dialog1.rc: New test case: Check - DISCARDABLE flag is propogated. - * binutils-all/windres/dialog1.rsd: New file: Expected output. - -2002-04-15 Eric Kohl - - * binutils-all/windres/dlgfont.rc: New test case: Checks FONT - statement in DIALOG and DIALOGEX resources. - * binutils-all/windres/dlgfont.rsd: Expected output. - -2002-04-11 Nick Clifton - - * binutils-all/ar.exp (long_filenames): Use 'file delete' instead - of 'exec rm -f'. - -2002-04-10 Nick Clifton - - * binutils-all/ar.exp (long_filenames): Delete the abc... files - upon successfully completion of the test. - - * binutils-all/windres/capstyle.rsd: Regenerate using MSVC. - * binutils-all/windres/deflang.rsd: Regenerate using MSVC. - * binutils-all/windres/dialogsignature.rsd: Regenerate using MSVC. - * binutils-all/windres/escapea.rsd: Regenerate using MSVC. - * binutils-all/windres/escapex.rsd: Regenerate using MSVC. - * binutils-all/windres/nocaption.rsd: Regenerate using MSVC. - * binutils-all/windres/printstyle.rsd: Regenerate using MSVC. - * binutils-all/windres/sublang.rsd: Regenerate using MSVC. - -2002-04-09 Nick Clifton - - * binutils-all/windres/capstyle.rc: New test case: Set default - style for captions. - * binutils-all/windres/capstyle.rsd: Expected output. - - * binutils-all/windres/deflang.rc: New test case: Check default - language. - * binutils-all/windres/deflang.rsd: Expected output. - - * binutils-all/windres/dialogsignature.rc: New test case for - decoding the dialog signature. - * binutils-all/windres/dialogsignature.rsd: Expected output. - - * binutils-all/windres/escapea.rc: New test case for encoding \a - escape sequence. - * binutils-all/windres/escapea.rsd: Expected output. - - * binutils-all/windres/escapex.rc: New test case for hex constants - in strings. - * binutils-all/windres/escapex.rsd: Expected output - - * binutils-all/windres/nocaption.rc: New test case dialogs without - captions. - * binutils-all/windres/nocaption.rsd: Expected output - - * binutils-all/windres/quoteclass.rc: New test case for quoted - CLASS definitions in DIALOG resources. - - * binutils-all/windres/sublang.rc: New test case: Check assignment - of sub-language. - * binutils-all/windres/sublang.rsd: Expected output. - -2002-02-18 Timothy Daly - - * binutils-all/readelf.r: Change expected output to match new, - narrowed-to-80-chars format. - * binutils-all/readelf.r-64: Change expected output to match new, - narrowed-to-80-chars format. - -2002-02-18 Hans-Peter Nilsson - - * binutils-all/objcopy.exp - (strip_executable_with_saving_a_symbol): Prune symbol Main in nm - output for mmix-knuth-mmixware. - -2002-02-13 Nick Clifton - - * binutils-all/readelf.ss-mips: Do not expect an explicit - ordering of the sections. - -2002-02-10 Nick Clifton - - * binutils-all/objdump.exp: Add 'xscale' to the list of expected - CPUs. - -2002-01-14 Nick Clifton - - * binutils-all/objcopy.exp: Expect xscale-coff to fail simple - objcopy test for the same reason as arm-coff. - -2001-11-29 H.J. Lu - - * binutils-all/objcopy.exp (strip_test): Add strip on archive. - -2001-11-15 Alan Modra - - * binutils-all/objcopy.exp: (strip_test_with_saving_a_symbol): - Allow '? main', to suit powerpc64. - -2001-11-14 Geoffrey Keating - - * binutils-all/readelf.exp: powerpc-*-eabi* is an ELF target. - -2001-10-03 Thiemo Seufer - - * binutils-all/readelf.exp: Exclude mips*-*-elf* from 'readelf -wi' - test. - -Tue Sep 4 20:25:41 2001 Jeffrey A Law (law@cygnus.com) - - * binutils/all/readelf.exp: Expect readelf -wi to - fail for the H8 series. - -2001-08-27 Alan Modra - - * binutils-all/readelf.s-64: Adjust offsets for powerpc64. Don't - use constructs like [45][08] when all combinations are not valid. - Instead use (48|50) to explicitly state which values are correct. - -2001-08-21 H.J. Lu - - * binutils-all/readelf.r: Updated for the readelf change. - - * binutils-all/readelf.r-64: New for the readelf change. - -2001-07-27 H.J. Lu - - * binutils-all/windres/windres.exp: Don't set xfail for - bmpalign (compare) on none-ix86/pe targets. - -2001-07-24 H.J. Lu - - * binutils-all/windres/windres.exp: Set xfail on none-ix86/pe - targets. - -2001-07-18 DJ Delorie - - * config/default.exp (WINDRES): Add. - * binutils-all/windres/windres.exp: New. - * binutils-all/windres/README: New. - * binutils-all/windres/bmp1.bmp: New. - * binutils-all/windres/bmpalign.rc: New. - * binutils-all/windres/bmpalign.rsd: New. - * binutils-all/windres/lang.rc: New. - * binutils-all/windres/lang.rsd: New. - * binutils-all/windres/msupdate: New. - * binutils-all/windres/strtab1.rc: New. - * binutils-all/windres/strtab1.rsd: New. - -2001-07-05 Ben Elliston - - * lib/utils-lib.exp (target_assemble): Remove duplicate copy. - (default_target_assemble): Likewise. - -2001-06-18 Thiemo Seufer - - * binutils-all/readelf.exp: Typo. - -2001-06-19 Andreas Jaeger - - * binutils-all/readelf.r: Don't check for specific info value to - pass testsuite on ia64 and alpha. - -2001-06-07 H.J. Lu - - * binutils-all/readelf.ss-mips: Support stabs. - * binutils-all/readelf.ss-tmips: Likewise. - -2001-05-25 H.J. Lu - - * binutils-all/readelf.exp (readelf_test): Set target_machine - to tmips for traditional mips. - - * binutils-all/readelf.s: Support traditional mips. - - * binutils-all/readelf.ss-tmips: New for traditional mips. - -2001-05-25 Alan Modra - - * binutils-all/readelf.exp: Replace linuxoldld with linux*oldld - and linuxaout with linux*aout. - * binutils-all/objcopy.exp: Remove xfail for linuxaout. - -2001-05-24 H.J. Lu - - * binutils-all/objdump.exp (cpus_expected): Add s390. - -2001-03-30 H.J. Lu - - * binutils-all/readelf.exp: Run on more ELF targets. - -2001-02-11 H.J. Lu - - * config/default.exp: Set up gcc_gas_flag. - - * binutils-all/objcopy.exp (copy_setup): Process gcc_gas_flag - for Linux only. - - * binutils-all/testprog.c: Include and don't use - exit (). - -2001-01-16 Matthew Green - - * binutils-all/readelf.s-64: Match readelf -S output. - -2000-12-09 Nick Clifton - - * binutils-all/objdump.exp (cpus_expected): Add tic54x and - tms320c54x. - -2000-11-28 Hans-Peter Nilsson - - * binutils-all/readelf.s: Adjust to readelf.c formatting changes. - -2000-11-02 Chris Demetriou - - * binutils-all/readelf.exp (regexp_diff): Add code - from gas testsuite to treat "#..." at beginning of line - as an indicator to skip extra non-matching lines at that - location. - (readelf_test): Add support for using a machine-specific - regexp comparison file. - (readelf -S test, readelf -s test): Remove v850*-*-* and - mips*-*-* from list of expected failures. - * binutils-all/readelf.s: Accomodate changes due to - additional sections (and therefore section numbering - differences) on v850*-*-* and mips*-*-* targets. - * binutils-all/readelf.ss: Likewise. - * binutils-all/readelf.ss-mips: New file, which matches - expected output of readelf -s test for mips*-*-*. - -2000-10-25 Hans-Peter Nilsson - - * binutils-all/readelf.exp (-wi test): Add cris-*-* to xfails. - -2000-10-19 Chris Demetriou - - * binutils-all/readelf.exp (readelf_test): Work properly - when multiple targets expect failtures. - (readelf -S test, readelf -s test): Expect mips*-*-* - to fail. - -2000-07-10 Alan Modra - - * lib/utils-lib.exp (default_binutils_assemble): Don't do the hppa - sed fudges for hppa-linux. - -2000-07-01 Frank Ch. Eigler - - * binutils-all/objdump.exp (cpus_expected, cpus_regex): Reorganize - syntax to display more tcl nature. - -2000-06-18 Stephane Carrez - - * binutils-all/objdump.exp (cpus_expected): Recognize m68hc11 and - m68hc12. - -2000-06-18 Nick Clifton - - * binutils-all/readelf.wi: Do not assume the compilation tag to be - unit 1. - - * binutils-all/objcopy.exp: Expect all arm variants to fail the - copying executable test. - -2000-06-14 Hans-Peter Nilsson - - * binutils-all/readelf.exp (regexp_diff): Do not break when a - mismatching line is found. - (readelf_find_size): New. - (readelf_size): New global variable. - (readelf_test): Add newline to send_log of command. - If $srcdir/$subdir/$regexp_file-$readelf_size exists, use it - instead of $srcdir/$subdir/$regexp_file. - (*-*elf test): Fix typo in message. - * binutils-all/readelf.s-64: New. - * binutils-all/readelf.ss-64: New. - -2000-05-02 Alan Modra - - * binutils-all/objcopy.exp (simple copy): Clear xfail for hppa-linux. - - * binutils-all/hppa/objdump.exp: Disable test for elf. - -2000-03-13 Nick Clifton - - * binutils-all/readelf.s: Adjust to match new format of readelf - output. - * binutils-all/readelf.ss: Adjust to match new format of readelf - output. - -1999-11-01 Nick Clifton - - * binutils-all/objcopy.exp: Expect simple objcopy test to fail - for COFF based ARM and Thumb ports. - -Tue Sep 14 00:28:17 1999 Jeffrey A Law (law@cygnus.com) - - * binutils-all/hppa/objdump.exp: Do not run for PA64. - -1999-09-04 Steve Chamberlain - - * binutils-all/objdump.exp: Add pj to cpus_expected. - -Sat Aug 28 00:24:27 1999 Jerry Quinn - - * binutils-all/hppa/freg.s: New file. - * binutils-all/hppa/objdump.exp: Add freg.s test. - -1999-08-09 Ian Lance Taylor - - * binutils-all/objcopy.exp: Add setup_xfail for simple copy test - for i*86-*-msdos*. - -1999-07-21 H.J. Lu - - * binutils-all/testprog.c: Include . - -1999-06-29 Nick Clifton - - * binutils-all/objdump.exp: Add fr30 and MCore to expected cpus - list. - - * binutils-all/readelf.r: Do not assume a fixed number of spaces - in the output. - -1999-06-10 Nick Clifton - - * binutils-all/readelf.wi: Update to match latest output. - * binutils-all/readelf.h: Update to match latest output. - -Wed Jun 9 11:59:22 1999 Andreas Schwab - - * binutils-all/objdump.exp: Tighten regexp to match `objdump -i' - output to avoid massive exponential behaviour. - -1999-05-28 Ian Lance Taylor - - * binutils-all/readelf.h: Update for changes of 1999-04-08. - -1999-03-12 Nick Clifton - - * binutils-all/readelf.wi: Remove FR30 specific components. - * binutils-all/readelf.s: Remove RELA specific components. - -1999-02-16 Nick Clifton - - * binutils-all/readelf.s: Do not assume section alignment is 4. - * binutils-all/readelf.r: Do not assume rela's are being used. - * binutils-all/readelf.exp: disable tests for non ELF based - targets. - -1999-02-02 Nick Clifton - - * binutils-all/readelf.wi: Amend to match new readelf output. - * binutils-all/readelf.r: Do not assume that RELAs will be used. - -1999-01-29 Nick Clifton - - * config/default.exp: Add definitions of READELF and READELFFLAGS. - - * binutils-all/readelf.exp: New file: Readelf tests - * binutils-all/readelf.h: New file: Expected results for 'readelf -h' - * binutils-all/readelf.s: New file: Expected results for 'readelf -S' - * binutils-all/readelf.ss: New file: Expected results for 'readelf -s' - * binutils-all/readelf.r: New file: Expected results for 'readelf -r' - * binutils-all/readelf.wi: New file: Expected results for 'readelf -wi' - -Wed Dec 9 19:11:39 1998 Jeffrey A Law (law@cygnus.com) - - * binutils-all/objcopy.exp (copy_executable): Expect comparison - failure for mips*-*-elf. - -Fri Oct 16 22:57:12 1998 Felix Lee - - * binutils-all/objcopy.exp: fix "no symbols" message. - -Tue Jul 28 15:14:04 1998 Jeffrey A Law (law@cygnus.com) - - * binutils-all/objcopy.exp: Keep "main" and "_main" for strip with - saving symbol tests. Look for either "main" or "_main" in the output - file. Fix test for "no symbols" in the output file. - -1998-07-22 Vladimir N. Makarov - - * binutils-all/objcopy.exp: Polish output about fail for objcopy - (simple copy), strip with/without saving a symbol for object file - and executable. - -Wed Jul 1 16:27:40 1998 Nick Clifton - - * binutils-all/objcopy.exp: ARM simple objcopy now passes. - -Wed Jun 24 09:20:21 1998 Nick Clifton - - * binutils-all/objdump.exp: Look for '.data' rather than 'data' - when parsing output of objdump -h. - * binutils-all/size.exp: Look for '.data' rather than 'data' when - parsing output of size -A. - -1998-07-20 Vladimir N. Makarov - - * binutils-all/objcopy.exp: Two new tests - strip object file with - saving a symbol and strip executable file with saving a symbol. - -Fri May 29 14:50:24 1998 Ian Lance Taylor - - * binutils-all/objcopy.exp: Don't xfail the simple objcopy test - when cross compiling. - -Thu Nov 6 14:32:37 1997 Bob Manson - - * lib/utils-lib.exp: Temporary definition of target_assemble and - default_target_assemble so that testing can work with older - dejagnu versions. - -Wed Sep 24 12:09:15 1997 Bob Manson - - * binutils-all/objcopy.exp(strip_executable): Make a new copy of - the executable being tested. - -Mon Sep 15 21:25:20 1997 Bob Manson - - * binutils-all/objcopy.exp: Compile the executables to be tested - on the target with a status wrapper (as necessary). - - * binutils-all/ar.exp: If testing on a remote host, don't bother - looking on the local host for the program being tested. Use the - correct filenames on the remote host. - - * binutils-all/nm.exp: Ditto. - - * binutils-all/size.exp: Ditto. - - * binutils-all/objdump.exp: Ditto. - (cpus_expected): Add the target CPU to the regexp of CPUs to be - expected, if it's not already there. - -Thu Aug 28 09:57:27 1997 Doug Evans - - * binutils-all/objdump.exp (cpus_expected): Add arc. - -Tue Aug 5 00:03:20 1997 Ian Lance Taylor - - * config/default.exp: Look for nm-new and strip-new. - -Tue Jun 3 17:12:54 1997 Bob Manson - - * config/default.exp: Remove expect_before statement. - - * binutils-all/objcopy.exp: Don't use global exec_output variable; - the output is returned from remote_load instead. - -Mon May 12 22:14:20 1997 Bob Manson - - * binutils-all/objcopy.exp(strip_test): Tests that - fail to compile are untested, not unresolved. - (copy_setup): Ditto. - - * lib/utils-lib.exp(default_binutils_assemble): Call - target_assemble instead of target_compile. - -Wed Apr 30 20:37:51 1997 Bob Manson - - Changes to support multilib and remote hosted testing, along with - general cleanups and simplifications. - - * lib/utils-lib.exp(binutil_version): Use remote_exec. - (default_binutils_run): Ditto. - (default_binutils_assemble): Remove first argument; call - target_compile to actually do the assembly. - (default_binutils_compile,default_binutils_remove,prune_warnings): - Delete. - - * config/default.exp: Remove AS and ASFLAGS. - (binutils_compile,binutils_remove): Delete. - (binutils_assemble): Remove first argument. - - * binutils-all/ar.exp: See if we're running the tests on - a remote host, and download/upload files as appropriate. - Replace calls to binutils_remove with remote_file. Replace - calls to binutils_compile with target_compile. Remove initial - argument to binutils_assemble. Use remote_load to execute - programs on the target. - * binutils-all/nm.exp: Ditto. - * binutils-all/objcopy.exp: Ditto. - * binutils-all/objdump.exp: Ditto. - * binutils-all/size.exp: Ditto. - -Mon Apr 14 12:36:41 1997 Ian Lance Taylor - - * binutils-all/ar.exp (long_filenames): Check for a file system - with a 14 character file name length limit. - -Tue Apr 1 09:52:15 1997 Jeffrey A Law (law@cygnus.com) - - * binutils-all/objdump.exp: Handle d10v. - -Fri Feb 7 16:45:34 1997 Bob Manson - - * binutils-all/ar.exp: Use prune_warnings instead of - prune_system_crud. - * binutils-all/objcopy.exp: Ditto. - -Wed Jan 29 00:16:43 1997 Bob Manson - - * binutils-all/nm.exp: Use / between $srcdir and $subdir. - * binutils-all/objcopy.exp: Ditto. - * binutils-all/objdump.exp: Ditto. - * binutils-all/size.exp: Ditto. - * binutils-all/hppa/objdump.exp: Ditto. - - -Wed Oct 16 22:57:59 1996 Jeffrey A Law (law@cygnus.com) - - * binutils-all/objdump.exp: Add mn10200 and mn10300 to expected - cpus list. - -Tue Oct 1 15:06:55 1996 Ian Lance Taylor - - * lib/utils-lib.exp (binutil_version): Fix for current version - printing. - -Sun Aug 4 22:25:40 1996 Ian Lance Taylor - - * binutils-all/objcopy.exp: Fix end of line matching in srec tests - to work with TCL 7.5. - -Sat Jun 29 12:51:30 1996 Ian Lance Taylor - - * binutils-all/objcopy.exp: Simple copy test works for i960 b.out - targets. - -Mon Jun 24 14:33:04 1996 Ian Lance Taylor - - * binutils-all/objcopy.exp: On OSF/1, the simple copy test will - succeed with gas, and fail with /bin/as, so mark it as an expected - failure only if it fails. - -Tue Mar 26 16:55:08 1996 Jeffrey A Law (law@cygnus.com) - - * binutils-all/objcopy.exp: No longer expect adjust-section-vma - test to fail for hppa*-*-proelf*. - -Mon Mar 11 08:25:14 1996 Jeffrey A Law (law@cygnus.com) - - * binutils-all/objdump.exp: Look for "$CODE$", not just "CODE". - -Wed Jan 31 11:55:13 1996 Jeffrey A Law (law@cygnus.com) - - * binutils-all/objcopy.exp: Expect adjust-section-vma tests to - fail for hppa*-*-proelf* targets. - -Thu Jan 25 13:53:04 1996 Ian Lance Taylor - - * binutils-all/objdump.exp: Update for objdump -h format change. - * binutils-all/objcopy.exp: Likewise. - -Mon Jan 15 18:14:14 1996 Ian Lance Taylor - - * binutils-all/objcopy.exp: Use the lma, not the vma, when testing - address adjustments. - -Fri Dec 15 16:31:55 1995 Ian Lance Taylor - - * binutils-all/objdump.exp: Update objdump -i test for current - objdump output. - -Mon Nov 27 15:15:09 1995 Ian Lance Taylor - - * binutils-all/objcopy.exp: Correct fail calls to always use the - same string as the pass call. - -Wed Nov 22 13:18:58 1995 Ian Lance Taylor - - * lib/utils-lib.exp (prune_system_crud): Discard -g -O warnings - from native compilers on OSF/1 and SunOS. - -Fri Nov 17 10:36:09 1995 Ian Lance Taylor - - * lib/utils-lib.exp (default_binutils_compiler: Change error - message to say compilation rather than assembly. - -Wed Nov 15 18:34:42 1995 Ken Raeburn - - * binutils-all/objcopy.exp: Simple copy test does appear to work - on i*86-svr4. - -Wed Nov 15 12:19:28 1995 Ian Lance Taylor - - * binutils-all/objcopy.exp: If assembly fails, call unresolved. - Test running objcopy and strip on a final executable. - * binutils-all/testprog.c: New file. - * config/default.exp (STRIP, STRIPFLAGS): Define. - (binutils_compile): New procedure. - * lib/utils-lib.exp (default_binutils_compile): New procedure. - -Fri Nov 3 13:22:33 1995 Ian Lance Taylor - - * lib/utils-lib.exp (default_binutils_run): Don't use verbose - -log, reverting part of Oct 2 change. - -Wed Nov 1 15:09:57 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 - - * binutils-all/objcopy.exp: Add setup_xfails for - m68*-motorola-sysv* and m88*-motorola-sysv*. - -Wed Oct 4 14:38:31 1995 Ian Lance Taylor - - * binutils-all/nm.exp: Add setup_xfails for XCOFF. - -Mon Oct 2 12:41:48 1995 Ian Lance Taylor - - * binutils-all/ar.exp: New file. - * binutils-all/bintest.s: Make text_symbol and data_symbol global. - Add new static symbols static_text_symbol and static_data_symbol. - * binutils-all/nm.exp: Adjust accordingly. - * config/default.exp (AR): Set if not set. - (binutils_remove): New procedure. - * lib/utils-lib.exp (default_binutils_run): Call - prune_system_crud on program output. Use verbose -log instead of - both verbose and send_log. - (default_binutils_remove): New procedure. - - * lib/utils-lib.exp (default_binutils_assemble): Call - prune_system_crud on assembler output. - -Tue Sep 26 14:07:05 1995 Ian Lance Taylor - - * binutils-all/objcopy.exp: Add setup_xfails for simple copy test - for i386 COFF targets. - -Wed Sep 13 13:20:21 1995 Ian Lance Taylor - - * lib/utils-lib.exp (prune_system_crud): Define if not defined. - * binutils-all/objcopy.exp: Call prune_system_crud on cmp output. - -Sat Aug 19 17:38:06 1995 Ian Lance Taylor - - * binutils-all/objcopy.exp: Add xfail for i*86-*-aout* for simple - copy test. - -Wed Aug 16 16:52:53 1995 Ian Lance Taylor - - * binutils-all/nm.exp: Add setup_xfail for mips*-sony-bsd* for - tests which fail on ECOFF targets. - - * binutils-all/objcopy.exp: Change i*86-*-linux xfail for simple - copy test to check for i*86-*-linuxaout* instead. - -Tue Aug 8 17:48:37 1995 Ian Lance Taylor - - * binutils-all/objcopy.exp: Add setup_xfail for a29k-*-vxworks* - for simple copy test. - -Tue Jul 25 11:57:12 1995 Ian Lance Taylor - - * binutils-all/objcopy.exp: Change setup_xfail for simple copy - test from i960-*-vxworks5.1 to i960-*-vxworks*. - -Mon Jul 10 12:25:46 1995 Ian Lance Taylor - - * binutils-all/objcopy.exp: Add setup_xfail for z8*-*-coff for - simple copy test. - * binutils-all/objdump.exp (cpus_expected): Add z8001 and z8002. - -Sun May 21 20:32:53 1995 Jeff Law (law@snake.cs.utah.edu) - - * binutils-all/hppa/objdump.exp (addendbug): Handle PA ELF targets - too. - * binutils-all/objcopy.exp (simple copy): Don't expect PA ELF - targets to fail. - -Tue Apr 4 14:52:08 1995 Jeff Law (law@snake.cs.utah.edu) - - * binutils-all/hppa: Renamed from binutils-hppa. - -Wed Mar 29 12:02:43 1995 Ian Lance Taylor - - * binutils-all/objcopy.exp: Add setup_xfail for simple copy test - for h8500-*-hms and h8500-*-coff. - -Tue Mar 28 11:18:28 1995 Ian Lance Taylor - - * binutils-all/objcopy.exp: Add setup_xfail for simple copy test - for m68*-ericsson-ose and m88*-*-coff. - -Mon Mar 27 11:27:31 1995 Ian Lance Taylor - - * binutils-all/objcopy.exp: Add setup_xfail for simple copy test - for m68*-*-vxworks*. - -Fri Mar 24 11:44:25 1995 Ian Lance Taylor - - * binutils-hppa/objdump.exp: Correct hppa*-*-* check. - -Tue Mar 21 10:48:45 1995 Jeff Law (law@snake.cs.utah.edu) - - * binutils-hppa/addendbug.s: New testcase. - * binutils-hppa/objdump.exp: Run it. - -Mon Mar 20 11:31:05 1995 Ian Lance Taylor - - * lib/utils-lib.exp (default_binutils_run): Quote any dollar signs - in progargs before passing it to exec. - -Fri Mar 17 16:39:31 1995 Jeff Law (law@snake.cs.utah.edu) - - * config/hppa.sed: Sed script to transform bintest.s into proper - PA assembly code. - * binutils-all/nm.exp: Enable these tests on the PA. - * binutils-all/objcopy.exp: Enable these tests on the PA. Expect - simple copy to fail. - * binutils-all/objdump.exp: Enable these tests on the PA. Handle - "CODE" as a section name. - * binutils-all/size.exp: Enable these tests on the PA. - * lib/utils-lib.exp (default_binutils_assemble): For "hppa*-*-*", - run the assembly through a sed script before passing it to the - assembler. - -Wed Mar 15 16:47:13 1995 Ian Lance Taylor - - * binutils-all/objdump.exp: Force section sizes to be interpreted - in hex. Change objdump -h failure mode to always use the same - string. - -Thu Jan 5 13:01:43 1995 Ian Lance Taylor - - * binutils-all/nm.exp: Just check for irix4*, rather than - irix\[0-4\]*, to avoid DejaGnu bug. - -Thu Dec 15 19:35:31 1994 Ken Raeburn - - * binutils-all/objcopy.exp: Expect simple-objcopy test to fail - for various other targets for which gas doesn't use bfd: sh-hms, - m68k-hpux, m68k-sunos, m68k-coff, i386-linux, a29k-udi, a29k-coff, - i960-vxworks5.1, i960-coff, h8300-hms, h8300-coff. - -Wed Dec 14 15:54:46 1994 Ken Raeburn - - * binutils-all/size.exp: Skip tests requiring bintest.o on hppa, - since it (correctly) generates syntax errors on that platform. - * binutils-all/objdump.exp: Ditto. - * binutils-all/nm.exp: Ditto. - * binutils-all/objcopy.exp: Ditto. Also, move setup_xfail for - sh-coff to branch where objcopy execution produced no error - messages. Expect failure for hp300 also. - -Thu Dec 8 14:36:15 1994 Ken Raeburn - - * binutils-all/objdump.exp (cpus_expected): New variable, taken - from objdump -i test, added ns32k and powerpc, sorted. - (objdump -i, -f tests): Use $cpus_expected. - - * binutils-all/objcopy.exp: For simple-copy test, expect failure - for sh-coff. - -Tue Oct 25 16:00:14 1994 Ian Lance Taylor - - * binutils-all/objcopy.exp: Adjust --adjust-section-vma tests for - new S-record section handling. - -Tue Oct 18 11:18:21 1994 Ian Lance Taylor - - * binutils-all/nm.exp: nm with no arguments and nm -P do not work - as expected on ECOFF targets; add calls to setup_xfail. - - * binutils-all/objcopy.exp: New file. - * config/default.exp: Initialize OBJCOPY and OBJCOPYFLAGS. - -Fri Oct 14 14:46:22 1994 Ian Lance Taylor - - Rewrite testsuite. - * configure.in, Makefile.in: Remove. - * binutils-all/configure.in, binutils-all/Makefile.in: Remove. - * binutils-all/bintest.c: Remove. - * binutils-all/bintest.s: New file. - * binutils-all/nm.exp, binutils-all/objdump.exp: Rewrite. - * binutils-all/size.exp: Rewrite. - * config/default.exp: Load utils-lib.exp. Set AS and ASFLAGS. - Don't go up one directory from $base_dir. Create tmpdir. - (binutils_run, binutils-assemble): New procedures. - * config/unix.exp: Remove. - * config/mt-a29k-udi, config/mt-i386-aout: Remove. - * config/mt-i960-nindy, config/mt-lynx, config/mt-m68k: Remove. - * config/mt-mips-ecoff, config/mt-slite: Remove. - * config/mt-sparc-aout, config/mt-vxworks: Remove. - * lib/utils-lib.exp (binutil_version): Don't redirect standard - input when getting version. Don't unset errorInfo. - (default_binutils_run): New procedure. - (default_binutils_assemble): New procedure. - -Thu Sep 29 12:45:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * VMS does not permit `.' in directory names: renamed binutils.all - to binutils-all. - * configure.in (configdirs): Change binutils.all to binutils-all. - -Fri Sep 23 16:01:14 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * configure.in: Use mt-m68k for m68k*-*-aout* and m68k*-*-coff*, - not for m68k-*-*. - -Fri Sep 23 13:54:50 1994 Ken Raeburn - - * binutils.all/objdump.exp: Added ARM to list of CPU types. - -Thu Sep 22 11:04:50 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * binutils.all/objdump.exp: Update for new usage message. - * binutils.all/size.exp: Use a double backslash in the string to - get a single backslash to the regexp matcher. Accept $TEXT$, - $DATA$ and $BSS$ as well as .text, .data and .bss, for HP/UX. - -Fri Sep 2 12:53:10 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * config/unix.exp: If nm.new does not exist, use [transform nm]. - * config/default.exp: Likewise. - -Wed Aug 24 12:41:37 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) - - * configure.in, binutils.all/configure.in: Change i386 to - i[345]86. - -Tue Jul 19 15:23:53 1994 Bill Cox (bill@rtl.cygnus.com) - - * config/mt-mips-ecoff: Add -Tidp.ld option. - -Thu Jun 30 12:41:55 1994 J.T. Conklin (jtc@phishhead.cygnus.com) - - * config/default.exp: Use nm.new, not nm, from newly built tree. - -Tue May 17 14:04:05 1994 Bill Cox (bill@rtl.cygnus.com) - - * config/default.exp, config/unix.exp: Replace error - proc calls with perror. - -Tue May 10 11:20:54 1994 Stan Shebs (shebs@andros.cygnus.com) - - * configure.in (sparclite): Match on sparclite*-*-*. - -Wed Apr 13 18:25:19 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * config/unix.exp: Use nm.new, not nm, from newly built tree. - - * binutils.all/objdump.exp: Add more wildcards to list of - single-letter options in pattern for usage message. - - * binutils.all/nm.exp: Deleted debug-symbols test, since it only - works for a.out/stabs systems. Fixed regexps to make underscores - optional, since some C compilers don't prepend them. Deleted - check for foo.o symbol, since again some systems don't generate - it. - -Mon Apr 11 10:31:00 1994 Bill Cox (bill@rtl.cygnus.com) - - * Makefile.in (check): Set TCL_LIBRARY for runtest. - -Mon Feb 14 19:34:03 1994 Rob Savoye (rob@darkstar.cygnus.com) - - * Makefile.in: Use new config features of DejaGnu in site.exp - file. "Make check" should now work for all crosses. - -Fri Jan 28 18:00:29 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * binutils.all/objdump.exp: In usage message, accept - "section-name" as well as "section_name". - -Mon Jan 17 16:57:02 1994 Ken Raeburn (raeburn@cujo.cygnus.com) - - * binutils.all/objdump.exp: Trim list of format names expected, - and accept any known CPU type. - -Thu Dec 2 20:50:24 1993 Rob Savoye (rob@darkstar.cygnus.com) - - * Makefile.in: Remove some stuff from the site.exp file. - * config/unix.exp: Add global before seeing if the variables for - nm, objdump, and size exist. - -Wed Nov 3 11:12:32 1993 Rob Savoye (rob@darkstar.cygnus.com) - - * config/udi.exp,unix.exp: Transform tool name. - * binutils.all/*.exp: Clear errorInfo after exec. - -Fri Jul 2 12:41:20 1993 Ian Lance Taylor (ian@cygnus.com) - - * binutils.all/*.exp: Use -- for long arguments rather than +. - -Fri Jun 4 10:52:29 1993 david d `zoo' zuhn (zoo@cirdan.cygnus.com) - - * configure.in: change srctrigger to Makefile.in - -Wed May 26 17:27:46 1993 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in (FLAGS_TO_PASS): Pass down CC and CFLAGS. - -Fri May 7 13:58:44 1993 Ian Lance Taylor (ian@cygnus.com) - - * binutils.all/objdump.exp: Update for new usage message. - -Mon Apr 19 14:08:52 1993 Rob Savoye (rob@darkstar.cygnus.com) - - * binutils.all/*.exp: Use the new util_test proc. - * Makefile.in: Create a local site.exp file with config info. - -Thu Mar 25 05:38:47 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) - - * nm.all/configure.in (srcname): Delete extra quote. - -Mon Feb 22 07:54:03 1993 Mike Werner (mtw@poseidon.cygnus.com) - - * binutils/testsuite: made modifications to testcases, etc., to allow - them to work properly given the reorganization of deja-gnu and the - relocation of the testcases from deja-gnu to a "tool" subdirectory. - -Sun Feb 21 10:55:55 1993 Mike Werner (mtw@poseidon.cygnus.com) - - * binutils/testsuite: Initial creation of binutils/testsuite. - Migrated dejagnu testcases and support files for testing nm to - binutils/testsuite from deja-gnu. These files were moved "as is" - with no modifications. This migration is part of a major overhaul - of dejagnu. The modifications to these testcases, etc., which - will allow them to work with the new version of dejagnu will be - made in a future update. +For older changes see ChangeLog-9303 + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff -uprN binutils-2.14.90.0.7/binutils/testsuite/ChangeLog-9303 binutils-2.14.90.0.8/binutils/testsuite/ChangeLog-9303 --- binutils-2.14.90.0.7/binutils/testsuite/ChangeLog-9303 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/testsuite/ChangeLog-9303 2004-01-14 13:07:44.000000000 -0800 @@ -0,0 +1,1044 @@ +2003-12-03 Nick Clifton + + * binutils-all/objdump.exp (cpus_expected): Add "msp". + +2003-10-06 Dave Brolley + + * binutils-all/objdump.exp (cpu_expected): Add fr550. + +2003-09-29 H.J. Lu + + * binutils-all/readelf.exp: Use is_elf_format. + + * binutils-all/readelf.h: Support IA64/ILP32. + * binutils-all/readelf.s: Likewise. + * binutils-all/readelf.ss: Likewise. + + * lib/utils-lib.exp (proc is_elf_format): Copy from ld + testsuite. Add ia64-*-hpux*. + +2003-06-29 Danny Smith + + * binutils-all/objcopy.exp: Initialise $test_prog to + testprog.exe on mingw targeted systems too. + +2003-06-28 Danny Smith + + * binutils-all/windres/checkbox.rc: New file. + * binutils-all/windres/checkbox.rsd: New file. + * binutils-all/windres/combobox.rc: New file. + * binutils-all/windres/combobox.rsd: New file. + * binutils-all/windres/edittext.rc: New file. + * binutils-all/windres/edittext.rsd: New file. + * binutils-all/windres/listbox.rc: New file. + * binutils-all/windres/listbox.rsd: New file. + * binutils-all/windres/scrollbar.rc: New file. + * binutils-all/windres/scrollbar.rsd: New file. + +2003-06-27 Thiemo Seufer + + * binutils-all/readelf.ss-tmips: Adjust symbol indices. + +2003-06-19 Nick Clifton + + * binutils-all/objcopy.exp: Replace occurances of testprog with + $test_prog. Initialise this variable to testprog.exe on Cygwin + targeted systems. + +2003-04-26 Nick Clifton + + * binutils-all/readelf.exp (prune_read_warnings): Rename to + prune_readelf_wi_warnings. + (readelf_wi_test): New proc: Test 'readelf -wi' by grepping + through its output. + Replace invocation of "readelf_test -wi" with "readelf_wi_test" + * binutils-all/readelf.wi: Delete. + +2003-04-23 Nick Clifton + + * binutils-all/readelf.exp (proc prune_readelf_warnings): New + function. + (proc readelf_test): Prune warning messages. + (readelf_test -wi): Add more expected failures. + * binutils-all/readelf.wi: Severly reduce expected output. + * binutils-all/testprog.c (string): Explicitly use unsigned + chars. + (stdio.h, string.h): Remove inclusion. + +2003-04-23 J"orn Rennecke + + * binutils-all/readelf.wi: Update. + +2003-04-22 Dimitrie O. Paun + + * binutils-all/windres/windres.exp: Add test for the new -J + option. Remove use of -I as it now generates a warning message. + +2003-04-03 Nick Clifton + + * binutils-all/windres/dialogid.rc: Replace "Static" with + "classname" so that compilation will match behaviour of the + Windows resource compiler. + +2003-03-31 Nick Clifton + + * binutils-all/windres/dialogid.rc: New test source file. + * binutils-all/windres/dialogid.rsd: New test expected results. + +2002-11-07 Casper S. Hornstrup + + * binutils-all/dlltool.exp: New file for testing dlltool. + * binutils-all/fastcall.def: New file for testing fastcall + exports. + * config/default.exp: Set DLLTOOL variable. + +2002-08-27 Alan Modra + + * binutils-all/objcopy.exp: Revert last change. + +2002-08-26 Alan Modra + + * binutils-all/objcopy.exp (strip_test): Adjust for "no symbols" on + stdout. + (strip_executable): Likewise. + +2002-08-13 Alan Modra + + * binutils-all/objdump.exp (cpus_expected): Add fr500, ip2022, + tic80, tms320c30. + * binutils-all/objcopy.exp (simple copy): Revise xfails. + +2002-05-29 Alan Modra + + * binutils-all/objcopy.exp (strip_test_with_saving_a_symbol): + Revert 2001-11-15. Instead allow `D main'. + +2002-04-16 Eric Kohl + + * binutils-all/windres/dialog0.rc: New test case: Check default + attributes for dialogs + * binutils-all/windres/dialog0.rsd: New file: Expected output. + * binutils-all/windres/dialog1.rc: New test case: Check + DISCARDABLE flag is propogated. + * binutils-all/windres/dialog1.rsd: New file: Expected output. + +2002-04-15 Eric Kohl + + * binutils-all/windres/dlgfont.rc: New test case: Checks FONT + statement in DIALOG and DIALOGEX resources. + * binutils-all/windres/dlgfont.rsd: Expected output. + +2002-04-11 Nick Clifton + + * binutils-all/ar.exp (long_filenames): Use 'file delete' instead + of 'exec rm -f'. + +2002-04-10 Nick Clifton + + * binutils-all/ar.exp (long_filenames): Delete the abc... files + upon successfully completion of the test. + + * binutils-all/windres/capstyle.rsd: Regenerate using MSVC. + * binutils-all/windres/deflang.rsd: Regenerate using MSVC. + * binutils-all/windres/dialogsignature.rsd: Regenerate using MSVC. + * binutils-all/windres/escapea.rsd: Regenerate using MSVC. + * binutils-all/windres/escapex.rsd: Regenerate using MSVC. + * binutils-all/windres/nocaption.rsd: Regenerate using MSVC. + * binutils-all/windres/printstyle.rsd: Regenerate using MSVC. + * binutils-all/windres/sublang.rsd: Regenerate using MSVC. + +2002-04-09 Nick Clifton + + * binutils-all/windres/capstyle.rc: New test case: Set default + style for captions. + * binutils-all/windres/capstyle.rsd: Expected output. + + * binutils-all/windres/deflang.rc: New test case: Check default + language. + * binutils-all/windres/deflang.rsd: Expected output. + + * binutils-all/windres/dialogsignature.rc: New test case for + decoding the dialog signature. + * binutils-all/windres/dialogsignature.rsd: Expected output. + + * binutils-all/windres/escapea.rc: New test case for encoding \a + escape sequence. + * binutils-all/windres/escapea.rsd: Expected output. + + * binutils-all/windres/escapex.rc: New test case for hex constants + in strings. + * binutils-all/windres/escapex.rsd: Expected output + + * binutils-all/windres/nocaption.rc: New test case dialogs without + captions. + * binutils-all/windres/nocaption.rsd: Expected output + + * binutils-all/windres/quoteclass.rc: New test case for quoted + CLASS definitions in DIALOG resources. + + * binutils-all/windres/sublang.rc: New test case: Check assignment + of sub-language. + * binutils-all/windres/sublang.rsd: Expected output. + +2002-02-18 Timothy Daly + + * binutils-all/readelf.r: Change expected output to match new, + narrowed-to-80-chars format. + * binutils-all/readelf.r-64: Change expected output to match new, + narrowed-to-80-chars format. + +2002-02-18 Hans-Peter Nilsson + + * binutils-all/objcopy.exp + (strip_executable_with_saving_a_symbol): Prune symbol Main in nm + output for mmix-knuth-mmixware. + +2002-02-13 Nick Clifton + + * binutils-all/readelf.ss-mips: Do not expect an explicit + ordering of the sections. + +2002-02-10 Nick Clifton + + * binutils-all/objdump.exp: Add 'xscale' to the list of expected + CPUs. + +2002-01-14 Nick Clifton + + * binutils-all/objcopy.exp: Expect xscale-coff to fail simple + objcopy test for the same reason as arm-coff. + +2001-11-29 H.J. Lu + + * binutils-all/objcopy.exp (strip_test): Add strip on archive. + +2001-11-15 Alan Modra + + * binutils-all/objcopy.exp: (strip_test_with_saving_a_symbol): + Allow '? main', to suit powerpc64. + +2001-11-14 Geoffrey Keating + + * binutils-all/readelf.exp: powerpc-*-eabi* is an ELF target. + +2001-10-03 Thiemo Seufer + + * binutils-all/readelf.exp: Exclude mips*-*-elf* from 'readelf -wi' + test. + +Tue Sep 4 20:25:41 2001 Jeffrey A Law (law@cygnus.com) + + * binutils/all/readelf.exp: Expect readelf -wi to + fail for the H8 series. + +2001-08-27 Alan Modra + + * binutils-all/readelf.s-64: Adjust offsets for powerpc64. Don't + use constructs like [45][08] when all combinations are not valid. + Instead use (48|50) to explicitly state which values are correct. + +2001-08-21 H.J. Lu + + * binutils-all/readelf.r: Updated for the readelf change. + + * binutils-all/readelf.r-64: New for the readelf change. + +2001-07-27 H.J. Lu + + * binutils-all/windres/windres.exp: Don't set xfail for + bmpalign (compare) on none-ix86/pe targets. + +2001-07-24 H.J. Lu + + * binutils-all/windres/windres.exp: Set xfail on none-ix86/pe + targets. + +2001-07-18 DJ Delorie + + * config/default.exp (WINDRES): Add. + * binutils-all/windres/windres.exp: New. + * binutils-all/windres/README: New. + * binutils-all/windres/bmp1.bmp: New. + * binutils-all/windres/bmpalign.rc: New. + * binutils-all/windres/bmpalign.rsd: New. + * binutils-all/windres/lang.rc: New. + * binutils-all/windres/lang.rsd: New. + * binutils-all/windres/msupdate: New. + * binutils-all/windres/strtab1.rc: New. + * binutils-all/windres/strtab1.rsd: New. + +2001-07-05 Ben Elliston + + * lib/utils-lib.exp (target_assemble): Remove duplicate copy. + (default_target_assemble): Likewise. + +2001-06-18 Thiemo Seufer + + * binutils-all/readelf.exp: Typo. + +2001-06-19 Andreas Jaeger + + * binutils-all/readelf.r: Don't check for specific info value to + pass testsuite on ia64 and alpha. + +2001-06-07 H.J. Lu + + * binutils-all/readelf.ss-mips: Support stabs. + * binutils-all/readelf.ss-tmips: Likewise. + +2001-05-25 H.J. Lu + + * binutils-all/readelf.exp (readelf_test): Set target_machine + to tmips for traditional mips. + + * binutils-all/readelf.s: Support traditional mips. + + * binutils-all/readelf.ss-tmips: New for traditional mips. + +2001-05-25 Alan Modra + + * binutils-all/readelf.exp: Replace linuxoldld with linux*oldld + and linuxaout with linux*aout. + * binutils-all/objcopy.exp: Remove xfail for linuxaout. + +2001-05-24 H.J. Lu + + * binutils-all/objdump.exp (cpus_expected): Add s390. + +2001-03-30 H.J. Lu + + * binutils-all/readelf.exp: Run on more ELF targets. + +2001-02-11 H.J. Lu + + * config/default.exp: Set up gcc_gas_flag. + + * binutils-all/objcopy.exp (copy_setup): Process gcc_gas_flag + for Linux only. + + * binutils-all/testprog.c: Include and don't use + exit (). + +2001-01-16 Matthew Green + + * binutils-all/readelf.s-64: Match readelf -S output. + +2000-12-09 Nick Clifton + + * binutils-all/objdump.exp (cpus_expected): Add tic54x and + tms320c54x. + +2000-11-28 Hans-Peter Nilsson + + * binutils-all/readelf.s: Adjust to readelf.c formatting changes. + +2000-11-02 Chris Demetriou + + * binutils-all/readelf.exp (regexp_diff): Add code + from gas testsuite to treat "#..." at beginning of line + as an indicator to skip extra non-matching lines at that + location. + (readelf_test): Add support for using a machine-specific + regexp comparison file. + (readelf -S test, readelf -s test): Remove v850*-*-* and + mips*-*-* from list of expected failures. + * binutils-all/readelf.s: Accomodate changes due to + additional sections (and therefore section numbering + differences) on v850*-*-* and mips*-*-* targets. + * binutils-all/readelf.ss: Likewise. + * binutils-all/readelf.ss-mips: New file, which matches + expected output of readelf -s test for mips*-*-*. + +2000-10-25 Hans-Peter Nilsson + + * binutils-all/readelf.exp (-wi test): Add cris-*-* to xfails. + +2000-10-19 Chris Demetriou + + * binutils-all/readelf.exp (readelf_test): Work properly + when multiple targets expect failtures. + (readelf -S test, readelf -s test): Expect mips*-*-* + to fail. + +2000-07-10 Alan Modra + + * lib/utils-lib.exp (default_binutils_assemble): Don't do the hppa + sed fudges for hppa-linux. + +2000-07-01 Frank Ch. Eigler + + * binutils-all/objdump.exp (cpus_expected, cpus_regex): Reorganize + syntax to display more tcl nature. + +2000-06-18 Stephane Carrez + + * binutils-all/objdump.exp (cpus_expected): Recognize m68hc11 and + m68hc12. + +2000-06-18 Nick Clifton + + * binutils-all/readelf.wi: Do not assume the compilation tag to be + unit 1. + + * binutils-all/objcopy.exp: Expect all arm variants to fail the + copying executable test. + +2000-06-14 Hans-Peter Nilsson + + * binutils-all/readelf.exp (regexp_diff): Do not break when a + mismatching line is found. + (readelf_find_size): New. + (readelf_size): New global variable. + (readelf_test): Add newline to send_log of command. + If $srcdir/$subdir/$regexp_file-$readelf_size exists, use it + instead of $srcdir/$subdir/$regexp_file. + (*-*elf test): Fix typo in message. + * binutils-all/readelf.s-64: New. + * binutils-all/readelf.ss-64: New. + +2000-05-02 Alan Modra + + * binutils-all/objcopy.exp (simple copy): Clear xfail for hppa-linux. + + * binutils-all/hppa/objdump.exp: Disable test for elf. + +2000-03-13 Nick Clifton + + * binutils-all/readelf.s: Adjust to match new format of readelf + output. + * binutils-all/readelf.ss: Adjust to match new format of readelf + output. + +1999-11-01 Nick Clifton + + * binutils-all/objcopy.exp: Expect simple objcopy test to fail + for COFF based ARM and Thumb ports. + +Tue Sep 14 00:28:17 1999 Jeffrey A Law (law@cygnus.com) + + * binutils-all/hppa/objdump.exp: Do not run for PA64. + +1999-09-04 Steve Chamberlain + + * binutils-all/objdump.exp: Add pj to cpus_expected. + +Sat Aug 28 00:24:27 1999 Jerry Quinn + + * binutils-all/hppa/freg.s: New file. + * binutils-all/hppa/objdump.exp: Add freg.s test. + +1999-08-09 Ian Lance Taylor + + * binutils-all/objcopy.exp: Add setup_xfail for simple copy test + for i*86-*-msdos*. + +1999-07-21 H.J. Lu + + * binutils-all/testprog.c: Include . + +1999-06-29 Nick Clifton + + * binutils-all/objdump.exp: Add fr30 and MCore to expected cpus + list. + + * binutils-all/readelf.r: Do not assume a fixed number of spaces + in the output. + +1999-06-10 Nick Clifton + + * binutils-all/readelf.wi: Update to match latest output. + * binutils-all/readelf.h: Update to match latest output. + +Wed Jun 9 11:59:22 1999 Andreas Schwab + + * binutils-all/objdump.exp: Tighten regexp to match `objdump -i' + output to avoid massive exponential behaviour. + +1999-05-28 Ian Lance Taylor + + * binutils-all/readelf.h: Update for changes of 1999-04-08. + +1999-03-12 Nick Clifton + + * binutils-all/readelf.wi: Remove FR30 specific components. + * binutils-all/readelf.s: Remove RELA specific components. + +1999-02-16 Nick Clifton + + * binutils-all/readelf.s: Do not assume section alignment is 4. + * binutils-all/readelf.r: Do not assume rela's are being used. + * binutils-all/readelf.exp: disable tests for non ELF based + targets. + +1999-02-02 Nick Clifton + + * binutils-all/readelf.wi: Amend to match new readelf output. + * binutils-all/readelf.r: Do not assume that RELAs will be used. + +1999-01-29 Nick Clifton + + * config/default.exp: Add definitions of READELF and READELFFLAGS. + + * binutils-all/readelf.exp: New file: Readelf tests + * binutils-all/readelf.h: New file: Expected results for 'readelf -h' + * binutils-all/readelf.s: New file: Expected results for 'readelf -S' + * binutils-all/readelf.ss: New file: Expected results for 'readelf -s' + * binutils-all/readelf.r: New file: Expected results for 'readelf -r' + * binutils-all/readelf.wi: New file: Expected results for 'readelf -wi' + +Wed Dec 9 19:11:39 1998 Jeffrey A Law (law@cygnus.com) + + * binutils-all/objcopy.exp (copy_executable): Expect comparison + failure for mips*-*-elf. + +Fri Oct 16 22:57:12 1998 Felix Lee + + * binutils-all/objcopy.exp: fix "no symbols" message. + +Tue Jul 28 15:14:04 1998 Jeffrey A Law (law@cygnus.com) + + * binutils-all/objcopy.exp: Keep "main" and "_main" for strip with + saving symbol tests. Look for either "main" or "_main" in the output + file. Fix test for "no symbols" in the output file. + +1998-07-22 Vladimir N. Makarov + + * binutils-all/objcopy.exp: Polish output about fail for objcopy + (simple copy), strip with/without saving a symbol for object file + and executable. + +Wed Jul 1 16:27:40 1998 Nick Clifton + + * binutils-all/objcopy.exp: ARM simple objcopy now passes. + +Wed Jun 24 09:20:21 1998 Nick Clifton + + * binutils-all/objdump.exp: Look for '.data' rather than 'data' + when parsing output of objdump -h. + * binutils-all/size.exp: Look for '.data' rather than 'data' when + parsing output of size -A. + +1998-07-20 Vladimir N. Makarov + + * binutils-all/objcopy.exp: Two new tests - strip object file with + saving a symbol and strip executable file with saving a symbol. + +Fri May 29 14:50:24 1998 Ian Lance Taylor + + * binutils-all/objcopy.exp: Don't xfail the simple objcopy test + when cross compiling. + +Thu Nov 6 14:32:37 1997 Bob Manson + + * lib/utils-lib.exp: Temporary definition of target_assemble and + default_target_assemble so that testing can work with older + dejagnu versions. + +Wed Sep 24 12:09:15 1997 Bob Manson + + * binutils-all/objcopy.exp(strip_executable): Make a new copy of + the executable being tested. + +Mon Sep 15 21:25:20 1997 Bob Manson + + * binutils-all/objcopy.exp: Compile the executables to be tested + on the target with a status wrapper (as necessary). + + * binutils-all/ar.exp: If testing on a remote host, don't bother + looking on the local host for the program being tested. Use the + correct filenames on the remote host. + + * binutils-all/nm.exp: Ditto. + + * binutils-all/size.exp: Ditto. + + * binutils-all/objdump.exp: Ditto. + (cpus_expected): Add the target CPU to the regexp of CPUs to be + expected, if it's not already there. + +Thu Aug 28 09:57:27 1997 Doug Evans + + * binutils-all/objdump.exp (cpus_expected): Add arc. + +Tue Aug 5 00:03:20 1997 Ian Lance Taylor + + * config/default.exp: Look for nm-new and strip-new. + +Tue Jun 3 17:12:54 1997 Bob Manson + + * config/default.exp: Remove expect_before statement. + + * binutils-all/objcopy.exp: Don't use global exec_output variable; + the output is returned from remote_load instead. + +Mon May 12 22:14:20 1997 Bob Manson + + * binutils-all/objcopy.exp(strip_test): Tests that + fail to compile are untested, not unresolved. + (copy_setup): Ditto. + + * lib/utils-lib.exp(default_binutils_assemble): Call + target_assemble instead of target_compile. + +Wed Apr 30 20:37:51 1997 Bob Manson + + Changes to support multilib and remote hosted testing, along with + general cleanups and simplifications. + + * lib/utils-lib.exp(binutil_version): Use remote_exec. + (default_binutils_run): Ditto. + (default_binutils_assemble): Remove first argument; call + target_compile to actually do the assembly. + (default_binutils_compile,default_binutils_remove,prune_warnings): + Delete. + + * config/default.exp: Remove AS and ASFLAGS. + (binutils_compile,binutils_remove): Delete. + (binutils_assemble): Remove first argument. + + * binutils-all/ar.exp: See if we're running the tests on + a remote host, and download/upload files as appropriate. + Replace calls to binutils_remove with remote_file. Replace + calls to binutils_compile with target_compile. Remove initial + argument to binutils_assemble. Use remote_load to execute + programs on the target. + * binutils-all/nm.exp: Ditto. + * binutils-all/objcopy.exp: Ditto. + * binutils-all/objdump.exp: Ditto. + * binutils-all/size.exp: Ditto. + +Mon Apr 14 12:36:41 1997 Ian Lance Taylor + + * binutils-all/ar.exp (long_filenames): Check for a file system + with a 14 character file name length limit. + +Tue Apr 1 09:52:15 1997 Jeffrey A Law (law@cygnus.com) + + * binutils-all/objdump.exp: Handle d10v. + +Fri Feb 7 16:45:34 1997 Bob Manson + + * binutils-all/ar.exp: Use prune_warnings instead of + prune_system_crud. + * binutils-all/objcopy.exp: Ditto. + +Wed Jan 29 00:16:43 1997 Bob Manson + + * binutils-all/nm.exp: Use / between $srcdir and $subdir. + * binutils-all/objcopy.exp: Ditto. + * binutils-all/objdump.exp: Ditto. + * binutils-all/size.exp: Ditto. + * binutils-all/hppa/objdump.exp: Ditto. + + +Wed Oct 16 22:57:59 1996 Jeffrey A Law (law@cygnus.com) + + * binutils-all/objdump.exp: Add mn10200 and mn10300 to expected + cpus list. + +Tue Oct 1 15:06:55 1996 Ian Lance Taylor + + * lib/utils-lib.exp (binutil_version): Fix for current version + printing. + +Sun Aug 4 22:25:40 1996 Ian Lance Taylor + + * binutils-all/objcopy.exp: Fix end of line matching in srec tests + to work with TCL 7.5. + +Sat Jun 29 12:51:30 1996 Ian Lance Taylor + + * binutils-all/objcopy.exp: Simple copy test works for i960 b.out + targets. + +Mon Jun 24 14:33:04 1996 Ian Lance Taylor + + * binutils-all/objcopy.exp: On OSF/1, the simple copy test will + succeed with gas, and fail with /bin/as, so mark it as an expected + failure only if it fails. + +Tue Mar 26 16:55:08 1996 Jeffrey A Law (law@cygnus.com) + + * binutils-all/objcopy.exp: No longer expect adjust-section-vma + test to fail for hppa*-*-proelf*. + +Mon Mar 11 08:25:14 1996 Jeffrey A Law (law@cygnus.com) + + * binutils-all/objdump.exp: Look for "$CODE$", not just "CODE". + +Wed Jan 31 11:55:13 1996 Jeffrey A Law (law@cygnus.com) + + * binutils-all/objcopy.exp: Expect adjust-section-vma tests to + fail for hppa*-*-proelf* targets. + +Thu Jan 25 13:53:04 1996 Ian Lance Taylor + + * binutils-all/objdump.exp: Update for objdump -h format change. + * binutils-all/objcopy.exp: Likewise. + +Mon Jan 15 18:14:14 1996 Ian Lance Taylor + + * binutils-all/objcopy.exp: Use the lma, not the vma, when testing + address adjustments. + +Fri Dec 15 16:31:55 1995 Ian Lance Taylor + + * binutils-all/objdump.exp: Update objdump -i test for current + objdump output. + +Mon Nov 27 15:15:09 1995 Ian Lance Taylor + + * binutils-all/objcopy.exp: Correct fail calls to always use the + same string as the pass call. + +Wed Nov 22 13:18:58 1995 Ian Lance Taylor + + * lib/utils-lib.exp (prune_system_crud): Discard -g -O warnings + from native compilers on OSF/1 and SunOS. + +Fri Nov 17 10:36:09 1995 Ian Lance Taylor + + * lib/utils-lib.exp (default_binutils_compiler: Change error + message to say compilation rather than assembly. + +Wed Nov 15 18:34:42 1995 Ken Raeburn + + * binutils-all/objcopy.exp: Simple copy test does appear to work + on i*86-svr4. + +Wed Nov 15 12:19:28 1995 Ian Lance Taylor + + * binutils-all/objcopy.exp: If assembly fails, call unresolved. + Test running objcopy and strip on a final executable. + * binutils-all/testprog.c: New file. + * config/default.exp (STRIP, STRIPFLAGS): Define. + (binutils_compile): New procedure. + * lib/utils-lib.exp (default_binutils_compile): New procedure. + +Fri Nov 3 13:22:33 1995 Ian Lance Taylor + + * lib/utils-lib.exp (default_binutils_run): Don't use verbose + -log, reverting part of Oct 2 change. + +Wed Nov 1 15:09:57 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 + + * binutils-all/objcopy.exp: Add setup_xfails for + m68*-motorola-sysv* and m88*-motorola-sysv*. + +Wed Oct 4 14:38:31 1995 Ian Lance Taylor + + * binutils-all/nm.exp: Add setup_xfails for XCOFF. + +Mon Oct 2 12:41:48 1995 Ian Lance Taylor + + * binutils-all/ar.exp: New file. + * binutils-all/bintest.s: Make text_symbol and data_symbol global. + Add new static symbols static_text_symbol and static_data_symbol. + * binutils-all/nm.exp: Adjust accordingly. + * config/default.exp (AR): Set if not set. + (binutils_remove): New procedure. + * lib/utils-lib.exp (default_binutils_run): Call + prune_system_crud on program output. Use verbose -log instead of + both verbose and send_log. + (default_binutils_remove): New procedure. + + * lib/utils-lib.exp (default_binutils_assemble): Call + prune_system_crud on assembler output. + +Tue Sep 26 14:07:05 1995 Ian Lance Taylor + + * binutils-all/objcopy.exp: Add setup_xfails for simple copy test + for i386 COFF targets. + +Wed Sep 13 13:20:21 1995 Ian Lance Taylor + + * lib/utils-lib.exp (prune_system_crud): Define if not defined. + * binutils-all/objcopy.exp: Call prune_system_crud on cmp output. + +Sat Aug 19 17:38:06 1995 Ian Lance Taylor + + * binutils-all/objcopy.exp: Add xfail for i*86-*-aout* for simple + copy test. + +Wed Aug 16 16:52:53 1995 Ian Lance Taylor + + * binutils-all/nm.exp: Add setup_xfail for mips*-sony-bsd* for + tests which fail on ECOFF targets. + + * binutils-all/objcopy.exp: Change i*86-*-linux xfail for simple + copy test to check for i*86-*-linuxaout* instead. + +Tue Aug 8 17:48:37 1995 Ian Lance Taylor + + * binutils-all/objcopy.exp: Add setup_xfail for a29k-*-vxworks* + for simple copy test. + +Tue Jul 25 11:57:12 1995 Ian Lance Taylor + + * binutils-all/objcopy.exp: Change setup_xfail for simple copy + test from i960-*-vxworks5.1 to i960-*-vxworks*. + +Mon Jul 10 12:25:46 1995 Ian Lance Taylor + + * binutils-all/objcopy.exp: Add setup_xfail for z8*-*-coff for + simple copy test. + * binutils-all/objdump.exp (cpus_expected): Add z8001 and z8002. + +Sun May 21 20:32:53 1995 Jeff Law (law@snake.cs.utah.edu) + + * binutils-all/hppa/objdump.exp (addendbug): Handle PA ELF targets + too. + * binutils-all/objcopy.exp (simple copy): Don't expect PA ELF + targets to fail. + +Tue Apr 4 14:52:08 1995 Jeff Law (law@snake.cs.utah.edu) + + * binutils-all/hppa: Renamed from binutils-hppa. + +Wed Mar 29 12:02:43 1995 Ian Lance Taylor + + * binutils-all/objcopy.exp: Add setup_xfail for simple copy test + for h8500-*-hms and h8500-*-coff. + +Tue Mar 28 11:18:28 1995 Ian Lance Taylor + + * binutils-all/objcopy.exp: Add setup_xfail for simple copy test + for m68*-ericsson-ose and m88*-*-coff. + +Mon Mar 27 11:27:31 1995 Ian Lance Taylor + + * binutils-all/objcopy.exp: Add setup_xfail for simple copy test + for m68*-*-vxworks*. + +Fri Mar 24 11:44:25 1995 Ian Lance Taylor + + * binutils-hppa/objdump.exp: Correct hppa*-*-* check. + +Tue Mar 21 10:48:45 1995 Jeff Law (law@snake.cs.utah.edu) + + * binutils-hppa/addendbug.s: New testcase. + * binutils-hppa/objdump.exp: Run it. + +Mon Mar 20 11:31:05 1995 Ian Lance Taylor + + * lib/utils-lib.exp (default_binutils_run): Quote any dollar signs + in progargs before passing it to exec. + +Fri Mar 17 16:39:31 1995 Jeff Law (law@snake.cs.utah.edu) + + * config/hppa.sed: Sed script to transform bintest.s into proper + PA assembly code. + * binutils-all/nm.exp: Enable these tests on the PA. + * binutils-all/objcopy.exp: Enable these tests on the PA. Expect + simple copy to fail. + * binutils-all/objdump.exp: Enable these tests on the PA. Handle + "CODE" as a section name. + * binutils-all/size.exp: Enable these tests on the PA. + * lib/utils-lib.exp (default_binutils_assemble): For "hppa*-*-*", + run the assembly through a sed script before passing it to the + assembler. + +Wed Mar 15 16:47:13 1995 Ian Lance Taylor + + * binutils-all/objdump.exp: Force section sizes to be interpreted + in hex. Change objdump -h failure mode to always use the same + string. + +Thu Jan 5 13:01:43 1995 Ian Lance Taylor + + * binutils-all/nm.exp: Just check for irix4*, rather than + irix\[0-4\]*, to avoid DejaGnu bug. + +Thu Dec 15 19:35:31 1994 Ken Raeburn + + * binutils-all/objcopy.exp: Expect simple-objcopy test to fail + for various other targets for which gas doesn't use bfd: sh-hms, + m68k-hpux, m68k-sunos, m68k-coff, i386-linux, a29k-udi, a29k-coff, + i960-vxworks5.1, i960-coff, h8300-hms, h8300-coff. + +Wed Dec 14 15:54:46 1994 Ken Raeburn + + * binutils-all/size.exp: Skip tests requiring bintest.o on hppa, + since it (correctly) generates syntax errors on that platform. + * binutils-all/objdump.exp: Ditto. + * binutils-all/nm.exp: Ditto. + * binutils-all/objcopy.exp: Ditto. Also, move setup_xfail for + sh-coff to branch where objcopy execution produced no error + messages. Expect failure for hp300 also. + +Thu Dec 8 14:36:15 1994 Ken Raeburn + + * binutils-all/objdump.exp (cpus_expected): New variable, taken + from objdump -i test, added ns32k and powerpc, sorted. + (objdump -i, -f tests): Use $cpus_expected. + + * binutils-all/objcopy.exp: For simple-copy test, expect failure + for sh-coff. + +Tue Oct 25 16:00:14 1994 Ian Lance Taylor + + * binutils-all/objcopy.exp: Adjust --adjust-section-vma tests for + new S-record section handling. + +Tue Oct 18 11:18:21 1994 Ian Lance Taylor + + * binutils-all/nm.exp: nm with no arguments and nm -P do not work + as expected on ECOFF targets; add calls to setup_xfail. + + * binutils-all/objcopy.exp: New file. + * config/default.exp: Initialize OBJCOPY and OBJCOPYFLAGS. + +Fri Oct 14 14:46:22 1994 Ian Lance Taylor + + Rewrite testsuite. + * configure.in, Makefile.in: Remove. + * binutils-all/configure.in, binutils-all/Makefile.in: Remove. + * binutils-all/bintest.c: Remove. + * binutils-all/bintest.s: New file. + * binutils-all/nm.exp, binutils-all/objdump.exp: Rewrite. + * binutils-all/size.exp: Rewrite. + * config/default.exp: Load utils-lib.exp. Set AS and ASFLAGS. + Don't go up one directory from $base_dir. Create tmpdir. + (binutils_run, binutils-assemble): New procedures. + * config/unix.exp: Remove. + * config/mt-a29k-udi, config/mt-i386-aout: Remove. + * config/mt-i960-nindy, config/mt-lynx, config/mt-m68k: Remove. + * config/mt-mips-ecoff, config/mt-slite: Remove. + * config/mt-sparc-aout, config/mt-vxworks: Remove. + * lib/utils-lib.exp (binutil_version): Don't redirect standard + input when getting version. Don't unset errorInfo. + (default_binutils_run): New procedure. + (default_binutils_assemble): New procedure. + +Thu Sep 29 12:45:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) + + * VMS does not permit `.' in directory names: renamed binutils.all + to binutils-all. + * configure.in (configdirs): Change binutils.all to binutils-all. + +Fri Sep 23 16:01:14 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) + + * configure.in: Use mt-m68k for m68k*-*-aout* and m68k*-*-coff*, + not for m68k-*-*. + +Fri Sep 23 13:54:50 1994 Ken Raeburn + + * binutils.all/objdump.exp: Added ARM to list of CPU types. + +Thu Sep 22 11:04:50 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) + + * binutils.all/objdump.exp: Update for new usage message. + * binutils.all/size.exp: Use a double backslash in the string to + get a single backslash to the regexp matcher. Accept $TEXT$, + $DATA$ and $BSS$ as well as .text, .data and .bss, for HP/UX. + +Fri Sep 2 12:53:10 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) + + * config/unix.exp: If nm.new does not exist, use [transform nm]. + * config/default.exp: Likewise. + +Wed Aug 24 12:41:37 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) + + * configure.in, binutils.all/configure.in: Change i386 to + i[345]86. + +Tue Jul 19 15:23:53 1994 Bill Cox (bill@rtl.cygnus.com) + + * config/mt-mips-ecoff: Add -Tidp.ld option. + +Thu Jun 30 12:41:55 1994 J.T. Conklin (jtc@phishhead.cygnus.com) + + * config/default.exp: Use nm.new, not nm, from newly built tree. + +Tue May 17 14:04:05 1994 Bill Cox (bill@rtl.cygnus.com) + + * config/default.exp, config/unix.exp: Replace error + proc calls with perror. + +Tue May 10 11:20:54 1994 Stan Shebs (shebs@andros.cygnus.com) + + * configure.in (sparclite): Match on sparclite*-*-*. + +Wed Apr 13 18:25:19 1994 Ken Raeburn (raeburn@cujo.cygnus.com) + + * config/unix.exp: Use nm.new, not nm, from newly built tree. + + * binutils.all/objdump.exp: Add more wildcards to list of + single-letter options in pattern for usage message. + + * binutils.all/nm.exp: Deleted debug-symbols test, since it only + works for a.out/stabs systems. Fixed regexps to make underscores + optional, since some C compilers don't prepend them. Deleted + check for foo.o symbol, since again some systems don't generate + it. + +Mon Apr 11 10:31:00 1994 Bill Cox (bill@rtl.cygnus.com) + + * Makefile.in (check): Set TCL_LIBRARY for runtest. + +Mon Feb 14 19:34:03 1994 Rob Savoye (rob@darkstar.cygnus.com) + + * Makefile.in: Use new config features of DejaGnu in site.exp + file. "Make check" should now work for all crosses. + +Fri Jan 28 18:00:29 1994 Ken Raeburn (raeburn@cujo.cygnus.com) + + * binutils.all/objdump.exp: In usage message, accept + "section-name" as well as "section_name". + +Mon Jan 17 16:57:02 1994 Ken Raeburn (raeburn@cujo.cygnus.com) + + * binutils.all/objdump.exp: Trim list of format names expected, + and accept any known CPU type. + +Thu Dec 2 20:50:24 1993 Rob Savoye (rob@darkstar.cygnus.com) + + * Makefile.in: Remove some stuff from the site.exp file. + * config/unix.exp: Add global before seeing if the variables for + nm, objdump, and size exist. + +Wed Nov 3 11:12:32 1993 Rob Savoye (rob@darkstar.cygnus.com) + + * config/udi.exp,unix.exp: Transform tool name. + * binutils.all/*.exp: Clear errorInfo after exec. + +Fri Jul 2 12:41:20 1993 Ian Lance Taylor (ian@cygnus.com) + + * binutils.all/*.exp: Use -- for long arguments rather than +. + +Fri Jun 4 10:52:29 1993 david d `zoo' zuhn (zoo@cirdan.cygnus.com) + + * configure.in: change srctrigger to Makefile.in + +Wed May 26 17:27:46 1993 Ian Lance Taylor (ian@cygnus.com) + + * Makefile.in (FLAGS_TO_PASS): Pass down CC and CFLAGS. + +Fri May 7 13:58:44 1993 Ian Lance Taylor (ian@cygnus.com) + + * binutils.all/objdump.exp: Update for new usage message. + +Mon Apr 19 14:08:52 1993 Rob Savoye (rob@darkstar.cygnus.com) + + * binutils.all/*.exp: Use the new util_test proc. + * Makefile.in: Create a local site.exp file with config info. + +Thu Mar 25 05:38:47 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) + + * nm.all/configure.in (srcname): Delete extra quote. + +Mon Feb 22 07:54:03 1993 Mike Werner (mtw@poseidon.cygnus.com) + + * binutils/testsuite: made modifications to testcases, etc., to allow + them to work properly given the reorganization of deja-gnu and the + relocation of the testcases from deja-gnu to a "tool" subdirectory. + +Sun Feb 21 10:55:55 1993 Mike Werner (mtw@poseidon.cygnus.com) + + * binutils/testsuite: Initial creation of binutils/testsuite. + Migrated dejagnu testcases and support files for testing nm to + binutils/testsuite from deja-gnu. These files were moved "as is" + with no modifications. This migration is part of a major overhaul + of dejagnu. The modifications to these testcases, etc., which + will allow them to work with the new version of dejagnu will be + made in a future update. diff -uprN binutils-2.14.90.0.7/binutils/testsuite/binutils-all/objdump.exp binutils-2.14.90.0.8/binutils/testsuite/binutils-all/objdump.exp --- binutils-2.14.90.0.7/binutils/testsuite/binutils-all/objdump.exp 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/testsuite/binutils-all/objdump.exp 2004-01-14 13:07:44.000000000 -0800 @@ -38,7 +38,7 @@ set cpus_expected [list] lappend cpus_expected a29k alliant alpha arc arm convex lappend cpus_expected d10v d30v fr30 fr500 fr550 h8 hppa i386 i860 i960 ip2022 lappend cpus_expected m32r m68hc11 m68hc12 m68k m88k MCore -lappend cpus_expected mips mn10200 mn10300 ns32k pj powerpc pyramid +lappend cpus_expected mips mn10200 mn10300 msp ns32k pj powerpc pyramid lappend cpus_expected romp rs6000 s390 sh sparc lappend cpus_expected tahoe tic54x tic80 tms320c30 tms320c4x tms320c54x v850 lappend cpus_expected vax we32k x86-64 xscale z8k z8001 z8002 diff -uprN binutils-2.14.90.0.7/binutils/unwind-ia64.c binutils-2.14.90.0.8/binutils/unwind-ia64.c --- binutils-2.14.90.0.7/binutils/unwind-ia64.c 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/binutils/unwind-ia64.c 2004-01-14 13:07:44.000000000 -0800 @@ -25,7 +25,7 @@ Foundation, 59 Temple Place - Suite 330, #if __GNUC__ >= 2 /* Define BFD64 here, even if our default architecture is 32 bit ELF as this will allow us to read in and parse 64bit and 32bit ELF files. - Only do this if we belive that the compiler can support a 64 bit + Only do this if we believe that the compiler can support a 64 bit data type. For now we only rely on GCC being able to do this. */ #define BFD64 #endif diff -uprN binutils-2.14.90.0.7/binutils.spec binutils-2.14.90.0.8/binutils.spec --- binutils-2.14.90.0.7/binutils.spec 2003-10-29 09:26:58.000000000 -0800 +++ binutils-2.14.90.0.8/binutils.spec 2004-01-14 13:08:51.000000000 -0800 @@ -12,7 +12,7 @@ Summary: A GNU collection of binary utilities. Name: binutils -Version: 2.14.90.0.7 +Version: 2.14.90.0.8 Release: 1 Copyright: GPL Group: Development/Tools diff -uprN binutils-2.14.90.0.7/config-ml.in binutils-2.14.90.0.8/config-ml.in --- binutils-2.14.90.0.7/config-ml.in 2003-10-29 09:37:47.000000000 -0800 +++ binutils-2.14.90.0.8/config-ml.in 2004-01-14 13:07:42.000000000 -0800 @@ -553,6 +553,7 @@ multi-do: LIBCFLAGS="$(LIBCFLAGS) $${flags}" \ LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \ LDFLAGS="$(LDFLAGS) $${flags}" \ + MULTIFLAGS="$${flags}" \ DESTDIR="$(DESTDIR)" \ INSTALL="$(INSTALL)" \ INSTALL_DATA="$(INSTALL_DATA)" \ @@ -765,7 +766,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n cd ${ml_dir}/${ml_libdir} if [ -f ${ml_newsrcdir}/configure ]; then - ml_recprog="${ml_newsrcdir}/configure --cache-file=../config.cache" + ml_recprog="${ml_newsrcdir}/configure" fi # find compiler flag corresponding to ${ml_dir} diff -uprN binutils-2.14.90.0.7/configure binutils-2.14.90.0.8/configure --- binutils-2.14.90.0.7/configure 2003-10-29 09:38:23.000000000 -0800 +++ binutils-2.14.90.0.8/configure 2004-01-14 13:07:42.000000000 -0800 @@ -866,7 +866,7 @@ fi # these libraries are used by various programs built for the host environment # -host_libs="intl mmalloc libiberty demangler opcodes bfd readline tcl tk itcl tix libgui zlib" +host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl tix libgui zlib" # these tools are built for the host environment # Note, the powerpc-eabi build depends on sim occurring before gdb in order to @@ -889,7 +889,6 @@ target_libraries="target-libiberty \ target-libgloss \ target-newlib \ target-libstdc++-v3 \ - target-demangler \ target-libf2c \ ${libgcj} \ target-libobjc" @@ -918,7 +917,7 @@ target_configdirs=`echo ${target_librari # This should be done more generally, but at the moment it doesn't matter. if test ${host_alias} != ${build_alias} ; then # This is the only build module. - build_modules="libiberty demangler" + build_modules=libiberty else build_modules= fi @@ -1104,13 +1103,11 @@ case "${target}" in skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-libf2c target-librx" skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf" skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib" - skipdirs="$skipdirs target-demangler" noconfigdirs="$noconfigdirs target-libgloss" ;; *-*-netbsd*) # Skip some stuff on all NetBSD configurations. noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss" - noconfigdirs="$noconfigdirs target-demangler" # Skip some stuff that's unsupported on some NetBSD configurations. case "${target}" in @@ -1123,7 +1120,6 @@ case "${target}" in ;; *-*-netware) noconfigdirs="$noconfigdirs target-libstdc++-v3 target-newlib target-libiberty target-libgloss ${libgcj}" - noconfigdirs="$noconfigdirs target-demangler" ;; *-*-rtems*) noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" @@ -1134,6 +1130,9 @@ case "${target}" in *) ;; esac ;; + *-*-uclinux*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}" + ;; *-*-vxworks*) noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj}" ;; @@ -1167,7 +1166,6 @@ case "${target}" in noconfigdirs="$noconfigdirs ${libgcj}" noconfigdirs="$noconfigdirs target-examples" noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr" - noconfigdirs="$noconfigdirs target-demangler" noconfigdirs="$noconfigdirs tcl tix tk itcl libgui sim" noconfigdirs="$noconfigdirs expect dejagnu" # the C++ libraries don't build on top of CE's C libraries @@ -1211,7 +1209,6 @@ case "${target}" in ;; avr-*-*) noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" - noconfigdirs="$noconfigdirs target-demangler" ;; c4x-*-* | tic4x-*-*) noconfigdirs="$noconfigdirs target-libstdc++-v3 target-libgloss ${libgcj}" @@ -1268,7 +1265,7 @@ case "${target}" in ;; ia64*-**-hpux*) # No gdb or ld support yet. - noconfigdirs="$noconfigdirs tix readline mmalloc libgui itcl gdb ld" + noconfigdirs="$noconfigdirs ${libgcj} tix readline mmalloc libgui itcl gdb ld" ;; i[3456789]86-*-coff | i[3456789]86-*-elf) noconfigdirs="$noconfigdirs ${libgcj}" @@ -1344,7 +1341,6 @@ case "${target}" in ;; m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" - noconfigdirs="$noconfigdirs target-demangler" ;; m68k-*-elf*) noconfigdirs="$noconfigdirs ${libgcj}" @@ -1481,7 +1477,6 @@ case "${target}" in ;; ip2k-*-*) noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" - noconfigdirs="$noconfigdirs target-demangler" ;; *-*-linux*) noconfigdirs="$noconfigdirs target-newlib target-libgloss" @@ -1627,7 +1622,7 @@ done if test -n "${target_configdirs}" ; then others= for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do - if test "$i" != "libiberty" && test "$i" != "demangler" ; then + if test "$i" != "libiberty" ; then if test -r $srcdir/$i/configure ; then others=yes; break; @@ -2593,7 +2588,9 @@ case "${cache_file}" in cache_file_option="--cache-file=../${cache_file}" ;; esac -host_configargs="${cache_file_option} --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}" +# Host dirs don't like to share a cache file either, horribly enough. +# This seems to be due to autoconf 2.5x stupidity. +host_configargs="--cache-file=./config.cache --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}" target_configargs=${baseargs} @@ -2617,8 +2614,17 @@ if test x${with_newlib} != xno && echo " target_configargs="--with-newlib ${target_configargs}" fi +# Different target subdirs use different values of certain variables +# (notably CXX). Worse, multilibs use *lots* of different values. +# Worse yet, autoconf 2.5x makes some of these 'precious', meaning that +# it doesn't automatically accept command-line overrides of them. +# This means it's not safe for target subdirs to share a cache file, +# which is disgusting, but there you have it. Hopefully this can be +# fixed in future. It's still worthwhile to use a cache file for each +# directory. I think. + # Pass the appropriate --host, --build, and --cache-file arguments. -target_configargs="--cache-file=../config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}" +target_configargs="--cache-file=./config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}" # provide a proper gxx_include_dir. # Note, if you change the default, make sure to fix both here and in @@ -2732,7 +2738,7 @@ GCJ_FOR_TARGET=$GCJ_FOR_TARGET' $(FLAGS_ # Don't use libstdc++-v3's flags to configure/build itself. libstdcxx_flags='`test ! -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags || $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes` -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs' -raw_libstdcxx_flags=' -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs' +raw_libstdcxx_flags='-L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs' if test "x${CXX_FOR_TARGET+set}" = xset; then if test "x${RAW_CXX_FOR_TARGET+set}" != xset; then @@ -2831,7 +2837,7 @@ test -n "$target_alias" && ncn_target_to # Extract the first word of "${ncn_tool_prefix}ar", so it can be a program name with args. set dummy ${ncn_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2835: checking for $ac_word" >&5 +echo "configure:2841: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2864,7 +2870,7 @@ if test -z "$ac_cv_prog_AR" ; then # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2868: checking for $ac_word" >&5 +echo "configure:2874: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2903,7 +2909,7 @@ fi # Extract the first word of "${ncn_tool_prefix}as", so it can be a program name with args. set dummy ${ncn_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2907: checking for $ac_word" >&5 +echo "configure:2913: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2936,7 +2942,7 @@ if test -z "$ac_cv_prog_AS" ; then # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2940: checking for $ac_word" >&5 +echo "configure:2946: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2975,7 +2981,7 @@ fi # Extract the first word of "${ncn_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ncn_tool_prefix}dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2979: checking for $ac_word" >&5 +echo "configure:2985: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3008,7 +3014,7 @@ if test -z "$ac_cv_prog_DLLTOOL" ; then # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3012: checking for $ac_word" >&5 +echo "configure:3018: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3047,7 +3053,7 @@ fi # Extract the first word of "${ncn_tool_prefix}ld", so it can be a program name with args. set dummy ${ncn_tool_prefix}ld; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3051: checking for $ac_word" >&5 +echo "configure:3057: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3080,7 +3086,7 @@ if test -z "$ac_cv_prog_LD" ; then # Extract the first word of "ld", so it can be a program name with args. set dummy ld; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3084: checking for $ac_word" >&5 +echo "configure:3090: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3119,7 +3125,7 @@ fi # Extract the first word of "${ncn_tool_prefix}nm", so it can be a program name with args. set dummy ${ncn_tool_prefix}nm; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3123: checking for $ac_word" >&5 +echo "configure:3129: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3152,7 +3158,7 @@ if test -z "$ac_cv_prog_NM" ; then # Extract the first word of "nm", so it can be a program name with args. set dummy nm; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3156: checking for $ac_word" >&5 +echo "configure:3162: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3191,7 +3197,7 @@ fi # Extract the first word of "${ncn_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ncn_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3195: checking for $ac_word" >&5 +echo "configure:3201: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3224,7 +3230,7 @@ if test -z "$ac_cv_prog_RANLIB" ; then # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3228: checking for $ac_word" >&5 +echo "configure:3234: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3263,7 +3269,7 @@ fi # Extract the first word of "${ncn_tool_prefix}windres", so it can be a program name with args. set dummy ${ncn_tool_prefix}windres; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3267: checking for $ac_word" >&5 +echo "configure:3273: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3296,7 +3302,7 @@ if test -z "$ac_cv_prog_WINDRES" ; then # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3300: checking for $ac_word" >&5 +echo "configure:3306: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3335,7 +3341,7 @@ fi # Extract the first word of "${ncn_tool_prefix}objcopy", so it can be a program name with args. set dummy ${ncn_tool_prefix}objcopy; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3339: checking for $ac_word" >&5 +echo "configure:3345: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3368,7 +3374,7 @@ if test -z "$ac_cv_prog_OBJCOPY" ; then # Extract the first word of "objcopy", so it can be a program name with args. set dummy objcopy; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3372: checking for $ac_word" >&5 +echo "configure:3378: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJCOPY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3407,7 +3413,7 @@ fi # Extract the first word of "${ncn_tool_prefix}objdump", so it can be a program name with args. set dummy ${ncn_tool_prefix}objdump; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3411: checking for $ac_word" >&5 +echo "configure:3417: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3440,7 +3446,7 @@ if test -z "$ac_cv_prog_OBJDUMP" ; then # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3444: checking for $ac_word" >&5 +echo "configure:3450: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3489,7 +3495,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}ar", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3493: checking for $ac_word" >&5 +echo "configure:3499: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3522,7 +3528,7 @@ if test -z "$ac_cv_prog_AR_FOR_TARGET" ; # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3526: checking for $ac_word" >&5 +echo "configure:3532: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3561,7 +3567,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}as", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3565: checking for $ac_word" >&5 +echo "configure:3571: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3594,7 +3600,7 @@ if test -z "$ac_cv_prog_AS_FOR_TARGET" ; # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3598: checking for $ac_word" >&5 +echo "configure:3604: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3633,7 +3639,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3637: checking for $ac_word" >&5 +echo "configure:3643: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3666,7 +3672,7 @@ if test -z "$ac_cv_prog_DLLTOOL_FOR_TARG # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3670: checking for $ac_word" >&5 +echo "configure:3676: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3705,7 +3711,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}ld", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}ld; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3709: checking for $ac_word" >&5 +echo "configure:3715: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3738,7 +3744,7 @@ if test -z "$ac_cv_prog_LD_FOR_TARGET" ; # Extract the first word of "ld", so it can be a program name with args. set dummy ld; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3742: checking for $ac_word" >&5 +echo "configure:3748: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3777,7 +3783,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}nm", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}nm; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3781: checking for $ac_word" >&5 +echo "configure:3787: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3810,7 +3816,7 @@ if test -z "$ac_cv_prog_NM_FOR_TARGET" ; # Extract the first word of "nm", so it can be a program name with args. set dummy nm; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3814: checking for $ac_word" >&5 +echo "configure:3820: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3849,7 +3855,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3853: checking for $ac_word" >&5 +echo "configure:3859: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3882,7 +3888,7 @@ if test -z "$ac_cv_prog_RANLIB_FOR_TARGE # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3886: checking for $ac_word" >&5 +echo "configure:3892: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3921,7 +3927,7 @@ fi # Extract the first word of "${ncn_target_tool_prefix}windres", so it can be a program name with args. set dummy ${ncn_target_tool_prefix}windres; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3925: checking for $ac_word" >&5 +echo "configure:3931: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3954,7 +3960,7 @@ if test -z "$ac_cv_prog_WINDRES_FOR_TARG # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3958: checking for $ac_word" >&5 +echo "configure:3964: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4021,7 +4027,7 @@ RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET}${ NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target} echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:4025: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:4031: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" @@ -4108,34 +4114,15 @@ trap 'rm -f $CONFIG_STATUS conftest*; ex # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs # Without the "./", some shells look in PATH for config.status. diff -uprN binutils-2.14.90.0.7/configure.in binutils-2.14.90.0.8/configure.in --- binutils-2.14.90.0.7/configure.in 2003-10-29 09:38:20.000000000 -0800 +++ binutils-2.14.90.0.8/configure.in 2004-01-14 13:07:42.000000000 -0800 @@ -126,7 +126,7 @@ fi # these libraries are used by various programs built for the host environment # -host_libs="intl mmalloc libiberty demangler opcodes bfd readline tcl tk itcl tix libgui zlib" +host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl tix libgui zlib" # these tools are built for the host environment # Note, the powerpc-eabi build depends on sim occurring before gdb in order to @@ -149,7 +149,6 @@ target_libraries="target-libiberty \ target-libgloss \ target-newlib \ target-libstdc++-v3 \ - target-demangler \ target-libf2c \ ${libgcj} \ target-libobjc" @@ -178,7 +177,7 @@ target_configdirs=`echo ${target_librari # This should be done more generally, but at the moment it doesn't matter. if test ${host_alias} != ${build_alias} ; then # This is the only build module. - build_modules="libiberty demangler" + build_modules=libiberty else build_modules= fi @@ -343,13 +342,11 @@ case "${target}" in skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-libf2c target-librx" skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf" skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib" - skipdirs="$skipdirs target-demangler" noconfigdirs="$noconfigdirs target-libgloss" ;; *-*-netbsd*) # Skip some stuff on all NetBSD configurations. noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss" - noconfigdirs="$noconfigdirs target-demangler" # Skip some stuff that's unsupported on some NetBSD configurations. case "${target}" in @@ -362,7 +359,6 @@ case "${target}" in ;; *-*-netware) noconfigdirs="$noconfigdirs target-libstdc++-v3 target-newlib target-libiberty target-libgloss ${libgcj}" - noconfigdirs="$noconfigdirs target-demangler" ;; *-*-rtems*) noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" @@ -373,6 +369,9 @@ case "${target}" in *) ;; esac ;; + *-*-uclinux*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}" + ;; *-*-vxworks*) noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj}" ;; @@ -406,7 +405,6 @@ case "${target}" in noconfigdirs="$noconfigdirs ${libgcj}" noconfigdirs="$noconfigdirs target-examples" noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr" - noconfigdirs="$noconfigdirs target-demangler" noconfigdirs="$noconfigdirs tcl tix tk itcl libgui sim" noconfigdirs="$noconfigdirs expect dejagnu" # the C++ libraries don't build on top of CE's C libraries @@ -450,7 +448,6 @@ case "${target}" in ;; avr-*-*) noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" - noconfigdirs="$noconfigdirs target-demangler" ;; c4x-*-* | tic4x-*-*) noconfigdirs="$noconfigdirs target-libstdc++-v3 target-libgloss ${libgcj}" @@ -507,7 +504,7 @@ case "${target}" in ;; ia64*-**-hpux*) # No gdb or ld support yet. - noconfigdirs="$noconfigdirs tix readline mmalloc libgui itcl gdb ld" + noconfigdirs="$noconfigdirs ${libgcj} tix readline mmalloc libgui itcl gdb ld" ;; i[[3456789]]86-*-coff | i[[3456789]]86-*-elf) noconfigdirs="$noconfigdirs ${libgcj}" @@ -583,7 +580,6 @@ case "${target}" in ;; m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" - noconfigdirs="$noconfigdirs target-demangler" ;; m68k-*-elf*) noconfigdirs="$noconfigdirs ${libgcj}" @@ -720,7 +716,6 @@ case "${target}" in ;; ip2k-*-*) noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" - noconfigdirs="$noconfigdirs target-demangler" ;; *-*-linux*) noconfigdirs="$noconfigdirs target-newlib target-libgloss" @@ -866,7 +861,7 @@ done if test -n "${target_configdirs}" ; then others= for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do - if test "$i" != "libiberty" && test "$i" != "demangler" ; then + if test "$i" != "libiberty" ; then if test -r $srcdir/$i/configure ; then others=yes; break; @@ -1831,7 +1826,9 @@ case "${cache_file}" in cache_file_option="--cache-file=../${cache_file}" ;; esac -host_configargs="${cache_file_option} --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}" +# Host dirs don't like to share a cache file either, horribly enough. +# This seems to be due to autoconf 2.5x stupidity. +host_configargs="--cache-file=./config.cache --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}" target_configargs=${baseargs} @@ -1855,8 +1852,17 @@ if test x${with_newlib} != xno && echo " target_configargs="--with-newlib ${target_configargs}" fi +# Different target subdirs use different values of certain variables +# (notably CXX). Worse, multilibs use *lots* of different values. +# Worse yet, autoconf 2.5x makes some of these 'precious', meaning that +# it doesn't automatically accept command-line overrides of them. +# This means it's not safe for target subdirs to share a cache file, +# which is disgusting, but there you have it. Hopefully this can be +# fixed in future. It's still worthwhile to use a cache file for each +# directory. I think. + # Pass the appropriate --host, --build, and --cache-file arguments. -target_configargs="--cache-file=../config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}" +target_configargs="--cache-file=./config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}" # provide a proper gxx_include_dir. # Note, if you change the default, make sure to fix both here and in @@ -1970,7 +1976,7 @@ GCJ_FOR_TARGET=$GCJ_FOR_TARGET' $(FLAGS_ # Don't use libstdc++-v3's flags to configure/build itself. libstdcxx_flags='`test ! -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags || $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes` -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs' -raw_libstdcxx_flags=' -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs' +raw_libstdcxx_flags='-L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs' if test "x${CXX_FOR_TARGET+set}" = xset; then if test "x${RAW_CXX_FOR_TARGET+set}" != xset; then diff -uprN binutils-2.14.90.0.7/cpu/ChangeLog binutils-2.14.90.0.8/cpu/ChangeLog --- binutils-2.14.90.0.7/cpu/ChangeLog 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/cpu/ChangeLog 2004-01-14 13:07:45.000000000 -0800 @@ -1,3 +1,21 @@ +2004-01-06 Alexandre Oliva + + 2003-12-19 Alexandre Oliva + * frv.opc (parse_ulo16, parse_uhi16, parse_d12): Fix some + cut&paste errors in shifting/truncating numerical operands. + 2003-08-08 Alexandre Oliva + * frv.opc (parse_ulo16): Parse gotofflo and gotofffuncdesclo. + (parse_uslo16): Likewise. + (parse_uhi16): Parse gotoffhi and gotofffuncdeschi. + (parse_d12): Parse gotoff12 and gotofffuncdesc12. + (parse_s12): Likewise. + 2003-08-04 Alexandre Oliva + * frv.opc (parse_ulo16): Parse gotlo and gotfuncdesclo. + (parse_uslo16): Likewise. + (parse_uhi16): Parse gothi and gotfuncdeschi. + (parse_d12): Parse got12 and gotfuncdesc12. + (parse_s12): Likewise. + 2003-10-10 Dave Brolley * frv.cpu (dnpmop): New p-macro. diff -uprN binutils-2.14.90.0.7/cpu/frv.opc binutils-2.14.90.0.8/cpu/frv.opc --- binutils-2.14.90.0.7/cpu/frv.opc 2003-10-29 09:37:48.000000000 -0800 +++ binutils-2.14.90.0.8/cpu/frv.opc 2004-01-14 13:07:45.000000000 -0800 @@ -897,7 +897,66 @@ parse_ulo16 (cd, strp, opindex, valuep) ++*strp; if (errmsg == NULL && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) - value >>= 16; + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotlo(", 6) == 0) + { + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotfuncdesclo(", 14) == 0) + { + *strp += 15; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofflo(", 9) == 0) + { + *strp += 10; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_GOTOFFLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofffuncdesclo(", 17) == 0) + { + *strp += 18; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; *valuep = value; return errmsg; } @@ -946,6 +1005,65 @@ parse_uslo16 (cd, strp, opindex, valuep) *valuep = value; return errmsg; } + else if (strncasecmp (*strp + 1, "gotlo(", 6) == 0) + { + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotfuncdesclo(", 14) == 0) + { + *strp += 15; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofflo(", 9) == 0) + { + *strp += 10; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_GOTOFFLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofffuncdesclo(", 17) == 0) + { + *strp += 18; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value &= 0xffff; + *valuep = value; + return errmsg; + } } return cgen_parse_unsigned_integer (cd, strp, opindex, valuep); } @@ -991,6 +1109,65 @@ parse_uhi16 (cd, strp, opindex, valuep) *valuep = value; return errmsg; } + else if (strncasecmp (*strp + 1, "gothi(", 6) == 0) + { + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTHI, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value >>= 16; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotfuncdeschi(", 14) == 0) + { + *strp += 15; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTHI, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value >>= 16; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotoffhi(", 9) == 0) + { + *strp += 10; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_GOTOFFHI, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value >>= 16; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofffuncdeschi(", 17) == 0) + { + *strp += 18; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + value >>= 16; + *valuep = value; + return errmsg; + } } return cgen_parse_unsigned_integer (cd, strp, opindex, valuep); } @@ -1073,6 +1250,53 @@ parse_d12 (cd, strp, opindex, valuep) *valuep = value; return errmsg; } + else if (strncasecmp (*strp + 1, "got12(", 6) == 0) + { + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOT12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotfuncdesc12(", 14) == 0) + { + *strp += 15; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOT12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotoff12(", 9) == 0) + { + *strp += 10; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_GOTOFF12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if (strncasecmp (*strp + 1, "gotofffuncdesc12(", 17) == 0) + { + *strp += 18; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTOFF12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } } return cgen_parse_signed_integer (cd, strp, opindex, valuep); } @@ -1101,6 +1325,56 @@ parse_s12 (cd, strp, opindex, valuep) *valuep = value; return errmsg; } + else if ((**strp == '#' || **strp == '%') + && strncasecmp (*strp + 1, "got12(", 6) == 0) + { + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOT12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if ((**strp == '#' || **strp == '%') + && strncasecmp (*strp + 1, "gotfuncdesc12(", 14) == 0) + { + *strp += 15; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOT12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if ((**strp == '#' || **strp == '%') + && strncasecmp (*strp + 1, "gotoff12(", 9) == 0) + { + *strp += 10; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTOFF12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } + else if ((**strp == '#' || **strp == '%') + && strncasecmp (*strp + 1, "gotofffuncdesc12(", 17) == 0) + { + *strp += 18; + errmsg = cgen_parse_address (cd, strp, opindex, + BFD_RELOC_FRV_FUNCDESC_GOTOFF12, + &result_type, &value); + if (**strp != ')') + return "missing ')'"; + ++*strp; + *valuep = value; + return errmsg; + } else { if (**strp == '#') diff -uprN binutils-2.14.90.0.7/demangler/Makefile.am binutils-2.14.90.0.8/demangler/Makefile.am --- binutils-2.14.90.0.7/demangler/Makefile.am 2003-10-29 09:38:20.000000000 -0800 +++ binutils-2.14.90.0.8/demangler/Makefile.am 1969-12-31 16:00:00.000000000 -0800 @@ -1,90 +0,0 @@ -## Process this with automake to create Makefile.in - -AUTOMAKE_OPTIONS = cygnus - -SUBDIRS = @SUBDIRS@ - -# Multilib support. -MAKEOVERRIDES= - -# Multilib support variables. -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -# Multilib support. -.PHONY: all-multi mostlyclean-multi clean-multi distclean-multi \ - maintainer-clean-multi - -all-recursive: all-multi -install-recursive: install-multi -mostlyclean-recursive: mostlyclean-multi -clean-recursive: clean-multi -distclean-recursive: distclean-multi -maintainer-clean-recursive: maintainer-clean-multi - -all-multi: - : $(MAKE) ; exec $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do -install-multi: - $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do -mostlyclean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean -clean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean -distclean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean -maintainer-clean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean - -# Work around what appears to be a GNU make bug handling MAKEFLAGS -# values defined in terms of make variables, as is the case for CC and -# friends when we are called from the top level Makefile. -AM_MAKEFLAGS = \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "JC1FLAGS=$(JC1FLAGS)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ - "SHELL=$(SHELL)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "libdir=$(libdir)" \ - "prefix=$(prefix)" \ - "AR=$(AR)" \ - "AS=$(AS)" \ - "CC=$(CC)" \ - "CXX=$(CXX)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "DESTDIR=$(DESTDIR)" - -# Subdir rules rely on $(FLAGS_TO_PASS) -FLAGS_TO_PASS = $(AM_MAKEFLAGS) - -# Used for libiberty. -LIBIBERTY_TARGET=@libiberty_target@ -all: $(LIBIBERTY_TARGET) - -new_demangler old_demangler: - cd ${libdemangler_basedir}../libiberty && $(MAKE) $@ - -dummy_demangler: - @true diff -uprN binutils-2.14.90.0.7/demangler/Makefile.in binutils-2.14.90.0.8/demangler/Makefile.in --- binutils-2.14.90.0.7/demangler/Makefile.in 2003-10-29 09:38:21.000000000 -0800 +++ binutils-2.14.90.0.8/demangler/Makefile.in 1969-12-31 16:00:00.000000000 -0800 @@ -1,426 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = . - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ -AS = @AS@ -CC = @CC@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -DLLTOOL = @DLLTOOL@ -EXEEXT = @EXEEXT@ -GCJ = @GCJ@ -GCJFLAGS = @GCJFLAGS@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -VERSION = @VERSION@ -libdemangler_basedir = @libdemangler_basedir@ -libiberty_target = @libiberty_target@ -toolexecdir = @toolexecdir@ -toolexeclibdir = @toolexeclibdir@ - -AUTOMAKE_OPTIONS = cygnus - -SUBDIRS = @SUBDIRS@ - -# Multilib support. -MAKEOVERRIDES = - -# Multilib support variables. -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -# Work around what appears to be a GNU make bug handling MAKEFLAGS -# values defined in terms of make variables, as is the case for CC and -# friends when we are called from the top level Makefile. -AM_MAKEFLAGS = \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "JC1FLAGS=$(JC1FLAGS)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ - "SHELL=$(SHELL)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "libdir=$(libdir)" \ - "prefix=$(prefix)" \ - "AR=$(AR)" \ - "AS=$(AS)" \ - "CC=$(CC)" \ - "CXX=$(CXX)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "DESTDIR=$(DESTDIR)" - - -# Subdir rules rely on $(FLAGS_TO_PASS) -FLAGS_TO_PASS = $(AM_MAKEFLAGS) - -# Used for libiberty. -LIBIBERTY_TARGET = @libiberty_target@ -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -CONFIG_CLEAN_FILES = -DIST_COMMON = Makefile.am Makefile.in acinclude.m4 aclocal.m4 configure \ -configure.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = gtar -GZIP_ENV = --best -all: all-redirect -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4 - cd $(srcdir) && $(ACLOCAL) - -config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. - -@SET_MAKE@ - -all-recursive install-data-recursive install-exec-recursive \ -installdirs-recursive install-recursive uninstall-recursive install-info-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive: - @set fnord $$MAKEFLAGS; amf=$$2; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $$MAKEFLAGS; amf=$$2; \ - dot_seen=no; \ - rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ - rev="$$subdir $$rev"; \ - test "$$subdir" != "." || dot_seen=yes; \ - done; \ - test "$$dot_seen" = "no" && rev=". $$rev"; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - -rm -rf $(distdir) - GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - dc_install_base=`cd $(distdir)/=inst && pwd`; \ - cd $(distdir)/=build \ - && ../configure --srcdir=.. --prefix=$$dc_install_base \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) dist - -rm -rf $(distdir) - @banner="$(distdir).tar.gz is ready for distribution"; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes" -dist: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -dist-all: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -distdir: $(DISTFILES) - -rm -rf $(distdir) - mkdir $(distdir) - -chmod 777 $(distdir) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - for subdir in $(SUBDIRS); do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - chmod 777 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ - || exit 1; \ - fi; \ - done -info-am: -info: info-recursive -dvi-am: -dvi: dvi-recursive -check-am: -check: check-recursive -installcheck-am: -installcheck: installcheck-recursive -install-info-am: -install-info: install-info-recursive -install-exec-am: -install-exec: install-exec-recursive - -install-data-am: -install-data: install-data-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-recursive -uninstall-am: -uninstall: uninstall-recursive -all-am: Makefile -all-redirect: all-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: installdirs-recursive -installdirs-am: - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-tags mostlyclean-generic - -mostlyclean: mostlyclean-recursive - -clean-am: clean-tags clean-generic mostlyclean-am - -clean: clean-recursive - -distclean-am: distclean-tags distclean-generic clean-am - -rm -f libtool - -distclean: distclean-recursive - -rm -f config.status - -maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \ - distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-recursive - -rm -f config.status - -.PHONY: install-data-recursive uninstall-data-recursive \ -install-exec-recursive uninstall-exec-recursive installdirs-recursive \ -uninstalldirs-recursive all-recursive check-recursive \ -installcheck-recursive info-recursive dvi-recursive \ -mostlyclean-recursive distclean-recursive clean-recursive \ -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ -dvi-am dvi check check-am installcheck-am installcheck install-info-am \ -install-info install-exec-am install-exec install-data-am install-data \ -install-am install uninstall-am uninstall all-redirect all-am all \ -installdirs-am installdirs mostlyclean-generic distclean-generic \ -clean-generic maintainer-clean-generic clean mostlyclean distclean \ -maintainer-clean - - -# Multilib support. -.PHONY: all-multi mostlyclean-multi clean-multi distclean-multi \ - maintainer-clean-multi - -all-recursive: all-multi -install-recursive: install-multi -mostlyclean-recursive: mostlyclean-multi -clean-recursive: clean-multi -distclean-recursive: distclean-multi -maintainer-clean-recursive: maintainer-clean-multi - -all-multi: - : $(MAKE) ; exec $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do -install-multi: - $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do -mostlyclean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean -clean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean -distclean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean -maintainer-clean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean -all: $(LIBIBERTY_TARGET) - -new_demangler old_demangler: - cd ${libdemangler_basedir}../libiberty && $(MAKE) $@ - -dummy_demangler: - @true - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -uprN binutils-2.14.90.0.7/demangler/acinclude.m4 binutils-2.14.90.0.8/demangler/acinclude.m4 --- binutils-2.14.90.0.7/demangler/acinclude.m4 2003-10-29 09:38:20.000000000 -0800 +++ binutils-2.14.90.0.8/demangler/acinclude.m4 1969-12-31 16:00:00.000000000 -0800 @@ -1,108 +0,0 @@ -sinclude(../libtool.m4) -dnl The lines below arrange for aclocal not to bring libtool.m4 -dnl AC_PROG_LIBTOOL into aclocal.m4, while still arranging for automake -dnl to add a definition of LIBTOOL to Makefile.in. -ifelse(yes,no,[ -AC_DEFUN([AC_PROG_LIBTOOL],) -AC_DEFUN([AM_PROG_LIBTOOL],) -AC_SUBST(LIBTOOL) -]) - -# Newer versions of autoconf add an underscore to these functions. -# Prevent future problems ... -ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))]) -ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))]) - -# We can't just call AC_PROG_CXX directly because g++ will try to -# link in libstdc++. -AC_DEFUN(libdemangler_AC_PROG_CXX, -[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl -dnl Fool anybody using AC_PROG_CXX. -AC_PROVIDE([AC_PROG_CXX]) -AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc) - -AC_PROG_CXX_GNU - -if test $ac_cv_prog_gxx = yes; then - GXX=yes - dnl Check whether -g works, even if CXXFLAGS is set, in case the package - dnl plays around with CXXFLAGS (such as to build both debugging and - dnl normal versions of a library), tasteless as that idea is. - ac_test_CXXFLAGS="${CXXFLAGS+set}" - ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS= - AC_PROG_CXX_G - if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS="$ac_save_CXXFLAGS" - elif test $ac_cv_prog_cxx_g = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-O2" - fi -else - GXX= - test "${CXXFLAGS+set}" = set || CXXFLAGS="-g" -fi -]) - -dnl See if we can use the new demangler in C++. -AC_DEFUN(libdemangler_AC_NEW_DEMANGLER, -[AC_CACHE_CHECK(whether we can use the new demangler in C++, - libdemangler_cv_new_demangler, -[saved_CPPFLAGS="$CPPFLAGS" - saved_CXXFLAGS="$CXXFLAGS" - CPPFLAGS="-I$srcdir -I$srcdir/../include -D_GLIBCXX_DEMANGLER_NOSTDCXX $CPPFLAGS" - CXXFLAGS="-fno-rtti -fno-exceptions $CXXFLAGS" - libdemangler_cv_new_demangler=no - ac_compile='${CXX-g++} $CXXFLAGS $CPPFLAGS -c -I$srcdir/include $srcdir/lib/demangle.cc 1>&5' - if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile ) 2>&5; }; then - ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS $srcdir/../libiberty/dyn-string.c 1>&5' - if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile ) 2>&5; }; then - cat > conftest.c < -#include -#include "demangle.h" - -void -xexit (code) - int code; -{ - exit (code); -} - -char * -xmalloc (size) - size_t size; -{ - return (char *) 0; -} - -char * -xrealloc (oldmem, size) - char *oldmem; - size_t size; -{ - return (char *) 0; -} - -int -main () -{ - const char* p; - p = cplus_demangle_v3 ("_Z1fA37_iPS_", 0); - return !p; -} -EOF - ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' - if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile ) 2>&5; }; then - ac_link='${CC-cc} -o conftest${ac_exeext} conftest.o demangle.o dyn-string.o $CFLAGS $CPPFLAGS $LDFLAGS $LIBS 1>&5' - if { (eval echo configure:__oline__: \"$ac_link\") 1>&5; (eval $ac_link ) 2>&5; }; then - libdemangler_cv_new_demangler=yes - fi - fi - fi - fi - rm -f demangle.o dyn-string.o conftest* - CPPFLAGS="$saved_CPPFLAGS" - CXXFLAGS="$saved_CXXFLAGS"]) - ]) diff -uprN binutils-2.14.90.0.7/demangler/aclocal.m4 binutils-2.14.90.0.8/demangler/aclocal.m4 --- binutils-2.14.90.0.7/demangler/aclocal.m4 2003-10-29 09:38:20.000000000 -0800 +++ binutils-2.14.90.0.8/demangler/aclocal.m4 1969-12-31 16:00:00.000000000 -0800 @@ -1,276 +0,0 @@ -dnl aclocal.m4 generated automatically by aclocal 1.4-p6 - -dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl This program is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without -dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A -dnl PARTICULAR PURPOSE. - -sinclude(../libtool.m4) -dnl The lines below arrange for aclocal not to bring libtool.m4 -dnl AC_PROG_LIBTOOL into aclocal.m4, while still arranging for automake -dnl to add a definition of LIBTOOL to Makefile.in. -ifelse(yes,no,[ -AC_DEFUN([AC_PROG_LIBTOOL],) -AC_DEFUN([AM_PROG_LIBTOOL],) -AC_SUBST(LIBTOOL) -]) - -# Newer versions of autoconf add an underscore to these functions. -# Prevent future problems ... -ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))]) -ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))]) - -# We can't just call AC_PROG_CXX directly because g++ will try to -# link in libstdc++. -AC_DEFUN(libdemangler_AC_PROG_CXX, -[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl -dnl Fool anybody using AC_PROG_CXX. -AC_PROVIDE([AC_PROG_CXX]) -AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc) - -AC_PROG_CXX_GNU - -if test $ac_cv_prog_gxx = yes; then - GXX=yes - dnl Check whether -g works, even if CXXFLAGS is set, in case the package - dnl plays around with CXXFLAGS (such as to build both debugging and - dnl normal versions of a library), tasteless as that idea is. - ac_test_CXXFLAGS="${CXXFLAGS+set}" - ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS= - AC_PROG_CXX_G - if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS="$ac_save_CXXFLAGS" - elif test $ac_cv_prog_cxx_g = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-O2" - fi -else - GXX= - test "${CXXFLAGS+set}" = set || CXXFLAGS="-g" -fi -]) - -dnl See if we can use the new demangler in C++. -AC_DEFUN(libdemangler_AC_NEW_DEMANGLER, -[AC_CACHE_CHECK(whether we can use the new demangler in C++, - libdemangler_cv_new_demangler, -[saved_CPPFLAGS="$CPPFLAGS" - saved_CXXFLAGS="$CXXFLAGS" - CPPFLAGS="-I$srcdir -I$srcdir/../include -D_GLIBCXX_DEMANGLER_NOSTDCXX $CPPFLAGS" - CXXFLAGS="-fno-rtti -fno-exceptions $CXXFLAGS" - libdemangler_cv_new_demangler=no - ac_compile='${CXX-g++} $CXXFLAGS $CPPFLAGS -c -I$srcdir/include $srcdir/lib/demangle.cc 1>&5' - if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile ) 2>&5; }; then - ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS $srcdir/../libiberty/dyn-string.c 1>&5' - if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile ) 2>&5; }; then - cat > conftest.c < -#include -#include "demangle.h" - -void -xexit (code) - int code; -{ - exit (code); -} - -char * -xmalloc (size) - size_t size; -{ - return (char *) 0; -} - -char * -xrealloc (oldmem, size) - char *oldmem; - size_t size; -{ - return (char *) 0; -} - -int -main () -{ - const char* p; - p = cplus_demangle_v3 ("_Z1fA37_iPS_", 0); - return !p; -} -EOF - ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' - if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile ) 2>&5; }; then - ac_link='${CC-cc} -o conftest${ac_exeext} conftest.o demangle.o dyn-string.o $CFLAGS $CPPFLAGS $LDFLAGS $LIBS 1>&5' - if { (eval echo configure:__oline__: \"$ac_link\") 1>&5; (eval $ac_link ) 2>&5; }; then - libdemangler_cv_new_demangler=yes - fi - fi - fi - fi - rm -f demangle.o dyn-string.o conftest* - CPPFLAGS="$saved_CPPFLAGS" - CXXFLAGS="$saved_CXXFLAGS"]) - ]) - -# Do all the work for Automake. This macro actually does too much -- -# some checks are only needed if your package does certain things. -# But this isn't really a big deal. - -# serial 1 - -dnl Usage: -dnl AM_INIT_AUTOMAKE(package,version, [no-define]) - -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL]) -PACKAGE=[$1] -AC_SUBST(PACKAGE) -VERSION=[$2] -AC_SUBST(VERSION) -dnl test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi -ifelse([$3],, -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) -AC_REQUIRE([AM_SANITY_CHECK]) -AC_REQUIRE([AC_ARG_PROGRAM]) -dnl FIXME This is truly gross. -missing_dir=`cd $ac_aux_dir && pwd` -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir) -AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir) -AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) -AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) -AC_REQUIRE([AC_PROG_MAKE_SET])]) - -# Copyright 2002 Free Software Foundation, Inc. - -# 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 2, 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., 59 Temple Place - Suite 330, Boston, MA - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"]) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.4-p6])]) - -# -# Check to make sure that the build environment is sane. -# - -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftestfile -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` - if test "[$]*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftestfile` - fi - if test "[$]*" != "X $srcdir/configure conftestfile" \ - && test "[$]*" != "X conftestfile $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "[$]2" = conftestfile - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -rm -f conftest* -AC_MSG_RESULT(yes)]) - -dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) -dnl The program must properly implement --version. -AC_DEFUN([AM_MISSING_PROG], -[AC_MSG_CHECKING(for working $2) -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if ($2 --version) < /dev/null > /dev/null 2>&1; then - $1=$2 - AC_MSG_RESULT(found) -else - $1="$3/missing $2" - AC_MSG_RESULT(missing) -fi -AC_SUBST($1)]) - -# Add --enable-maintainer-mode option to configure. -# From Jim Meyering - -# serial 1 - -AC_DEFUN([AM_MAINTAINER_MODE], -[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is disabled by default - AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - USE_MAINTAINER_MODE=$enableval, - USE_MAINTAINER_MODE=no) - AC_MSG_RESULT($USE_MAINTAINER_MODE) - AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST(MAINT)dnl -] -) - -# Define a conditional. - -AC_DEFUN([AM_CONDITIONAL], -[AC_SUBST($1_TRUE) -AC_SUBST($1_FALSE) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi]) - diff -uprN binutils-2.14.90.0.7/demangler/bootstrap binutils-2.14.90.0.8/demangler/bootstrap --- binutils-2.14.90.0.7/demangler/bootstrap 2003-10-29 09:38:20.000000000 -0800 +++ binutils-2.14.90.0.8/demangler/bootstrap 1969-12-31 16:00:00.000000000 -0800 @@ -1,39 +0,0 @@ -#! /bin/sh - -# helps bootstrapping demangler, when checked out from CVS -# requires at least GNU autoconf 2.13 and GNU automake1.4-p5 -# Modified from the one in libtool. - -find . -name autom4te.cache -exec rm -r {} \; - -for sub in . lib; do - (cd $sub; rm -f aclocal.m4 Makefile configure) - - case $sub in - .) - if test -n "$ACLOCAL"; then - $ACLOCAL - else - aclocal-1.4 || aclocal - fi - if test -n "$AUTOCONF"; then - $AUTOCONF - else - autoconf-2.13 || autoconf - fi - - AUTOMAKE_FLAGS="--cygnus" - ;; - *) - AUTOMAKE_FLAGS="--cygnus $sub/Makefile" - ;; - esac - - if test -n "$AUTOMAKE"; then - eval $AUTOMAKE $AUTOMAKE_FLAGS - else - eval automake-1.4 $AUTOMAKE_FLAGS || automake $AUTOMAKE_FLAGS - fi -done - -exit 0 diff -uprN binutils-2.14.90.0.7/demangler/configure binutils-2.14.90.0.8/demangler/configure --- binutils-2.14.90.0.7/demangler/configure 2003-10-29 09:38:20.000000000 -0800 +++ binutils-2.14.90.0.8/demangler/configure 1969-12-31 16:00:00.000000000 -0800 @@ -1,2781 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_help="$ac_help - --with-target-subdir=SUBDIR Configuring in a subdirectory for target" -ac_help="$ac_help - --with-cross-host=HOST Configuring with a cross compiler" -ac_help="$ac_help - --enable-multilib build many library versions (default)" -ac_help="$ac_help - --enable-shared[=PKGS] build shared libraries [default=yes]" -ac_help="$ac_help - --enable-static[=PKGS] build static libraries [default=yes]" -ac_help="$ac_help - --enable-fast-install[=PKGS] optimize for fast installation [default=yes]" -ac_help="$ac_help - --with-gnu-ld assume the C compiler uses GNU ld [default=no]" -ac_help="$ac_help - --disable-libtool-lock avoid locking (might break parallel builds)" -ac_help="$ac_help - --with-pic try to use only PIC/non-PIC objects [default=use both]" -ac_help="$ac_help - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer" - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # 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 << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=lib/demangle.cc - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - -echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:546: checking for Cygwin environment" >&5 -if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_cygwin=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_cygwin=no -fi -rm -f conftest* -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_cygwin" 1>&6 -CYGWIN= -test "$ac_cv_cygwin" = yes && CYGWIN=yes -echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 -echo "configure:579: checking for mingw32 environment" >&5 -if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_mingw32=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_mingw32=no -fi -rm -f conftest* -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_mingw32" 1>&6 -MINGW32= -test "$ac_cv_mingw32" = yes && MINGW32=yes - - -# This works around the fact that libtool configuration may change LD -# for this particular configuration, but some shells, instead of -# keeping the changes in LD private, export them just because LD is -# exported. -ORIGINAL_LD_FOR_MULTILIBS=$LD - -# Check whether --with-target-subdir or --without-target-subdir was given. -if test "${with_target_subdir+set}" = set; then - withval="$with_target_subdir" - : -fi - -# Check whether --with-cross-host or --without-cross-host was given. -if test "${with_cross_host+set}" = set; then - withval="$with_cross_host" - : -fi - - -# Check whether --enable-multilib or --disable-multilib was given. -if test "${enable_multilib+set}" = set; then - enableval="$enable_multilib" - case "${enableval}" in - yes) multilib=yes ;; - no) multilib=no ;; - *) { echo "configure: error: bad value ${enableval} for multilib option" 1>&2; exit 1; } ;; - esac -else - multilib=yes -fi - - -if test -n "${with_target_subdir}" && test "${srcdir}" = "."; then - if test "${with_target_subdir}" != "."; then - libdemangler_basedir="${with_multisrctop}../" - else - libdemangler_basedir="${with_multisrctop}" - fi -else - libdemangler_basedir= -fi - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - - -# Make sure we can run config.sub. -if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : -else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } -fi - -echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:678: checking host system type" >&5 - -host_alias=$host -case "$host_alias" in -NONE) - case $nonopt in - NONE) - if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : - else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } - fi ;; - *) host_alias=$nonopt ;; - esac ;; -esac - -host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$host" 1>&6 - - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:702: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:732: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_save_ifs" -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# -gt 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:783: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - ;; - esac - fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi - -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:815: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -cat > conftest.$ac_ext << EOF - -#line 826 "configure" -#include "confdefs.h" - -main(){return(0);} -EOF -if { (eval echo configure:831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:857: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:862: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 - -if test $ac_cv_prog_gcc = yes; then - GCC=yes -else - GCC= -fi - -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" -CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:890: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes -else - ac_cv_prog_cc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi - - -for ac_prog in $CCC c++ g++ gcc CC cxx cc++ -do -# Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:927: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CXX="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CXX="$ac_cv_prog_CXX" -if test -n "$CXX"; then - echo "$ac_t""$CXX" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$CXX" && break -done -test -n "$CXX" || CXX="gcc" - - -echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:959: checking whether we are using GNU C++" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.C <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gxx=yes -else - ac_cv_prog_gxx=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gxx" 1>&6 - -if test $ac_cv_prog_gxx = yes; then - GXX=yes - ac_test_CXXFLAGS="${CXXFLAGS+set}" - ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS= - echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:983: checking whether ${CXX-g++} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.cc -if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then - ac_cv_prog_cxx_g=yes -else - ac_cv_prog_cxx_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6 - if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS="$ac_save_CXXFLAGS" - elif test $ac_cv_prog_cxx_g = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-O2" - fi -else - GXX= - test "${CXXFLAGS+set}" = set || CXXFLAGS="-g" -fi - -# Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - p=${PACKAGE-default} -case $enableval in -yes) enable_shared=yes ;; -no) enable_shared=no ;; -*) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_shared=yes -fi - -# Check whether --enable-static or --disable-static was given. -if test "${enable_static+set}" = set; then - enableval="$enable_static" - p=${PACKAGE-default} -case $enableval in -yes) enable_static=yes ;; -no) enable_static=no ;; -*) - enable_static=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_static=yes -fi - -# Check whether --enable-fast-install or --disable-fast-install was given. -if test "${enable_fast_install+set}" = set; then - enableval="$enable_fast_install" - p=${PACKAGE-default} -case $enableval in -yes) enable_fast_install=yes ;; -no) enable_fast_install=no ;; -*) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_fast_install=yes -fi - -echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:1080: checking build system type" >&5 - -build_alias=$build -case "$build_alias" in -NONE) - case $nonopt in - NONE) build_alias=$host_alias ;; - *) build_alias=$nonopt ;; - esac ;; -esac - -build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` -build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$build" 1>&6 - -# Check whether --with-gnu-ld or --without-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1109: checking for ld used by GCC" >&5 - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1139: checking for GNU ld" >&5 -else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1142: checking for non-GNU ld" >&5 -fi -if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - echo "$ac_t""$LD" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi -test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } -echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1177: checking if the linker ($LD) is GNU ld" >&5 -if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - lt_cv_prog_gnu_ld=yes -else - lt_cv_prog_gnu_ld=no -fi -fi - -echo "$ac_t""$lt_cv_prog_gnu_ld" 1>&6 -with_gnu_ld=$lt_cv_prog_gnu_ld - - -echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 -echo "configure:1194: checking for $LD option to reload object files" >&5 -if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - lt_cv_ld_reload_flag='-r' -fi - -echo "$ac_t""$lt_cv_ld_reload_flag" 1>&6 -reload_flag=$lt_cv_ld_reload_flag -test -n "$reload_flag" && reload_flag=" $reload_flag" - -echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1206: checking for BSD-compatible nm" >&5 -if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/${ac_tool_prefix}nm - if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then - lt_cv_path_NM="$tmp_nm -B" - break - elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - lt_cv_path_NM="$tmp_nm -p" - break - else - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - fi - fi - done - IFS="$ac_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -fi -fi - -NM="$lt_cv_path_NM" -echo "$ac_t""$NM" 1>&6 - -echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1244: checking whether ln -s works" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - rm -f conftestdata -if ln -s X conftestdata 2>/dev/null -then - rm -f conftestdata - ac_cv_prog_LN_S="ln -s" -else - ac_cv_prog_LN_S=ln -fi -fi -LN_S="$ac_cv_prog_LN_S" -if test "$ac_cv_prog_LN_S" = "ln -s"; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 -echo "configure:1265: checking how to recognise dependant libraries" >&5 -if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [regex]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given egrep regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi4*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin* | mingw* |pw32*) - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' - lt_cv_file_magic_cmd='/usr/bin/file -L' - case "$host_os" in - rhapsody* | darwin1.012) - lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System' - ;; - *) # Darwin 1.3 on - lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' - ;; - esac - ;; - -freebsd* ) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20*|hpux11*) - case $host_cpu in - hppa*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - esac - ;; - -irix5* | irix6*) - case $host_os in - irix5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" - ;; - esac - lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux-gnu*) - case $host_cpu in - alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; - esac - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' - fi - ;; - -newsos6) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -osf3* | osf4* | osf5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' - lt_cv_file_magic_test_file=/shlib/libc.so - lt_cv_deplibs_check_method=pass_all - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - lt_cv_file_magic_test_file=/lib/libc.so - ;; - -sysv5uw[78]* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - esac - ;; -esac - -fi - -echo "$ac_t""$lt_cv_deplibs_check_method" 1>&6 -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method - -echo $ac_n "checking for object suffix""... $ac_c" 1>&6 -echo "configure:1438: checking for object suffix" >&5 -if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - rm -f conftest* -echo 'int i = 1;' > conftest.$ac_ext -if { (eval echo configure:1444: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - for ac_file in conftest.*; do - case $ac_file in - *.c) ;; - *) ac_cv_objext=`echo $ac_file | sed -e s/conftest.//` ;; - esac - done -else - { echo "configure: error: installation or configuration problem; compiler does not work" 1>&2; exit 1; } -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_objext" 1>&6 -OBJEXT=$ac_cv_objext -ac_objext=$ac_cv_objext - - - -echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1464: checking for executable suffix" >&5 -if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$CYGWIN" = yes || test "$MINGW32" = yes; then - ac_cv_exeext=.exe -else - rm -f conftest* - echo 'int main () { return 0; }' > conftest.$ac_ext - ac_cv_exeext= - if { (eval echo configure:1474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then - for file in conftest.*; do - case $file in - *.c | *.o | *.obj) ;; - *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; - esac - done - else - { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; } - fi - rm -f conftest* - test x"${ac_cv_exeext}" = x && ac_cv_exeext=no -fi -fi - -EXEEXT="" -test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext} -echo "$ac_t""${ac_cv_exeext}" 1>&6 -ac_exeext=$EXEEXT - -if test $host != $build; then - ac_tool_prefix=${host_alias}- -else - ac_tool_prefix= -fi - -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! - -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 -echo "configure:1507: checking for ${ac_tool_prefix}file" >&5 -if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case $MAGIC_CMD in - /*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; - ?:/*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. - ;; - *) - ac_save_MAGIC_CMD="$MAGIC_CMD" - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="/usr/bin:$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - egrep "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$ac_save_ifs" - MAGIC_CMD="$ac_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$ac_t""$MAGIC_CMD" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - echo $ac_n "checking for file""... $ac_c" 1>&6 -echo "configure:1569: checking for file" >&5 -if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case $MAGIC_CMD in - /*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; - ?:/*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. - ;; - *) - ac_save_MAGIC_CMD="$MAGIC_CMD" - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="/usr/bin:$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - egrep "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$ac_save_ifs" - MAGIC_CMD="$ac_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$ac_t""$MAGIC_CMD" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1640: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -if test -z "$ac_cv_prog_RANLIB"; then -if test -n "$ac_tool_prefix"; then - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1672: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -else - RANLIB=":" -fi -fi - -# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1707: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -STRIP="$ac_cv_prog_STRIP" -if test -n "$STRIP"; then - echo "$ac_t""$STRIP" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -if test -z "$ac_cv_prog_STRIP"; then -if test -n "$ac_tool_prefix"; then - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1739: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_STRIP="strip" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_STRIP" && ac_cv_prog_STRIP=":" -fi -fi -STRIP="$ac_cv_prog_STRIP" -if test -n "$STRIP"; then - echo "$ac_t""$STRIP" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -else - STRIP=":" -fi -fi - - -# Check for any special flags to pass to ltconfig. -libtool_flags="--cache-file=$cache_file" -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" -test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" - - -# Check whether --enable-libtool-lock or --disable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then - enableval="$enable_libtool_lock" - : -fi - -test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" -test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" - -# Check whether --with-pic or --without-pic was given. -if test "${with_pic+set}" = set; then - withval="$with_pic" - pic_mode="$withval" -else - pic_mode=default -fi - -test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic" -test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -*-*-irix6*) - # Find out which ABI we are using. - echo '#line 1806 "configure"' > conftest.$ac_ext - if { (eval echo configure:1807: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { (eval echo configure:1840: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - case "`/usr/bin/file conftest.o`" in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:1858: checking whether the C compiler needs -belf" >&5 -if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - lt_cv_cc_needs_belf=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - lt_cv_cc_needs_belf=no -fi -rm -f conftest* - ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -fi - -echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6 - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; - - -esac - -echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:1908: checking how to run the C++ preprocessor" >&5 -if test -z "$CXXCPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_ext=C -# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cxx_cross - CXXCPP="${CXX-g++} -E" - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1926: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CXXCPP=/lib/cpp -fi -rm -f conftest* - ac_cv_prog_CXXCPP="$CXXCPP" -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross -fi -fi -CXXCPP="$ac_cv_prog_CXXCPP" -echo "$ac_t""$CXXCPP" 1>&6 - - -# Save cache, so that ltconfig can load it -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - - -# Actually configure libtool. ac_aux_dir is where install-sh is found. -AR="$AR" LTCC="$CC" CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ -MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ -LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \ -AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \ -objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \ -deplibs_check_method="$deplibs_check_method" file_magic_cmd="$file_magic_cmd" \ -${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ -$libtool_flags --no-verify --build="$build" $ac_aux_dir/ltmain.sh $host \ -|| { echo "configure: error: libtool configure failed" 1>&2; exit 1; } - -# Reload cache, that may have been modified by ltconfig -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh $ac_aux_dir/ltcf-c.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - -# Redirect the config.log output again, so that the ltconfig log is not -# clobbered by the next message. -exec 5>>./config.log - - - -LIBTOOL_DEPS=$LIBTOOL_DEPS" $ac_aux_dir/ltcf-cxx.sh" -lt_save_CC="$CC" -lt_save_CFLAGS="$CFLAGS" -AR="$AR" LTCC="$CC" CC="$CXX" CXX="$CXX" CFLAGS="$CXXFLAGS" CPPFLAGS="$CPPFLAGS" \ -MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ -LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \ -AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \ -objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \ -deplibs_check_method="$deplibs_check_method" \ -file_magic_cmd="$file_magic_cmd" \ -${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig -o libtool $libtool_flags \ ---build="$build" --add-tag=CXX $ac_aux_dir/ltcf-cxx.sh $host \ -|| { echo "configure: error: libtool tag configuration failed" 1>&2; exit 1; } -CC="$lt_save_CC" -CFLAGS="$lt_save_CFLAGS" - -# Redirect the config.log output again, so that the ltconfig log is not -# clobbered by the next message. -exec 5>>./config.log - - - - - - - -am__api_version="1.4" -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:2072: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_IFS" - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL="$ac_install_sh" - fi -fi -echo "$ac_t""$INSTALL" 1>&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:2125: checking whether build environment is sane" >&5 -# Just in case -sleep 1 -echo timestamp > conftestfile -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftestfile` - fi - if test "$*" != "X $srcdir/configure conftestfile" \ - && test "$*" != "X conftestfile $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - { echo "configure: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" 1>&2; exit 1; } - fi - - test "$2" = conftestfile - ) -then - # Ok. - : -else - { echo "configure: error: newly created file is older than distributed files! -Check your system clock" 1>&2; exit 1; } -fi -rm -f conftest* -echo "$ac_t""yes" 1>&6 -if test "$program_transform_name" = s,x,x,; then - program_transform_name= -else - # Double any \ or $. echo might interpret backslashes. - cat <<\EOF_SED > conftestsed -s,\\,\\\\,g; s,\$,$$,g -EOF_SED - program_transform_name="`echo $program_transform_name|sed -f conftestsed`" - rm -f conftestsed -fi -test "$program_prefix" != NONE && - program_transform_name="s,^,${program_prefix},; $program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" - -# sed with no file args requires a program. -test "$program_transform_name" = "" && program_transform_name="s,x,x," - -echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:2182: checking whether ${MAKE-make} sets \${MAKE}" >&5 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftestmake <<\EOF -all: - @echo 'ac_maketemp="${MAKE}"' -EOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftestmake -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$ac_t""yes" 1>&6 - SET_MAKE= -else - echo "$ac_t""no" 1>&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - - -PACKAGE=demangler - -VERSION=1.0 - -if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } -fi - - - -missing_dir=`cd $ac_aux_dir && pwd` -echo $ac_n "checking for working aclocal-${am__api_version}""... $ac_c" 1>&6 -echo "configure:2221: checking for working aclocal-${am__api_version}" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (aclocal-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then - ACLOCAL=aclocal-${am__api_version} - echo "$ac_t""found" 1>&6 -else - ACLOCAL="$missing_dir/missing aclocal-${am__api_version}" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:2234: checking for working autoconf" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (autoconf --version) < /dev/null > /dev/null 2>&1; then - AUTOCONF=autoconf - echo "$ac_t""found" 1>&6 -else - AUTOCONF="$missing_dir/missing autoconf" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working automake-${am__api_version}""... $ac_c" 1>&6 -echo "configure:2247: checking for working automake-${am__api_version}" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (automake-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then - AUTOMAKE=automake-${am__api_version} - echo "$ac_t""found" 1>&6 -else - AUTOMAKE="$missing_dir/missing automake-${am__api_version}" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:2260: checking for working autoheader" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (autoheader --version) < /dev/null > /dev/null 2>&1; then - AUTOHEADER=autoheader - echo "$ac_t""found" 1>&6 -else - AUTOHEADER="$missing_dir/missing autoheader" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:2273: checking for working makeinfo" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (makeinfo --version) < /dev/null > /dev/null 2>&1; then - MAKEINFO=makeinfo - echo "$ac_t""found" 1>&6 -else - MAKEINFO="$missing_dir/missing makeinfo" - echo "$ac_t""missing" 1>&6 -fi - - - - - -echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:2290: checking for executable suffix" >&5 -if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$CYGWIN" = yes || test "$MINGW32" = yes; then - ac_cv_exeext=.exe -else - rm -f conftest* - echo 'int main () { return 0; }' > conftest.$ac_ext - ac_cv_exeext= - if { (eval echo configure:2300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then - for file in conftest.*; do - case $file in - *.c | *.o | *.obj) ;; - *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; - esac - done - else - { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; } - fi - rm -f conftest* - test x"${ac_cv_exeext}" = x && ac_cv_exeext=no -fi -fi - -EXEEXT="" -test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext} -echo "$ac_t""${ac_cv_exeext}" 1>&6 -ac_exeext=$EXEEXT - -echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:2321: checking whether to enable maintainer-specific portions of Makefiles" >&5 - # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then - enableval="$enable_maintainer_mode" - USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi - - echo "$ac_t""$USE_MAINTAINER_MODE" 1>&6 - - -if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - MAINT=$MAINTAINER_MODE_TRUE - - - -echo $ac_n "checking whether we can use the new demangler in C++""... $ac_c" 1>&6 -echo "configure:2345: checking whether we can use the new demangler in C++" >&5 -if eval "test \"`echo '$''{'libdemangler_cv_new_demangler'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - saved_CPPFLAGS="$CPPFLAGS" - saved_CXXFLAGS="$CXXFLAGS" - CPPFLAGS="-I$srcdir -I$srcdir/../include -D_GLIBCXX_DEMANGLER_NOSTDCXX $CPPFLAGS" - CXXFLAGS="-fno-rtti -fno-exceptions $CXXFLAGS" - libdemangler_cv_new_demangler=no - ac_compile='${CXX-g++} $CXXFLAGS $CPPFLAGS -c -I$srcdir/include $srcdir/lib/demangle.cc 1>&5' - if { (eval echo configure:2355: \"$ac_compile\") 1>&5; (eval $ac_compile ) 2>&5; }; then - ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS $srcdir/../libiberty/dyn-string.c 1>&5' - if { (eval echo configure:2357: \"$ac_compile\") 1>&5; (eval $ac_compile ) 2>&5; }; then - cat > conftest.c < -#include -#include "demangle.h" - -void -xexit (code) - int code; -{ - exit (code); -} - -char * -xmalloc (size) - size_t size; -{ - return (char *) 0; -} - -char * -xrealloc (oldmem, size) - char *oldmem; - size_t size; -{ - return (char *) 0; -} - -int -main () -{ - const char* p; - p = cplus_demangle_v3 ("_Z1fA37_iPS_", 0); - return !p; -} -EOF - ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' - if { (eval echo configure:2394: \"$ac_compile\") 1>&5; (eval $ac_compile ) 2>&5; }; then - ac_link='${CC-cc} -o conftest${ac_exeext} conftest.o demangle.o dyn-string.o $CFLAGS $CPPFLAGS $LDFLAGS $LIBS 1>&5' - if { (eval echo configure:2396: \"$ac_link\") 1>&5; (eval $ac_link ) 2>&5; }; then - libdemangler_cv_new_demangler=yes - fi - fi - fi - fi - rm -f demangle.o dyn-string.o conftest* - CPPFLAGS="$saved_CPPFLAGS" - CXXFLAGS="$saved_CXXFLAGS" -fi - -echo "$ac_t""$libdemangler_cv_new_demangler" 1>&6 - -if test -d ${srcdir}/${libdemangler_basedir}../libiberty; then - SUBDIRS=. - if test $libdemangler_cv_new_demangler = yes; then - libiberty_target=new_demangler - else - libiberty_target=old_demangler - fi -else - SUBDIRS=lib - libiberty_target=dummy_demangler - if test $libdemangler_cv_new_demangler != yes; then - { echo "configure: error: -*** C++ compiler is unable to compile a working demangler!" 1>&2; exit 1; } - fi -fi - - - -if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - toolexecdir='$(exec_prefix)/$(target_alias)' - toolexeclibdir='$(toolexecdir)/lib' -else - toolexecdir='$(libdir)/gcc-lib/$(target_alias)' - toolexeclibdir='$(libdir)' -fi -multi_os_directory=`$CC -print-multi-os-directory 2> /dev/null` -if test $? = 0; then - case $multi_os_directory in - .) ;; # Avoid trailing /. - *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac -fi - - - -if test "${multilib}" = "yes"; then - multilib_arg="--enable-multilib" -else - multilib_arg= -fi - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo "Makefile lib/Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@libdemangler_basedir@%$libdemangler_basedir%g -s%@host@%$host%g -s%@host_alias@%$host_alias%g -s%@host_cpu@%$host_cpu%g -s%@host_vendor@%$host_vendor%g -s%@host_os@%$host_os%g -s%@CC@%$CC%g -s%@CXX@%$CXX%g -s%@build@%$build%g -s%@build_alias@%$build_alias%g -s%@build_cpu@%$build_cpu%g -s%@build_vendor@%$build_vendor%g -s%@build_os@%$build_os%g -s%@LN_S@%$LN_S%g -s%@OBJEXT@%$OBJEXT%g -s%@EXEEXT@%$EXEEXT%g -s%@RANLIB@%$RANLIB%g -s%@STRIP@%$STRIP%g -s%@LIBTOOL@%$LIBTOOL%g -s%@CXXCPP@%$CXXCPP%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@PACKAGE@%$PACKAGE%g -s%@VERSION@%$VERSION%g -s%@ACLOCAL@%$ACLOCAL%g -s%@AUTOCONF@%$AUTOCONF%g -s%@AUTOMAKE@%$AUTOMAKE%g -s%@AUTOHEADER@%$AUTOHEADER%g -s%@MAKEINFO@%$MAKEINFO%g -s%@SET_MAKE@%$SET_MAKE%g -s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g -s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g -s%@MAINT@%$MAINT%g -s%@libiberty_target@%$libiberty_target%g -s%@SUBDIRS@%$SUBDIRS%g -s%@toolexecdir@%$toolexecdir%g -s%@toolexeclibdir@%$toolexeclibdir%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF - -if test -n "$CONFIG_FILES"; then - if test -n "${with_target_subdir}"; then - LD="${ORIGINAL_LD_FOR_MULTILIBS}" - ac_file=Makefile . ${srcdir}/${libdemangler_basedir}../config-ml.in - fi -fi - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - diff -uprN binutils-2.14.90.0.7/demangler/configure.in binutils-2.14.90.0.8/demangler/configure.in --- binutils-2.14.90.0.7/demangler/configure.in 2003-10-29 09:38:20.000000000 -0800 +++ binutils-2.14.90.0.8/demangler/configure.in 1969-12-31 16:00:00.000000000 -0800 @@ -1,113 +0,0 @@ -dnl Process this with autoconf to create configure -AC_INIT(lib/demangle.cc) - -# This works around the fact that libtool configuration may change LD -# for this particular configuration, but some shells, instead of -# keeping the changes in LD private, export them just because LD is -# exported. -ORIGINAL_LD_FOR_MULTILIBS=$LD - -dnl We use these options to decide which functions to include. -AC_ARG_WITH(target-subdir, -[ --with-target-subdir=SUBDIR Configuring in a subdirectory for target]) -AC_ARG_WITH(cross-host, -[ --with-cross-host=HOST Configuring with a cross compiler]) - -dnl Default to --enable-multilib -AC_ARG_ENABLE(multilib, -[ --enable-multilib build many library versions (default)], -[case "${enableval}" in - yes) multilib=yes ;; - no) multilib=no ;; - *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;; - esac], [multilib=yes])dnl - -dnl We may get other options which we don't document: -dnl --with-target-subdir, --with-multisrctop, --with-multisubdir - -if test -n "${with_target_subdir}" && test "${srcdir}" = "."; then - if test "${with_target_subdir}" != "."; then - libdemangler_basedir="${with_multisrctop}../" - else - libdemangler_basedir="${with_multisrctop}" - fi -else - libdemangler_basedir= -fi -AC_SUBST(libdemangler_basedir) - -AC_CANONICAL_HOST - -AC_PROG_CC -libdemangler_AC_PROG_CXX -AM_PROG_LIBTOOL - -AM_INIT_AUTOMAKE(demangler,1.0,no-define) - -AC_EXEEXT -AM_MAINTAINER_MODE - -libdemangler_AC_NEW_DEMANGLER -if test -d ${srcdir}/${libdemangler_basedir}../libiberty; then - SUBDIRS=. - if test $libdemangler_cv_new_demangler = yes; then - libiberty_target=new_demangler - else - libiberty_target=old_demangler - fi -else - SUBDIRS=lib - libiberty_target=dummy_demangler - if test $libdemangler_cv_new_demangler != yes; then - AC_MSG_ERROR([ -*** C++ compiler is unable to compile a working demangler!]) - fi -fi -AC_SUBST(libiberty_target) -AC_SUBST(SUBDIRS) - -if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - toolexecdir='$(exec_prefix)/$(target_alias)' - toolexeclibdir='$(toolexecdir)/lib' -else - toolexecdir='$(libdir)/gcc-lib/$(target_alias)' - toolexeclibdir='$(libdir)' -fi -multi_os_directory=`$CC -print-multi-os-directory 2> /dev/null` -if test $? = 0; then - case $multi_os_directory in - .) ;; # Avoid trailing /. - *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac -fi -AC_SUBST(toolexecdir) -AC_SUBST(toolexeclibdir) - -if test "${multilib}" = "yes"; then - multilib_arg="--enable-multilib" -else - multilib_arg= -fi - -AC_OUTPUT(Makefile lib/Makefile, -[ -if test -n "$CONFIG_FILES"; then - if test -n "${with_target_subdir}"; then - LD="${ORIGINAL_LD_FOR_MULTILIBS}" - ac_file=Makefile . ${srcdir}/${libdemangler_basedir}../config-ml.in - fi -fi -], -srcdir=${srcdir} -host=${host} -target=${target} -with_target_subdir=${with_target_subdir} -with_multisubdir=${with_multisubdir} -ac_configure_args="${multilib_arg} ${ac_configure_args}" -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -libdemangler_basedir=${libdemangler_basedir} -CC="${CC}" -DEFS="$DEFS" -ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}" -) diff -uprN binutils-2.14.90.0.7/demangler/include/bits/demangle.h binutils-2.14.90.0.8/demangler/include/bits/demangle.h --- binutils-2.14.90.0.7/demangler/include/bits/demangle.h 2003-10-29 09:38:20.000000000 -0800 +++ binutils-2.14.90.0.8/demangler/include/bits/demangle.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,2525 +0,0 @@ -// C++ IA64 / g++ v3 demangler -*- C++ -*- - -// Copyright (C) 2003 Free Software Foundation, Inc. -// Written by Carlo Wood -// -// This file is part of the GNU ISO C++ Library. This library 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 2, or (at your option) -// any later version. - -// This library 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 library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// As a special exception, you may use this file as part of a free software -// library without restriction. Specifically, if other files instantiate -// templates or use macros or inline functions from this file, or you compile -// this file and link it with other files to produce an executable, this -// file does not by itself cause the resulting executable to be covered by -// the GNU General Public License. This exception does not however -// invalidate any other reasons why the executable file might be covered by -// the GNU General Public License. - -#ifndef _DEMANGLER_H -#define _DEMANGLER_H 1 - -#include - -#ifdef _GLIBCXX_DEMANGLER_NOSTDCXX -#include "bits/dynstring.h" -#define _GLIBCXX_DEMANGLER_BASIC_STRING demangler::dynstring -#else -#include -#define _GLIBCXX_DEMANGLER_BASIC_STRING std::basic_string, Allocator> -#endif - -#ifndef _GLIBCXX_DEMANGLER_DEBUG -#define _GLIBCXX_DEMANGLER_CWDEBUG 0 -#define _GLIBCXX_DEMANGLER_DEBUG(x) -#define _GLIBCXX_DEMANGLER_DOUT(cntrl, data) -#define _GLIBCXX_DEMANGLER_DOUT_ENTERING(x) -#define _GLIBCXX_DEMANGLER_DOUT_ENTERING2(x) -#define _GLIBCXX_DEMANGLER_RETURN \ - return M_result -#define _GLIBCXX_DEMANGLER_RETURN2 \ - return M_result -#define _GLIBCXX_DEMANGLER_FAILURE \ - do { M_result = false; return false; } while(0) -#else -#define _GLIBCXX_DEMANGLER_CWDEBUG 1 -#endif - -// The following defines change the behaviour of the demangler. The -// default behaviour is that none of these macros is defined. - -// _GLIBCXX_DEMANGLER_STYLE_VOID -// Default behaviour: int f() -// Uses (void) instead of (): int f(void) - -// _GLIBCXX_DEMANGLER_STYLE_LITERAL -// Default behaviour: (long)13, -// (unsigned long long)19 -// Use extensions 'u', 'l' and 'll' for integral -// literals (as in template arguments): 13l, 19ull - -// _GLIBCXX_DEMANGLER_STYLE_LITERAL_INT -// Default behaviour: 4 -// Use also an explicit cast for int in literals: (int)4 - -namespace __gnu_cxx -{ - namespace demangler - { - namespace - { - - enum substitution_nt - { - type, - template_template_param, - nested_name_prefix, - nested_name_template_prefix, - unscoped_template_name - }; - - struct substitution_st - { - int M_start_pos; - substitution_nt M_type; - int M_number_of_prefixes; - - substitution_st(int start_pos, - substitution_nt type, - int number_of_prefixes) - : M_start_pos(start_pos), M_type(type), - M_number_of_prefixes(number_of_prefixes) - { } - }; - - enum simple_qualifier_nt - { - complex_or_imaginary = 'G', - pointer = 'P', - reference = 'R' - }; - - enum cv_qualifier_nt - { - cv_qualifier = 'K' - }; - - enum param_qualifier_nt - { - vendor_extension = 'U', - array = 'A', - pointer_to_member = 'M' - }; - - // ::= v # void - // ::= w # wchar_t - // ::= b # bool - // ::= c # char - // ::= a # signed char - // ::= h # unsigned char - // ::= s # short - // ::= t # unsigned short - // ::= i # int - // ::= j # unsigned int - // ::= l # long - // ::= m # unsigned long - // ::= x # long long, __int64 - // ::= y # unsigned long long, __int64 - // ::= n # __int128 - // ::= o # unsigned __int128 - // ::= f # float - // ::= d # double - // ::= e # long double, __float80 - // ::= g # __float128 - // ::= z # ellipsis - // ::= u # vendor extended type - // - char const* const builtin_type_c[26] = - { - "signed char", // a - "bool", // b - "char", // c - "double", // d - "long double", // e - "float", // f - "__float128", // g - "unsigned char", // h - "int", // i - "unsigned int", // j - NULL, // k - "long", // l - "unsigned long", // m - "__int128", // n - "unsigned __int128", // o - NULL, // p - NULL, // q - NULL, // r - "short", // s - "unsigned short", // t - NULL, // u - "void", // v - "wchar_t", // w - "long long", // x - "unsigned long long", // y - "..." // z - }; - - // Java source names of builtin types. Types that arn't valid in - // Java are also included here - we don't fail if someone attempts - // to demangle a C++ symbol in Java style. - char const* const builtin_type_java[26] = - { - "signed char", // a - "boolean", // b C++ "bool" - "byte", // c C++ "char" - "double", // d - "long double", // e - "float", // f - "__float128", // g - "unsigned char", // h - "int", // i - "unsigned int", // j - NULL, // k - "long", // l - "unsigned long", // m - "__int128", // n - "unsigned __int128", // o - NULL, // p - NULL, // q - NULL, // r - "short", // s - "unsigned short", // t - NULL, // u - "void", // v - "char", // w C++ "wchar_t" - "long", // x C++ "long long" - "unsigned long long", // y - "..." // z - }; - - template - class qualifier; - - template - class qualifier_list; - - template - class session; - - template - class qualifier - { - typedef _GLIBCXX_DEMANGLER_BASIC_STRING string_type; - - private: - char M_qualifier1; - char M_qualifier2; - char M_qualifier3; - mutable unsigned char M_cnt; - string_type M_optional_type; - int M_start_pos; - bool M_part_of_substitution; - - public: - qualifier(int start_pos, - simple_qualifier_nt simple_qualifier, - int inside_substitution) - : M_qualifier1(simple_qualifier), - M_start_pos(start_pos), - M_part_of_substitution(inside_substitution) - { } - - qualifier(int start_pos, - cv_qualifier_nt, - char const* start, - int count, - int inside_substitution) - : M_qualifier1(start[0]), - M_qualifier2((count > 1) ? start[1] : '\0'), - M_qualifier3((count > 2) ? start[2] : '\0'), - M_start_pos(start_pos), - M_part_of_substitution(inside_substitution) - { } - - qualifier(int start_pos, - param_qualifier_nt param_qualifier, - string_type optional_type, - int inside_substitution) - : M_qualifier1(param_qualifier), - M_optional_type(optional_type), - M_start_pos(start_pos), - M_part_of_substitution(inside_substitution) - { } - - int - start_pos(void) const - { return M_start_pos; } - - char - first_qualifier(void) const - { M_cnt = 1; return M_qualifier1; } - - char - next_qualifier(void) const - { - return (++M_cnt == 2) ? M_qualifier2 - : ((M_cnt == 3) ? M_qualifier3 : 0); - } - - string_type const& - optional_type(void) const - { return M_optional_type; } - - bool - part_of_substitution(void) const - { return M_part_of_substitution; } - - }; - - template - class qualifier_list - { - typedef _GLIBCXX_DEMANGLER_BASIC_STRING string_type; - - private: - bool M_printing_suppressed; - std::vector, Allocator> M_qualifier_starts; - session& M_demangler; - - public: - qualifier_list(session& demangler_obj) - : M_printing_suppressed(false), M_demangler(demangler_obj) - { } - - ~qualifier_list() { } - - void - add_qualifier_start(simple_qualifier_nt simple_qualifier, - int start_pos, - int inside_substitution) - { M_qualifier_starts. - push_back(qualifier(start_pos, - simple_qualifier, inside_substitution)); } - - void - add_qualifier_start(cv_qualifier_nt cv_qualifier, - int start_pos, - int count, - int inside_substitution) - { M_qualifier_starts. - push_back(qualifier(start_pos, - cv_qualifier, &M_demangler.M_str[start_pos], - count, inside_substitution)); } - - void - add_qualifier_start(param_qualifier_nt param_qualifier, - int start_pos, - string_type optional_type, - int inside_substitution) - { M_qualifier_starts. - push_back(qualifier(start_pos, - param_qualifier, optional_type, inside_substitution)); } - - void - decode_qualifiers(string_type& prefix, - string_type& postfix, - bool member_function_pointer_qualifiers); - - bool - suppressed(void) const - { return M_printing_suppressed; } - - void - printing_suppressed(void) - { M_printing_suppressed = true; } - - size_t - size(void) const - { return M_qualifier_starts.size(); } - - }; - - template - class session - { - friend class qualifier_list; - typedef _GLIBCXX_DEMANGLER_BASIC_STRING string_type; - - private: - char const* M_str; - int M_pos; - int M_maxpos; - bool M_result; - bool M_java; - char const *M_namespace_separator; - char const* const *M_builtin_type; - int M_inside_template_args; - int M_inside_type; - int M_inside_substitution; - bool M_saw_destructor; - int M_name_ctor; - int M_name_dtor; - bool M_name_is_cdtor; - bool M_name_is_template; - bool M_name_is_conversion_operator; - bool M_template_args_need_space; - string_type M_function_name; - std::vector M_template_arg_pos; - int M_template_arg_pos_offset; - std::vector M_substitutions_pos; -#if _GLIBCXX_DEMANGLER_CWDEBUG - bool M_inside_add_substitution; -#endif - - public: - explicit session(char const* in, int len, bool java = false) - : M_str(in), M_pos(0), M_maxpos(len - 1), M_result(true), - M_java (java), M_namespace_separator (java ? "." : "::"), - M_builtin_type (java ? builtin_type_java : builtin_type_c), - M_inside_template_args(0), M_inside_type(0), - M_inside_substitution(0), M_saw_destructor(false), - M_name_ctor (-1), M_name_dtor (-1), - M_name_is_cdtor(false), M_name_is_template(false), - M_name_is_conversion_operator(false), - M_template_args_need_space(false), M_template_arg_pos_offset(0) -#if _GLIBCXX_DEMANGLER_CWDEBUG - , M_inside_add_substitution(false) -#endif - { } - - ~session() { } - - static int - decode_encoding(string_type& output, char const* input, - int len, bool java = false); - - static int - decode_cdtor(char const* input, int len, bool ctor); - - bool - decode_type_with_postfix(string_type& prefix, - string_type& postfix, - qualifier_list* qualifiers = NULL); - - bool - decode_type(string_type& output, - qualifier_list* qualifiers = NULL) - { - string_type postfix; - bool res = decode_type_with_postfix(output, postfix, qualifiers); - output += postfix; - return res; - } - - bool - remaining_input_characters(void) const - { return current() != 0; } - - private: - char - current(void) const - { return (M_pos > M_maxpos) ? 0 : M_str[M_pos]; } - - char - next(void) - { return (M_pos >= M_maxpos) ? 0 : M_str[++M_pos]; } - - char - eat_current(void) - { return (M_pos > M_maxpos) ? 0 : M_str[M_pos++]; } - - void - store(int& saved_pos) - { saved_pos = M_pos; } - - void - restore(int saved_pos) - { M_pos = saved_pos; M_result = true; } - - void - add_substitution(int start_pos, - substitution_nt sub_type, - int number_of_prefixes); - - bool decode_bare_function_type(string_type& output); - bool decode_builtin_type(string_type& output); - bool decode_call_offset(string_type& output); - bool decode_class_enum_type(string_type& output); - bool decode_expression(string_type& output); - bool decode_literal(string_type& output); - bool decode_local_name(string_type& output); - bool decode_name(string_type& output, - string_type& nested_name_qualifiers); - bool decode_nested_name(string_type& output, - string_type& qualifiers); - bool decode_number(string_type& output); - bool decode_operator_name(string_type& output); - bool decode_source_name(string_type& output); - bool decode_unicode(string_type& output, int &length); - bool decode_substitution(string_type& output, - qualifier_list* qualifiers = NULL); - bool decode_template_args(string_type& output); - bool decode_template_param(string_type& output, - qualifier_list* qualifiers = NULL); - bool decode_unqualified_name(string_type& output); - bool decode_unscoped_name(string_type& output); - bool decode_decimal_integer(string_type& output); - bool decode_special_name(string_type& output); - }; - - template -#if !_GLIBCXX_DEMANGLER_CWDEBUG - inline -#endif - void - session::add_substitution(int start_pos, - substitution_nt sub_type, - int number_of_prefixes = 0) - { - if (!M_inside_substitution) - { -#if _GLIBCXX_DEMANGLER_CWDEBUG - if (M_inside_add_substitution) - return; -#endif - M_substitutions_pos. - push_back(substitution_st(start_pos, - sub_type, number_of_prefixes)); -#if _GLIBCXX_DEMANGLER_CWDEBUG - if (!DEBUGCHANNELS::dc::demangler.is_on()) - return; - string_type substitution_name("S"); - int n = M_substitutions_pos.size() - 1; - if (n > 0) - substitution_name += (n <= 10) ? (char)(n + '0' - 1) - : (char)(n + 'A' - 11); - substitution_name += '_'; - string_type subst; - int saved_pos = M_pos; - M_pos = start_pos; - M_inside_add_substitution = true; - _GLIBCXX_DEMANGLER_DEBUG( dc::demangler.off() ); - switch(sub_type) - { - case type: - decode_type(subst); - break; - case template_template_param: - decode_template_param(subst); - break; - case nested_name_prefix: - case nested_name_template_prefix: - for (int cnt = number_of_prefixes; cnt > 0; --cnt) - { - if (current() == 'I') - { - subst += ' '; - decode_template_args(subst); - } - else - { - if (cnt < number_of_prefixes) - subst += M_namespace_separator; - if (current() == 'S') - decode_substitution(subst); - else - decode_unqualified_name(subst); - } - } - break; - case unscoped_template_name: - decode_unscoped_name(subst); - break; - } - M_pos = saved_pos; - _GLIBCXX_DEMANGLER_DEBUG( dc::demangler.on() ); - _GLIBCXX_DEMANGLER_DOUT(dc::demangler, - "Adding substitution " << substitution_name - << " : " << subst - << " (from " << location_ct((char*)__builtin_return_address(0) - + builtin_return_address_offset) - << " <- " << location_ct((char*)__builtin_return_address(1) - + builtin_return_address_offset) - << " <- " << location_ct((char*)__builtin_return_address(2) - + builtin_return_address_offset) - << ")."); - M_inside_add_substitution = false; -#endif - } - } - - // We don't want to depend on locale (or include for that matter). - // We also don't want to use "safe-ctype.h" because that headerfile is not - // available to the users. - inline bool isdigit(char c) { return c >= '0' && c <= '9'; } - inline bool isxdigit(char c) - { return (isdigit (c) - || (c >= 'a' && c <= 'f') - || (c >= 'A' && c <= 'F')); } - inline bool islower(char c) { return c >= 'a' && c <= 'z'; } - inline bool isupper(char c) { return c >= 'A' && c <= 'Z'; } - inline char tolower(char c) { return isupper(c) ? c - 'A' + 'a' : c; } - - // - // ::= 0 - // ::= 1|2|3|4|5|6|7|8|9 [+] - // ::= 0|1|2|3|4|5|6|7|8|9 - // - template - bool - session::decode_decimal_integer(string_type& output) - { - char c = current(); - if (c == '0') - { - output += '0'; - eat_current(); - } - else if (!isdigit(c)) - M_result = false; - else - { - do - { - output += c; - } - while (isdigit((c = next()))); - } - return M_result; - } - - // ::= [n] - // - template - bool - session::decode_number(string_type& output) - { - _GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_number"); - if (current() != 'n') - decode_decimal_integer(output); - else - { - output += '-'; - eat_current(); - decode_decimal_integer(output); - } - _GLIBCXX_DEMANGLER_RETURN; - } - - // - template - bool - session::decode_builtin_type(string_type& output) - { - _GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_builtin_type"); - char const* bt; - if (!islower(current()) || !(bt = M_builtin_type[current() - 'a'])) - _GLIBCXX_DEMANGLER_FAILURE; - output += bt; - eat_current(); - _GLIBCXX_DEMANGLER_RETURN; - } - - // ::= - // - template - bool - session::decode_class_enum_type(string_type& output) - { - _GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_class_enum_type"); - string_type nested_name_qualifiers; - if (!decode_name(output, nested_name_qualifiers)) - _GLIBCXX_DEMANGLER_FAILURE; - output += nested_name_qualifiers; - _GLIBCXX_DEMANGLER_RETURN; - } - - // ::= - // S _ - // S_ - // St # ::std:: - // Sa # ::std::allocator - // Sb # ::std::basic_string - // Ss # ::std::basic_string, - // std::allocator > - // Si # ::std::basic_istream > - // So # ::std::basic_ostream > - // Sd # ::std::basic_iostream > - // - // ::= - // 0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z - // [] # Base 36 number - // - template - bool - session::decode_substitution(string_type& output, - qualifier_list* qualifiers) - { - _GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_substitution"); - unsigned int value = 0; - char c = next(); - if (c != '_') - { - switch(c) - { - case 'a': - { - output += "std::allocator"; - if (!M_inside_template_args) - { - M_function_name = "allocator"; - M_name_is_template = true; - M_name_is_cdtor = false; - M_name_is_conversion_operator = false; - } - eat_current(); - if (qualifiers) - qualifiers->printing_suppressed(); - _GLIBCXX_DEMANGLER_RETURN; - } - case 'b': - { - output += "std::basic_string"; - if (!M_inside_template_args) - { - M_function_name = "basic_string"; - M_name_is_template = true; - M_name_is_cdtor = false; - M_name_is_conversion_operator = false; - } - eat_current(); - if (qualifiers) - qualifiers->printing_suppressed(); - _GLIBCXX_DEMANGLER_RETURN; - } - case 'd': - output += "std::iostream"; - if (!M_inside_template_args) - { - M_function_name = "iostream"; - M_name_is_template = true; - M_name_is_cdtor = false; - M_name_is_conversion_operator = false; - } - eat_current(); - if (qualifiers) - qualifiers->printing_suppressed(); - _GLIBCXX_DEMANGLER_RETURN; - case 'i': - output += "std::istream"; - if (!M_inside_template_args) - { - M_function_name = "istream"; - M_name_is_template = true; - M_name_is_cdtor = false; - M_name_is_conversion_operator = false; - } - eat_current(); - if (qualifiers) - qualifiers->printing_suppressed(); - _GLIBCXX_DEMANGLER_RETURN; - case 'o': - output += "std::ostream"; - if (!M_inside_template_args) - { - M_function_name = "ostream"; - M_name_is_template = true; - M_name_is_cdtor = false; - M_name_is_conversion_operator = false; - } - eat_current(); - if (qualifiers) - qualifiers->printing_suppressed(); - _GLIBCXX_DEMANGLER_RETURN; - case 's': - output += "std::string"; - if (!M_inside_template_args) - { - M_function_name = "string"; - M_name_is_template = true; - M_name_is_cdtor = false; - M_name_is_conversion_operator = false; - } - eat_current(); - if (qualifiers) - qualifiers->printing_suppressed(); - _GLIBCXX_DEMANGLER_RETURN; - case 't': - output += "std"; - eat_current(); - if (qualifiers) - qualifiers->printing_suppressed(); - _GLIBCXX_DEMANGLER_RETURN; - default: - for(;; c = next()) - { - if (isdigit(c)) - value = value * 36 + c - '0'; - else if (isupper(c)) - value = value * 36 + c - 'A' + 10; - else if (c == '_') - break; - else - _GLIBCXX_DEMANGLER_FAILURE; - } - ++value; - break; - } - } - eat_current(); - if (value >= M_substitutions_pos.size() || - M_inside_type > 20) // Rather than core dump. - _GLIBCXX_DEMANGLER_FAILURE; - ++M_inside_substitution; - int saved_pos = M_pos; - substitution_st& substitution(M_substitutions_pos[value]); - M_pos = substitution.M_start_pos; - switch(substitution.M_type) - { - case type: - decode_type(output, qualifiers); - break; - case template_template_param: - decode_template_param(output, qualifiers); - break; - case nested_name_prefix: - case nested_name_template_prefix: - for (int cnt = substitution.M_number_of_prefixes; cnt > 0; --cnt) - { - if (current() == 'I') - { - if (M_template_args_need_space) - output += ' '; - M_template_args_need_space = false; - if (!decode_template_args(output)) - _GLIBCXX_DEMANGLER_FAILURE; - } - else - { - if (cnt < substitution.M_number_of_prefixes) - output += M_namespace_separator; - if (current() == 'S') - { - if (!decode_substitution(output)) - _GLIBCXX_DEMANGLER_FAILURE; - } - else if (!decode_unqualified_name(output)) - _GLIBCXX_DEMANGLER_FAILURE; - } - } - if (qualifiers) - qualifiers->printing_suppressed(); - break; - case unscoped_template_name: - decode_unscoped_name(output); - if (qualifiers) - qualifiers->printing_suppressed(); - break; - } - M_pos = saved_pos; - --M_inside_substitution; - _GLIBCXX_DEMANGLER_RETURN; - } - - // ::= T_ # first template parameter - // ::= T _ - // - template - bool - session::decode_template_param(string_type& output, - qualifier_list* qualifiers) - { - _GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_template_parameter"); - if (current() != 'T') - _GLIBCXX_DEMANGLER_FAILURE; - unsigned int value = 0; - char c; - if ((c = next()) != '_') - { - while(isdigit(c)) - { - value = value * 10 + c - '0'; - c = next(); - } - ++value; - } - if (eat_current() != '_') - _GLIBCXX_DEMANGLER_FAILURE; - value += M_template_arg_pos_offset; - if (value >= M_template_arg_pos.size()) - _GLIBCXX_DEMANGLER_FAILURE; - int saved_pos = M_pos; - M_pos = M_template_arg_pos[value]; - if (M_inside_type > 20) // Rather than core dump. - _GLIBCXX_DEMANGLER_FAILURE; - ++M_inside_substitution; - if (current() == 'X') - { - eat_current(); - decode_expression(output); - } - else if (current() == 'L') - decode_literal(output); - else - decode_type(output, qualifiers); - --M_inside_substitution; - M_pos = saved_pos; - _GLIBCXX_DEMANGLER_RETURN; - } - - template - bool - session::decode_literal(string_type& output) - { - _GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_literal"); - eat_current(); // Eat the 'L'. - if (current() == '_') - { - if (next() != 'Z') - _GLIBCXX_DEMANGLER_FAILURE; - eat_current(); - if ((M_pos += decode_encoding(output, M_str + M_pos, - M_maxpos - M_pos + 1, M_java)) < 0) - _GLIBCXX_DEMANGLER_FAILURE; - } - else - { - // Special cases - if (current() == 'b') - { - if (next() == '0') - output += "false"; - else - output += "true"; - eat_current(); - _GLIBCXX_DEMANGLER_RETURN; - } - char c = current(); -#ifdef _GLIBCXX_DEMANGLER_STYLE_LITERAL - if (c == 'i' || c == 'j' || c == 'l' || - c == 'm' || c == 'x' || c == 'y') - eat_current(); - else -#else -#ifndef _GLIBCXX_DEMANGLER_STYLE_LITERAL_INT - if (c == 'i') - eat_current(); - else -#endif -#endif - { - output += '('; - if (!decode_type(output)) - _GLIBCXX_DEMANGLER_FAILURE; - output += ')'; - } - if (!decode_number(output)) - _GLIBCXX_DEMANGLER_FAILURE; -#ifdef _GLIBCXX_DEMANGLER_STYLE_LITERAL - if (c == 'j' || c == 'm' || c == 'y') - output += 'u'; - if (c == 'l' || c == 'm') - output += 'l'; - if (c == 'x' || c == 'y') - output += "ll"; -#endif - } - _GLIBCXX_DEMANGLER_RETURN; - } - - // ::= - // nw # new - // na # new[] - // dl # delete - // da # delete[] - // ng # - (unary) - // ad # & (unary) - // de # * (unary) - // co # ~ - // pl # + - // mi # - - // ml # * - // dv # / - // rm # % - // an # & - // or # | - // eo # ^ - // aS # = - // pL # += - // mI # -= - // mL # *= - // dV # /= - // rM # %= - // aN # &= - // oR # |= - // eO # ^= - // ls # << - // rs # >> - // lS # <<= - // rS # >>= - // eq # == - // ne # != - // lt # < - // gt # > - // le # <= - // ge # >= - // nt # ! - // aa # && - // oo # || - // pp # ++ - // mm # -- - // cm # , - // pm # ->* - // pt # -> - // cl # () - // ix # [] - // qu # ? - // sz # sizeof - // sr # scope resolution (::), see below - // cv # (cast) - // v # vendor extended operator - // - // - // Symbol operator codes exist of two characters, we need to find a - // quick hash so that their names can be looked up in a table. - // - // The puzzle :) - // Shift the rows so that there is at most one character per column. - // - // A perfect solution: - // horizontal - // ..................................... offset + 'a' - // a, ||a||d|||||||||n||||s|||||||||||||||||| 2 - // c, || || ||lm|o||| |||| |||||||||||||||||| -3 - // d, || a| |e | ||l |||| |||v|||||||||||||| 3 - // e, || | | o q| |||| ||| |||||||||||||| -4 - // g, |e | | | t||| ||| |||||||||||||| -3 - // i, | | | | ||| ||| ||||||||||x||| 12 - // l, | | | e ||| ||| ||st|||||| ||| 9 - // m, | | | ||| ||| |i lm|||| ||| 18 - // n, a e g ||t |w| | |||| ||| 0 - // o, || | | | ||o| r|| 19 - // p, lm p | t || | || 6 - // q, | || u || 14 - // r, | |m |s 20 - // s, r z | 6 - // ..................................... - // ^ ^__ second character - // |___ first character - // - - // Putting that solution in tables: - - char const offset_table_c [1 + CHAR_MAX - CHAR_MIN ] = - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -#if (CHAR_MIN < 0) - // Add -CHAR_MIN extra zeroes (128): - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // a b c d e f g h i j k - 0, -95, 0,-100, -94,-101, 0,-100, 0, -85, 0, 0, - // l m n o p q r s t u v - -88, -79, -97, -78, -91, -83, -77, -91, 0, 0, 0, -#else - // a b c d e f g h i j k - 0, 161, 0, 156, 162, 155, 0, 156, 0, 171, 0, 0, - // l m n o p q r s t u v - 168, 177, 159, 178, 165, 173, 179, 165, 0, 0, 0, -#endif - // ... more zeros - }; - - struct entry_st - { - char const* opcode; - char const* symbol_name; - bool unary; - }; - - entry_st const symbol_name_table_c[39] = { - { "na", "operator new[]", true }, - { "ge", "operator>=", false }, - { "aa", "operator&&", false }, - { "da", "operator delete[]", true }, - { "ne", "operator!=", false }, - { "ad", "operator&", true }, // unary - { "ng", "operator-", true }, // unary - { "de", "operator*", true }, // unary - { "cl", "operator()", true }, - { "cm", "operator,", false }, - { "eo=", "operator^", false }, - { "co", "operator~", false }, - { "eq", "operator==", false }, - { "le", "operator<=", false }, - { "dl", "operator delete", true }, - { "an=", "operator&", false }, - { "gt", "operator>", false }, - { "pl=", "operator+", false }, - { "pm", "operator->*", false }, - { "nt", "operator!", true }, - { "as=", "operator", false }, - { "pp", "operator++", true }, - { "nw", "operator new", true }, - { "sr", "::", true }, - { "dv=", "operator/", false }, - { "pt", "operator->", false }, - { "mi=", "operator-", false }, - { "ls=", "operator<<", false }, - { "lt", "operator<", false }, - { "ml=", "operator*", false }, - { "mm", "operator--", true }, - { "sz", "sizeof", true }, - { "rm=", "operator%", false }, - { "oo", "operator||", false }, - { "qu", "operator?", false }, - { "ix", "operator[]", true }, - { "or=", "operator|", false }, - { "", NULL, false }, - { "rs=", "operator>>", false } - }; - - template - bool - session::decode_operator_name(string_type& output) - { - _GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_operator_name"); - - char opcode0 = current(); - char opcode1 = tolower(next()); - - register char hash; - if ((hash = offset_table_c[opcode0 - CHAR_MIN])) - { - hash += opcode1; - if ( -#if (CHAR_MIN < 0) - hash >= 0 && -#endif - hash < 39) - { - int index = static_cast(static_cast(hash)); - entry_st entry = symbol_name_table_c[index]; - if (entry.opcode[0] == opcode0 && entry.opcode[1] == opcode1 - && (opcode1 == current() || entry.opcode[2] == '=')) - { - output += entry.symbol_name; - if (opcode1 != current()) - output += '='; - eat_current(); - if (hash == 27 || hash == 28) - M_template_args_need_space = true; - _GLIBCXX_DEMANGLER_RETURN; - } - else if (opcode0 == 'c' && opcode1 == 'v') - { - eat_current(); - output += "operator "; - if (current() == 'T') - { - // This is a templated cast operator. - // It must be of the form "cvT_I...E". - // Let M_template_arg_pos already point - // to the template argument. - M_template_arg_pos_offset = M_template_arg_pos.size(); - M_template_arg_pos.push_back(M_pos + 3); - } - if (!decode_type(output)) - _GLIBCXX_DEMANGLER_FAILURE; - if (!M_inside_template_args) - M_name_is_conversion_operator = true; - _GLIBCXX_DEMANGLER_RETURN; - } - } - } - _GLIBCXX_DEMANGLER_FAILURE; - } - - // - // ::= - // ::= - // ::= - // - // ::= # Starts with a T - // ::= L E # literal - // ::= L E # external name - // - template - bool - session::decode_expression(string_type& output) - { - _GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_expression"); - if (current() == 'T') - { - if (!decode_template_param(output)) - _GLIBCXX_DEMANGLER_FAILURE; - _GLIBCXX_DEMANGLER_RETURN; - } - else if (current() == 'L') - { - if (!decode_literal(output)) - _GLIBCXX_DEMANGLER_FAILURE; - if (current() != 'E') - _GLIBCXX_DEMANGLER_FAILURE; - eat_current(); - _GLIBCXX_DEMANGLER_RETURN; - } - else - { - char opcode0 = current(); - char opcode1 = tolower(next()); - - register char hash; - if ((hash = offset_table_c[opcode0 - CHAR_MIN])) - { - hash += opcode1; - if ( -#if (CHAR_MIN < 0) - hash >= 0 && -#endif - hash < 39) - { - int index = static_cast(static_cast(hash)); - entry_st entry = symbol_name_table_c[index]; - if (entry.opcode[0] == opcode0 && entry.opcode[1] == opcode1 - && (opcode1 == current() || entry.opcode[2] == '=')) - { - char const* p = entry.symbol_name; - if (!strncmp("operator", p, 8)) - p += 8; - if (*p == ' ') - ++p; - if (entry.unary) - output += p; - bool is_eq = (opcode1 != current()); - eat_current(); - output += '('; - if (!decode_expression(output)) - _GLIBCXX_DEMANGLER_FAILURE; - output += ')'; - if (!entry.unary) - { - output += ' '; - output += p; - if (is_eq) - output += '='; - output += ' '; - output += '('; - if (!decode_expression(output)) - _GLIBCXX_DEMANGLER_FAILURE; - output += ')'; - } - _GLIBCXX_DEMANGLER_RETURN; - } - } - } - } - _GLIBCXX_DEMANGLER_FAILURE; - } - - // - // ::= I + E - // ::= # type or template - // ::= L E # literal - // ::= L_Z E # external name - // ::= X E # expression - template - bool - session::decode_template_args(string_type& output) - { - _GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_template_args"); - if (eat_current() != 'I') - _GLIBCXX_DEMANGLER_FAILURE; - int prev_size = M_template_arg_pos.size(); - ++M_inside_template_args; - if (M_template_args_need_space) - { - output += ' '; - M_template_args_need_space = false; - } - output += '<'; - for(;;) - { - if (M_inside_template_args == 1 && !M_inside_type) - M_template_arg_pos.push_back(M_pos); - if (current() == 'X') - { - eat_current(); - if (!decode_expression(output)) - _GLIBCXX_DEMANGLER_FAILURE; - if (current() != 'E') - _GLIBCXX_DEMANGLER_FAILURE; - eat_current(); - } - else if (current() == 'L') - { - if (!decode_literal(output)) - _GLIBCXX_DEMANGLER_FAILURE; - if (current() != 'E') - _GLIBCXX_DEMANGLER_FAILURE; - eat_current(); - } - else if (!decode_type(output)) - _GLIBCXX_DEMANGLER_FAILURE; - if (current() == 'E') - break; - output += ", "; - } - eat_current(); - if (*(output.rbegin()) == '>') - output += ' '; - output += '>'; - --M_inside_template_args; - if (!M_inside_template_args && !M_inside_type) - { - M_name_is_template = true; - M_template_arg_pos_offset = prev_size; - } - _GLIBCXX_DEMANGLER_RETURN; - } - - // ::= - // + # types are parameter types - // - template - bool - session::decode_bare_function_type(string_type& output) - { - _GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_bare_function_type"); - if (M_saw_destructor) - { - if (eat_current() != 'v' || (current() != 'E' && current() != 0)) - _GLIBCXX_DEMANGLER_FAILURE; - output += "()"; - M_saw_destructor = false; - _GLIBCXX_DEMANGLER_RETURN; - } -#ifndef _GLIBCXX_DEMANGLER_STYLE_VOID - if (current() == 'v') - { - eat_current(); - if (current() != 'E' && current() != 0) - _GLIBCXX_DEMANGLER_FAILURE; - output += "()"; - M_saw_destructor = false; - _GLIBCXX_DEMANGLER_RETURN; - } -#endif - output += '('; - M_template_args_need_space = false; - if (!decode_type(output)) // Must have at least one parameter. - _GLIBCXX_DEMANGLER_FAILURE; - while (current() != 'E' && current() != 0) - { - output += ", "; - if (!decode_type(output)) - _GLIBCXX_DEMANGLER_FAILURE; - } - output += ')'; - _GLIBCXX_DEMANGLER_RETURN; - } - - // ::= - // # Starts with a lower case character != r. - // # Starts with F - // # Starts with N, S, C, D, Z, a digit or a lower - // # case character. Since a lower case character - // # would be an operator name, that would be an - // # error. The S is a substitution or St - // # (::std::). A 'C' would be a constructor and - // # thus also an error. - // # Starts with T - // # Starts with S - // # Starts with T or S, - // # equivalent with the above. - // - // # Starts with A - // # Starts with M - // # Starts with r, V or K - // P # pointer-to # Starts with P - // R # reference-to # Starts with R - // C # complex (C 2000) # Starts with C - // G # imaginary (C 2000)# Starts with G - // U # vendor extended type qualifier, - // # starts with U - // - // ::= - // ::= - - // My own analysis of how to decode qualifiers: - // - // F is a , is a , , - // or . - // represents a series of qualifiers (not G or C). - // is an unqualified type. - // is a qualified type. - // is the bare-function-type without return type. - // is the array index. - // Substitutions: - // MFE ==> R (C::*Q)B Q2 "", "FE" - // ( and recursive), - // "MFE". - // FE ==> R (Q)B "", "" ( recursive) - // and "FE". - // - // Note that if has postfix qualifiers (an array), then those - // are added AFTER the (member) function type. For example: - // FPAE ==> R (*(Q)B) [], where the PA added the prefix - // "(*" and the postfix ") []". - // - // G ==> imaginary T Q "", "G" ( recursive). - // C ==> complex T Q "", "C" ( recursive). - // ==> T Q "" ( recursive). - // - // where is any of: - // - // P ==> *Q "P..." - // R ==> &Q "R..." - // [K|V|r]+ ==> [ const| volatile| restrict]+Q "KVr..." - // U ==> SQ "U..." - // M ==> C::*Q "M..." ( recurs.) - // A ==> [I] "A..." ( recurs.) - // A ==> (Q) [I] "A..." ( recurs.) - // Note that when ends on an A then the brackets are omitted: - // AA ==> [I2][I] - // - // A is handled with an input position switch during which - // new substitutions are turned off. Because recursive handling of types - // (and therefore the order in which substitutions must be generated) must - // be done left to right, but the generation of Q needs processing right to - // left, substitutions per are generated by reading the input left - // to right and marking the starts of all substitutions only - implicitly - // finishing them at the end of the type. Then the output and real - // substitutions are generated. - // - // The following comment was for the demangling of g++ version 3.0.x. The - // mangling (and I believe even the ABI description) have been fixed now - // (as of g++ version 3.1). - // - // g++ 3.0.x only: - // The ABI specifies for pointer-to-member function types the format - // MFE. In other words, the qualifier (see above) is - // implicitely contained in instead of explicitly part of the M format. - // I am convinced that this is a bug in the ABI. Unfortunately, this is - // how we have to demangle things as it has a direct impact on the order - // in which substitutions are stored. This ill-formed design results in - // rather ill-formed demangler code too however :/ - // - // is now explicitely part of the M format. - // For some weird reason, g++ (3.2.1) does not add substitutions for - // qualified member function pointers. I think that is another bug. - // - template - void - qualifier_list::decode_qualifiers(string_type& prefix, - string_type& postfix, - bool member_function_pointer_qualifiers = false) - { - for(typename std::vector, Allocator>:: - reverse_iterator iter = M_qualifier_starts.rbegin(); - iter != M_qualifier_starts.rend();) - { - if (!member_function_pointer_qualifiers - && !(*iter).part_of_substitution()) - { - int saved_inside_substitution = M_demangler.M_inside_substitution; - M_demangler.M_inside_substitution = 0; - M_demangler.add_substitution((*iter).start_pos(), type); - M_demangler.M_inside_substitution = saved_inside_substitution; - } - char qualifier_char = (*iter).first_qualifier(); - for(; qualifier_char; qualifier_char = (*iter).next_qualifier()) - { - switch(qualifier_char) - { - case 'P': - if (! M_demangler.M_java) - prefix += "*"; - break; - case 'R': - prefix += "&"; - break; - case 'K': - prefix += " const"; - continue; - case 'V': - prefix += " volatile"; - continue; - case 'r': - prefix += " restrict"; - continue; - case 'A': - { - string_type index = (*iter).optional_type(); - if (++iter != M_qualifier_starts.rend() - && (*iter).first_qualifier() != 'A') - { - prefix += " ("; - string_type prev_postfix = postfix; - postfix = ") ["; - postfix += index; - postfix += ']'; - postfix += prev_postfix; - } - else - { - string_type prev_postfix = postfix; - postfix = "["; - postfix += index; - postfix += "]"; - postfix += prev_postfix; - } - break; - } - case 'M': - prefix += " "; - prefix += (*iter).optional_type(); - prefix += "::*"; - break; - case 'U': - prefix += " "; - prefix += (*iter).optional_type(); - break; - case 'G': // Only here so we added a substitution. - break; - } - break; - } - if (qualifier_char != 'A') - ++iter; - } - M_printing_suppressed = false; - } - - // - template - bool - session::decode_type_with_postfix(string_type& prefix, - string_type& postfix, - qualifier_list* qualifiers) - { - _GLIBCXX_DEMANGLER_DOUT_ENTERING2 - (qualifiers ? "decode_type" : "decode_type[with qualifiers]"); - ++M_inside_type; - bool recursive_template_param_or_substitution_call; - qualifier_list new_qualifier_list(*this); - if (!(recursive_template_param_or_substitution_call = qualifiers)) - qualifiers = &new_qualifier_list; - // First eat all qualifiers. - bool failure = false; - for(;;) // So we can use 'continue' to eat the next qualifier. - { - int start_pos = M_pos; - switch(current()) - { - case 'P': - qualifiers->add_qualifier_start(pointer, start_pos, - M_inside_substitution); - eat_current(); - continue; - case 'R': - qualifiers->add_qualifier_start(reference, start_pos, - M_inside_substitution); - eat_current(); - continue; - case 'K': - case 'V': - case 'r': - { - char c; - int count = 0; - do - { - ++count; - c = next(); - } - while(c == 'K' || c == 'V' || c == 'r'); - qualifiers->add_qualifier_start(cv_qualifier, start_pos, count, - M_inside_substitution); - continue; - } - case 'U': - { - eat_current(); - string_type source_name; - if (!decode_source_name(source_name)) - { - failure = true; - break; - } - qualifiers->add_qualifier_start(vendor_extension, start_pos, - source_name, M_inside_substitution); - continue; - } - case 'A': - { - // ::= A _ - // ::= A [] _ - // - string_type index; - int saved_pos; - store(saved_pos); - if (next() == 'n' || !decode_number(index)) - { - restore(saved_pos); - if (next() != '_' && !decode_expression(index)) - { - failure = true; - break; - } - } - if (eat_current() != '_') - { - failure = true; - break; - } - qualifiers->add_qualifier_start(array, start_pos, index, - M_inside_substitution); - continue; - } - case 'M': - { - // M or MFE - eat_current(); - string_type class_type; - if (!decode_type(class_type)) // Substitution: "". - { - failure = true; - break; - } - char c = current(); - if (c == 'F' || c == 'K' || c == 'V' || c == 'r') - // Must be CV-qualifiers and a member function pointer. - { - // MFE ==> R (C::*Q)B Q2 - // substitutions: "", "FE" ( and - // recursive), "MFE". - int count = 0; - int Q2_start_pos = M_pos; - while(c == 'K' || c == 'V' || c == 'r') // Decode . - { - ++count; - c = next(); - } - qualifier_list class_type_qualifiers(*this); - if (count) - class_type_qualifiers. - add_qualifier_start(cv_qualifier, Q2_start_pos, - count, M_inside_substitution); - string_type member_function_qualifiers; - // It is unclear why g++ doesn't add a substitution for - // "FE" as it should I think. - string_type member_function_qualifiers_postfix; - class_type_qualifiers. - decode_qualifiers(member_function_qualifiers, - member_function_qualifiers_postfix, true); - member_function_qualifiers += - member_function_qualifiers_postfix; - // I don't think this substitution is actually ever used. - int function_pos = M_pos; - if (eat_current() != 'F') - { - failure = true; - break; - } - // Return type. - // Constructors, destructors and conversion operators don't - // have a return type, but seem to never get here. - if (!decode_type_with_postfix(prefix, postfix)) - // substitution: recursive - { - failure = true; - break; - } - prefix += " ("; - prefix += class_type; - prefix += "::*"; - string_type bare_function_type; - if (!decode_bare_function_type(bare_function_type) - || eat_current() != 'E') // Substitution: recursive. - { - failure = true; - break; - } - // substitution: "FE". - add_substitution(function_pos, type); - // substitution: "MFE". - add_substitution(start_pos, type); - // substitution: all qualified types if any. - qualifiers->decode_qualifiers(prefix, postfix); - prefix += ")"; - prefix += bare_function_type; - prefix += member_function_qualifiers; - goto decode_type_exit; - } - qualifiers->add_qualifier_start(pointer_to_member, start_pos, - class_type, M_inside_substitution); - continue; - } - default: - break; - } - break; - } - if (!failure) - { - // G ==> imaginary T Q - // substitutions: "", "G" ( recursive). - // C ==> complex T Q - // substitutions: "", "C" ( recursive). - if (current() == 'C' || current() == 'G') - { - prefix += current() == 'C' ? "complex " : "imaginary "; - qualifiers->add_qualifier_start(complex_or_imaginary, M_pos, - M_inside_substitution); - eat_current(); - } - int start_pos = M_pos; - switch(current()) - { - case 'F': - { - // FE ==> R (Q)B - // substitution: "", "" ( recursive) and "FE". - eat_current(); - // Return type. - if (!decode_type_with_postfix(prefix, postfix)) - // Substitution: "". - { - failure = true; - break; - } - // Only array (pointer) types have a postfix. - // In that case we don't want the space but - // expect something like prefix is "int (*" - // and postfix is ") [1]". - if (postfix.size() == 0) - prefix += ' '; - prefix += '('; - string_type bare_function_type; - if (!decode_bare_function_type(bare_function_type) - // substitution: "" ( recursive). - || eat_current() != 'E') - { - failure = true; - break; - } - add_substitution(start_pos, type); // Substitution: "FE". - qualifiers->decode_qualifiers(prefix, postfix); - // substitution: all qualified types, if any. - prefix += ")"; - prefix += bare_function_type; - break; - } - case 'T': - if (!decode_template_param(prefix, qualifiers)) - { - failure = true; - break; - } - if (current() == 'I') - { - add_substitution(start_pos, template_template_param); - // substitution: "". - if (!decode_template_args(prefix)) - { - failure = true; - break; - } - } - if (!recursive_template_param_or_substitution_call - && qualifiers->suppressed()) - { - add_substitution(start_pos, type); - // substitution: "" or - // " ". - qualifiers->decode_qualifiers(prefix, postfix); - // substitution: all qualified types, if any. - } - break; - case 'S': - if (M_pos >= M_maxpos) - { - failure = true; - break; - } - if (M_str[M_pos + 1] != 't') - { - if (!decode_substitution(prefix, qualifiers)) - { - failure = true; - break; - } - if (current() == 'I') - { - if (!decode_template_args(prefix)) - { - failure = true; - break; - } - if (!recursive_template_param_or_substitution_call - && qualifiers->suppressed()) - add_substitution(start_pos, type); - // Substitution: - // " ". - } - if (!recursive_template_param_or_substitution_call - && qualifiers->suppressed()) - qualifiers->decode_qualifiers(prefix, postfix); - // Substitution: all qualified types, if any. - break; - } - /* Fall-through for St */ - case 'N': - case 'Z': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - // ==> T Q - // substitutions: "" ( recursive). - if (!decode_class_enum_type(prefix)) - { - failure = true; - break; - } - if (!recursive_template_param_or_substitution_call) - { - add_substitution(start_pos, type); - // substitution: "". - qualifiers->decode_qualifiers(prefix, postfix); - // substitution: all qualified types, if any. - } - else - qualifiers->printing_suppressed(); - break; - default: - // ==> T Q - // substitutions: "" ( recursive). - if (!decode_builtin_type(prefix)) - { - failure = true; - break; - } - // If decode_type was called from decode_template_param then we - // need to suppress calling qualifiers here in order to get a - // substitution added anyway (for the ). - if (!recursive_template_param_or_substitution_call) - qualifiers->decode_qualifiers(prefix, postfix); - else - qualifiers->printing_suppressed(); - break; - } - } - decode_type_exit: - --M_inside_type; - if (failure) - _GLIBCXX_DEMANGLER_FAILURE; - _GLIBCXX_DEMANGLER_RETURN2; - } - - // ::= N [] E - // ::= N [] E - // - // ::= - // ::= - // ::= # empty - // ::= - // - // ::=