diff -uprN binutils-2.12.90.0.7/ChangeLog binutils-2.12.90.0.9/ChangeLog --- binutils-2.12.90.0.7/ChangeLog Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/ChangeLog Thu May 23 15:10:09 2002 @@ -1,3 +1,85 @@ +2002-05-22 Jason Thorpe + + * config.guess: Update to 2002-05-22 version. + * config.sub: Likewise. + +2002-05-16 Rainer Orth + + * Makefile.in: Allow for PWDCMD to override hardcoded pwd. + * config-ml.in: Likewise. + * configure: Likewise. + * configure.in: Likewise. + + config: + * acinclude.m4: Allow for PWDCMD to override hardcoded pwd. + +2002-05-13 Nathanael Nerode + + * configure.in: Simplify makefile fragment collection. + + * configure.in: Remove code to build emacs. + + * configure.in : Remove --srcdir argument from targargs and buildargs + (it's always overridden in the Makefile anyway). Rearrange a bit. + + * configure: Move some logic to configure.in. + * configure.in: Move some logic from configure. + +2002-05-07 Jeff Johnston + + * COPYING.LIBGLOSS: New file. + +2002-05-07 Federico G. Schwindt + + * Makefile.in: Honour DESTDIR. + +2002-05-05 Alexandre Oliva + + * configure.in (noconfigdirs): Don't disable libgcj on + sparc64-*-solaris* and sparcv9-*-solaris*. + +2002-05-03 Alexandre Oliva + + * configure.in: Revert 2002-04-18's patch; fixed in libjava. + +2002-05-03 Thomas Fitzsimmons + + * configure.in (FLAGS_FOR_TARGET): Do not add + -B$$r/$(TARGET_SUBDIR)/newlib/ when compiling newlib natively + on i[3456]86-*-linux*. + +2002-05-01 Thomas Fitzsimmons + + * configure.in (noconfigdirs): Replace [ ] with test. + + * configure.in (noconfigdirs): Do not add target-newlib if + target == i[3456]86-*-linux*, and host == target. + +2002-04-29 Mark Mitchell + + * config.guess: Updated to 2002-04-26's version. + * config.sub: Updated to 2002-04-26's version. + +2002-04-29 Nathanael Nerode + + * configure.in: delete reference to absent file + + * configure.in: replace '[' with 'test' + + * configure.in: Eliminate references to gash. + * Makefile.in: Eliminate references to gash. + + * configure.in: remove useless references to 'pic' makefile fragments. + + * configure.in: (*-*-windows*) Finish removing. + + * configure.in: Eliminate redundant test for libgui. + +2002-04-26 Joel Sherrill + + * configure.in (h8300*-*-rtems*): Disable libf2c and libgcj. + (sparc-*-elf*, sparc64-*-elf*): Disable libgcj. + 2002-04-19 Nathanael Nerode * configure.in: remove references to dead files diff -uprN binutils-2.12.90.0.7/ChangeLog.linux binutils-2.12.90.0.9/ChangeLog.linux --- binutils-2.12.90.0.7/ChangeLog.linux Tue Apr 23 11:56:30 2002 +++ binutils-2.12.90.0.9/ChangeLog.linux Thu May 23 15:10:09 2002 @@ -1,3 +1,20 @@ +2002-05-23 H.J. Lu + + * binutils.spec.in: Support --with all/coff. + +2002-05-21 H.J. Lu + + * binutils.spec.in: No need to apply bfd-mips-visibility.patch + for mips now. + +2002-05-12 H.J. Lu + + * binutils.spec.in: Update the cross compile. + +2002-05-02 H.J. Lu + + * binutils.spec.in: Update URL. + 2002-04-23 H.J. Lu * binutils.spec.in: Fix the cross compile. diff -uprN binutils-2.12.90.0.7/Makefile.in binutils-2.12.90.0.9/Makefile.in --- binutils-2.12.90.0.7/Makefile.in Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/Makefile.in Thu May 23 15:10:09 2002 @@ -1,7 +1,7 @@ # # Makefile for directory with subdirs to build. # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -# 1999, 2000, 2001 Free Software Foundation +# 1999, 2000, 2001, 2002 Free Software Foundation # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -65,6 +65,12 @@ GDB_NLM_DEPS = SHELL = /bin/sh +# pwd command to use. Allow user to override default by setting PWDCMD in +# the environment to account for automounters. The make variable must not +# be called PWDCMD, otherwise the value set here is passed to make +# subprocesses and overrides the setting from the user's environment. +PWD = $${PWDCMD-pwd} + # INSTALL_PROGRAM_ARGS is changed by configure.in to use -x for a # cygwin host. INSTALL_PROGRAM_ARGS = @@ -743,7 +749,6 @@ ALL_X11_MODULES = \ all-emacs19 \ all-gdb \ all-expect \ - all-gash \ all-guile \ all-tclX \ all-tk \ @@ -757,7 +762,6 @@ CHECK_X11_MODULES = \ check-gdb \ check-guile \ check-expect \ - check-gash \ check-tclX \ check-tk \ check-tix @@ -770,7 +774,6 @@ INSTALL_X11_MODULES = \ install-gdb \ install-guile \ install-expect \ - install-gash \ install-tclX \ install-tk \ install-tk8.1 \ @@ -953,7 +956,6 @@ CLEAN_X11_MODULES = \ clean-emacs19 \ clean-gdb \ clean-expect \ - clean-gash \ clean-guile \ clean-tclX \ clean-tk \ @@ -988,8 +990,8 @@ DO_X = \ .PHONY: $(DO_X) $(DO_X): @target=`echo $@ | sed -e 's/^do-//'`; \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ for i in $(SUBDIRS) -dummy-; do \ if [ -f ./$$i/Makefile ]; then \ @@ -1015,8 +1017,8 @@ $(DO_X): else true; fi; \ done @target=`echo $@ | sed -e 's/^do-//'`; \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ for i in $(TARGET_CONFIGDIRS) -dummy-; do \ if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \ @@ -1046,7 +1048,7 @@ dvi: do-dvi do-info: all-texinfo install-info: do-install-info dir.info - s=`cd $(srcdir); pwd`; export s; \ + s=`cd $(srcdir); ${PWD}`; export s; \ if [ -f dir.info ] ; then \ $(INSTALL_DATA) dir.info $(infodir)/dir.info ; \ else true ; fi @@ -1081,8 +1083,8 @@ realclean: maintainer-clean $(CLEAN_MODULES) $(CLEAN_X11_MODULES) clean-gcc: @dir=`echo $@ | sed -e 's/clean-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) clean); \ else \ @@ -1094,8 +1096,8 @@ $(CLEAN_TARGET_MODULES): @dir=`echo $@ | sed -e 's/clean-target-//'`; \ rm -f $(TARGET_SUBDIR)/$${dir}/multilib.out $(TARGET_SUBDIR)/$${dir}/tmpmulti.out; \ if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $(TARGET_SUBDIR)/$${dir}; $(MAKE) $(TARGET_FLAGS_TO_PASS) clean); \ else \ @@ -1168,7 +1170,7 @@ vault-install: .PHONY: install.all install.all: install-no-fixedincludes @if [ -f ./gcc/Makefile ] ; then \ - r=`pwd` ; export r ; \ + r=`${PWD}` ; export r ; \ $(SET_LIB_PATH) \ (cd ./gcc; \ $(MAKE) $(FLAGS_TO_PASS) install-headers) ; \ @@ -1203,8 +1205,8 @@ gcc-no-fixedincludes: cp $(srcdir)/gcc/gsyslimits.h gcc/include/syslimits.h; \ touch gcc/stmp-fixinc gcc/include/fixed; \ rm -f gcc/stmp-headers gcc/stmp-int-hdrs; \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd` ; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}` ; export s; \ $(SET_LIB_PATH) \ (cd ./gcc; \ $(MAKE) $(GCC_FLAGS_TO_PASS) install); \ @@ -1218,8 +1220,8 @@ gcc-no-fixedincludes: $(ALL_BUILD_MODULES): dir=`echo $@ | sed -e 's/all-build-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ (cd $(BUILD_SUBDIR)/$${dir} && $(MAKE) all); \ else \ true; \ @@ -1237,8 +1239,8 @@ $(CONFIGURE_BUILD_MODULES): elif echo " $(BUILD_CONFIGDIRS) " | grep " $${dir} " >/dev/null 2>&1; then \ if [ -d $(srcdir)/$${dir} ]; then \ [ -d $(BUILD_SUBDIR)/$${dir} ] || mkdir $(BUILD_SUBDIR)/$${dir};\ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ AR="$(AR_FOR_BUILD)"; export AR; \ AS="$(AS_FOR_BUILD)"; export AS; \ CC="$(CC_FOR_BUILD)"; export CC; \ @@ -1322,8 +1324,8 @@ $(CONFIGURE_BUILD_MODULES): $(ALL_MODULES) all-gui all-libproc: @dir=`echo $@ | sed -e 's/all-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) all); \ else \ @@ -1339,8 +1341,8 @@ $(NATIVE_CHECK_MODULES): @if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \ dir=`echo $@ | sed -e 's/check-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) check); \ else \ @@ -1351,8 +1353,8 @@ $(NATIVE_CHECK_MODULES): $(CROSS_CHECK_MODULES): @dir=`echo $@ | sed -e 's/check-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) check); \ else \ @@ -1365,8 +1367,8 @@ $(CROSS_CHECK_MODULES): $(INSTALL_MODULES): installdirs @dir=`echo $@ | sed -e 's/install-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) install); \ else \ @@ -1379,7 +1381,7 @@ $(INSTALL_MODULES): installdirs $(CONFIGURE_TARGET_MODULES): @dir=`echo $@ | sed -e 's/configure-target-//'`; \ if [ -d $(TARGET_SUBDIR)/$${dir} ]; then \ - r=`pwd`; export r; \ + r=`${PWD}`; export r; \ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/$${dir}/tmpmulti.out 2> /dev/null; \ if [ -s $(TARGET_SUBDIR)/$${dir}/tmpmulti.out ]; then \ if [ -f $(TARGET_SUBDIR)/$${dir}/multilib.out ]; then \ @@ -1403,8 +1405,8 @@ $(CONFIGURE_TARGET_MODULES): elif echo " $(TARGET_CONFIGDIRS) " | grep " $${dir} " >/dev/null 2>&1; then \ if [ -d $(srcdir)/$${dir} ]; then \ [ -d $(TARGET_SUBDIR)/$${dir} ] || mkdir $(TARGET_SUBDIR)/$${dir};\ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ AR="$(AR_FOR_TARGET)"; export AR; \ AS="$(AS_FOR_TARGET)"; export AS; \ @@ -1485,8 +1487,8 @@ $(CONFIGURE_TARGET_MODULES): $(ALL_TARGET_MODULES): @dir=`echo $@ | sed -e 's/all-target-//'`; \ if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $(TARGET_SUBDIR)/$${dir}; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) all); \ @@ -1500,8 +1502,8 @@ $(ALL_TARGET_MODULES): $(CHECK_TARGET_MODULES): @dir=`echo $@ | sed -e 's/check-target-//'`; \ if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $(TARGET_SUBDIR)/$${dir}; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) check);\ @@ -1516,8 +1518,8 @@ $(CHECK_TARGET_MODULES): $(INSTALL_TARGET_MODULES): installdirs @dir=`echo $@ | sed -e 's/install-target-//'`; \ if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $(TARGET_SUBDIR)/$${dir}; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) install); \ @@ -1531,8 +1533,8 @@ $(INSTALL_TARGET_MODULES): installdirs $(ALL_X11_MODULES): @dir=`echo $@ | sed -e 's/all-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; \ $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all); \ @@ -1546,8 +1548,8 @@ $(ALL_X11_MODULES): $(CHECK_X11_MODULES): @dir=`echo $@ | sed -e 's/check-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; \ $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check); \ @@ -1561,8 +1563,8 @@ $(CHECK_X11_MODULES): $(INSTALL_X11_MODULES): installdirs @dir=`echo $@ | sed -e 's/install-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; \ $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install); \ @@ -1574,8 +1576,8 @@ $(INSTALL_X11_MODULES): installdirs .PHONY: all-gcc all-gcc: @if [ -f ./gcc/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) all); \ else \ @@ -1594,13 +1596,13 @@ all-gcc: # .PHONY: bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean: all-bootstrap - @r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + @r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ echo "Bootstrapping the compiler"; \ cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $@ - @r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + @r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ case "$@" in \ *bootstrap4-lean ) \ msg="Comparing stage3 and stage4 of the compiler"; \ @@ -1615,21 +1617,21 @@ bootstrap bootstrap-lean bootstrap2 boot $(SET_LIB_PATH) \ echo "$$msg"; \ cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $$compare - @r=`pwd`; export r; \ - s=`cd $(srcdir); pwd` ; export s; \ + @r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}` ; export s; \ $(SET_LIB_PATH) \ echo "Building runtime libraries"; \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) all .PHONY: cross cross: all-texinfo all-bison all-byacc all-binutils all-gas all-ld - @r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + @r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ echo "Building the C and C++ compiler"; \ cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) LANGUAGES="c c++" - @r=`pwd`; export r; \ - s=`cd $(srcdir); pwd` ; export s; \ + @r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}` ; export s; \ $(SET_LIB_PATH) \ echo "Building runtime libraries"; \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) \ @@ -1638,8 +1640,8 @@ cross: all-texinfo all-bison all-byacc a .PHONY: check-gcc check-gcc: @if [ -f ./gcc/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) check); \ else \ @@ -1649,8 +1651,8 @@ check-gcc: .PHONY: check-c++ check-c++: @if [ -f ./gcc/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++); \ $(MAKE) check-target-libstdc++-v3; \ @@ -1661,8 +1663,8 @@ check-c++: .PHONY: install-gcc install-gcc: @if [ -f ./gcc/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) install); \ else \ @@ -1672,8 +1674,8 @@ install-gcc: .PHONY: install-gcc-cross install-gcc-cross: @if [ -f ./gcc/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) LANGUAGES="c c++" install); \ else \ @@ -1686,8 +1688,8 @@ install-gcc-cross: install-dosrel: installdirs info @dir=`echo $@ | sed -e 's/install-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - s=`cd $(srcdir); pwd`; export s; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) install); \ else \ @@ -1733,7 +1735,6 @@ all-findutils: all-find: all-flex: all-libiberty all-bison all-byacc all-gas: all-libiberty all-opcodes all-bfd all-intl -all-gash: all-tcl all-gawk: all-gcc: all-bison all-byacc all-binutils all-gas all-ld all-zlib all-bootstrap: all-libiberty all-texinfo all-bison all-byacc all-binutils all-gas all-ld all-zlib @@ -1831,8 +1832,8 @@ install-sid: install-tcl install-tk ### other supporting targets MAKEDIRS= \ - $(prefix) \ - $(exec_prefix) + $(DESTDIR)$(prefix) \ + $(DESTDIR)$(exec_prefix) .PHONY: installdirs installdirs: mkinstalldirs $(SHELL) $(srcdir)/mkinstalldirs $(MAKEDIRS) diff -uprN binutils-2.12.90.0.7/bfd/ChangeLog binutils-2.12.90.0.9/bfd/ChangeLog --- binutils-2.12.90.0.7/bfd/ChangeLog Tue Apr 23 11:56:30 2002 +++ binutils-2.12.90.0.9/bfd/ChangeLog Sun May 26 09:57:12 2002 @@ -1,3 +1,615 @@ +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/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 + addend 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 + + * bfd/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 @@ -51,12 +663,12 @@ 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 + (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): + * coff-arm.c (bfd_arm_process_before_allocation): 2002-04-17 J"orn Rennecke @@ -452,13 +1064,13 @@ 2002-03-20 Tom Rix - * coff-rs6000.c (_bfd_xcoff_stat_arch_elt): Renamed from + * 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. + * 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 + * xcofflink.c (_bfd_xcoff_bfd_link_add_symbols): Look through all dynamic objects in archives. 2002-03-19 Hans-Peter Nilsson @@ -483,14 +1095,14 @@ (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. + 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 + * 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 #. diff -uprN binutils-2.12.90.0.7/bfd/Makefile.am binutils-2.12.90.0.9/bfd/Makefile.am --- binutils-2.12.90.0.7/bfd/Makefile.am Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/Makefile.am Thu May 23 15:10:09 2002 @@ -9,8 +9,10 @@ MKDEP = gcc -MM SUBDIRS = doc po docdir = doc +bfdlibdir = @bfdlibdir@ +bfdincludedir = @bfdincludedir@ -lib_LTLIBRARIES = libbfd.la +bfdlib_LTLIBRARIES = libbfd.la WARN_CFLAGS = @WARN_CFLAGS@ AM_CFLAGS = $(WARN_CFLAGS) @@ -672,14 +674,35 @@ $(BFD32_LIBS) \ $(BFD64_BACKENDS) \ $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS) -# Install BFD include file, and others that it needs. -install-data-local: $(BFD_H) +install-bfdlibLTLIBRARIES: @INSTALL_LIBBFD_TRUE@install_libbfd @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(includedir) - $(INSTALL_DATA) $(BFD_H) $(DESTDIR)$(includedir)/bfd.h - $(INSTALL_DATA) $(INCDIR)/ansidecl.h $(DESTDIR)$(includedir)/ansidecl.h - $(INSTALL_DATA) $(INCDIR)/symcat.h $(DESTDIR)$(includedir)/symcat.h - $(INSTALL_DATA) $(INCDIR)/bfdlink.h $(DESTDIR)$(includedir)/bfdlink.h + +uninstall-bfdlibLTLIBRARIES: @INSTALL_LIBBFD_TRUE@uninstall_libbfd + @$(NORMAL_UNINSTALL) + +.PHONY: install_libbfd uninstall_libbfd +install_libbfd: $(bfdlib_LTLIBRARIES) $(BFD_H) + $(mkinstalldirs) $(DESTDIR)$(bfdlibdir) + $(mkinstalldirs) $(DESTDIR)$(bfdincludedir) + @list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p; \ + else :; fi; \ + done + $(INSTALL_DATA) $(BFD_H) $(DESTDIR)$(bfdincludedir)/bfd.h + $(INSTALL_DATA) $(INCDIR)/ansidecl.h $(DESTDIR)$(bfdincludedir)/ansidecl.h + $(INSTALL_DATA) $(INCDIR)/symcat.h $(DESTDIR)$(bfdincludedir)/symcat.h + $(INSTALL_DATA) $(INCDIR)/bfdlink.h $(DESTDIR)$(bfdincludedir)/bfdlink.h + +uninstall_libbfd: + list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bfdlibdir)/$$p; \ + done + rm -f $(DESTDIR)$(bfdincludedir)/bfd.h + rm -f $(DESTDIR)$(bfdincludedir)/ansidecl.h + rm -f $(DESTDIR)$(bfdincludedir)/symcat.h + rm -f $(DESTDIR)$(bfdincludedir)/bfdlink.h Makefile: $(srcdir)/configure.in diff -uprN binutils-2.12.90.0.7/bfd/Makefile.in binutils-2.12.90.0.9/bfd/Makefile.in --- binutils-2.12.90.0.7/bfd/Makefile.in Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/Makefile.in Thu May 23 15:10:09 2002 @@ -133,8 +133,10 @@ MKDEP = gcc -MM SUBDIRS = doc po docdir = doc +bfdlibdir = @bfdlibdir@ +bfdincludedir = @bfdincludedir@ -lib_LTLIBRARIES = libbfd.la +bfdlib_LTLIBRARIES = libbfd.la WARN_CFLAGS = @WARN_CFLAGS@ AM_CFLAGS = $(WARN_CFLAGS) @@ -736,7 +738,7 @@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ libbfd_a_LIBADD = libbfd_a_OBJECTS = -LTLIBRARIES = $(lib_LTLIBRARIES) +LTLIBRARIES = $(bfdlib_LTLIBRARIES) libbfd_la_OBJECTS = archive.lo archures.lo bfd.lo cache.lo coffgen.lo \ corefile.lo format.lo init.lo libbfd.lo opncls.lo reloc.lo section.lo \ @@ -857,33 +859,17 @@ distclean-libtool: maintainer-clean-libtool: -mostlyclean-libLTLIBRARIES: +mostlyclean-bfdlibLTLIBRARIES: -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) +clean-bfdlibLTLIBRARIES: + -test -z "$(bfdlib_LTLIBRARIES)" || rm -f $(bfdlib_LTLIBRARIES) -distclean-libLTLIBRARIES: +distclean-bfdlibLTLIBRARIES: -maintainer-clean-libLTLIBRARIES: - -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(libdir) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \ - $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \ - else :; fi; \ - done - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ - done +maintainer-clean-bfdlibLTLIBRARIES: libbfd.la: $(libbfd_la_OBJECTS) $(libbfd_la_DEPENDENCIES) - $(LINK) -rpath $(libdir) $(libbfd_la_LDFLAGS) $(libbfd_la_OBJECTS) $(libbfd_la_LIBADD) $(LIBS) + $(LINK) -rpath $(bfdlibdir) $(libbfd_la_LDFLAGS) $(libbfd_la_OBJECTS) $(libbfd_la_LIBADD) $(LIBS) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -1045,16 +1031,16 @@ install-info: install-info-recursive all-recursive-am: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive -install-exec-am: install-libLTLIBRARIES +install-exec-am: install-exec: install-exec-recursive -install-data-am: install-data-local +install-data-am: install-bfdlibLTLIBRARIES install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-recursive -uninstall-am: uninstall-libLTLIBRARIES +uninstall-am: uninstall-bfdlibLTLIBRARIES uninstall: uninstall-recursive all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) config.h all-redirect: all-recursive-am @@ -1062,7 +1048,7 @@ install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: installdirs-recursive installdirs-am: - $(mkinstalldirs) $(DESTDIR)$(libdir) + $(mkinstalldirs) $(DESTDIR)$(bfdlibdir) mostlyclean-generic: @@ -1079,19 +1065,19 @@ distclean-generic: maintainer-clean-generic: mostlyclean-am: mostlyclean-hdr mostlyclean-noinstLIBRARIES \ mostlyclean-compile mostlyclean-libtool \ - mostlyclean-libLTLIBRARIES mostlyclean-tags \ + mostlyclean-bfdlibLTLIBRARIES mostlyclean-tags \ mostlyclean-generic mostlyclean: mostlyclean-recursive clean-am: clean-hdr clean-noinstLIBRARIES clean-compile clean-libtool \ - clean-libLTLIBRARIES clean-tags clean-generic \ + clean-bfdlibLTLIBRARIES clean-tags clean-generic \ mostlyclean-am clean: clean-recursive distclean-am: distclean-hdr distclean-noinstLIBRARIES distclean-compile \ - distclean-libtool distclean-libLTLIBRARIES \ + distclean-libtool distclean-bfdlibLTLIBRARIES \ distclean-tags distclean-generic clean-am -rm -f libtool @@ -1101,8 +1087,9 @@ distclean: distclean-recursive maintainer-clean-am: maintainer-clean-hdr \ maintainer-clean-noinstLIBRARIES \ maintainer-clean-compile maintainer-clean-libtool \ - maintainer-clean-libLTLIBRARIES maintainer-clean-tags \ - maintainer-clean-generic distclean-am + maintainer-clean-bfdlibLTLIBRARIES \ + 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." @@ -1114,22 +1101,22 @@ mostlyclean-noinstLIBRARIES distclean-no clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile mostlyclean-libtool distclean-libtool \ -clean-libtool maintainer-clean-libtool mostlyclean-libLTLIBRARIES \ -distclean-libLTLIBRARIES clean-libLTLIBRARIES \ -maintainer-clean-libLTLIBRARIES uninstall-libLTLIBRARIES \ -install-libLTLIBRARIES 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 \ +clean-libtool maintainer-clean-libtool mostlyclean-bfdlibLTLIBRARIES \ +distclean-bfdlibLTLIBRARIES clean-bfdlibLTLIBRARIES \ +maintainer-clean-bfdlibLTLIBRARIES uninstall-bfdlibLTLIBRARIES \ +install-bfdlibLTLIBRARIES 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 all-recursive-am install-exec-am install-exec \ -install-data-local 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 +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 po/SRC-POTFILES.in: @MAINT@ Makefile $(SRC_POTFILES) @@ -1230,14 +1217,35 @@ $(BFD32_LIBS) \ $(BFD64_BACKENDS) \ $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS) -# Install BFD include file, and others that it needs. -install-data-local: $(BFD_H) +install-bfdlibLTLIBRARIES: @INSTALL_LIBBFD_TRUE@install_libbfd @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(includedir) - $(INSTALL_DATA) $(BFD_H) $(DESTDIR)$(includedir)/bfd.h - $(INSTALL_DATA) $(INCDIR)/ansidecl.h $(DESTDIR)$(includedir)/ansidecl.h - $(INSTALL_DATA) $(INCDIR)/symcat.h $(DESTDIR)$(includedir)/symcat.h - $(INSTALL_DATA) $(INCDIR)/bfdlink.h $(DESTDIR)$(includedir)/bfdlink.h + +uninstall-bfdlibLTLIBRARIES: @INSTALL_LIBBFD_TRUE@uninstall_libbfd + @$(NORMAL_UNINSTALL) + +.PHONY: install_libbfd uninstall_libbfd +install_libbfd: $(bfdlib_LTLIBRARIES) $(BFD_H) + $(mkinstalldirs) $(DESTDIR)$(bfdlibdir) + $(mkinstalldirs) $(DESTDIR)$(bfdincludedir) + @list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p; \ + else :; fi; \ + done + $(INSTALL_DATA) $(BFD_H) $(DESTDIR)$(bfdincludedir)/bfd.h + $(INSTALL_DATA) $(INCDIR)/ansidecl.h $(DESTDIR)$(bfdincludedir)/ansidecl.h + $(INSTALL_DATA) $(INCDIR)/symcat.h $(DESTDIR)$(bfdincludedir)/symcat.h + $(INSTALL_DATA) $(INCDIR)/bfdlink.h $(DESTDIR)$(bfdincludedir)/bfdlink.h + +uninstall_libbfd: + list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bfdlibdir)/$$p; \ + done + rm -f $(DESTDIR)$(bfdincludedir)/bfd.h + rm -f $(DESTDIR)$(bfdincludedir)/ansidecl.h + rm -f $(DESTDIR)$(bfdincludedir)/symcat.h + rm -f $(DESTDIR)$(bfdincludedir)/bfdlink.h Makefile: $(srcdir)/configure.in diff -uprN binutils-2.12.90.0.7/bfd/acinclude.m4 binutils-2.12.90.0.9/bfd/acinclude.m4 --- binutils-2.12.90.0.7/bfd/acinclude.m4 Sat Sep 2 09:57:59 2000 +++ binutils-2.12.90.0.9/bfd/acinclude.m4 Thu May 23 15:10:09 2002 @@ -123,3 +123,27 @@ ifelse(yes,no,[ AC_DEFUN([CY_WITH_NLS],) AC_SUBST(INTLLIBS) ]) + +AC_DEFUN([AM_INSTALL_LIBBFD], +[AC_MSG_CHECKING([whether to install libbfd]) + AC_ARG_ENABLE(install-libbfd, +[ --install-libbfd controls installation of libbfd and related headers], + install_libbfd_p=$enableval, + if test "${host}" = "${target}" -o "$enable_shared" = "yes"; then + install_libbfd_p=yes + else + install_libbfd_p=no + fi) + AC_MSG_RESULT($install_libbfd_p) + AM_CONDITIONAL(INSTALL_LIBBFD, test $install_libbfd_p = yes) + # libbfd.a is a host library containing target dependent code + bfdlibdir='$(libdir)' + bfdincludedir='$(includedir)' + if test "${host}" != "${target}"; then + bfdlibdir='$(exec_prefix)/$(host_alias)/$(target_alias)/lib' + bfdincludedir='$(exec_prefix)/$(host_alias)/$(target_alias)/include' + fi + AC_SUBST(bfdlibdir) + AC_SUBST(bfdincludedir) +] +) diff -uprN binutils-2.12.90.0.7/bfd/aclocal.m4 binutils-2.12.90.0.9/bfd/aclocal.m4 --- binutils-2.12.90.0.7/bfd/aclocal.m4 Thu Mar 7 11:52:36 2002 +++ binutils-2.12.90.0.9/bfd/aclocal.m4 Thu May 23 15:10:09 2002 @@ -136,6 +136,43 @@ AC_DEFUN([CY_WITH_NLS],) AC_SUBST(INTLLIBS) ]) +AC_DEFUN([AM_INSTALL_LIBBFD], +[AC_MSG_CHECKING([whether to install libbfd]) + AC_ARG_ENABLE(install-libbfd, +[ --install-libbfd controls installation of libbfd and related headers], + install_libbfd_p=$enableval, + if test "${host}" = "${target}" -o "$enable_shared" = "yes"; then + install_libbfd_p=yes + else + install_libbfd_p=no + fi) + AC_MSG_RESULT($install_libbfd_p) + AM_CONDITIONAL(INSTALL_LIBBFD, test $install_libbfd_p = yes) + # libbfd.a is a host library containing target dependent code + bfdlibdir='$(libdir)' + bfdincludedir='$(includedir)' + if test "${host}" != "${target}"; then + bfdlibdir='$(exec_prefix)/$(host_alias)/$(target_alias)/lib' + bfdincludedir='$(exec_prefix)/$(host_alias)/$(target_alias)/include' + fi + AC_SUBST(bfdlibdir) + AC_SUBST(bfdincludedir) +] +) + +# 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]) + # 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. @@ -271,16 +308,3 @@ AC_DEFUN([AM_MAINTAINER_MODE], ] ) -# 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.12.90.0.7/bfd/aix5ppc-core.c binutils-2.12.90.0.9/bfd/aix5ppc-core.c --- binutils-2.12.90.0.7/bfd/aix5ppc-core.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/bfd/aix5ppc-core.c Thu May 23 15:10:09 2002 @@ -63,7 +63,7 @@ xcoff64_core_p (abfd) goto xcoff64_core_p_error; if (sizeof (struct core_dumpxx) - != bfd_read (&core, sizeof (struct core_dumpxx), 1, abfd)) + != bfd_bread (&core, sizeof (struct core_dumpxx), abfd)) goto xcoff64_core_p_error; if (bfd_stat (abfd, &statbuf) < 0) @@ -172,7 +172,7 @@ xcoff64_core_p (abfd) return return_value; if (sizeof (struct __ld_info64) != - bfd_read (&ldinfo, sizeof (struct __ld_info64), 1, abfd)) + bfd_bread (&ldinfo, sizeof (struct __ld_info64), abfd)) return return_value; if (ldinfo.ldinfo_core) @@ -200,7 +200,7 @@ xcoff64_core_p (abfd) for (i = 0; i < core.c_vmregions; i++) if (sizeof (struct vm_infox) != - bfd_read (&vminfo, sizeof (struct vm_infox), 1, abfd)) + bfd_bread (&vminfo, sizeof (struct vm_infox), abfd)) return return_value; if (vminfo.vminfo_offset) @@ -243,7 +243,7 @@ xcoff64_core_file_matches_executable_p ( return return_value; if (sizeof (struct core_dumpxx) != - bfd_read (&core, sizeof (struct core_dumpxx), 1, core_bfd)) + bfd_bread (&core, sizeof (struct core_dumpxx), core_bfd)) return return_value; if (bfd_seek (core_bfd, core.c_loader, SEEK_SET) != 0) @@ -258,7 +258,7 @@ xcoff64_core_file_matches_executable_p ( while (1) { - if (bfd_read (s, 1, 1, core_bfd) != 1) + if (bfd_bread (s, 1, core_bfd) != 1) goto xcoff64_core_file_matches_executable_p_end_1; if (*s == '\0') @@ -328,7 +328,7 @@ int xcoff64_core_file_fai const bfd_target * xcoff64_core_p (abfd) - bfd *abfd; + bfd *abfd ATTRIBUTE_UNUSED; { bfd_set_error (bfd_error_wrong_format); return 0; @@ -336,22 +336,22 @@ xcoff64_core_p (abfd) boolean xcoff64_core_file_matches_executable_p (core_bfd, exec_bfd) - bfd *core_bfd; - bfd *exec_bfd; + bfd *core_bfd ATTRIBUTE_UNUSED; + bfd *exec_bfd ATTRIBUTE_UNUSED; { return false; } char * xcoff64_core_file_failing_command (abfd) - bfd *abfd; + bfd *abfd ATTRIBUTE_UNUSED; { return 0; } int xcoff64_core_file_failing_signal (abfd) - bfd *abfd; + bfd *abfd ATTRIBUTE_UNUSED; { return 0; } diff -uprN binutils-2.12.90.0.7/bfd/aout-adobe.c binutils-2.12.90.0.9/bfd/aout-adobe.c --- binutils-2.12.90.0.7/bfd/aout-adobe.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/aout-adobe.c Thu May 23 15:10:09 2002 @@ -515,6 +515,7 @@ aout_adobe_sizeof_headers (ignore_abfd, #define aout_32_bfd_link_hash_table_free \ _bfd_generic_link_hash_table_free #define aout_32_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define aout_32_bfd_link_just_syms _bfd_generic_link_just_syms #define aout_32_bfd_final_link _bfd_generic_final_link #define aout_32_bfd_link_split_section _bfd_generic_link_split_section diff -uprN binutils-2.12.90.0.7/bfd/aout-target.h binutils-2.12.90.0.9/bfd/aout-target.h --- binutils-2.12.90.0.7/bfd/aout-target.h Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/aout-target.h Thu May 23 15:10:09 2002 @@ -534,6 +534,9 @@ MY_bfd_final_link (abfd, info) #ifndef MY_bfd_link_add_symbols #define MY_bfd_link_add_symbols NAME(aout,link_add_symbols) #endif +#ifndef MY_bfd_link_just_syms +#define MY_bfd_link_just_syms _bfd_generic_link_just_syms +#endif #ifndef MY_bfd_link_split_section #define MY_bfd_link_split_section _bfd_generic_link_split_section #endif diff -uprN binutils-2.12.90.0.7/bfd/aout-tic30.c binutils-2.12.90.0.9/bfd/aout-tic30.c --- binutils-2.12.90.0.7/bfd/aout-tic30.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/aout-tic30.c Thu May 23 15:10:09 2002 @@ -986,6 +986,9 @@ tic30_aout_set_arch_mach (abfd, arch, ma #ifndef MY_bfd_link_add_symbols #define MY_bfd_link_add_symbols NAME(aout,link_add_symbols) #endif +#ifndef MY_bfd_link_just_syms +#define MY_bfd_link_just_syms _bfd_generic_link_just_syms +#endif #ifndef MY_bfd_link_split_section #define MY_bfd_link_split_section _bfd_generic_link_split_section #endif diff -uprN binutils-2.12.90.0.7/bfd/bfd-in2.h binutils-2.12.90.0.9/bfd/bfd-in2.h --- binutils-2.12.90.0.7/bfd/bfd-in2.h Mon Apr 22 19:56:51 2002 +++ binutils-2.12.90.0.9/bfd/bfd-in2.h Thu May 23 15:10:09 2002 @@ -1068,12 +1068,6 @@ typedef struct sec standard data. */ #define SEC_CONSTRUCTOR 0x100 - /* The section is a constructor, and should be placed at the - end of the text, data, or bss section(?). */ -#define SEC_CONSTRUCTOR_TEXT 0x1100 -#define SEC_CONSTRUCTOR_DATA 0x2100 -#define SEC_CONSTRUCTOR_BSS 0x3100 - /* The section has contents - a data section could be <> | <>; a debug section could be <> */ @@ -1094,6 +1088,9 @@ typedef struct sec sections. */ #define SEC_COFF_SHARED_LIBRARY 0x800 + /* The section contains thread local data. */ +#define SEC_THREAD_LOCAL 0x1000 + /* The section has GOT references. This flag is only for the linker, and is currently only used by the elf32-hppa back end. It will be set if global offset table references were detected @@ -2211,6 +2208,15 @@ to compensate for the borrow when the lo BFD_RELOC_386_RELATIVE, BFD_RELOC_386_GOTOFF, BFD_RELOC_386_GOTPC, + BFD_RELOC_386_TLS_LE, + BFD_RELOC_386_TLS_GD, + BFD_RELOC_386_TLS_LDM, + BFD_RELOC_386_TLS_LDO_32, + BFD_RELOC_386_TLS_IE_32, + BFD_RELOC_386_TLS_LE_32, + BFD_RELOC_386_TLS_DTPMOD32, + BFD_RELOC_386_TLS_DTPOFF32, + BFD_RELOC_386_TLS_TPOFF32, /* x86-64/elf relocations */ BFD_RELOC_X86_64_GOT32, @@ -2922,12 +2928,25 @@ this offset in the reloc's section offse BFD_RELOC_IA64_IPLTMSB, BFD_RELOC_IA64_IPLTLSB, BFD_RELOC_IA64_COPY, + BFD_RELOC_IA64_LTOFF22X, + BFD_RELOC_IA64_LDXMOV, + BFD_RELOC_IA64_TPREL14, BFD_RELOC_IA64_TPREL22, + BFD_RELOC_IA64_TPREL64I, BFD_RELOC_IA64_TPREL64MSB, BFD_RELOC_IA64_TPREL64LSB, - BFD_RELOC_IA64_LTOFF_TP22, - BFD_RELOC_IA64_LTOFF22X, - BFD_RELOC_IA64_LDXMOV, + BFD_RELOC_IA64_LTOFF_TPREL22, + BFD_RELOC_IA64_DTPMOD64MSB, + BFD_RELOC_IA64_DTPMOD64LSB, + BFD_RELOC_IA64_LTOFF_DTPMOD22, + BFD_RELOC_IA64_DTPREL14, + BFD_RELOC_IA64_DTPREL22, + BFD_RELOC_IA64_DTPREL64I, + BFD_RELOC_IA64_DTPREL32MSB, + BFD_RELOC_IA64_DTPREL32LSB, + BFD_RELOC_IA64_DTPREL64MSB, + BFD_RELOC_IA64_DTPREL64LSB, + BFD_RELOC_IA64_LTOFF_DTPREL22, /* Motorola 68HC11 reloc. This is the 8 bits high part of an absolute address. */ @@ -3138,6 +3157,9 @@ typedef struct symbol_cache_entry as well. */ #define BSF_DEBUGGING_RELOC 0x20000 + /* This symbol is thread local. Used in ELF. */ +#define BSF_THREAD_LOCAL 0x40000 + flagword flags; /* A pointer to the section to which this symbol is @@ -3510,6 +3532,9 @@ bfd_set_private_flags PARAMS ((bfd *abfd #define bfd_link_add_symbols(abfd, info) \ BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info)) +#define bfd_link_just_syms(sec, info) \ + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info)) + #define bfd_final_link(abfd, info) \ BFD_SEND (abfd, _bfd_final_link, (abfd, info)) @@ -3834,6 +3859,7 @@ CONCAT2 (NAME,_bfd_relax_section), \ CONCAT2 (NAME,_bfd_link_hash_table_create), \ CONCAT2 (NAME,_bfd_link_hash_table_free), \ CONCAT2 (NAME,_bfd_link_add_symbols), \ +CONCAT2 (NAME,_bfd_link_just_syms), \ CONCAT2 (NAME,_bfd_final_link), \ CONCAT2 (NAME,_bfd_link_split_section), \ CONCAT2 (NAME,_bfd_gc_sections), \ @@ -3856,6 +3882,9 @@ CONCAT2 (NAME,_bfd_merge_sections) /* Add symbols from this object file into the hash table. */ boolean (*_bfd_link_add_symbols) PARAMS ((bfd *, struct bfd_link_info *)); + /* Indicate that we are only retrieving symbol values from this section. */ + void (*_bfd_link_just_syms) PARAMS ((asection *, struct bfd_link_info *)); + /* Do a link based on the link_order structures attached to each section of the BFD. */ boolean (*_bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *)); diff -uprN binutils-2.12.90.0.7/bfd/bfd.c binutils-2.12.90.0.9/bfd/bfd.c --- binutils-2.12.90.0.7/bfd/bfd.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/bfd.c Thu May 23 15:10:09 2002 @@ -749,7 +749,6 @@ bfd_get_arch_size (abfd) if (abfd->xvec->flavour == bfd_target_elf_flavour) return (get_elf_backend_data (abfd))->s->arch_size; - bfd_set_error (bfd_error_wrong_format); return -1; } @@ -1195,6 +1194,9 @@ DESCRIPTION .#define bfd_link_add_symbols(abfd, info) \ . BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info)) . +.#define bfd_link_just_syms(sec, info) \ +. BFD_SEND (abfd, _bfd_link_just_syms, (sec, info)) +. .#define bfd_final_link(abfd, info) \ . BFD_SEND (abfd, _bfd_final_link, (abfd, info)) . diff -uprN binutils-2.12.90.0.7/bfd/binary.c binutils-2.12.90.0.9/bfd/binary.c --- binutils-2.12.90.0.7/bfd/binary.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/binary.c Thu May 23 15:10:09 2002 @@ -339,6 +339,7 @@ binary_sizeof_headers (abfd, exec) #define binary_bfd_merge_sections bfd_generic_merge_sections #define binary_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define binary_bfd_link_hash_table_free _bfd_generic_link_hash_table_free +#define binary_bfd_link_just_syms _bfd_generic_link_just_syms #define binary_bfd_link_add_symbols _bfd_generic_link_add_symbols #define binary_bfd_final_link _bfd_generic_final_link #define binary_bfd_link_split_section _bfd_generic_link_split_section diff -uprN binutils-2.12.90.0.7/bfd/bout.c binutils-2.12.90.0.9/bfd/bout.c --- binutils-2.12.90.0.7/bfd/bout.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/bout.c Thu May 23 15:10:10 2002 @@ -1451,6 +1451,7 @@ b_out_bfd_get_relocated_section_contents #define b_out_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define b_out_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define b_out_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define b_out_bfd_link_just_syms _bfd_generic_link_just_syms #define b_out_bfd_final_link _bfd_generic_final_link #define b_out_bfd_link_split_section _bfd_generic_link_split_section #define b_out_bfd_gc_sections bfd_generic_gc_sections diff -uprN binutils-2.12.90.0.7/bfd/coff-arm.c binutils-2.12.90.0.9/bfd/coff-arm.c --- binutils-2.12.90.0.7/bfd/coff-arm.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/bfd/coff-arm.c Thu May 23 15:10:10 2002 @@ -1701,21 +1701,23 @@ coff_arm_relocate_section (output_bfd, i || signed_check < reloc_signed_min) overflow = true; - /* For the BLX(1) instruction remove bit 0 of the adjusted offset. - Bit 0 can only be set if the upper insn is at a half-word boundary, - since the destination address, an ARM instruction, must always be - on a word boundary. The semantics of the BLX (1) instruction, - however, are that bit 0 in the offset must always be 0, and the - corresponding bit 1 in the target address will be set from bit - 1 of the source address. */ - if ((x & 0x18000000) == 0x08000000) - relocation &= ~0x2; - - /* Put the relocation into the correct bits. */ + /* Put the relocation into the correct bits. + For a BLX instruction, make sure that the relocation is rounded up + to a word boundary. This follows the semantics of the instruction + which specifies that bit 1 of the target address will come from bit + 1 of the base address. */ if (bfd_big_endian (input_bfd)) - relocation = (((relocation & 0xffe) >> 1) | ((relocation << 4) & 0x07ff0000)); + { + if ((x & 0x1800) == 0x0800 && (relocation & 0x02)) + relocation += 2; + relocation = (((relocation & 0xffe) >> 1) | ((relocation << 4) & 0x07ff0000)); + } else - relocation = (((relocation & 0xffe) << 15) | ((relocation >> 12) & 0x7ff)); + { + if ((x & 0x18000000) == 0x08000000 && (relocation & 0x02)) + relocation += 2; + relocation = (((relocation & 0xffe) << 15) | ((relocation >> 12) & 0x7ff)); + } /* Add the relocation to the correct bits of X. */ x = ((x & ~howto->dst_mask) | relocation); diff -uprN binutils-2.12.90.0.7/bfd/coff-rs6000.c binutils-2.12.90.0.9/bfd/coff-rs6000.c --- binutils-2.12.90.0.7/bfd/coff-rs6000.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/coff-rs6000.c Thu May 23 15:10:10 2002 @@ -54,9 +54,11 @@ extern void _bfd_xcoff_swap_sym_in PARAM extern unsigned int _bfd_xcoff_swap_sym_out PARAMS ((bfd *, PTR, PTR)); extern void _bfd_xcoff_swap_aux_in PARAMS ((bfd *, PTR, int, int, int, int, PTR)); extern unsigned int _bfd_xcoff_swap_aux_out PARAMS ((bfd *, PTR, int, int, int, int, PTR)); +static void xcoff_swap_reloc_in PARAMS ((bfd *, PTR, PTR)); +static unsigned int xcoff_swap_reloc_out PARAMS ((bfd *, PTR, PTR)); -/* Forward declare _bfd_xcoff_rtype2howto for coffcode.h macro. */ -void _bfd_xcoff_rtype2howto PARAMS ((arelent *, struct internal_reloc *)); +/* Forward declare xcoff_rtype2howto for coffcode.h macro. */ +void xcoff_rtype2howto PARAMS ((arelent *, struct internal_reloc *)); /* coffcode.h needs these to be defined. */ #define RS6000COFF_C 1 @@ -74,7 +76,7 @@ void _bfd_xcoff_rtype2howto PARAMS ((are #define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3) #define COFF_LONG_FILENAMES #define NO_COFF_SYMBOLS -#define RTYPE2HOWTO(cache_ptr, dst) _bfd_xcoff_rtype2howto (cache_ptr, dst) +#define RTYPE2HOWTO(cache_ptr, dst) xcoff_rtype2howto (cache_ptr, dst) #define coff_mkobject _bfd_xcoff_mkobject #define coff_bfd_copy_private_bfd_data _bfd_xcoff_copy_private_bfd_data #define coff_bfd_is_local_label_name _bfd_xcoff_is_local_label_name @@ -105,6 +107,9 @@ extern int rs6000coff_core_file_failing_ #define coff_SWAP_sym_out _bfd_xcoff_swap_sym_out #define coff_SWAP_aux_in _bfd_xcoff_swap_aux_in #define coff_SWAP_aux_out _bfd_xcoff_swap_aux_out +#define coff_swap_reloc_in xcoff_swap_reloc_in +#define coff_swap_reloc_out xcoff_swap_reloc_out +#define NO_COFF_RELOCS #include "coffcode.h" @@ -149,6 +154,60 @@ static boolean do_pad PARAMS((bfd *, uns static boolean do_copy PARAMS((bfd *, bfd *)); static boolean do_shared_object_padding PARAMS ((bfd *, bfd *, ufile_ptr *, int)); +/* Relocation functions */ +static boolean xcoff_reloc_type_br PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); + +static boolean xcoff_complain_overflow_dont_func + PARAMS ((XCOFF_COMPLAIN_FUNCTION_ARGS)); +static boolean xcoff_complain_overflow_bitfield_func + PARAMS ((XCOFF_COMPLAIN_FUNCTION_ARGS)); +static boolean xcoff_complain_overflow_signed_func + PARAMS ((XCOFF_COMPLAIN_FUNCTION_ARGS)); +static boolean xcoff_complain_overflow_unsigned_func + PARAMS ((XCOFF_COMPLAIN_FUNCTION_ARGS)); + +boolean (*xcoff_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION]) + (XCOFF_RELOC_FUNCTION_ARGS) = +{ + xcoff_reloc_type_pos, /* R_POS (0x00) */ + xcoff_reloc_type_neg, /* R_NEG (0x01) */ + xcoff_reloc_type_rel, /* R_REL (0x02) */ + xcoff_reloc_type_toc, /* R_TOC (0x03) */ + xcoff_reloc_type_fail, /* R_RTB (0x04) */ + xcoff_reloc_type_toc, /* R_GL (0x05) */ + xcoff_reloc_type_toc, /* R_TCL (0x06) */ + xcoff_reloc_type_fail, /* (0x07) */ + xcoff_reloc_type_ba, /* R_BA (0x08) */ + xcoff_reloc_type_fail, /* (0x09) */ + xcoff_reloc_type_br, /* R_BR (0x0a) */ + xcoff_reloc_type_fail, /* (0x0b) */ + xcoff_reloc_type_pos, /* R_RL (0x0c) */ + xcoff_reloc_type_pos, /* R_RLA (0x0d) */ + xcoff_reloc_type_fail, /* (0x0e) */ + xcoff_reloc_type_noop, /* R_REF (0x0f) */ + xcoff_reloc_type_fail, /* (0x10) */ + xcoff_reloc_type_fail, /* (0x11) */ + xcoff_reloc_type_toc, /* R_TRL (0x12) */ + xcoff_reloc_type_toc, /* R_TRLA (0x13) */ + xcoff_reloc_type_fail, /* R_RRTBI (0x14) */ + xcoff_reloc_type_fail, /* R_RRTBA (0x15) */ + xcoff_reloc_type_ba, /* R_CAI (0x16) */ + xcoff_reloc_type_crel, /* R_CREL (0x17) */ + xcoff_reloc_type_ba, /* R_RBA (0x18) */ + xcoff_reloc_type_ba, /* R_RBAC (0x19) */ + xcoff_reloc_type_br, /* R_RBR (0x1a) */ + xcoff_reloc_type_ba, /* R_RBRC (0x1b) */ +}; + +boolean (*xcoff_complain_overflow[XCOFF_MAX_COMPLAIN_OVERFLOW]) + (XCOFF_COMPLAIN_FUNCTION_ARGS) = +{ + xcoff_complain_overflow_dont_func, + xcoff_complain_overflow_bitfield_func, + xcoff_complain_overflow_signed_func, + xcoff_complain_overflow_unsigned_func, +}; + /* We use our own tdata type. Its first field is the COFF tdata type, so the COFF routines are compatible. */ @@ -634,7 +693,7 @@ reloc_howto_type xcoff_howto_table[] = 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ 0, /* special_function */ - "R_BA", /* name */ + "R_BA_26", /* name */ true, /* partial_inplace */ 0x3fffffc, /* src_mask */ 0x3fffffc, /* dst_mask */ @@ -838,7 +897,7 @@ reloc_howto_type xcoff_howto_table[] = 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ 0, /* special_function */ - "R_RBR", /* name */ + "R_RBR_26", /* name */ true, /* partial_inplace */ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ @@ -859,50 +918,58 @@ reloc_howto_type xcoff_howto_table[] = 0xffff, /* dst_mask */ false), /* pcrel_offset */ - HOWTO (R_POS, /* type */ - 0, /* rightshift */ - 4, /* size (0 = byte, 1 = short, 2 = long) */ - 64, /* bitsize */ - false, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ - 0, /* special_function */ - "R_POS", /* name */ - true, /* partial_inplace */ - MINUS_ONE, /* src_mask */ - MINUS_ONE, /* dst_mask */ - false), /* pcrel_offset */ - /* 16 bit Non modifiable absolute branch. */ HOWTO (R_BA, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ 0, /* special_function */ - "R_BA", /* name */ + "R_BA_16", /* name */ true, /* partial_inplace */ 0xfffc, /* src_mask */ 0xfffc, /* dst_mask */ false), /* pcrel_offset */ + + /* Modifiable branch relative. */ + HOWTO (R_RBR, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + 0, /* special_function */ + "R_RBR_16", /* name */ + true, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + false), /* pcrel_offset */ + }; void -_bfd_xcoff_rtype2howto (relent, internal) +xcoff_rtype2howto (relent, internal) arelent *relent; struct internal_reloc *internal; { - relent->howto = xcoff_howto_table + internal->r_type; - - /* Check for relocs we don't know of. */ - if (internal->r_type - >= sizeof (xcoff_howto_table) / sizeof (xcoff_howto_table[0])) - abort (); - if (internal->r_type != relent->howto->type) + if (internal->r_type > R_RBRC) abort (); + /* Default howto layout works most of the time */ + relent->howto = &xcoff_howto_table[internal->r_type]; + + /* Special case some 16 bit reoloc */ + if (15 == (internal->r_size & 0x1f)) + { + if (R_BA == internal->r_type) + relent->howto = &xcoff_howto_table[0x1c]; + else if (R_RBR == internal->r_type) + relent->howto = &xcoff_howto_table[0x1d]; + } + /* The r_size field of an XCOFF reloc encodes the bitsize of the relocation, as well as indicating whether it is signed or not. Doublecheck that the relocation information gathered from the @@ -910,14 +977,12 @@ _bfd_xcoff_rtype2howto (relent, internal for R_REF relocs. */ if (relent->howto->dst_mask != 0 && (relent->howto->bitsize - != ((unsigned int) internal->r_size & 0x3f) + 1)) + != ((unsigned int) internal->r_size & 0x1f) + 1)) abort (); -#if 0 - if ((internal->r_size & 0x80) != 0 - ? (relent->howto->complain_on_overflow != complain_overflow_signed) - : (relent->howto->complain_on_overflow != complain_overflow_bitfield)) - abort (); -#endif + + /* Put a meaningful value in addend */ + relent->addend = (internal->r_size & 0x80) ? - internal->r_vaddr + : internal->r_vaddr; } reloc_howto_type * @@ -930,7 +995,7 @@ _bfd_xcoff_reloc_type_lookup (abfd, code case BFD_RELOC_PPC_B26: return &xcoff_howto_table[0xa]; case BFD_RELOC_PPC_BA16: - return &xcoff_howto_table[0x1d]; + return &xcoff_howto_table[0x1c]; case BFD_RELOC_PPC_BA26: return &xcoff_howto_table[8]; case BFD_RELOC_PPC_TOC16: @@ -938,8 +1003,6 @@ _bfd_xcoff_reloc_type_lookup (abfd, code case BFD_RELOC_32: case BFD_RELOC_CTOR: return &xcoff_howto_table[0]; - case BFD_RELOC_64: - return &xcoff_howto_table[0x1c]; default: return NULL; } @@ -2588,6 +2651,40 @@ xcoff_swap_ldsym_out (abfd, src, d) bfd_put_32 (abfd, src->l_parm, dst->l_parm); } +static void +xcoff_swap_reloc_in (abfd, s, d) + bfd *abfd; + PTR s; + PTR d; +{ + struct external_reloc *src = (struct external_reloc *) s; + struct internal_reloc *dst = (struct internal_reloc *) d; + + memset (dst, 0, sizeof (struct internal_reloc)); + + dst->r_vaddr = bfd_get_32 (abfd, src->r_vaddr); + dst->r_symndx = bfd_get_32 (abfd, src->r_symndx); + dst->r_size = bfd_get_8 (abfd, src->r_size); + dst->r_type = bfd_get_8 (abfd, src->r_type); +} + +static unsigned int +xcoff_swap_reloc_out (abfd, s, d) + bfd *abfd; + PTR s; + PTR d; +{ + struct internal_reloc *src = (struct internal_reloc *) s; + struct external_reloc *dst = (struct external_reloc *) d; + + bfd_put_32 (abfd, src->r_vaddr, dst->r_vaddr); + bfd_put_32 (abfd, src->r_symndx, dst->r_symndx); + bfd_put_8 (abfd, src->r_type, dst->r_type); + bfd_put_8 (abfd, src->r_size, dst->r_size); + + return bfd_coff_relsz (abfd); +} + /* Swap in the ldrel structure. */ static void @@ -2621,12 +2718,577 @@ xcoff_swap_ldrel_out (abfd, src, d) } +boolean +xcoff_reloc_type_noop (input_bfd, input_section, output_bfd, rel, sym, howto, + val, addend, relocation, contents) + bfd *input_bfd ATTRIBUTE_UNUSED; + asection *input_section ATTRIBUTE_UNUSED; + bfd *output_bfd ATTRIBUTE_UNUSED; + struct internal_reloc *rel ATTRIBUTE_UNUSED; + struct internal_syment *sym ATTRIBUTE_UNUSED; + struct reloc_howto_struct *howto ATTRIBUTE_UNUSED; + bfd_vma val ATTRIBUTE_UNUSED; + bfd_vma addend ATTRIBUTE_UNUSED; + bfd_vma *relocation ATTRIBUTE_UNUSED; + bfd_byte *contents ATTRIBUTE_UNUSED; +{ + return true; +} + +boolean +xcoff_reloc_type_fail (input_bfd, input_section, output_bfd, rel, sym, howto, + val, addend, relocation, contents) + bfd *input_bfd; + asection *input_section ATTRIBUTE_UNUSED; + bfd *output_bfd ATTRIBUTE_UNUSED; + struct internal_reloc *rel; + struct internal_syment *sym ATTRIBUTE_UNUSED; + struct reloc_howto_struct *howto ATTRIBUTE_UNUSED; + bfd_vma val ATTRIBUTE_UNUSED; + bfd_vma addend ATTRIBUTE_UNUSED; + bfd_vma *relocation ATTRIBUTE_UNUSED; + bfd_byte *contents ATTRIBUTE_UNUSED; +{ + (*_bfd_error_handler) + (_("%s: unsupported relocation type 0x%02x"), + bfd_get_filename (input_bfd), (unsigned int) rel->r_type); + bfd_set_error (bfd_error_bad_value); + return false; +} + +boolean +xcoff_reloc_type_pos (input_bfd, input_section, output_bfd, rel, sym, howto, + val, addend, relocation, contents) + bfd *input_bfd ATTRIBUTE_UNUSED; + asection *input_section ATTRIBUTE_UNUSED; + bfd *output_bfd ATTRIBUTE_UNUSED; + struct internal_reloc *rel ATTRIBUTE_UNUSED; + struct internal_syment *sym ATTRIBUTE_UNUSED; + struct reloc_howto_struct *howto ATTRIBUTE_UNUSED; + bfd_vma val; + bfd_vma addend; + bfd_vma *relocation; + bfd_byte *contents ATTRIBUTE_UNUSED; +{ + *relocation = val + addend; + return true; +} + +boolean +xcoff_reloc_type_neg (input_bfd, input_section, output_bfd, rel, sym, howto, + val, addend, relocation, contents) + bfd *input_bfd ATTRIBUTE_UNUSED; + asection *input_section ATTRIBUTE_UNUSED; + bfd *output_bfd ATTRIBUTE_UNUSED; + struct internal_reloc *rel ATTRIBUTE_UNUSED; + struct internal_syment *sym ATTRIBUTE_UNUSED; + struct reloc_howto_struct *howto ATTRIBUTE_UNUSED; + bfd_vma val; + bfd_vma addend; + bfd_vma *relocation; + bfd_byte *contents ATTRIBUTE_UNUSED; +{ + *relocation = addend - val; + return true; +} + +boolean +xcoff_reloc_type_rel (input_bfd, input_section, output_bfd, rel, sym, howto, + val, addend, relocation, contents) + bfd *input_bfd ATTRIBUTE_UNUSED; + asection *input_section; + bfd *output_bfd ATTRIBUTE_UNUSED; + struct internal_reloc *rel ATTRIBUTE_UNUSED; + struct internal_syment *sym ATTRIBUTE_UNUSED; + struct reloc_howto_struct *howto; + bfd_vma val; + bfd_vma addend; + bfd_vma *relocation; + bfd_byte *contents ATTRIBUTE_UNUSED; +{ + howto->pc_relative = true; + + /* A PC relative reloc includes the section address. */ + addend += input_section->vma; + + *relocation = val + addend; + *relocation -= (input_section->output_section->vma + + input_section->output_offset); + return true; +} + +boolean +xcoff_reloc_type_toc (input_bfd, input_section, output_bfd, rel, sym, howto, + val, addend, relocation, contents) + bfd *input_bfd; + asection *input_section ATTRIBUTE_UNUSED; + bfd *output_bfd; + struct internal_reloc *rel; + struct internal_syment *sym; + struct reloc_howto_struct *howto ATTRIBUTE_UNUSED; + bfd_vma val; + bfd_vma addend ATTRIBUTE_UNUSED; + bfd_vma *relocation; + bfd_byte *contents ATTRIBUTE_UNUSED; +{ + struct xcoff_link_hash_entry *h; + + if (0 > rel->r_symndx) + return false; + + h = obj_xcoff_sym_hashes (input_bfd)[rel->r_symndx]; + + if (h != NULL && h->smclas != XMC_TD) + { + if (h->toc_section == NULL) + { + (*_bfd_error_handler) + (_("%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"), + bfd_get_filename (input_bfd), rel->r_vaddr, + h->root.root.string); + bfd_set_error (bfd_error_bad_value); + return false; + } + + BFD_ASSERT ((h->flags & XCOFF_SET_TOC) == 0); + val = (h->toc_section->output_section->vma + + h->toc_section->output_offset); + } + + *relocation = ((val - xcoff_data (output_bfd)->toc) - + (sym->n_value - xcoff_data (input_bfd)->toc)); + return true; +} + +boolean +xcoff_reloc_type_ba (input_bfd, input_section, output_bfd, rel, sym, howto, + val, addend, relocation, contents) + bfd *input_bfd ATTRIBUTE_UNUSED; + asection *input_section ATTRIBUTE_UNUSED; + bfd *output_bfd ATTRIBUTE_UNUSED; + struct internal_reloc *rel ATTRIBUTE_UNUSED; + struct internal_syment *sym ATTRIBUTE_UNUSED; + struct reloc_howto_struct *howto; + bfd_vma val; + bfd_vma addend; + bfd_vma *relocation; + bfd_byte *contents ATTRIBUTE_UNUSED; +{ + howto->src_mask &= ~3; + howto->dst_mask = howto->src_mask; + + *relocation = val + addend; + + return true; +} + +static boolean +xcoff_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto, + val, addend, relocation, contents) + bfd *input_bfd; + asection *input_section; + bfd *output_bfd ATTRIBUTE_UNUSED; + struct internal_reloc *rel; + struct internal_syment *sym ATTRIBUTE_UNUSED; + struct reloc_howto_struct *howto; + bfd_vma val; + bfd_vma addend; + bfd_vma *relocation; + bfd_byte *contents; +{ + struct xcoff_link_hash_entry *h; + + if (0 > rel->r_symndx) + return false; + + h = obj_xcoff_sym_hashes (input_bfd)[rel->r_symndx]; + + /* If we see an R_BR or R_RBR reloc which is jumping to global + linkage code, and it is followed by an appropriate cror nop + instruction, we replace the cror with lwz r2,20(r1). This + restores the TOC after the glink code. Contrariwise, if the + call is followed by a lwz r2,20(r1), but the call is not + going to global linkage code, we can replace the load with a + cror. */ + if (NULL != h + && bfd_link_hash_defined == h->root.type + && (rel->r_vaddr - input_section->vma + 8 <= + input_section->_cooked_size)) + { + bfd_byte *pnext; + unsigned long next; + + pnext = contents + (rel->r_vaddr - input_section->vma) + 4; + next = bfd_get_32 (input_bfd, pnext); + + /* The _ptrgl function is magic. It is used by the AIX + compiler to call a function through a pointer. */ + if (h->smclas == XMC_GL || strcmp (h->root.root.string, "._ptrgl") == 0) + { + if (next == 0x4def7b82 /* cror 15,15,15 */ + || next == 0x4ffffb82 /* cror 31,31,31 */ + || next == 0x60000000) /* ori r0,r0,0 */ + bfd_put_32 (input_bfd, 0x80410014, pnext); /* lwz r1,20(r1) */ + + } else + { + if (next == 0x80410014) /* lwz r1,20(r1) */ + bfd_put_32 (input_bfd, 0x60000000, pnext); /* ori r0,r0,0 */ + } + } + else if (NULL != h && bfd_link_hash_undefined == h->root.type) + { + /* Normally, this relocation is against a defined symbol. In the + case where this is a partial link and the output section offset + is greater than 2^25, the linker will return an invalid error + message that the relocation has been truncated. Yes it has been + truncated but no it not important. For this case, disable the + overflow checking. */ + + howto->complain_on_overflow = complain_overflow_dont; + } + + howto->pc_relative = true; + howto->src_mask &= ~3; + howto->dst_mask = howto->src_mask; + + /* A PC relative reloc includes the section address. */ + addend += input_section->vma; + + *relocation = val + addend; + *relocation -= (input_section->output_section->vma + + input_section->output_offset); + return true; +} + +boolean +xcoff_reloc_type_crel (input_bfd, input_section, output_bfd, rel, sym, howto, + val, addend, relocation, contents) + bfd *input_bfd ATTRIBUTE_UNUSED; + asection *input_section; + bfd *output_bfd ATTRIBUTE_UNUSED; + struct internal_reloc *rel ATTRIBUTE_UNUSED; + struct internal_syment *sym ATTRIBUTE_UNUSED; + struct reloc_howto_struct *howto; + bfd_vma val ATTRIBUTE_UNUSED; + bfd_vma addend; + bfd_vma *relocation; + bfd_byte *contents ATTRIBUTE_UNUSED; +{ + howto->pc_relative = true; + howto->src_mask &= ~3; + howto->dst_mask = howto->src_mask; + + /* A PC relative reloc includes the section address. */ + addend += input_section->vma; + + *relocation = val + addend; + *relocation -= (input_section->output_section->vma + + input_section->output_offset); + return true; +} + +static boolean +xcoff_complain_overflow_dont_func (input_bfd, val, relocation, howto) + bfd *input_bfd ATTRIBUTE_UNUSED; + bfd_vma val ATTRIBUTE_UNUSED; + bfd_vma relocation ATTRIBUTE_UNUSED; + struct reloc_howto_struct *howto ATTRIBUTE_UNUSED; +{ + return false; +} + +static boolean +xcoff_complain_overflow_bitfield_func (input_bfd, val, relocation, howto) + bfd *input_bfd; + bfd_vma val; + bfd_vma relocation; + struct reloc_howto_struct *howto; +{ + bfd_vma addrmask, fieldmask, signmask, ss; + bfd_vma a, b, sum; + + /* Get the values to be added together. For signed and unsigned + relocations, we assume that all values should be truncated to + the size of an address. For bitfields, all the bits matter. + See also bfd_check_overflow. */ + fieldmask = N_ONES (howto->bitsize); + addrmask = N_ONES (bfd_arch_bits_per_address (input_bfd)) | fieldmask; + a = relocation; + b = val & howto->src_mask; + + /* Much like unsigned, except no trimming with addrmask. In + addition, the sum overflows if there is a carry out of + the bfd_vma, i.e., the sum is less than either input + operand. */ + a >>= howto->rightshift; + b >>= howto->bitpos; + + /* Bitfields are sometimes used for signed numbers; for + example, a 13-bit field sometimes represents values in + 0..8191 and sometimes represents values in -4096..4095. + If the field is signed and a is -4095 (0x1001) and b is + -1 (0x1fff), the sum is -4096 (0x1000), but (0x1001 + + 0x1fff is 0x3000). It's not clear how to handle this + everywhere, since there is not way to know how many bits + are significant in the relocation, but the original code + assumed that it was fully sign extended, and we will keep + that assumption. */ + signmask = (fieldmask >> 1) + 1; + + if ((a & ~ fieldmask) != 0) + { + /* Some bits out of the field are set. This might not + be a problem: if this is a signed bitfield, it is OK + iff all the high bits are set, including the sign + bit. We'll try setting all but the most significant + bit in the original relocation value: if this is all + ones, we are OK, assuming a signed bitfield. */ + ss = (signmask << howto->rightshift) - 1; + if ((ss | relocation) != ~ (bfd_vma) 0) + return true; + a &= fieldmask; + } + + /* We just assume (b & ~ fieldmask) == 0. */ + + /* We explicitly permit wrap around if this relocation + covers the high bit of an address. The Linux kernel + relies on it, and it is the only way to write assembler + code which can run when loaded at a location 0x80000000 + away from the location at which it is linked. */ + if (howto->bitsize + howto->rightshift + == bfd_arch_bits_per_address (input_bfd)) + return false; + + sum = a + b; + if (sum < a || (sum & ~ fieldmask) != 0) + { + /* There was a carry out, or the field overflow. Test + for signed operands again. Here is the overflow test + is as for complain_overflow_signed. */ + if (((~ (a ^ b)) & (a ^ sum)) & signmask) + return true; + } + + return false; +} + +static boolean +xcoff_complain_overflow_signed_func (input_bfd, val, relocation, howto) + bfd *input_bfd; + bfd_vma val; + bfd_vma relocation; + struct reloc_howto_struct *howto; +{ + bfd_vma addrmask, fieldmask, signmask, ss; + bfd_vma a, b, sum; + + /* Get the values to be added together. For signed and unsigned + relocations, we assume that all values should be truncated to + the size of an address. For bitfields, all the bits matter. + See also bfd_check_overflow. */ + fieldmask = N_ONES (howto->bitsize); + addrmask = N_ONES (bfd_arch_bits_per_address (input_bfd)) | fieldmask; + a = relocation; + b = val & howto->src_mask; + + a = (a & addrmask) >> howto->rightshift; + + /* If any sign bits are set, all sign bits must be set. + That is, A must be a valid negative address after + shifting. */ + signmask = ~ (fieldmask >> 1); + ss = a & signmask; + if (ss != 0 && ss != ((addrmask >> howto->rightshift) & signmask)) + return true; + + /* We only need this next bit of code if the sign bit of B + is below the sign bit of A. This would only happen if + SRC_MASK had fewer bits than BITSIZE. Note that if + SRC_MASK has more bits than BITSIZE, we can get into + trouble; we would need to verify that B is in range, as + we do for A above. */ + signmask = ((~ howto->src_mask) >> 1) & howto->src_mask; + if ((b & signmask) != 0) + { + /* Set all the bits above the sign bit. */ + b -= signmask <<= 1; + } + + b = (b & addrmask) >> howto->bitpos; + + /* Now we can do the addition. */ + sum = a + b; + + /* See if the result has the correct sign. Bits above the + sign bit are junk now; ignore them. If the sum is + positive, make sure we did not have all negative inputs; + if the sum is negative, make sure we did not have all + positive inputs. The test below looks only at the sign + bits, and it really just + SIGN (A) == SIGN (B) && SIGN (A) != SIGN (SUM) + */ + signmask = (fieldmask >> 1) + 1; + if (((~ (a ^ b)) & (a ^ sum)) & signmask) + return true; + + return false; +} + +static boolean +xcoff_complain_overflow_unsigned_func (input_bfd, val, relocation, howto) + bfd *input_bfd; + bfd_vma val; + bfd_vma relocation; + struct reloc_howto_struct *howto; +{ + bfd_vma addrmask, fieldmask; + bfd_vma a, b, sum; + + /* Get the values to be added together. For signed and unsigned + relocations, we assume that all values should be truncated to + the size of an address. For bitfields, all the bits matter. + See also bfd_check_overflow. */ + fieldmask = N_ONES (howto->bitsize); + addrmask = N_ONES (bfd_arch_bits_per_address (input_bfd)) | fieldmask; + a = relocation; + b = val & howto->src_mask; + + /* Checking for an unsigned overflow is relatively easy: + trim the addresses and add, and trim the result as well. + Overflow is normally indicated when the result does not + fit in the field. However, we also need to consider the + case when, e.g., fieldmask is 0x7fffffff or smaller, an + input is 0x80000000, and bfd_vma is only 32 bits; then we + will get sum == 0, but there is an overflow, since the + inputs did not fit in the field. Instead of doing a + separate test, we can check for this by or-ing in the + operands when testing for the sum overflowing its final + field. */ + a = (a & addrmask) >> howto->rightshift; + b = (b & addrmask) >> howto->bitpos; + sum = (a + b) & addrmask; + if ((a | b | sum) & ~ fieldmask) + return true; + + return false; +} /* This is the relocation function for the RS/6000/POWER/PowerPC. This is currently the only processor which uses XCOFF; I hope that - will never change. */ + will never change. -static boolean + I took the relocation type definitions from two documents: + the PowerPC AIX Version 4 Application Binary Interface, First + Edition (April 1992), and the PowerOpen ABI, Big-Endian + 32-Bit Hardware Implementation (June 30, 1994). Differences + between the documents are noted below. + + Unsupported r_type's + + R_RTB: + R_RRTBI: + R_RRTBA: + + These relocs are defined by the PowerPC ABI to be + relative branches which use half of the difference + between the symbol and the program counter. I can't + quite figure out when this is useful. These relocs are + not defined by the PowerOpen ABI. + + Supported r_type's + + R_POS: + Simple positive relocation. + + R_NEG: + Simple negative relocation. + + R_REL: + Simple PC relative relocation. + + R_TOC: + TOC relative relocation. The value in the instruction in + the input file is the offset from the input file TOC to + the desired location. We want the offset from the final + TOC to the desired location. We have: + isym = iTOC + in + iinsn = in + o + osym = oTOC + on + oinsn = on + o + so we must change insn by on - in. + + R_GL: + GL linkage relocation. The value of this relocation + is the address of the entry in the TOC section. + + R_TCL: + Local object TOC address. I can't figure out the + difference between this and case R_GL. + + R_TRL: + TOC relative relocation. A TOC relative load instruction + which may be changed to a load address instruction. + FIXME: We don't currently implement this optimization. + + R_TRLA: + TOC relative relocation. This is a TOC relative load + address instruction which may be changed to a load + instruction. FIXME: I don't know if this is the correct + implementation. + + R_BA: + Absolute branch. We don't want to mess with the lower + two bits of the instruction. + + R_CAI: + The PowerPC ABI defines this as an absolute call which + may be modified to become a relative call. The PowerOpen + ABI does not define this relocation type. + + R_RBA: + Absolute branch which may be modified to become a + relative branch. + + R_RBAC: + The PowerPC ABI defines this as an absolute branch to a + fixed address which may be modified to an absolute branch + to a symbol. The PowerOpen ABI does not define this + relocation type. + + R_RBRC: + The PowerPC ABI defines this as an absolute branch to a + fixed address which may be modified to a relative branch. + The PowerOpen ABI does not define this relocation type. + + R_BR: + Relative branch. We don't want to mess with the lower + two bits of the instruction. + + R_CREL: + The PowerPC ABI defines this as a relative call which may + be modified to become an absolute call. The PowerOpen + ABI does not define this relocation type. + + R_RBR: + A relative branch which may be modified to become an + absolute branch. FIXME: We don't implement this, + although we should for symbols of storage mapping class + XMC_XO. + + R_RL: + The PowerPC AIX ABI describes this as a load which may be + changed to a load address. The PowerOpen ABI says this + is the same as case R_POS. + + R_RLA: + The PowerPC AIX ABI describes this as a load address + which may be changed to a load. The PowerOpen ABI says + this is the same as R_POS. +*/ + +boolean xcoff_ppc_relocate_section (output_bfd, info, input_bfd, input_section, contents, relocs, syms, sections) @@ -2644,7 +3306,6 @@ xcoff_ppc_relocate_section (output_bfd, rel = relocs; relend = rel + input_section->reloc_count; - for (; rel < relend; rel++) { long symndx; @@ -2653,7 +3314,10 @@ xcoff_ppc_relocate_section (output_bfd, bfd_vma addend; bfd_vma val; struct reloc_howto_struct howto; - bfd_reloc_status_type rstat; + bfd_vma relocation; + bfd_vma value_to_relocate; + bfd_vma address; + bfd_byte *location; /* Relocation type R_REF is a special relocation type which is merely used to prevent garbage collection from occurring for @@ -2661,327 +3325,151 @@ xcoff_ppc_relocate_section (output_bfd, if (rel->r_type == R_REF) continue; - symndx = rel->r_symndx; - - if (symndx == -1) - { - h = NULL; - sym = NULL; - addend = 0; - } - else - { - h = obj_xcoff_sym_hashes (input_bfd)[symndx]; - sym = syms + symndx; - addend = - sym->n_value; - - } - - /* We build the howto information on the fly. */ - + /* howto */ howto.type = rel->r_type; howto.rightshift = 0; - howto.size = 2; howto.bitsize = (rel->r_size & 0x1f) + 1; + howto.size = howto.bitsize > 16 ? 2 : 1; howto.pc_relative = false; howto.bitpos = 0; - if ((rel->r_size & 0x80) != 0) - howto.complain_on_overflow = complain_overflow_signed; - else - howto.complain_on_overflow = complain_overflow_bitfield; + howto.complain_on_overflow = rel->r_size & 0x80 ? + complain_overflow_signed : complain_overflow_bitfield; howto.special_function = NULL; howto.name = "internal"; howto.partial_inplace = true; - if (howto.bitsize == 32) - howto.src_mask = howto.dst_mask = 0xffffffff; - else - { - howto.src_mask = howto.dst_mask = (1 << howto.bitsize) - 1; - if (howto.bitsize == 16) - howto.size = 1; - } + howto.src_mask = howto.dst_mask = N_ONES(howto.bitsize); howto.pcrel_offset = false; + /* symbol */ val = 0; + addend = 0; + h = NULL; + sym = NULL; + symndx = rel->r_symndx; - if (h == NULL) + if (-1 != symndx) { asection *sec; - - if (symndx == -1) - { - sec = bfd_abs_section_ptr; - val = 0; - } - else + + h = obj_xcoff_sym_hashes (input_bfd)[symndx]; + sym = syms + symndx; + addend = - sym->n_value; + + if (NULL == h) { sec = sections[symndx]; /* Hack to make sure we use the right TOC anchor value - if this reloc is against the TOC anchor. */ - + if this reloc is against the TOC anchor. */ if (sec->name[3] == '0' - && strcmp (sec->name, ".tc0") == 0) - { - val = xcoff_data (output_bfd)->toc; - } + && strcmp (sec->name, ".tc0") == 0) + val = xcoff_data (output_bfd)->toc; else + val = (sec->output_section->vma + + sec->output_offset + + sym->n_value + - sec->vma); + } + else + { + if (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + { + sec = h->root.u.def.section; + val = (h->root.u.def.value + + sec->output_section->vma + + sec->output_offset); + } + else if (h->root.type == bfd_link_hash_common) { + sec = h->root.u.c.p->section; val = (sec->output_section->vma - + sec->output_offset - + sym->n_value - - sec->vma); + + sec->output_offset); + + } + else if ((0 == (h->flags & (XCOFF_DEF_DYNAMIC | XCOFF_IMPORT))) + && ! info->relocateable) + { + if (! ((*info->callbacks->undefined_symbol) + (info, h->root.root.string, input_bfd, input_section, + rel->r_vaddr - input_section->vma, true))) + return false; + + /* Don't try to process the reloc. It can't help, and + it may generate another error. */ + continue; } } } - else - { - if (h->root.type == bfd_link_hash_defined - || h->root.type == bfd_link_hash_defweak) - { - asection *sec; - - sec = h->root.u.def.section; - val = (h->root.u.def.value - + sec->output_section->vma - + sec->output_offset); - } - else if (h->root.type == bfd_link_hash_common) - { - asection *sec; - - sec = h->root.u.c.p->section; - val = (sec->output_section->vma - + sec->output_offset); - } - else if ((h->flags & XCOFF_DEF_DYNAMIC) != 0 - || (h->flags & XCOFF_IMPORT) != 0) - { - /* Every symbol in a shared object is defined somewhere. */ - val = 0; - } - else if (! info->relocateable) - { - if (! ((*info->callbacks->undefined_symbol) - (info, h->root.root.string, input_bfd, input_section, - rel->r_vaddr - input_section->vma, true))) - return false; - /* Don't try to process the reloc. It can't help, and - it may generate another error. */ - continue; - } - } + if (rel->r_type >= XCOFF_MAX_CALCULATE_RELOCATION + || (false == xcoff_calculate_relocation[rel->r_type] + (input_bfd, input_section, output_bfd, rel, sym, &howto, val, + addend, &relocation, contents))) + return false; + + /* address */ + address = rel->r_vaddr - input_section->vma; + location = contents + address; + + if (address > input_section->_raw_size) + abort(); - /* I took the relocation type definitions from two documents: - the PowerPC AIX Version 4 Application Binary Interface, First - Edition (April 1992), and the PowerOpen ABI, Big-Endian - 32-Bit Hardware Implementation (June 30, 1994). Differences - between the documents are noted below. */ - - switch (rel->r_type) - { - case R_RTB: - case R_RRTBI: - case R_RRTBA: - /* These relocs are defined by the PowerPC ABI to be - relative branches which use half of the difference - between the symbol and the program counter. I can't - quite figure out when this is useful. These relocs are - not defined by the PowerOpen ABI. */ - default: - (*_bfd_error_handler) - (_("%s: unsupported relocation type 0x%02x"), - bfd_archive_filename (input_bfd), (unsigned int) rel->r_type); - bfd_set_error (bfd_error_bad_value); - return false; - case R_POS: - /* Simple positive relocation. */ - break; - case R_NEG: - /* Simple negative relocation. */ - val = - val; - break; - case R_REL: - /* Simple PC relative relocation. */ - howto.pc_relative = true; - break; - case R_TOC: - /* TOC relative relocation. The value in the instruction in - the input file is the offset from the input file TOC to - the desired location. We want the offset from the final - TOC to the desired location. We have: - isym = iTOC + in - iinsn = in + o - osym = oTOC + on - oinsn = on + o - so we must change insn by on - in. - */ - case R_GL: - /* Global linkage relocation. The value of this relocation - is the address of the entry in the TOC section. */ - case R_TCL: - /* Local object TOC address. I can't figure out the - difference between this and case R_GL. */ - case R_TRL: - /* TOC relative relocation. A TOC relative load instruction - which may be changed to a load address instruction. - FIXME: We don't currently implement this optimization. */ - case R_TRLA: - /* TOC relative relocation. This is a TOC relative load - address instruction which may be changed to a load - instruction. FIXME: I don't know if this is the correct - implementation. */ - if (h != NULL && h->smclas != XMC_TD) + /* Get the value we are going to relocate. */ + if (1 == howto.size) + value_to_relocate = bfd_get_16 (input_bfd, location); + else + value_to_relocate = bfd_get_32 (input_bfd, location); + + /* overflow. + + FIXME: We may drop bits during the addition + which we don't check for. We must either check at every single + operation, which would be tedious, or we must do the computations + in a type larger than bfd_vma, which would be inefficient. */ + + if ((unsigned int) howto.complain_on_overflow >= + XCOFF_MAX_COMPLAIN_OVERFLOW) + abort(); + + if ((true == xcoff_complain_overflow[howto.complain_on_overflow] + (input_bfd, value_to_relocate, relocation, &howto))) + { + const char *name; + char buf[SYMNMLEN + 1]; + char reloc_type_name[10]; + + if (symndx == -1) { - if (h->toc_section == NULL) - { - (*_bfd_error_handler) - (_("%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"), - bfd_archive_filename (input_bfd), rel->r_vaddr, - h->root.root.string); - bfd_set_error (bfd_error_bad_value); - return false; - } - - BFD_ASSERT ((h->flags & XCOFF_SET_TOC) == 0); - val = (h->toc_section->output_section->vma - + h->toc_section->output_offset); - } - - val = ((val - xcoff_data (output_bfd)->toc) - - (sym->n_value - xcoff_data (input_bfd)->toc)); - addend = 0; - break; - case R_BA: - /* Absolute branch. We don't want to mess with the lower - two bits of the instruction. */ - case R_CAI: - /* The PowerPC ABI defines this as an absolute call which - may be modified to become a relative call. The PowerOpen - ABI does not define this relocation type. */ - case R_RBA: - /* Absolute branch which may be modified to become a - relative branch. */ - case R_RBAC: - /* The PowerPC ABI defines this as an absolute branch to a - fixed address which may be modified to an absolute branch - to a symbol. The PowerOpen ABI does not define this - relocation type. */ - case R_RBRC: - /* The PowerPC ABI defines this as an absolute branch to a - fixed address which may be modified to a relative branch. - The PowerOpen ABI does not define this relocation type. */ - howto.src_mask &= ~3; - howto.dst_mask = howto.src_mask; - break; - case R_BR: - /* Relative branch. We don't want to mess with the lower - two bits of the instruction. */ - case R_CREL: - /* The PowerPC ABI defines this as a relative call which may - be modified to become an absolute call. The PowerOpen - ABI does not define this relocation type. */ - case R_RBR: - /* A relative branch which may be modified to become an - absolute branch. FIXME: We don't implement this, - although we should for symbols of storage mapping class - XMC_XO. */ - howto.pc_relative = true; - howto.src_mask &= ~3; - howto.dst_mask = howto.src_mask; - break; - case R_RL: - /* The PowerPC AIX ABI describes this as a load which may be - changed to a load address. The PowerOpen ABI says this - is the same as case R_POS. */ - break; - case R_RLA: - /* The PowerPC AIX ABI describes this as a load address - which may be changed to a load. The PowerOpen ABI says - this is the same as R_POS. */ - break; - } - - /* If we see an R_BR or R_RBR reloc which is jumping to global - linkage code, and it is followed by an appropriate cror nop - instruction, we replace the cror with lwz r2,20(r1). This - restores the TOC after the glink code. Contrariwise, if the - call is followed by a lwz r2,20(r1), but the call is not - going to global linkage code, we can replace the load with a - cror. */ - if ((rel->r_type == R_BR || rel->r_type == R_RBR) - && h != NULL - && h->root.type == bfd_link_hash_defined - && (rel->r_vaddr - input_section->vma + 8 - <= input_section->_cooked_size)) - { - bfd_byte *pnext; - unsigned long next; - - pnext = contents + (rel->r_vaddr - input_section->vma) + 4; - next = bfd_get_32 (input_bfd, pnext); - - /* The _ptrgl function is magic. It is used by the AIX - compiler to call a function through a pointer. */ - if (h->smclas == XMC_GL - || strcmp (h->root.root.string, "._ptrgl") == 0) + name = "*ABS*"; + } + else if (h != NULL) { - if (next == 0x4def7b82 /* cror 15,15,15 */ - || next == 0x4ffffb82 /* cror 31,31,31 */ - || next == 0x60000000) /* ori r0,r0,0 */ - bfd_put_32 (input_bfd, - (bfd_vma) 0x80410014, /* lwz r1,20(r1) */ - pnext); - } - else + name = h->root.root.string; + } + else { - if (next == 0x80410014) /* lwz r1,20(r1) */ - bfd_put_32 (input_bfd, - (bfd_vma) 0x60000000, /* ori r0,r0,0 */ - pnext); + name = _bfd_coff_internal_syment_name (input_bfd, sym, buf); + if (name == NULL) + name = "UNKNOWN"; } + sprintf (reloc_type_name, "0x%02x", rel->r_type); + + if (! ((*info->callbacks->reloc_overflow) + (info, name, reloc_type_name, (bfd_vma) 0, input_bfd, + input_section, rel->r_vaddr - input_section->vma))) + return false; } - - /* A PC relative reloc includes the section address. */ - if (howto.pc_relative) - addend += input_section->vma; - - rstat = _bfd_final_link_relocate (&howto, input_bfd, input_section, - contents, - rel->r_vaddr - input_section->vma, - val, addend); - - switch (rstat) - { - default: - abort (); - case bfd_reloc_ok: - break; - case bfd_reloc_overflow: - { - const char *name; - char buf[SYMNMLEN + 1]; - char howto_name[10]; - - if (symndx == -1) - name = "*ABS*"; - else if (h != NULL) - name = h->root.root.string; - else - { - name = _bfd_coff_internal_syment_name (input_bfd, sym, buf); - - if (name == NULL) - return false; - } - sprintf (howto_name, "0x%02x", rel->r_type); - - if (! ((*info->callbacks->reloc_overflow) - (info, name, howto_name, (bfd_vma) 0, input_bfd, - input_section, rel->r_vaddr - input_section->vma))) - return false; - } - } + + /* Add RELOCATION to the right bits of VALUE_TO_RELOCATE. */ + value_to_relocate = ((value_to_relocate & ~howto.dst_mask) | + (((value_to_relocate & howto.src_mask) + + relocation) & howto.dst_mask)); + + /* Put the value back in the object file. */ + if (1 == howto.size) + bfd_put_16 (input_bfd, value_to_relocate, location); + else + bfd_put_32 (input_bfd, value_to_relocate, location); } return true; @@ -3460,7 +3948,7 @@ static const struct xcoff_backend_data_r _bfd_xcoff_swap_aux_out, /* _bfd_swap_aux_out */ _bfd_xcoff_swap_sym_out, /* _bfd_swap_sym_out */ coff_swap_lineno_out, /* _bfd_swap_lineno_out */ - coff_swap_reloc_out, /* _bfd_swap_reloc_out */ + xcoff_swap_reloc_out, /* _bfd_swap_reloc_out */ coff_swap_filehdr_out, /* _bfd_swap_filehdr_out */ coff_swap_aouthdr_out, /* _bfd_swap_aouthdr_out */ coff_swap_scnhdr_out, /* _bfd_swap_scnhdr_out */ @@ -3480,7 +3968,7 @@ static const struct xcoff_backend_data_r coff_swap_filehdr_in, /* _bfd_coff_swap_filehdr_in */ coff_swap_aouthdr_in, /* _bfd_swap_aouthdr_in */ coff_swap_scnhdr_in, /* _bfd_swap_scnhdr_in */ - coff_swap_reloc_in, /* _bfd_reloc_in */ + xcoff_swap_reloc_in, /* _bfd_reloc_in */ coff_bad_format_hook, /* _bfd_bad_format_hook */ coff_set_arch_mach_hook, /* _bfd_set_arch_mach_hook */ coff_mkobject_hook, /* _bfd_mkobject_hook */ @@ -3679,7 +4167,8 @@ const bfd_target rs6000coff_vec = _bfd_xcoff_bfd_link_hash_table_create, /* _bfd_link_hash_table_create */ _bfd_generic_link_hash_table_free, /* _bfd_link_hash_table_free */ _bfd_xcoff_bfd_link_add_symbols, /* _bfd_link_add_symbols */ - _bfd_xcoff_bfd_final_link, /* _bfd_filnal_link */ + _bfd_generic_link_just_syms, /* _bfd_link_just_syms */ + _bfd_xcoff_bfd_final_link, /* _bfd_final_link */ _bfd_generic_link_split_section, /* _bfd_link_split_section */ bfd_generic_gc_sections, /* _bfd_gc_sections */ bfd_generic_merge_sections, /* _bfd_merge_sections */ @@ -3717,7 +4206,7 @@ static const struct xcoff_backend_data_r _bfd_xcoff_swap_aux_out, /* _bfd_swap_aux_out */ _bfd_xcoff_swap_sym_out, /* _bfd_swap_sym_out */ coff_swap_lineno_out, /* _bfd_swap_lineno_out */ - coff_swap_reloc_out, /* _bfd_swap_reloc_out */ + xcoff_swap_reloc_out, /* _bfd_swap_reloc_out */ coff_swap_filehdr_out, /* _bfd_swap_filehdr_out */ coff_swap_aouthdr_out, /* _bfd_swap_aouthdr_out */ coff_swap_scnhdr_out, /* _bfd_swap_scnhdr_out */ @@ -3737,7 +4226,7 @@ static const struct xcoff_backend_data_r coff_swap_filehdr_in, /* _bfd_coff_swap_filehdr_in */ coff_swap_aouthdr_in, /* _bfd_swap_aouthdr_in */ coff_swap_scnhdr_in, /* _bfd_swap_scnhdr_in */ - coff_swap_reloc_in, /* _bfd_reloc_in */ + xcoff_swap_reloc_in, /* _bfd_reloc_in */ coff_bad_format_hook, /* _bfd_bad_format_hook */ coff_set_arch_mach_hook, /* _bfd_set_arch_mach_hook */ coff_mkobject_hook, /* _bfd_mkobject_hook */ @@ -3940,7 +4429,8 @@ const bfd_target pmac_xcoff_vec = _bfd_xcoff_bfd_link_hash_table_create, /* _bfd_link_hash_table_create */ _bfd_generic_link_hash_table_free, /* _bfd_link_hash_table_free */ _bfd_xcoff_bfd_link_add_symbols, /* _bfd_link_add_symbols */ - _bfd_xcoff_bfd_final_link, /* _bfd_filnal_link */ + _bfd_generic_link_just_syms, /* _bfd_link_just_syms */ + _bfd_xcoff_bfd_final_link, /* _bfd_final_link */ _bfd_generic_link_split_section, /* _bfd_link_split_section */ bfd_generic_gc_sections, /* _bfd_gc_sections */ bfd_generic_merge_sections, /* _bfd_merge_sections */ diff -uprN binutils-2.12.90.0.7/bfd/coff-sh.c binutils-2.12.90.0.9/bfd/coff-sh.c --- binutils-2.12.90.0.7/bfd/coff-sh.c Thu Mar 7 11:52:36 2002 +++ binutils-2.12.90.0.9/bfd/coff-sh.c Thu May 23 15:10:10 2002 @@ -473,6 +473,7 @@ struct shcoff_reloc_map unsigned char shcoff_reloc_val; }; +#ifdef COFF_WITH_PE /* An array mapping BFD reloc codes to SH PE relocs. */ static const struct shcoff_reloc_map sh_reloc_map[] = { @@ -480,6 +481,14 @@ static const struct shcoff_reloc_map sh_ { BFD_RELOC_RVA, R_SH_IMAGEBASE }, { BFD_RELOC_CTOR, R_SH_IMM32CE }, }; +#else +/* An array mapping BFD reloc codes to SH PE relocs. */ +static const struct shcoff_reloc_map sh_reloc_map[] = +{ + { BFD_RELOC_32, R_SH_IMM32 }, + { BFD_RELOC_CTOR, R_SH_IMM32 }, +}; +#endif /* Given a BFD reloc code, return the howto structure for the corresponding SH PE reloc. */ diff -uprN binutils-2.12.90.0.7/bfd/coff-z8k.c binutils-2.12.90.0.9/bfd/coff-z8k.c --- binutils-2.12.90.0.7/bfd/coff-z8k.c Mon Oct 1 15:25:21 2001 +++ binutils-2.12.90.0.9/bfd/coff-z8k.c Thu May 23 15:10:10 2002 @@ -185,10 +185,25 @@ extra_case (in_abfd, link_info, link_ord break; case R_IMM32: - bfd_put_32 (in_abfd, - /* 0x80000000 indicates a long segmented address. */ - bfd_coff_reloc16_get_value (reloc, link_info, input_section) | 0x80000000, - data + *dst_ptr); + /* If no flags are set, assume immediate value. */ + if (! (*reloc->sym_ptr_ptr)->section->flags) + { + bfd_put_32 (in_abfd, + bfd_coff_reloc16_get_value (reloc, link_info, + input_section), + data + *dst_ptr); + } + else + { + 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 + value is as follows: + 1AAAAAAA xxxxxxxx AAAAAAAA AAAAAAAA + (A - address bits, x - ignore). */ + dst = (dst & 0xffff) | ((dst & 0xff0000) << 8) | 0x80000000; + bfd_put_32 (in_abfd, dst, data + *dst_ptr); + } (*dst_ptr) += 4; (*src_ptr) += 4; break; diff -uprN binutils-2.12.90.0.7/bfd/coff64-rs6000.c binutils-2.12.90.0.9/bfd/coff64-rs6000.c --- binutils-2.12.90.0.7/bfd/coff64-rs6000.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/bfd/coff64-rs6000.c Thu May 23 15:10:10 2002 @@ -96,6 +96,8 @@ static void _bfd_xcoff64_swap_aux_in PARAMS ((bfd *, PTR, int, int, int, int, PTR)); static unsigned int _bfd_xcoff64_swap_aux_out PARAMS ((bfd *, PTR, int, int, int, int, PTR)); +static void xcoff64_swap_reloc_in PARAMS ((bfd *, PTR, PTR)); +static unsigned int xcoff64_swap_reloc_out PARAMS ((bfd *, PTR, PTR)); extern boolean _bfd_xcoff_mkobject PARAMS ((bfd *)); extern boolean _bfd_xcoff_copy_private_bfd_data PARAMS ((bfd *, bfd *)); extern boolean _bfd_xcoff_is_local_label_name PARAMS ((bfd *, const char *)); @@ -150,6 +152,42 @@ static boolean xcoff64_generate_rtinit PARAMS ((bfd *, const char *, const char *, boolean)); static boolean xcoff64_bad_format_hook PARAMS ((bfd *, PTR )); +/* Relocation functions */ +static boolean xcoff64_reloc_type_br PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); + +boolean (*xcoff64_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION]) + (XCOFF_RELOC_FUNCTION_ARGS) = +{ + xcoff_reloc_type_pos, /* R_POS (0x00) */ + xcoff_reloc_type_neg, /* R_NEG (0x01) */ + xcoff_reloc_type_rel, /* R_REL (0x02) */ + xcoff_reloc_type_toc, /* R_TOC (0x03) */ + xcoff_reloc_type_fail, /* R_RTB (0x04) */ + xcoff_reloc_type_toc, /* R_GL (0x05) */ + xcoff_reloc_type_toc, /* R_TCL (0x06) */ + xcoff_reloc_type_fail, /* (0x07) */ + xcoff_reloc_type_ba, /* R_BA (0x08) */ + xcoff_reloc_type_fail, /* (0x09) */ + xcoff64_reloc_type_br, /* R_BR (0x0a) */ + xcoff_reloc_type_fail, /* (0x0b) */ + xcoff_reloc_type_pos, /* R_RL (0x0c) */ + xcoff_reloc_type_pos, /* R_RLA (0x0d) */ + xcoff_reloc_type_fail, /* (0x0e) */ + xcoff_reloc_type_noop, /* R_REF (0x0f) */ + xcoff_reloc_type_fail, /* (0x10) */ + xcoff_reloc_type_fail, /* (0x11) */ + xcoff_reloc_type_toc, /* R_TRL (0x12) */ + xcoff_reloc_type_toc, /* R_TRLA (0x13) */ + xcoff_reloc_type_fail, /* R_RRTBI (0x14) */ + xcoff_reloc_type_fail, /* R_RRTBA (0x15) */ + xcoff_reloc_type_ba, /* R_CAI (0x16) */ + xcoff_reloc_type_crel, /* R_CREL (0x17) */ + xcoff_reloc_type_ba, /* R_RBA (0x18) */ + xcoff_reloc_type_ba, /* R_RBAC (0x19) */ + xcoff64_reloc_type_br, /* R_RBR (0x1a) */ + xcoff_reloc_type_ba, /* R_RBRC (0x1b) */ +}; + /* coffcode.h needs these to be defined. */ /* Internalcoff.h and coffcode.h modify themselves based on these flags. */ #define XCOFF64 @@ -199,7 +237,9 @@ extern int rs6000coff_core_file_failing_ #define coff_SWAP_sym_out _bfd_xcoff64_swap_sym_out #define coff_SWAP_aux_in _bfd_xcoff64_swap_aux_in #define coff_SWAP_aux_out _bfd_xcoff64_swap_aux_out - +#define coff_swap_reloc_in xcoff64_swap_reloc_in +#define coff_swap_reloc_out xcoff64_swap_reloc_out +#define NO_COFF_RELOCS #include "coffcode.h" @@ -384,7 +424,7 @@ _bfd_xcoff64_swap_aux_out (abfd, inp, ty switch (class) { case C_FILE: - if (ext->x_file.x_n.x_zeroes == 0) + if (in->x_file.x_n.x_zeroes == 0) { H_PUT_32 (abfd, 0, ext->x_file.x_n.x_zeroes); H_PUT_32 (abfd, in->x_file.x_n.x_offset, ext->x_file.x_n.x_offset); @@ -614,6 +654,40 @@ xcoff64_swap_ldsym_out (abfd, src, d) bfd_put_32 (abfd, src->l_parm, dst->l_parm); } +static void +xcoff64_swap_reloc_in (abfd, s, d) + bfd *abfd; + PTR s; + PTR d; +{ + struct external_reloc *src = (struct external_reloc *) s; + struct internal_reloc *dst = (struct internal_reloc *) d; + + memset (dst, 0, sizeof (struct internal_reloc)); + + dst->r_vaddr = bfd_get_64 (abfd, src->r_vaddr); + dst->r_symndx = bfd_get_32 (abfd, src->r_symndx); + dst->r_size = bfd_get_8 (abfd, src->r_size); + dst->r_type = bfd_get_8 (abfd, src->r_type); +} + +static unsigned int +xcoff64_swap_reloc_out (abfd, s, d) + bfd *abfd; + PTR s; + PTR d; +{ + struct internal_reloc *src = (struct internal_reloc *) s; + struct external_reloc *dst = (struct external_reloc *) d; + + bfd_put_64 (abfd, src->r_vaddr, dst->r_vaddr); + bfd_put_32 (abfd, src->r_symndx, dst->r_symndx); + bfd_put_8 (abfd, src->r_type, dst->r_type); + bfd_put_8 (abfd, src->r_size, dst->r_size); + + return bfd_coff_relsz (abfd); +} + /* Swap in the ldrel structure. */ static void @@ -992,11 +1066,88 @@ xcoff64_write_object_contents (abfd) return true; } -/* This is the relocation function for the RS/6000/POWER/PowerPC. - This is currently the only processor which uses XCOFF; I hope that - will never change. */ +static boolean +xcoff64_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto, + val, addend, relocation, contents) + bfd *input_bfd; + asection *input_section; + bfd *output_bfd ATTRIBUTE_UNUSED; + struct internal_reloc *rel; + struct internal_syment *sym ATTRIBUTE_UNUSED; + struct reloc_howto_struct *howto; + bfd_vma val; + bfd_vma addend; + bfd_vma *relocation; + bfd_byte *contents; +{ + struct xcoff_link_hash_entry *h; -static boolean + if (0 > rel->r_symndx) + return false; + + h = obj_xcoff_sym_hashes (input_bfd)[rel->r_symndx]; + + /* If we see an R_BR or R_RBR reloc which is jumping to global + linkage code, and it is followed by an appropriate cror nop + instruction, we replace the cror with ld r2,40(r1). This + restores the TOC after the glink code. Contrariwise, if the + call is followed by a ld r2,40(r1), but the call is not + going to global linkage code, we can replace the load with a + cror. */ + if (NULL != h + && bfd_link_hash_defined == h->root.type + && (rel->r_vaddr - input_section->vma + 8 <= + input_section->_cooked_size)) + { + bfd_byte *pnext; + unsigned long next; + + pnext = contents + (rel->r_vaddr - input_section->vma) + 4; + next = bfd_get_32 (input_bfd, pnext); + + /* The _ptrgl function is magic. It is used by the AIX compiler to call + a function through a pointer. */ + if (h->smclas == XMC_GL || strcmp (h->root.root.string, "._ptrgl") == 0) + { + if (next == 0x4def7b82 /* cror 15,15,15 */ + || next == 0x4ffffb82 /* cror 31,31,31 */ + || next == 0x60000000) /* ori r0,r0,0 */ + bfd_put_32 (input_bfd, 0xe8410028, pnext); /* ld r2,40(r1) */ + } + else + { + if (next == 0xe8410028) /* ld r2,40(r1) */ + bfd_put_32 (input_bfd, 0x60000000, pnext); /* ori r0,r0,0 */ + } + } + else if (NULL != h && bfd_link_hash_undefined == h->root.type) + { + /* Normally, this relocation is against a defined symbol. In the + case where this is a partial link and the output section offset + is greater than 2^25, the linker will return an invalid error + message that the relocation has been truncated. Yes it has been + truncated but no it not important. For this case, disable the + overflow checking. */ + howto->complain_on_overflow = complain_overflow_dont; + } + + howto->pc_relative = true; + howto->src_mask &= ~3; + howto->dst_mask = howto->src_mask; + + /* A PC relative reloc includes the section address. */ + addend += input_section->vma; + + *relocation = val + addend; + *relocation -= (input_section->output_section->vma + + input_section->output_offset); + return true; +} + +/* This is the relocation function for the PowerPC64. + See xcoff_ppc_relocation_section for more information. */ + +boolean xcoff64_ppc_relocate_section (output_bfd, info, input_bfd, input_section, contents, relocs, syms, sections) @@ -1022,73 +1173,48 @@ xcoff64_ppc_relocate_section (output_bfd bfd_vma addend; bfd_vma val; struct reloc_howto_struct howto; - bfd_reloc_status_type rstat; + bfd_vma relocation; + bfd_vma value_to_relocate; + bfd_vma address; + bfd_byte *location; /* Relocation type R_REF is a special relocation type which is - merely used to prevent garbage collection from occurring for - the csect including the symbol which it references. */ + merely used to prevent garbage collection from occurring for + the csect including the symbol which it references. */ if (rel->r_type == R_REF) continue; - symndx = rel->r_symndx; - - if (symndx == -1) - { - h = NULL; - sym = NULL; - addend = 0; - } - else - { - h = obj_xcoff_sym_hashes (input_bfd)[symndx]; - sym = syms + symndx; - addend = - sym->n_value; - } - - /* We build the howto information on the fly. */ - + /* howto */ howto.type = rel->r_type; howto.rightshift = 0; - howto.size = 4; howto.bitsize = (rel->r_size & 0x3f) + 1; + howto.size = howto.bitsize > 16 ? (howto.bitsize > 32 ? 4 : 2) : 1; howto.pc_relative = false; howto.bitpos = 0; - if ((rel->r_size & 0x80) != 0) - howto.complain_on_overflow = complain_overflow_signed; - else - howto.complain_on_overflow = complain_overflow_bitfield; + howto.complain_on_overflow = rel->r_size & 0x80 ? + complain_overflow_signed : complain_overflow_bitfield; howto.special_function = NULL; howto.name = "internal"; howto.partial_inplace = true; - - if (howto.bitsize == 64) - { - howto.src_mask = howto.dst_mask = MINUS_ONE; - } - else if (howto.bitsize == 32) - { - howto.src_mask = howto.dst_mask = 0xffffffff; - } - else - { - howto.src_mask = howto.dst_mask = (1 << howto.bitsize) - 1; - if (howto.bitsize == 16) - howto.size = 1; - } + howto.src_mask = howto.dst_mask = N_ONES(howto.bitsize); howto.pcrel_offset = false; + /* symbol */ val = 0; + addend = 0; + h = NULL; + sym = NULL; + symndx = rel->r_symndx; - if (h == NULL) + if (-1 != symndx) { asection *sec; - - if (symndx == -1) - { - sec = bfd_abs_section_ptr; - val = 0; - } - else + + h = obj_xcoff_sym_hashes (input_bfd)[symndx]; + sym = syms + symndx; + addend = - sym->n_value; + + if (NULL == h) { sec = sections[symndx]; /* Hack to make sure we use the right TOC anchor value @@ -1101,266 +1227,113 @@ xcoff64_ppc_relocate_section (output_bfd + sec->output_offset + sym->n_value - sec->vma); - } - - } - else - { - - if (h->root.type == bfd_link_hash_defined - || h->root.type == bfd_link_hash_defweak) - { - asection *sec; - - sec = h->root.u.def.section; - val = (h->root.u.def.value - + sec->output_section->vma - + sec->output_offset); - - } - else if (h->root.type == bfd_link_hash_common) - { - asection *sec; - - sec = h->root.u.c.p->section; - val = (sec->output_section->vma - + sec->output_offset); - } - else if ((h->flags & XCOFF_DEF_DYNAMIC) != 0 - || (h->flags & XCOFF_IMPORT) != 0) - { - /* Every symbol in a shared object is defined somewhere. */ - val = 0; - } - else if (! info->relocateable) + } + else { - if (! ((*info->callbacks->undefined_symbol) - (info, h->root.root.string, input_bfd, input_section, - rel->r_vaddr - input_section->vma, true))) - return false; - - /* Don't try to process the reloc. It can't help, and - it may generate another error. */ - continue; - } - } - - /* I took the relocation type definitions from two documents: - the PowerPC AIX Version 4 Application Binary Interface, First - Edition (April 1992), and the PowerOpen ABI, Big-Endian - 32-Bit Hardware Implementation (June 30, 1994). Differences - between the documents are noted below. */ - - switch (rel->r_type) - { - case R_RTB: - case R_RRTBI: - case R_RRTBA: - /* These relocs are defined by the PowerPC ABI to be - relative branches which use half of the difference - between the symbol and the program counter. I can't - quite figure out when this is useful. These relocs are - not defined by the PowerOpen ABI. */ - default: - (*_bfd_error_handler) - (_("%s: unsupported relocation type 0x%02x"), - bfd_archive_filename (input_bfd), (unsigned int) rel->r_type); - bfd_set_error (bfd_error_bad_value); - return false; - case R_POS: - /* Simple positive relocation. */ - break; - case R_NEG: - /* Simple negative relocation. */ - val = - val; - break; - case R_REL: - /* Simple PC relative relocation. */ - howto.pc_relative = true; - break; - case R_TOC: - /* TOC relative relocation. The value in the instruction in - the input file is the offset from the input file TOC to - the desired location. We want the offset from the final - TOC to the desired location. We have: - isym = iTOC + in - iinsn = in + o - osym = oTOC + on - oinsn = on + o - so we must change insn by on - in. - */ - case R_GL: - /* Global linkage relocation. The value of this relocation - is the address of the entry in the TOC section. */ - case R_TCL: - /* Local object TOC address. I can't figure out the - difference between this and case R_GL. */ - case R_TRL: - /* TOC relative relocation. A TOC relative load instruction - which may be changed to a load address instruction. - FIXME: We don't currently implement this optimization. */ - case R_TRLA: - /* TOC relative relocation. This is a TOC relative load - address instruction which may be changed to a load - instruction. FIXME: I don't know if this is the correct - implementation. */ - if (h != NULL && h->smclas != XMC_TD) - { - if (h->toc_section == NULL) + if (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + { + sec = h->root.u.def.section; + val = (h->root.u.def.value + + sec->output_section->vma + + sec->output_offset); + } + else if (h->root.type == bfd_link_hash_common) + { + sec = h->root.u.c.p->section; + val = (sec->output_section->vma + + sec->output_offset); + } + else if ((0 == (h->flags & (XCOFF_DEF_DYNAMIC | XCOFF_IMPORT))) + && ! info->relocateable) { - (*_bfd_error_handler) - (_("%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"), - bfd_archive_filename (input_bfd), rel->r_vaddr, - h->root.root.string); - bfd_set_error (bfd_error_bad_value); - return false; + if (! ((*info->callbacks->undefined_symbol) + (info, h->root.root.string, input_bfd, input_section, + rel->r_vaddr - input_section->vma, true))) + return false; + + /* Don't try to process the reloc. It can't help, and + it may generate another error. */ + continue; } - - BFD_ASSERT ((h->flags & XCOFF_SET_TOC) == 0); - val = (h->toc_section->output_section->vma - + h->toc_section->output_offset); - } - - val = ((val - xcoff_data (output_bfd)->toc) - - (sym->n_value - xcoff_data (input_bfd)->toc)); - - addend = 0; - break; - case R_BA: - /* Absolute branch. We don't want to mess with the lower - two bits of the instruction. */ - case R_CAI: - /* The PowerPC ABI defines this as an absolute call which - may be modified to become a relative call. The PowerOpen - ABI does not define this relocation type. */ - case R_RBA: - /* Absolute branch which may be modified to become a - relative branch. */ - case R_RBAC: - /* The PowerPC ABI defines this as an absolute branch to a - fixed address which may be modified to an absolute branch - to a symbol. The PowerOpen ABI does not define this - relocation type. */ - case R_RBRC: - /* The PowerPC ABI defines this as an absolute branch to a - fixed address which may be modified to a relative branch. - The PowerOpen ABI does not define this relocation type. */ - howto.src_mask &= ~3; - howto.dst_mask = howto.src_mask; - break; - case R_BR: - /* Relative branch. We don't want to mess with the lower - two bits of the instruction. */ - case R_CREL: - /* The PowerPC ABI defines this as a relative call which may - be modified to become an absolute call. The PowerOpen - ABI does not define this relocation type. */ - case R_RBR: - /* A relative branch which may be modified to become an - absolute branch. FIXME: We don't implement this, - although we should for symbols of storage mapping class - XMC_XO. */ - howto.pc_relative = true; - howto.src_mask &= ~3; - howto.dst_mask = howto.src_mask; - howto.size = 2; - howto.complain_on_overflow = complain_overflow_bitfield; - break; - case R_RL: - /* The PowerPC AIX ABI describes this as a load which may be - changed to a load address. The PowerOpen ABI says this - is the same as case R_POS. */ - break; - case R_RLA: - /* The PowerPC AIX ABI describes this as a load address - which may be changed to a load. The PowerOpen ABI says - this is the same as R_POS. */ - break; - } - - /* If we see an R_BR or R_RBR reloc which is jumping to global - linkage code, and it is followed by an appropriate cror nop - instruction, we replace the cror with ld r2,40(r1). This - restores the TOC after the glink code. Contrariwise, if the - call is followed by a ld r2,40(r1), but the call is not - going to global linkage code, we can replace the load with a - cror. */ - if ((rel->r_type == R_BR || rel->r_type == R_RBR) - && h != NULL - && h->root.type == bfd_link_hash_defined - && (rel->r_vaddr - input_section->vma + 8 - <= input_section->_cooked_size)) - { - bfd_byte *pnext; - unsigned long next; - - pnext = contents + (rel->r_vaddr - input_section->vma) + 4; - next = bfd_get_32 (input_bfd, pnext); - - - /* The _ptrgl function is magic. It is used by the AIX - * compiler to call a function through a pointer. - * - * special case XMC_GL, global linkage - */ - if (h->smclas == XMC_GL - || strcmp (h->root.root.string, "._ptrgl") == 0) - { - if (next == 0x4def7b82 /* cror 15,15,15 */ - || next == 0x4ffffb82 /* cror 31,31,31 */ - || next == 0x60000000 /* ori r0,r0,0 */) - bfd_put_32 (input_bfd, (bfd_vma) 0xe8410028 /* ld r2,40(r1) */, - pnext); - } - else - { - if (next == 0xe8410028 /* ld r2,40(r1) */) - bfd_put_32 (input_bfd, (bfd_vma) 0x60000000 /* ori r0,r0,0 */, - pnext); } } - - /* A PC relative reloc includes the section address. */ - if (howto.pc_relative) - addend += input_section->vma; - - rstat = _bfd_final_link_relocate (&howto, input_bfd, input_section, - contents, - rel->r_vaddr - input_section->vma, - val, addend); - - switch (rstat) - { - default: - abort (); - case bfd_reloc_ok: - break; - case bfd_reloc_overflow: - { - const char *name; - char buf[SYMNMLEN + 1]; - char howto_name[10]; - - if (symndx == -1) + + if (rel->r_type >= XCOFF_MAX_CALCULATE_RELOCATION + || (false == xcoff64_calculate_relocation[rel->r_type] + (input_bfd, input_section, output_bfd, rel, sym, &howto, val, + addend, &relocation, contents))) + return false; + + /* address */ + address = rel->r_vaddr - input_section->vma; + location = contents + address; + + if (address > input_section->_raw_size) + abort(); + + /* Get the value we are going to relocate. */ + if (1 == howto.size) + value_to_relocate = bfd_get_16 (input_bfd, location); + else if (2 == howto.size) + value_to_relocate = bfd_get_32 (input_bfd, location); + else + value_to_relocate = bfd_get_64 (input_bfd, location); + + /* overflow. + + FIXME: We may drop bits during the addition + which we don't check for. We must either check at every single + operation, which would be tedious, or we must do the computations + in a type larger than bfd_vma, which would be inefficient. */ + + if ((unsigned int) howto.complain_on_overflow >= + XCOFF_MAX_COMPLAIN_OVERFLOW) + abort(); + + if ((true == xcoff_complain_overflow[howto.complain_on_overflow] + (input_bfd, value_to_relocate, relocation, &howto))) + { + const char *name; + char buf[SYMNMLEN + 1]; + char reloc_type_name[10]; + + if (symndx == -1) + { name = "*ABS*"; - else if (h != NULL) + } + else if (h != NULL) + { name = h->root.root.string; - else - { - name = _bfd_coff_internal_syment_name (input_bfd, sym, buf); - if (name == NULL) - return false; - } - sprintf (howto_name, "0x%02x", rel->r_type); - - if (! ((*info->callbacks->reloc_overflow) - (info, name, howto_name, (bfd_vma) 0, input_bfd, - input_section, rel->r_vaddr - input_section->vma))) - return false; - } - } + } + else + { + name = _bfd_coff_internal_syment_name (input_bfd, sym, buf); + if (name == NULL) + name = "UNKNOWN"; + } + sprintf (reloc_type_name, "0x%02x", rel->r_type); + + if (! ((*info->callbacks->reloc_overflow) + (info, name, reloc_type_name, (bfd_vma) 0, input_bfd, + input_section, rel->r_vaddr - input_section->vma))) + return false; + } + + /* Add RELOCATION to the right bits of VALUE_TO_RELOCATE. */ + value_to_relocate = ((value_to_relocate & ~howto.dst_mask) | + (((value_to_relocate & howto.src_mask) + + relocation) & howto.dst_mask)); + + /* Put the value back in the object file. */ + if (1 == howto.size) + bfd_put_16 (input_bfd, value_to_relocate, location); + else if (2 == howto.size) + bfd_put_32 (input_bfd, value_to_relocate, location); + else + bfd_put_64 (input_bfd, value_to_relocate, location); + } - return true; } @@ -1382,7 +1355,7 @@ reloc_howto_type xcoff64_howto_table[] = 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ 0, /* special_function */ - "R_POS", /* name */ + "R_POS_64", /* name */ true, /* partial_inplace */ MINUS_ONE, /* src_mask */ MINUS_ONE, /* dst_mask */ @@ -1489,7 +1462,7 @@ reloc_howto_type xcoff64_howto_table[] = 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ 0, /* special_function */ - "R_BA", /* name */ + "R_BA_26", /* name */ true, /* partial_inplace */ 0x3fffffc, /* src_mask */ 0x3fffffc, /* dst_mask */ @@ -1693,7 +1666,7 @@ reloc_howto_type xcoff64_howto_table[] = 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ 0, /* special_function */ - "R_RBR", /* name */ + "R_RBR_26", /* name */ true, /* partial_inplace */ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ @@ -1716,32 +1689,47 @@ reloc_howto_type xcoff64_howto_table[] = HOWTO (R_POS, /* type */ 0, /* rightshift */ - 4, /* size (0 = byte, 1 = short, 2 = long) */ - 64, /* bitsize */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ 0, /* special_function */ - "R_POS", /* name */ + "R_POS_32", /* name */ true, /* partial_inplace */ - MINUS_ONE, /* src_mask */ - MINUS_ONE, /* dst_mask */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ false), /* pcrel_offset */ /* 16 bit Non modifiable absolute branch. */ HOWTO (R_BA, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ 0, /* special_function */ - "R_BA", /* name */ + "R_BA_16", /* name */ true, /* partial_inplace */ 0xfffc, /* src_mask */ 0xfffc, /* dst_mask */ false), /* pcrel_offset */ + + /* Modifiable branch relative. */ + HOWTO (R_RBR, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + 0, /* special_function */ + "R_RBR_16", /* name */ + true, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + false), /* pcrel_offset */ }; void @@ -1749,15 +1737,27 @@ xcoff64_rtype2howto (relent, internal) arelent *relent; struct internal_reloc *internal; { - relent->howto = xcoff64_howto_table + internal->r_type; - - /* Check for relocs we don't know of. */ - if (internal->r_type - >= sizeof (xcoff64_howto_table) / sizeof (xcoff64_howto_table[0])) - abort (); - if (internal->r_type != relent->howto->type) + if (internal->r_type > R_RBRC) abort (); + /* Default howto layout works most of the time */ + relent->howto = &xcoff64_howto_table[internal->r_type]; + + /* Special case some 16 bit reoloc */ + if (15 == (internal->r_size & 0x3f)) + { + if (R_BA == internal->r_type) + relent->howto = &xcoff64_howto_table[0x1d]; + else if (R_RBR == internal->r_type) + relent->howto = &xcoff64_howto_table[0x1e]; + } + /* Special case 32 bit */ + else if (31 == (internal->r_size & 0x3f)) + { + if (R_POS == internal->r_type) + relent->howto = &xcoff64_howto_table[0x1c]; + } + /* The r_size field of an XCOFF reloc encodes the bitsize of the relocation, as well as indicating whether it is signed or not. Doublecheck that the relocation information gathered from the @@ -1767,12 +1767,10 @@ xcoff64_rtype2howto (relent, internal) && (relent->howto->bitsize != ((unsigned int) internal->r_size & 0x3f) + 1)) abort (); -#if 0 - if ((internal->r_size & 0x80) != 0 - ? (relent->howto->complain_on_overflow != complain_overflow_signed) - : (relent->howto->complain_on_overflow != complain_overflow_bitfield)) - abort (); -#endif + + /* Put a meaningful value in addend */ + relent->addend = (internal->r_size & 0x80) ? - internal->r_vaddr + : internal->r_vaddr; } reloc_howto_type * @@ -1792,9 +1790,9 @@ xcoff64_reloc_type_lookup (abfd, code) return &xcoff64_howto_table[3]; case BFD_RELOC_32: case BFD_RELOC_CTOR: - return &xcoff64_howto_table[0]; - case BFD_RELOC_64: return &xcoff64_howto_table[0x1c]; + case BFD_RELOC_64: + return &xcoff64_howto_table[0]; default: return NULL; } @@ -2493,7 +2491,7 @@ static const struct xcoff_backend_data_r _bfd_xcoff64_swap_aux_out, /* _bfd_swap_aux_out */ _bfd_xcoff64_swap_sym_out, /* _bfd_swap_sym_out */ _bfd_xcoff64_swap_lineno_out, /* _bfd_swap_lineno_out */ - coff_swap_reloc_out, /* _bfd_swap_reloc_out */ + xcoff64_swap_reloc_out, /* _bfd_swap_reloc_out */ coff_swap_filehdr_out, /* _bfd_swap_filehdr_out */ coff_swap_aouthdr_out, /* _bfd_swap_aouthdr_out */ coff_swap_scnhdr_out, /* _bfd_swap_scnhdr_out */ @@ -2513,7 +2511,7 @@ static const struct xcoff_backend_data_r coff_swap_filehdr_in, /* _bfd_coff_swap_filehdr_in */ coff_swap_aouthdr_in, /* _bfd_swap_aouthdr_in */ coff_swap_scnhdr_in, /* _bfd_swap_scnhdr_in */ - coff_swap_reloc_in, /* _bfd_reloc_in */ + xcoff64_swap_reloc_in, /* _bfd_reloc_in */ xcoff64_bad_format_hook, /* _bfd_bad_format_hook */ coff_set_arch_mach_hook, /* _bfd_set_arch_mach_hook */ coff_mkobject_hook, /* _bfd_mkobject_hook */ @@ -2714,7 +2712,8 @@ const bfd_target rs6000coff64_vec = _bfd_xcoff_bfd_link_hash_table_create,/* _bfd_link_hash_table_create */ _bfd_generic_link_hash_table_free, /* _bfd_link_hash_table_free */ _bfd_xcoff_bfd_link_add_symbols, /* _bfd_link_add_symbols */ - _bfd_xcoff_bfd_final_link, /* _bfd_filnal_link */ + _bfd_generic_link_just_syms, /* _bfd_link_just_syms */ + _bfd_xcoff_bfd_final_link, /* _bfd_final_link */ _bfd_generic_link_split_section, /* _bfd_link_split_section */ bfd_generic_gc_sections, /* _bfd_gc_sections */ bfd_generic_merge_sections, /* _bfd_merge_sections */ @@ -2748,7 +2747,7 @@ static const struct xcoff_backend_data_r _bfd_xcoff64_swap_aux_out, /* _bfd_swap_aux_out */ _bfd_xcoff64_swap_sym_out, /* _bfd_swap_sym_out */ _bfd_xcoff64_swap_lineno_out, /* _bfd_swap_lineno_out */ - coff_swap_reloc_out, /* _bfd_swap_reloc_out */ + xcoff64_swap_reloc_out, /* _bfd_swap_reloc_out */ coff_swap_filehdr_out, /* _bfd_swap_filehdr_out */ coff_swap_aouthdr_out, /* _bfd_swap_aouthdr_out */ coff_swap_scnhdr_out, /* _bfd_swap_scnhdr_out */ @@ -2768,7 +2767,7 @@ static const struct xcoff_backend_data_r coff_swap_filehdr_in, /* _bfd_coff_swap_filehdr_in */ coff_swap_aouthdr_in, /* _bfd_swap_aouthdr_in */ coff_swap_scnhdr_in, /* _bfd_swap_scnhdr_in */ - coff_swap_reloc_in, /* _bfd_reloc_in */ + xcoff64_swap_reloc_in, /* _bfd_reloc_in */ xcoff64_bad_format_hook, /* _bfd_bad_format_hook */ coff_set_arch_mach_hook, /* _bfd_set_arch_mach_hook */ coff_mkobject_hook, /* _bfd_mkobject_hook */ @@ -2966,7 +2965,8 @@ const bfd_target aix5coff64_vec = _bfd_xcoff_bfd_link_hash_table_create,/* _bfd_link_hash_table_create */ _bfd_generic_link_hash_table_free, /* _bfd_link_hash_table_free */ _bfd_xcoff_bfd_link_add_symbols, /* _bfd_link_add_symbols */ - _bfd_xcoff_bfd_final_link, /* _bfd_filnal_link */ + _bfd_generic_link_just_syms, /* _bfd_link_just_syms */ + _bfd_xcoff_bfd_final_link, /* _bfd_final_link */ _bfd_generic_link_split_section, /* _bfd_link_split_section */ bfd_generic_gc_sections, /* _bfd_gc_sections */ bfd_generic_merge_sections, /* _bfd_merge_sections */ diff -uprN binutils-2.12.90.0.7/bfd/coffcode.h binutils-2.12.90.0.9/bfd/coffcode.h --- binutils-2.12.90.0.7/bfd/coffcode.h Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/bfd/coffcode.h Thu May 23 15:10:10 2002 @@ -3014,6 +3014,7 @@ coff_compute_section_file_positions (abf else current->target_index = target_index++; } + abfd->section_tail = ¤t->next; free (section_list); } @@ -5174,6 +5175,7 @@ dummy_reloc16_extra_cases (abfd, link_in #define coff_bfd_final_link _bfd_generic_final_link #endif /* ! defined (coff_relocate_section) */ +#define coff_bfd_link_just_syms _bfd_generic_link_just_syms #define coff_bfd_link_split_section _bfd_generic_link_split_section #ifndef coff_start_final_link diff -uprN binutils-2.12.90.0.7/bfd/coffswap.h binutils-2.12.90.0.9/bfd/coffswap.h --- binutils-2.12.90.0.7/bfd/coffswap.h Mon Oct 1 15:25:21 2001 +++ binutils-2.12.90.0.9/bfd/coffswap.h Thu May 23 15:10:10 2002 @@ -244,13 +244,7 @@ coff_swap_reloc_in (abfd, src, dst) reloc_dst->r_vaddr = GET_RELOC_VADDR (abfd, reloc_src->r_vaddr); reloc_dst->r_symndx = H_GET_S32 (abfd, reloc_src->r_symndx); - -#ifdef RS6000COFF_C - reloc_dst->r_type = H_GET_8 (abfd, reloc_src->r_type); - reloc_dst->r_size = H_GET_8 (abfd, reloc_src->r_size); -#else reloc_dst->r_type = H_GET_16 (abfd, reloc_src->r_type); -#endif #ifdef SWAP_IN_RELOC_OFFSET reloc_dst->r_offset = SWAP_IN_RELOC_OFFSET (abfd, reloc_src->r_offset); @@ -267,13 +261,7 @@ coff_swap_reloc_out (abfd, src, dst) struct external_reloc *reloc_dst = (struct external_reloc *) dst; PUT_RELOC_VADDR (abfd, reloc_src->r_vaddr, reloc_dst->r_vaddr); H_PUT_32 (abfd, reloc_src->r_symndx, reloc_dst->r_symndx); - -#ifdef RS6000COFF_C - H_PUT_8 (abfd, reloc_src->r_type, reloc_dst->r_type); - H_PUT_8 (abfd, reloc_src->r_size, reloc_dst->r_size); -#else H_PUT_16 (abfd, reloc_src->r_type, reloc_dst->r_type); -#endif #ifdef SWAP_OUT_RELOC_OFFSET SWAP_OUT_RELOC_OFFSET (abfd, reloc_src->r_offset, reloc_dst->r_offset); diff -uprN binutils-2.12.90.0.7/bfd/config.bfd binutils-2.12.90.0.9/bfd/config.bfd --- binutils-2.12.90.0.7/bfd/config.bfd Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/bfd/config.bfd Sun May 26 09:57:12 2002 @@ -70,7 +70,7 @@ esac case "${targ}" in # START OF targmatch.h #ifdef BFD64 - alpha*-*-netbsd* | alpha*-*-freebsd*) + alpha*-*-netbsd* | alpha*-*-freebsd* | alpha*-*-openbsd*) targ_defvec=bfd_elf64_alpha_vec targ_selvecs=ecoffalpha_little_vec ;; @@ -104,7 +104,7 @@ case "${targ}" in targ_defvec=bfd_elf32_ia64_hpux_big_vec targ_selvecs="bfd_elf64_ia64_hpux_big_vec" ;; - sparc64-*-freebsd* | sparc64-*-netbsd*) + sparc64-*-freebsd* | sparc64-*-netbsd* | sparc64-*-openbsd*) targ_defvec=bfd_elf64_sparc_vec targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec" ;; @@ -115,6 +115,10 @@ case "${targ}" in targ_selvecs=bfd_elf32_bigarc_vec ;; + armeb-*-netbsdelf*) + targ_defvec=bfd_elf32_bigarm_vec + targ_selvecs="bfd_elf32_littlearm_vec armnetbsd_vec" + ;; arm-*-netbsdelf*) targ_defvec=bfd_elf32_littlearm_vec targ_selvecs="bfd_elf32_bigarm_vec armnetbsd_vec" @@ -303,7 +307,7 @@ case "${targ}" in targ_defvec=bfd_elf32_hppa_linux_vec targ_selvecs=bfd_elf32_hppa_vec ;; - hppa*-*-*elf* | hppa*-*-lites* | hppa*-*-netbsd* | hppa*-*-sysv4* | hppa*-*-rtems*) + hppa*-*-*elf* | hppa*-*-lites* | hppa*-*-netbsd* | hppa*-*-sysv4* | hppa*-*-rtems* | hppa*-*-openbsd*) targ_defvec=bfd_elf32_hppa_vec targ_selvecs=bfd_elf32_hppa_linux_vec ;; @@ -377,6 +381,10 @@ case "${targ}" in targ_defvec=bfd_elf32_i386_vec targ_selvecs=i386netbsd_vec ;; + i[3456]86-*-netbsdpe*) + targ_defvec=i386pe_vec + targ_selvecs="i386pe_vec i386pei_vec bfd_elf32_i386_vec" + ;; i[3456]86-*-netbsdaout* | i[3456]86-*-netbsd* | i[3456]86-*-openbsd*) targ_defvec=i386netbsd_vec targ_selvecs="bfd_elf32_i386_vec i386bsd_vec" @@ -823,7 +831,7 @@ case "${targ}" in #endif powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \ powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \ - powerpc-*-chorus* | powerpc-*-vxworks*) + powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*) targ_defvec=bfd_elf32_powerpc_vec targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec" targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec" @@ -863,6 +871,14 @@ case "${targ}" in targ_selvecs="bfd_elf32_sh64l_vec bfd_elf64_sh64_vec bfd_elf64_sh64l_vec bfd_elf32_sh_vec bfd_elf32_shl_vec" targ_underscore=yes ;; + sh64eb-*-linux*) + targ_defvec=bfd_elf32_shblin_vec + targ_selvecs="bfd_elf32_shblin_vec bfd_elf32_sh64_vec bfd_elf64_sh64_vec bfd_elf32_sh_vec" + ;; + sh64-*-linux*) + targ_defvec=bfd_elf32_shlin_vec + targ_selvecs="bfd_elf32_shlin_vec bfd_elf32_sh64l_vec bfd_elf64_sh64l_vec bfd_elf32_shl_vec" + ;; #endif /* BFD64 */ sh-*-linux*) @@ -879,6 +895,13 @@ case "${targ}" in targ_defvec=bfd_elf32_shlin_vec ;; + shle-*-netbsdelf*) + targ_defvec=bfd_elf32_shlnbsd_vec + targ_selvecs="bfd_elf32_shnbsd_vec shcoff_vec shlcoff_vec" +#ifdef BFD64 + targ_selvecs="${targ_selvecs} bfd_elf32_sh64_vec bfd_elf32_sh64l_vec bfd_elf64_sh64_vec bfd_elf64_sh64l_vec" +#endif + ;; sh*le-*-netbsdelf*) targ_defvec=bfd_elf32_shlnbsd_vec targ_selvecs="bfd_elf32_shnbsd_vec shcoff_vec shlcoff_vec" diff -uprN binutils-2.12.90.0.7/bfd/config.in binutils-2.12.90.0.9/bfd/config.in --- binutils-2.12.90.0.7/bfd/config.in Thu Mar 7 11:52:36 2002 +++ binutils-2.12.90.0.9/bfd/config.in Thu May 23 15:10:10 2002 @@ -214,6 +214,9 @@ /* Define if getenv is not declared in system header files. */ #undef NEED_DECLARATION_GETENV +/* Define if struct core_dumpx has member c_impl */ +#undef HAVE_ST_C_IMPL + /* Define if has prstatus_t. */ #undef HAVE_PRSTATUS_T diff -uprN binutils-2.12.90.0.7/bfd/configure binutils-2.12.90.0.9/bfd/configure --- binutils-2.12.90.0.7/bfd/configure Tue Apr 23 11:56:30 2002 +++ binutils-2.12.90.0.9/bfd/configure Sun May 26 09:57:12 2002 @@ -37,6 +37,8 @@ ac_help="$ac_help --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer" ac_help="$ac_help + --install-libbfd controls installation of libbfd and related headers" +ac_help="$ac_help --disable-nls do not use Native Language Support" ac_help="$ac_help --with-included-gettext use the GNU gettext library included here" @@ -550,12 +552,12 @@ else fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:554: checking for Cygwin environment" >&5 +echo "configure:556: 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 +if { (eval echo configure:572: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else @@ -583,19 +585,19 @@ 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:587: checking for mingw32 environment" >&5 +echo "configure:589: 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 +if { (eval echo configure:601: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else @@ -660,7 +662,7 @@ else { echo "configure: error: can not r fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:664: checking host system type" >&5 +echo "configure:666: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -681,7 +683,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)- echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:685: checking target system type" >&5 +echo "configure:687: checking target system type" >&5 target_alias=$target case "$target_alias" in @@ -699,7 +701,7 @@ target_os=`echo $target | sed 's/^\([^-] echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:703: checking build system type" >&5 +echo "configure:705: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -724,7 +726,7 @@ test "$host_alias" != "$target_alias" && # 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:728: checking for $ac_word" >&5 +echo "configure:730: 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 @@ -754,7 +756,7 @@ 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:758: checking for $ac_word" >&5 +echo "configure:760: 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 @@ -805,7 +807,7 @@ fi # 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:809: checking for $ac_word" >&5 +echo "configure:811: 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 @@ -837,7 +839,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:841: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:843: 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. @@ -848,12 +850,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 852 "configure" +#line 854 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:859: \"$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 @@ -879,12 +881,12 @@ 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:883: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:885: 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:888: checking whether we are using GNU C" >&5 +echo "configure:890: 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 @@ -893,7 +895,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:899: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -912,7 +914,7 @@ 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:916: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:918: 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 @@ -944,7 +946,7 @@ else fi echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 -echo "configure:948: checking for POSIXized ISC" >&5 +echo "configure:950: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then @@ -977,7 +979,7 @@ fi # 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:981: checking for a BSD compatible install" >&5 +echo "configure:983: 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 @@ -1030,7 +1032,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:1034: checking whether build environment is sane" >&5 +echo "configure:1036: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -1087,7 +1089,7 @@ test "$program_suffix" != NONE && 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:1091: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:1093: 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 @@ -1116,7 +1118,7 @@ fi PACKAGE=bfd -VERSION=2.12.90.0.7 +VERSION=2.12.90.0.9 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; } @@ -1133,7 +1135,7 @@ EOF missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 -echo "configure:1137: checking for working aclocal" >&5 +echo "configure:1139: checking for working aclocal" >&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. @@ -1146,7 +1148,7 @@ else fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:1150: checking for working autoconf" >&5 +echo "configure:1152: 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. @@ -1159,7 +1161,7 @@ else fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:1163: checking for working automake" >&5 +echo "configure:1165: checking for working automake" >&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. @@ -1172,7 +1174,7 @@ else fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:1176: checking for working autoheader" >&5 +echo "configure:1178: 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. @@ -1185,7 +1187,7 @@ else fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:1189: checking for working makeinfo" >&5 +echo "configure:1191: 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. @@ -1221,7 +1223,7 @@ fi # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1225: checking for $ac_word" >&5 +echo "configure:1227: 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 @@ -1253,7 +1255,7 @@ fi # 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:1257: checking for $ac_word" >&5 +echo "configure:1259: 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 @@ -1285,7 +1287,7 @@ 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:1289: checking for $ac_word" >&5 +echo "configure:1291: 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 @@ -1400,7 +1402,7 @@ 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:1404: checking for ld used by GCC" >&5 +echo "configure:1406: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -1430,10 +1432,10 @@ echo "configure:1404: checking for ld us esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1434: checking for GNU ld" >&5 +echo "configure:1436: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1437: checking for non-GNU ld" >&5 +echo "configure:1439: 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 @@ -1468,7 +1470,7 @@ else 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:1472: checking if the linker ($LD) is GNU ld" >&5 +echo "configure:1474: 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 @@ -1485,7 +1487,7 @@ 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:1489: checking for $LD option to reload object files" >&5 +echo "configure:1491: 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 @@ -1497,7 +1499,7 @@ 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:1501: checking for BSD-compatible nm" >&5 +echo "configure:1503: 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 @@ -1535,7 +1537,7 @@ 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:1539: checking whether ln -s works" >&5 +echo "configure:1541: 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 @@ -1556,7 +1558,7 @@ else fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 -echo "configure:1560: checking how to recognise dependant libraries" >&5 +echo "configure:1562: 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 @@ -1723,13 +1725,13 @@ 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:1727: checking for object suffix" >&5 +echo "configure:1729: 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:1733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1735: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; @@ -1749,7 +1751,7 @@ ac_objext=$ac_cv_objext echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1753: checking for executable suffix" >&5 +echo "configure:1755: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1759,7 +1761,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:1763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:1765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -1786,7 +1788,7 @@ 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:1790: checking for ${ac_tool_prefix}file" >&5 +echo "configure:1792: 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 @@ -1848,7 +1850,7 @@ 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:1852: checking for file" >&5 +echo "configure:1854: 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 @@ -1919,7 +1921,7 @@ 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:1923: checking for $ac_word" >&5 +echo "configure:1925: 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 @@ -1951,7 +1953,7 @@ 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:1955: checking for $ac_word" >&5 +echo "configure:1957: 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 @@ -1986,7 +1988,7 @@ 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:1990: checking for $ac_word" >&5 +echo "configure:1992: 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 @@ -2018,7 +2020,7 @@ 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:2022: checking for $ac_word" >&5 +echo "configure:2024: 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 @@ -2085,8 +2087,8 @@ test x"$pic_mode" = xno && libtool_flags case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 2089 "configure"' > conftest.$ac_ext - if { (eval echo configure:2090: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 2091 "configure"' > conftest.$ac_ext + if { (eval echo configure:2092: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" @@ -2105,7 +2107,7 @@ case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo configure:2109: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:2111: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *ELF-32*) HPUX_IA64_MODE="32" @@ -2123,7 +2125,7 @@ ia64-*-hpux*) SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:2127: checking whether the C compiler needs -belf" >&5 +echo "configure:2129: 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 @@ -2136,14 +2138,14 @@ ac_link='${CC-cc} -o conftest${ac_exeext cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else @@ -2333,7 +2335,7 @@ if test -z "$target" ; then fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:2337: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:2339: 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" @@ -2355,10 +2357,45 @@ fi MAINT=$MAINTAINER_MODE_TRUE +echo $ac_n "checking whether to install libbfd""... $ac_c" 1>&6 +echo "configure:2362: checking whether to install libbfd" >&5 + # Check whether --enable-install-libbfd or --disable-install-libbfd was given. +if test "${enable_install_libbfd+set}" = set; then + enableval="$enable_install_libbfd" + install_libbfd_p=$enableval +else + if test "${host}" = "${target}" -o "$enable_shared" = "yes"; then + install_libbfd_p=yes + else + install_libbfd_p=no + fi +fi + + echo "$ac_t""$install_libbfd_p" 1>&6 + + +if test $install_libbfd_p = yes; then + INSTALL_LIBBFD_TRUE= + INSTALL_LIBBFD_FALSE='#' +else + INSTALL_LIBBFD_TRUE='#' + INSTALL_LIBBFD_FALSE= +fi + # libbfd.a is a host library containing target dependent code + bfdlibdir='$(libdir)' + bfdincludedir='$(includedir)' + if test "${host}" != "${target}"; then + bfdlibdir='$(exec_prefix)/$(host_alias)/$(target_alias)/lib' + bfdincludedir='$(exec_prefix)/$(host_alias)/$(target_alias)/include' + fi + + + + echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:2362: checking for executable suffix" >&5 +echo "configure:2399: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2368,7 +2405,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:2372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:2409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -2398,7 +2435,7 @@ bfd_default_target_size=32 # 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:2402: checking for $ac_word" >&5 +echo "configure:2439: 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 @@ -2428,7 +2465,7 @@ 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:2432: checking for $ac_word" >&5 +echo "configure:2469: 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 @@ -2479,7 +2516,7 @@ fi # 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:2483: checking for $ac_word" >&5 +echo "configure:2520: 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 @@ -2511,7 +2548,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2515: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:2552: 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. @@ -2522,12 +2559,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 2526 "configure" +#line 2563 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:2531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2568: \"$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 @@ -2553,12 +2590,12 @@ 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:2557: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2594: 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:2562: checking whether we are using GNU C" >&5 +echo "configure:2599: 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 @@ -2567,7 +2604,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2608: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -2586,7 +2623,7 @@ 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:2590: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2627: 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 @@ -2620,7 +2657,7 @@ fi ALL_LINGUAS="fr tr ja es sv" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:2624: checking how to run the C preprocessor" >&5 +echo "configure:2661: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2635,13 +2672,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2645: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2682: \"$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 : @@ -2652,13 +2689,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2662: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2699: \"$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 : @@ -2669,13 +2706,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2716: \"$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 : @@ -2702,7 +2739,7 @@ echo "$ac_t""$CPP" 1>&6 # 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:2706: checking for $ac_word" >&5 +echo "configure:2743: 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 @@ -2730,12 +2767,12 @@ else fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2734: checking for ANSI C header files" >&5 +echo "configure:2771: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2743,7 +2780,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2747: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2784: \"$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* @@ -2760,7 +2797,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2778,7 +2815,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2799,7 +2836,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2810,7 +2847,7 @@ if (XOR (islower (i), ISLOWER (i)) || to exit (0); } EOF -if { (eval echo configure:2814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2834,12 +2871,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2838: checking for working const" >&5 +echo "configure:2875: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+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:2929: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2909,21 +2946,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:2913: checking for inline" >&5 +echo "configure:2950: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -2949,12 +2986,12 @@ EOF esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:2953: checking for off_t" >&5 +echo "configure:2990: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2982,12 +3019,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:2986: checking for size_t" >&5 +echo "configure:3023: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3017,19 +3054,19 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:3021: checking for working alloca.h" >&5 +echo "configure:3058: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:3033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3070: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -3050,12 +3087,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:3054: checking for alloca" >&5 +echo "configure:3091: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+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:3124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -3115,12 +3152,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:3119: checking whether alloca needs Cray hooks" >&5 +echo "configure:3156: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3149: checking for $ac_func" >&5 +echo "configure:3186: 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:3214: \"$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 @@ -3200,7 +3237,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:3204: checking stack direction for C alloca" >&5 +echo "configure:3241: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3208,7 +3245,7 @@ else ac_cv_c_stack_direction=0 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:3268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -3248,21 +3285,21 @@ EOF fi -for ac_hdr in unistd.h +for ac_hdr in stdlib.h unistd.h sys/stat.h sys/types.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3256: checking for $ac_hdr" >&5 +echo "configure:3293: 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:3266: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3303: \"$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* @@ -3291,12 +3328,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3295: checking for $ac_func" >&5 +echo "configure:3332: 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:3360: \"$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 @@ -3344,7 +3381,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:3348: checking for working mmap" >&5 +echo "configure:3385: 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 @@ -3352,7 +3389,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext < #include +#if HAVE_SYS_TYPES_H +# include +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#if HAVE_SYS_STAT_H +# include +#endif + +#if HAVE_UNISTD_H +# include +#endif + /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE -# ifdef HAVE_UNISTD_H -# include -# endif /* Assume that all systems that can run configure have sys/param.h. */ # ifndef HAVE_SYS_PARAM_H @@ -3492,7 +3542,7 @@ main() } EOF -if { (eval echo configure:3496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3546: \"$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 @@ -3520,17 +3570,17 @@ unistd.h values.h sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3524: checking for $ac_hdr" >&5 +echo "configure:3574: 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:3534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3584: \"$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* @@ -3560,12 +3610,12 @@ done __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3564: checking for $ac_func" >&5 +echo "configure:3614: 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:3642: \"$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 @@ -3617,12 +3667,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3621: checking for $ac_func" >&5 +echo "configure:3671: 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:3699: \"$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 @@ -3679,19 +3729,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:3683: checking for LC_MESSAGES" >&5 +echo "configure:3733: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:3695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -3712,7 +3762,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:3716: checking whether NLS is requested" >&5 +echo "configure:3766: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -3732,7 +3782,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:3736: checking whether included gettext is requested" >&5 +echo "configure:3786: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -3751,17 +3801,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:3755: checking for libintl.h" >&5 +echo "configure:3805: checking for libintl.h" >&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:3765: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3815: \"$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* @@ -3778,19 +3828,19 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:3782: checking for gettext in libc" >&5 +echo "configure:3832: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:3794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else @@ -3806,7 +3856,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1 if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:3810: checking for bindtextdomain in -lintl" >&5 +echo "configure:3860: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3814,7 +3864,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3841,19 +3891,19 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:3845: checking for gettext in libintl" >&5 +echo "configure:3895: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+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:3907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libintl=yes else @@ -3881,7 +3931,7 @@ EOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3885: checking for $ac_word" >&5 +echo "configure:3935: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3915,12 +3965,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3919: checking for $ac_func" >&5 +echo "configure:3969: 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:3997: \"$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 @@ -3970,7 +4020,7 @@ done # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3974: checking for $ac_word" >&5 +echo "configure:4024: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4006,7 +4056,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4010: checking for $ac_word" >&5 +echo "configure:4060: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4038,7 +4088,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -4078,7 +4128,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4082: checking for $ac_word" >&5 +echo "configure:4132: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4112,7 +4162,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4116: checking for $ac_word" >&5 +echo "configure:4166: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4148,7 +4198,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4152: checking for $ac_word" >&5 +echo "configure:4202: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4238,7 +4288,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:4242: checking for catalogs to be installed" >&5 +echo "configure:4292: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -4266,17 +4316,17 @@ echo "configure:4242: checking for catal if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:4270: checking for linux/version.h" >&5 +echo "configure:4320: checking for linux/version.h" >&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:4280: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4330: \"$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* @@ -4354,7 +4404,7 @@ fi # 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:4358: checking for a BSD compatible install" >&5 +echo "configure:4408: 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 @@ -4437,7 +4487,7 @@ if test "x$cross_compiling" = "xno"; the EXEEXT_FOR_BUILD='$(EXEEXT)' else echo $ac_n "checking for build system executable suffix""... $ac_c" 1>&6 -echo "configure:4441: checking for build system executable suffix" >&5 +echo "configure:4491: checking for build system executable suffix" >&5 if eval "test \"`echo '$''{'bfd_cv_build_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4465,17 +4515,17 @@ for ac_hdr in stddef.h string.h strings. do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4469: checking for $ac_hdr" >&5 +echo "configure:4519: 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:4479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4529: \"$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* @@ -4505,17 +4555,17 @@ for ac_hdr in fcntl.h sys/file.h sys/tim do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4509: checking for $ac_hdr" >&5 +echo "configure:4559: 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:4519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4569: \"$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* @@ -4542,12 +4592,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:4546: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:4596: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4556,7 +4606,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:4560: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4610: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -4581,12 +4631,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/di do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:4585: checking for $ac_hdr that defines DIR" >&5 +echo "configure:4635: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -4594,7 +4644,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:4598: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4648: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -4619,7 +4669,7 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:4623: checking for opendir in -ldir" >&5 +echo "configure:4673: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4627,7 +4677,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4660,7 +4710,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:4664: checking for opendir in -lx" >&5 +echo "configure:4714: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4668,7 +4718,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4704,12 +4754,12 @@ fi for ac_func in fcntl getpagesize setitimer sysconf fdopen getuid getgid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4708: checking for $ac_func" >&5 +echo "configure:4758: 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:4786: \"$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 @@ -4767,12 +4817,12 @@ EOF esac echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6 -echo "configure:4771: checking whether strstr must be declared" >&5 +echo "configure:4821: checking whether strstr must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_strstr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4793,7 +4843,7 @@ int main() { char *(*pfn) = (char *(*)) strstr ; return 0; } EOF -if { (eval echo configure:4797: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4847: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_strstr=no else @@ -4814,12 +4864,12 @@ EOF fi echo $ac_n "checking whether malloc must be declared""... $ac_c" 1>&6 -echo "configure:4818: checking whether malloc must be declared" >&5 +echo "configure:4868: checking whether malloc must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_malloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4840,7 +4890,7 @@ int main() { char *(*pfn) = (char *(*)) malloc ; return 0; } EOF -if { (eval echo configure:4844: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_malloc=no else @@ -4861,12 +4911,12 @@ EOF fi echo $ac_n "checking whether realloc must be declared""... $ac_c" 1>&6 -echo "configure:4865: checking whether realloc must be declared" >&5 +echo "configure:4915: checking whether realloc must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_realloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4887,7 +4937,7 @@ int main() { char *(*pfn) = (char *(*)) realloc ; return 0; } EOF -if { (eval echo configure:4891: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4941: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_realloc=no else @@ -4908,12 +4958,12 @@ EOF fi echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6 -echo "configure:4912: checking whether free must be declared" >&5 +echo "configure:4962: checking whether free must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_free'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4934,7 +4984,7 @@ int main() { char *(*pfn) = (char *(*)) free ; return 0; } EOF -if { (eval echo configure:4938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4988: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_free=no else @@ -4955,12 +5005,12 @@ EOF fi echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6 -echo "configure:4959: checking whether getenv must be declared" >&5 +echo "configure:5009: checking whether getenv must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_getenv'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4981,7 +5031,7 @@ int main() { char *(*pfn) = (char *(*)) getenv ; return 0; } EOF -if { (eval echo configure:4985: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5035: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_getenv=no else @@ -5015,7 +5065,9 @@ if test "${target}" = "${host}"; then COREFILE=trad-core.lo TRAD_HEADER='"hosts/alphalinux.h"' ;; - alpha*-*-netbsd*) COREFILE=netbsd-core.lo ;; + alpha*-*-netbsd* | alpha*-*-openbsd*) + COREFILE=netbsd-core.lo + ;; alpha*-*-*) COREFILE=osf-core.lo ;; arm-*-freebsd*) COREFILE='' ;; arm-*-netbsd*) COREFILE=netbsd-core.lo ;; @@ -5160,10 +5212,35 @@ if test "${target}" = "${host}"; then COREFILE=rs6000-core.lo COREFLAG="$COREFLAG -DAIX_5_CORE -DAIX_CORE_DUMPX_CORE" ;; - rs6000-*-aix4.[4-9]* | powerpc-*-aix4.[4-9]* | \ - rs6000-*-aix4.3.[3-9]* | powerpc-*-aix4.3.[3-9]*) + rs6000-*-aix4.[3-9]* | powerpc-*-aix4.[3-9]*) COREFILE=rs6000-core.lo COREFLAG="$COREFLAG -DAIX_CORE_DUMPX_CORE" + # Not all versions of AIX with -DAIX_CORE_DUMPX_CORE + # have c_impl as a member of struct core_dumpx + echo $ac_n "checking for c_impl in struct core_dumpx""... $ac_c" 1>&6 +echo "configure:5222: checking for c_impl in struct core_dumpx" >&5 + cat > conftest.$ac_ext < +int main() { +struct core_dumpx c; c.c_impl = 0; +; return 0; } +EOF +if { (eval echo configure:5231: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cat >> confdefs.h <<\EOF +#define HAVE_ST_C_IMPL 1 +EOF + + echo "$ac_t""yes" 1>&6 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + echo "$ac_t""no" 1>&6 +fi +rm -f conftest* ;; rs6000-*-aix4*) COREFILE=rs6000-core.lo ;; rs6000-*-*) COREFILE=rs6000-core.lo ;; @@ -5175,7 +5252,7 @@ if test "${target}" = "${host}"; then powerpc-*-*bsd*) COREFILE=netbsd-core.lo ;; s390*-*-*) COREFILE=trad-core.lo ;; sh*-*-netbsd*) COREFILE=netbsd-core.lo ;; - sparc-*-netbsd* | sparc-*-openbsd*) + sparc-*-netbsd* | sparc*-*-openbsd*) COREFILE=netbsd-core.lo ;; tahoe-*-*) @@ -5217,17 +5294,17 @@ if test "${target}" = "${host}"; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5221: checking for $ac_hdr" >&5 +echo "configure:5298: 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:5231: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5308: \"$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* @@ -5255,12 +5332,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:5259: checking for prstatus_t in sys/procfs.h" >&5 +echo "configure:5336: 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:5350: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prstatus_t=yes else @@ -5291,12 +5368,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:5295: checking for prstatus32_t in sys/procfs.h" >&5 +echo "configure:5372: 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:5386: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prstatus32_t=yes else @@ -5327,12 +5404,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:5331: checking for prstatus_t.pr_who in sys/procfs.h" >&5 +echo "configure:5408: 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:5422: \"$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 @@ -5363,12 +5440,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:5367: checking for prstatus32_t.pr_who in sys/procfs.h" >&5 +echo "configure:5444: 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:5458: \"$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 @@ -5399,12 +5476,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:5403: checking for pstatus_t in sys/procfs.h" >&5 +echo "configure:5480: 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:5494: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pstatus_t=yes else @@ -5435,12 +5512,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:5439: checking for pxstatus_t in sys/procfs.h" >&5 +echo "configure:5516: 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:5530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pxstatus_t=yes else @@ -5471,12 +5548,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:5475: checking for pstatus32_t in sys/procfs.h" >&5 +echo "configure:5552: 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:5566: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pstatus32_t=yes else @@ -5507,12 +5584,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:5511: checking for prpsinfo_t in sys/procfs.h" >&5 +echo "configure:5588: 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:5602: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prpsinfo_t=yes else @@ -5543,12 +5620,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:5547: checking for prpsinfo32_t in sys/procfs.h" >&5 +echo "configure:5624: 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:5638: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prpsinfo32_t=yes else @@ -5579,12 +5656,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:5583: checking for psinfo_t in sys/procfs.h" >&5 +echo "configure:5660: 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:5674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_psinfo_t=yes else @@ -5615,12 +5692,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:5619: checking for psinfo32_t in sys/procfs.h" >&5 +echo "configure:5696: 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:5710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_psinfo32_t=yes else @@ -5651,12 +5728,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:5655: checking for lwpstatus_t in sys/procfs.h" >&5 +echo "configure:5732: 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:5746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_lwpstatus_t=yes else @@ -5687,12 +5764,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:5691: checking for lwpxstatus_t in sys/procfs.h" >&5 +echo "configure:5768: 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:5782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_lwpxstatus_t=yes else @@ -5723,12 +5800,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:5727: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5 +echo "configure:5804: 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:5818: \"$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 @@ -5759,12 +5836,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:5763: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5 +echo "configure:5840: 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:5854: \"$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 @@ -5795,12 +5872,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:5799: checking for win32_pstatus_t in sys/procfs.h" >&5 +echo "configure:5876: 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:5890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_win32_pstatus_t=yes else @@ -6223,10 +6300,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:6227: checking for gcc version with buggy 64-bit support" >&5 +echo "configure:6304: 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:6275: checking for $ac_hdr" >&5 +echo "configure:6352: 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:6285: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6362: \"$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* @@ -6310,12 +6387,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6314: checking for $ac_func" >&5 +echo "configure:6391: 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:6419: \"$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 @@ -6363,7 +6440,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:6367: checking for working mmap" >&5 +echo "configure:6444: 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 @@ -6371,7 +6448,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext < #include +#if HAVE_SYS_TYPES_H +# include +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#if HAVE_SYS_STAT_H +# include +#endif + +#if HAVE_UNISTD_H +# include +#endif + /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE -# ifdef HAVE_UNISTD_H -# include -# endif /* Assume that all systems that can run configure have sys/param.h. */ # ifndef HAVE_SYS_PARAM_H @@ -6511,7 +6601,7 @@ main() } EOF -if { (eval echo configure:6515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6605: \"$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 @@ -6536,12 +6626,12 @@ fi for ac_func in madvise mprotect do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6540: checking for $ac_func" >&5 +echo "configure:6630: 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:6658: \"$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 @@ -6770,6 +6860,10 @@ s%@WARN_CFLAGS@%$WARN_CFLAGS%g s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g s%@MAINT@%$MAINT%g +s%@INSTALL_LIBBFD_TRUE@%$INSTALL_LIBBFD_TRUE%g +s%@INSTALL_LIBBFD_FALSE@%$INSTALL_LIBBFD_FALSE%g +s%@bfdlibdir@%$bfdlibdir%g +s%@bfdincludedir@%$bfdincludedir%g s%@CPP@%$CPP%g s%@ALLOCA@%$ALLOCA%g s%@USE_NLS@%$USE_NLS%g diff -uprN binutils-2.12.90.0.7/bfd/configure.in binutils-2.12.90.0.9/bfd/configure.in --- binutils-2.12.90.0.7/bfd/configure.in Tue Apr 23 11:56:30 2002 +++ binutils-2.12.90.0.9/bfd/configure.in Sun May 26 09:57:12 2002 @@ -7,7 +7,7 @@ AC_INIT(libbfd.c) AC_CANONICAL_SYSTEM AC_ISC_POSIX -AM_INIT_AUTOMAKE(bfd, 2.12.90.0.7) +AM_INIT_AUTOMAKE(bfd, 2.12.90.0.9) # Uncomment the next line to remove the date from the reported bfd version #is_release=y @@ -98,6 +98,7 @@ if test -z "$target" ; then fi AM_MAINTAINER_MODE +AM_INSTALL_LIBBFD AC_EXEEXT host64=false @@ -162,7 +163,9 @@ if test "${target}" = "${host}"; then COREFILE=trad-core.lo TRAD_HEADER='"hosts/alphalinux.h"' ;; - alpha*-*-netbsd*) COREFILE=netbsd-core.lo ;; + alpha*-*-netbsd* | alpha*-*-openbsd*) + COREFILE=netbsd-core.lo + ;; alpha*-*-*) COREFILE=osf-core.lo ;; arm-*-freebsd*) COREFILE='' ;; arm-*-netbsd*) COREFILE=netbsd-core.lo ;; @@ -332,11 +335,18 @@ changequote([,])dnl COREFLAG="$COREFLAG -DAIX_5_CORE -DAIX_CORE_DUMPX_CORE" ;; changequote(,)dnl - rs6000-*-aix4.[4-9]* | powerpc-*-aix4.[4-9]* | \ - rs6000-*-aix4.3.[3-9]* | powerpc-*-aix4.3.[3-9]*) + rs6000-*-aix4.[3-9]* | powerpc-*-aix4.[3-9]*) changequote([,])dnl COREFILE=rs6000-core.lo COREFLAG="$COREFLAG -DAIX_CORE_DUMPX_CORE" + # Not all versions of AIX with -DAIX_CORE_DUMPX_CORE + # have c_impl as a member of struct core_dumpx + AC_MSG_CHECKING([for c_impl in struct core_dumpx]) + AC_TRY_COMPILE([#include ], + [struct core_dumpx c; c.c_impl = 0;], + [AC_DEFINE(HAVE_ST_C_IMPL, 1, + [Define if struct core_dumpx has member c_impl]) + AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)]) ;; rs6000-*-aix4*) COREFILE=rs6000-core.lo ;; rs6000-*-*) COREFILE=rs6000-core.lo ;; @@ -348,7 +358,7 @@ changequote([,])dnl powerpc-*-*bsd*) COREFILE=netbsd-core.lo ;; s390*-*-*) COREFILE=trad-core.lo ;; sh*-*-netbsd*) COREFILE=netbsd-core.lo ;; - sparc-*-netbsd* | sparc-*-openbsd*) + sparc-*-netbsd* | sparc*-*-openbsd*) COREFILE=netbsd-core.lo ;; tahoe-*-*) diff -uprN binutils-2.12.90.0.7/bfd/cpu-mips.c binutils-2.12.90.0.9/bfd/cpu-mips.c --- binutils-2.12.90.0.7/bfd/cpu-mips.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/cpu-mips.c Thu May 23 15:10:10 2002 @@ -37,11 +37,8 @@ mips_compatible (a, b) if (a->arch != b->arch) return NULL; - if (a->mach > b->mach) - return a; - - if (b->mach > a->mach) - return b; + /* Machine compatibility is checked in + _bfd_mips_elf_merge_private_bfd_data. */ return a; } diff -uprN binutils-2.12.90.0.7/bfd/doc/ChangeLog binutils-2.12.90.0.9/bfd/doc/ChangeLog --- binutils-2.12.90.0.7/bfd/doc/ChangeLog Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/bfd/doc/ChangeLog Sun May 26 09:57:12 2002 @@ -1,3 +1,7 @@ +2002-05-25 Alan Modra + + * chew.c: Use #include "" instead of <> for local header files. + 2002-04-20 Alan Modra * Makefile.in: Regenerate. diff -uprN binutils-2.12.90.0.7/bfd/doc/chew.c binutils-2.12.90.0.9/bfd/doc/chew.c --- binutils-2.12.90.0.7/bfd/doc/chew.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/bfd/doc/chew.c Sun May 26 09:57:12 2002 @@ -82,7 +82,7 @@ Foundation, Inc., 59 Temple Place - Suit Foo. */ -#include +#include "ansidecl.h" #include "sysdep.h" #include #include diff -uprN binutils-2.12.90.0.7/bfd/dwarf2.c binutils-2.12.90.0.9/bfd/dwarf2.c --- binutils-2.12.90.0.7/bfd/dwarf2.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/bfd/dwarf2.c Thu May 23 15:10:10 2002 @@ -42,7 +42,7 @@ struct line_head { bfd_vma total_length; unsigned short version; - unsigned int prologue_length; + bfd_vma prologue_length; unsigned char minimum_instruction_length; unsigned char default_is_stmt; int line_base; @@ -225,7 +225,7 @@ static bfd_vma read_address PARAMS ((str static struct abbrev_info *lookup_abbrev PARAMS ((unsigned int, struct abbrev_info **)); static struct abbrev_info **read_abbrevs - PARAMS ((bfd *, unsigned int, struct dwarf2_debug *)); + PARAMS ((bfd *, bfd_vma, struct dwarf2_debug *)); static char *read_attribute PARAMS ((struct attribute *, struct attr_abbrev *, struct comp_unit *, char *)); @@ -396,8 +396,8 @@ read_indirect_string (unit, buf, bytes_r if (offset >= stash->dwarf_str_size) { - (*_bfd_error_handler) (_("Dwarf Error: DW_FORM_strp offset (%u) greater than or equal to .debug_str size (%u)."), - offset, stash->dwarf_str_size); + (*_bfd_error_handler) (_("Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)."), + (unsigned long) offset, stash->dwarf_str_size); bfd_set_error (bfd_error_bad_value); return NULL; } @@ -523,7 +523,7 @@ lookup_abbrev (number,abbrevs) static struct abbrev_info** read_abbrevs (abfd, offset, stash) bfd * abfd; - unsigned int offset; + bfd_vma offset; struct dwarf2_debug *stash; { struct abbrev_info **abbrevs; @@ -557,8 +557,8 @@ read_abbrevs (abfd, offset, stash) if (offset >= stash->dwarf_abbrev_size) { - (*_bfd_error_handler) (_("Dwarf Error: Abbrev offset (%u) greater than or equal to .debug_abbrev size (%u)."), - offset, stash->dwarf_abbrev_size); + (*_bfd_error_handler) (_("Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)."), + (unsigned long) offset, stash->dwarf_abbrev_size); bfd_set_error (bfd_error_bad_value); return 0; } @@ -754,7 +754,7 @@ read_attribute_value (attr, form, unit, info_ptr = read_attribute_value (attr, form, unit, info_ptr); break; default: - (*_bfd_error_handler) (_("Dwarf Error: Invalid or unhandled FORM value: %d."), + (*_bfd_error_handler) (_("Dwarf Error: Invalid or unhandled FORM value: %u."), form); bfd_set_error (bfd_error_bad_value); } @@ -958,7 +958,7 @@ decode_line_info (unit, stash) below. */ if (unit->line_offset >= stash->dwarf_line_size) { - (*_bfd_error_handler) (_("Dwarf Error: Line offset (%u) greater than or equal to .debug_line size (%u)."), + (*_bfd_error_handler) (_("Dwarf Error: Line offset (%lu) greater than or equal to .debug_line size (%lu)."), unit->line_offset, stash->dwarf_line_size); bfd_set_error (bfd_error_bad_value); return 0; @@ -1345,7 +1345,7 @@ scan_unit_for_functions (unit) abbrev = lookup_abbrev (abbrev_number,unit->abbrevs); if (! abbrev) { - (*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %d."), + (*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %u."), abbrev_number); bfd_set_error (bfd_error_bad_value); return false; @@ -1486,9 +1486,9 @@ parse_comp_unit (abfd, stash, unit_lengt unsigned int offset_size; { struct comp_unit* unit; - unsigned short version; - unsigned int abbrev_offset = 0; - unsigned char addr_size; + unsigned int version; + bfd_vma abbrev_offset = 0; + unsigned int addr_size; struct abbrev_info** abbrevs; unsigned int abbrev_number, bytes_read, i; struct abbrev_info *abbrev; @@ -1517,7 +1517,7 @@ parse_comp_unit (abfd, stash, unit_lengt if (version != 2) { - (*_bfd_error_handler) (_("Dwarf Error: found dwarf version '%hu', this reader only handles version 2 information."), version); + (*_bfd_error_handler) (_("Dwarf Error: found dwarf version '%u', this reader only handles version 2 information."), version); bfd_set_error (bfd_error_bad_value); return 0; } @@ -1526,7 +1526,7 @@ parse_comp_unit (abfd, stash, unit_lengt { (*_bfd_error_handler) (_("Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'."), addr_size, - sizeof (bfd_vma)); + (unsigned int) sizeof (bfd_vma)); bfd_set_error (bfd_error_bad_value); return 0; } @@ -1547,7 +1547,7 @@ parse_comp_unit (abfd, stash, unit_lengt info_ptr += bytes_read; if (! abbrev_number) { - (*_bfd_error_handler) (_("Dwarf Error: Bad abbrev number: %d."), + (*_bfd_error_handler) (_("Dwarf Error: Bad abbrev number: %u."), abbrev_number); bfd_set_error (bfd_error_bad_value); return 0; @@ -1556,7 +1556,7 @@ parse_comp_unit (abfd, stash, unit_lengt abbrev = lookup_abbrev (abbrev_number, abbrevs); if (! abbrev) { - (*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %d."), + (*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %u."), abbrev_number); bfd_set_error (bfd_error_bad_value); return 0; diff -uprN binutils-2.12.90.0.7/bfd/elf-bfd.h binutils-2.12.90.0.9/bfd/elf-bfd.h --- binutils-2.12.90.0.7/bfd/elf-bfd.h Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/elf-bfd.h Thu May 23 15:10:10 2002 @@ -236,9 +236,18 @@ enum elf_link_info_type ELF_INFO_TYPE_MERGE, ELF_INFO_TYPE_EH_FRAME, ELF_INFO_TYPE_EH_FRAME_HDR, + ELF_INFO_TYPE_JUST_SYMS, ELF_INFO_TYPE_LAST }; +/* 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 @@ -291,6 +300,10 @@ struct elf_link_hash_table /* A linked list of DT_RPATH/DT_RUNPATH names found in dynamic 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; + /* A linked list of BFD's loaded in the link. */ struct elf_link_loaded_list *loaded; }; @@ -713,7 +726,7 @@ struct elf_backend_data /* Emit relocations. Overrides default routine for emitting relocs, except during a relocatable link, or if all relocs are being emitted. */ - void (*elf_backend_emit_relocs) + boolean (*elf_backend_emit_relocs) PARAMS ((bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *)); /* Count relocations. Not called for relocatable links @@ -812,6 +825,11 @@ struct elf_backend_data section. */ unsigned default_use_rela_p : 1; + /* Set if RELA relocations for a relocatable link can be handled by + generic code. Backends that set this flag need do nothing in the + backend relocate_section routine for relocatable linking. */ + unsigned rela_normal : 1; + /* True if addresses "naturally" sign extend. This is used when swapping in from Elf32 when BFD64. */ unsigned sign_extend_vma : 1; @@ -911,7 +929,8 @@ struct bfd_elf_section_data #define elf_discarded_section(sec) \ (!bfd_is_abs_section(sec) \ && bfd_is_abs_section((sec)->output_section) \ - && elf_section_data (sec)->sec_info_type != ELF_INFO_TYPE_MERGE) + && elf_section_data (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \ + && elf_section_data (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS) #define get_elf_backend_data(abfd) \ ((struct elf_backend_data *) (abfd)->xvec->backend_data) @@ -1229,10 +1248,10 @@ extern boolean _bfd_elf_link_hash_table_ const char *))); extern boolean _bfd_elf_slurp_version_tables PARAMS ((bfd *)); - extern boolean _bfd_elf_merge_sections PARAMS ((bfd *, struct bfd_link_info *)); - +extern void _bfd_elf_link_just_syms + PARAMS ((asection *, struct bfd_link_info *)); extern boolean _bfd_elf_copy_private_symbol_data PARAMS ((bfd *, asymbol *, bfd *, asymbol *)); extern boolean _bfd_elf_copy_private_section_data diff -uprN binutils-2.12.90.0.7/bfd/elf-eh-frame.c binutils-2.12.90.0.9/bfd/elf-eh-frame.c --- binutils-2.12.90.0.7/bfd/elf-eh-frame.c Mon Apr 22 19:56:51 2002 +++ binutils-2.12.90.0.9/bfd/elf-eh-frame.c Thu May 23 15:10:10 2002 @@ -787,7 +787,7 @@ _bfd_elf_maybe_strip_eh_frame_hdr (info) struct eh_frame_hdr_info *hdr_info; sec = bfd_get_section_by_name (elf_hash_table (info)->dynobj, ".eh_frame_hdr"); - if (sec == NULL) + if (sec == NULL || bfd_is_abs_section (sec->output_section)) return true; hdr_info @@ -805,7 +805,7 @@ _bfd_elf_maybe_strip_eh_frame_hdr (info) /* Count only sections which have at least a single CIE or FDE. There cannot be any CIE or FDE <= 8 bytes. */ o = bfd_get_section_by_name (abfd, ".eh_frame"); - if (o && o->_raw_size > 8) + if (o && o->_raw_size > 8 && !bfd_is_abs_section (o->output_section)) break; } diff -uprN binutils-2.12.90.0.7/bfd/elf-m10200.c binutils-2.12.90.0.9/bfd/elf-m10200.c --- binutils-2.12.90.0.7/bfd/elf-m10200.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/bfd/elf-m10200.c Thu May 23 15:10:10 2002 @@ -1,5 +1,5 @@ /* Matsushita 10200 specific support for 32-bit ELF - Copyright 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -347,6 +347,9 @@ mn10200_elf_relocate_section (output_bfd struct elf_link_hash_entry **sym_hashes; Elf_Internal_Rela *rel, *relend; + if (info->relocateable) + return true; + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); @@ -367,26 +370,6 @@ mn10200_elf_relocate_section (output_bfd r_type = ELF32_R_TYPE (rel->r_info); howto = elf_mn10200_howto_table + r_type; - if (info->relocateable) - { - /* This is a relocateable 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; - } - } - - continue; - } - - /* This is a final link. */ h = NULL; sym = NULL; sec = NULL; @@ -1572,6 +1555,7 @@ mn10200_elf_get_relocated_section_conten #define ELF_MACHINE_ALT1 EM_CYGNUS_MN10200 #define ELF_MAXPAGESIZE 0x1000 +#define elf_backend_rela_normal 1 #define elf_info_to_howto mn10200_info_to_howto #define elf_info_to_howto_rel 0 #define elf_backend_relocate_section mn10200_elf_relocate_section diff -uprN binutils-2.12.90.0.7/bfd/elf-m10300.c binutils-2.12.90.0.9/bfd/elf-m10300.c --- binutils-2.12.90.0.7/bfd/elf-m10300.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/elf-m10300.c Thu May 23 15:10:10 2002 @@ -553,6 +553,9 @@ mn10300_elf_relocate_section (output_bfd struct elf32_mn10300_link_hash_entry **sym_hashes; Elf_Internal_Rela *rel, *relend; + if (info->relocateable) + return true; + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = (struct elf32_mn10300_link_hash_entry **) (elf_sym_hashes (input_bfd)); @@ -579,26 +582,6 @@ mn10300_elf_relocate_section (output_bfd || r_type == R_MN10300_GNU_VTENTRY) continue; - if (info->relocateable) - { - /* This is a relocateable 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; - } - } - - continue; - } - - /* This is a final link. */ h = NULL; sym = NULL; sec = NULL; @@ -3101,6 +3084,7 @@ _bfd_mn10300_elf_merge_private_bfd_data #define elf_info_to_howto mn10300_info_to_howto #define elf_info_to_howto_rel 0 #define elf_backend_can_gc_sections 1 +#define elf_backend_rela_normal 1 #define elf_backend_check_relocs mn10300_elf_check_relocs #define elf_backend_gc_mark_hook mn10300_elf_gc_mark_hook #define elf_backend_relocate_section mn10300_elf_relocate_section diff -uprN binutils-2.12.90.0.7/bfd/elf.c binutils-2.12.90.0.9/bfd/elf.c --- binutils-2.12.90.0.7/bfd/elf.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/bfd/elf.c Thu May 23 15:10:10 2002 @@ -591,6 +591,8 @@ _bfd_elf_make_section_from_shdr (abfd, h if (hdr->sh_flags & SHF_GROUP) if (!setup_group (abfd, hdr, newsect)) return false; + if ((hdr->sh_flags & SHF_TLS) != 0) + flags |= SEC_THREAD_LOCAL; /* The debugging sections appear to be recognized only by name, not any sort of flag. */ @@ -814,6 +816,19 @@ _bfd_elf_merge_sections (abfd, info) merge_sections_remove_hook); return true; } + +void +_bfd_elf_link_just_syms (sec, info) + asection *sec; + struct bfd_link_info *info; +{ + sec->output_section = bfd_abs_section_ptr; + sec->output_offset = sec->vma; + if (!is_elf_hash_table (info)) + return; + + elf_section_data (sec)->sec_info_type = ELF_INFO_TYPE_JUST_SYMS; +} /* Copy the program header and other data from one object module to another. */ @@ -870,6 +885,7 @@ _bfd_elf_print_private_bfd_data (abfd, f case PT_NOTE: pt = "NOTE"; break; case PT_SHLIB: pt = "SHLIB"; break; case PT_PHDR: pt = "PHDR"; break; + case PT_TLS: pt = "TLS"; break; case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break; default: sprintf (buf, "0x%lx", p->p_type); pt = buf; break; } @@ -2262,6 +2278,8 @@ elf_fake_sections (abfd, asect, failedpt } if (elf_group_name (asect) != NULL) this_hdr->sh_flags |= SHF_GROUP; + if ((asect->flags & SEC_THREAD_LOCAL) != 0) + this_hdr->sh_flags |= SHF_TLS; /* Check for processor-specific section types. */ if (bed->elf_backend_fake_sections @@ -2944,6 +2962,8 @@ map_sections_to_segments (abfd) asection **hdrpp; boolean phdr_in_segment = true; boolean writable; + int tls_count = 0; + asection *first_tls = NULL; asection *dynsec, *eh_frame_hdr; bfd_size_type amt; @@ -3182,6 +3202,39 @@ map_sections_to_segments (abfd) *pm = m; pm = &m->next; } + if (s->flags & SEC_THREAD_LOCAL) + { + if (! tls_count) + first_tls = s; + tls_count++; + } + } + + /* If there are any SHF_TLS output sections, add PT_TLS segment. */ + if (tls_count > 0) + { + int i; + + amt = sizeof (struct elf_segment_map); + amt += (tls_count - 1) * sizeof (asection *); + m = (struct elf_segment_map *) bfd_zalloc (abfd, amt); + if (m == NULL) + goto error_return; + m->next = NULL; + m->p_type = PT_TLS; + m->count = tls_count; + /* Mandated PF_R. */ + m->p_flags = PF_R; + m->p_flags_valid = 1; + for (i = 0; i < tls_count; ++i) + { + BFD_ASSERT (first_tls->flags & SEC_THREAD_LOCAL); + m->sections[i] = first_tls; + first_tls = first_tls->next; + } + + *pm = m; + pm = &m->next; } /* If there is a .eh_frame_hdr section, throw in a PT_GNU_EH_FRAME @@ -3606,6 +3659,20 @@ Error: First section in segment (%s) sta if ((flags & SEC_LOAD) != 0) p->p_filesz += sec->_raw_size; + if (p->p_type == PT_TLS + && sec->_raw_size == 0 + && (sec->flags & SEC_HAS_CONTENTS) == 0) + { + struct bfd_link_order *o; + bfd_vma tbss_size = 0; + + for (o = sec->link_order_head; o != NULL; o = o->next) + if (tbss_size < o->offset + o->size) + tbss_size = o->offset + o->size; + + p->p_memsz += tbss_size; + } + if (align > p->p_align && (p->p_type != PT_LOAD || (abfd->flags & D_PAGED) == 0)) p->p_align = align; @@ -3740,6 +3807,16 @@ get_program_header_size (abfd) } } + for (s = abfd->sections; s != NULL; s = s->next) + { + if (s->flags & SEC_THREAD_LOCAL) + { + /* We need a PT_TLS segment. */ + ++segs; + break; + } + } + /* Let the backend count up any program headers it might need. */ if (bed->elf_backend_additional_program_headers) { @@ -5033,13 +5110,18 @@ swap_out_syms (abfd, sttp, relocatable_p sym.st_shndx = shndx; } - if ((flags & BSF_FUNCTION) != 0) + if ((flags & BSF_THREAD_LOCAL) != 0) + type = STT_TLS; + else if ((flags & BSF_FUNCTION) != 0) type = STT_FUNC; else if ((flags & BSF_OBJECT) != 0) type = STT_OBJECT; else type = STT_NOTYPE; + if (syms[idx]->section->flags & SEC_THREAD_LOCAL) + type = STT_TLS; + /* Processor-specific types */ if (type_ptr != NULL && bed->elf_backend_get_symbol_type) diff -uprN binutils-2.12.90.0.7/bfd/elf32-arm.h binutils-2.12.90.0.9/bfd/elf32-arm.h --- binutils-2.12.90.0.7/bfd/elf32-arm.h Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/elf32-arm.h Thu May 23 15:10:10 2002 @@ -1390,7 +1390,7 @@ elf32_arm_final_link_relocate (howto, in boolean overflow = false; bfd_vma upper_insn = bfd_get_16 (input_bfd, hit_data); bfd_vma lower_insn = bfd_get_16 (input_bfd, hit_data + 2); - bfd_signed_vma reloc_signed_max = (1 << (howto->bitsize - 1)) - 1; + bfd_signed_vma reloc_signed_max = ((1 << (howto->bitsize - 1)) - 1) >> howto->rightshift; bfd_signed_vma reloc_signed_min = ~ reloc_signed_max; bfd_vma check; bfd_signed_vma signed_check; @@ -1471,22 +1471,19 @@ elf32_arm_final_link_relocate (howto, in if (signed_check > reloc_signed_max || signed_check < reloc_signed_min) overflow = true; - /* Put RELOCATION back into the insn. */ - upper_insn = (upper_insn & ~(bfd_vma) 0x7ff) | ((relocation >> 12) & 0x7ff); - lower_insn = (lower_insn & ~(bfd_vma) 0x7ff) | ((relocation >> 1) & 0x7ff); - #ifndef OLD_ARM_ABI if (r_type == R_ARM_THM_XPC22 && ((lower_insn & 0x1800) == 0x0800)) - /* Remove bit zero of the adjusted offset. Bit zero can only be - set if the upper insn is at a half-word boundary, since the - destination address, an ARM instruction, must always be on a - word boundary. The semantics of the BLX (1) instruction, however, - are that bit zero in the offset must always be zero, and the - corresponding bit one in the target address will be set from bit - one of the source address. */ - lower_insn &= ~1; + /* For a BLX instruction, make sure that the relocation is rounded up + to a word boundary. This follows the semantics of the instruction + which specifies that bit 1 of the target address will come from bit + 1 of the base address. */ + relocation = (relocation + 2) & ~ 3; #endif + /* Put RELOCATION back into the insn. */ + upper_insn = (upper_insn & ~(bfd_vma) 0x7ff) | ((relocation >> 12) & 0x7ff); + lower_insn = (lower_insn & ~(bfd_vma) 0x7ff) | ((relocation >> 1) & 0x7ff); + /* Put the relocated value back in the object file: */ bfd_put_16 (input_bfd, upper_insn, hit_data); bfd_put_16 (input_bfd, lower_insn, hit_data + 2); @@ -1830,6 +1827,11 @@ elf32_arm_relocate_section (output_bfd, Elf_Internal_Rela * relend; const char * name; +#ifndef USE_REL + if (info->relocateable) + return true; +#endif + symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); @@ -1862,6 +1864,7 @@ elf32_arm_relocate_section (output_bfd, #endif howto = bfd_reloc.howto; +#ifdef USE_REL if (info->relocateable) { /* This is a relocateable link. We don't have to change @@ -1874,19 +1877,16 @@ elf32_arm_relocate_section (output_bfd, if (ELF_ST_TYPE (sym->st_info) == STT_SECTION) { sec = local_sections[r_symndx]; -#ifdef USE_REL arm_add_to_rel (input_bfd, contents + rel->r_offset, howto, (bfd_signed_vma) (sec->output_offset + sym->st_value)); -#else - rel->r_addend += (sec->output_offset + sym->st_value); -#endif } } continue; } +#endif /* This is a final link. */ h = NULL; @@ -3637,6 +3637,9 @@ elf32_arm_reloc_type_class (rela) #define elf_backend_plt_readonly 1 #define elf_backend_want_got_plt 1 #define elf_backend_want_plt_sym 0 +#ifndef USE_REL +#define elf_backend_rela_normal 1 +#endif #define elf_backend_got_header_size 12 #define elf_backend_plt_header_size PLT_ENTRY_SIZE diff -uprN binutils-2.12.90.0.7/bfd/elf32-fr30.c binutils-2.12.90.0.9/bfd/elf32-fr30.c --- binutils-2.12.90.0.7/bfd/elf32-fr30.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/bfd/elf32-fr30.c Thu May 23 15:10:10 2002 @@ -1,5 +1,5 @@ /* FR30-specific support for 32-bit ELF. - Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -517,6 +517,9 @@ fr30_elf_relocate_section (output_bfd, i Elf_Internal_Rela * rel; Elf_Internal_Rela * relend; + if (info->relocateable) + return true; + symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); relend = relocs + input_section->reloc_count; @@ -541,27 +544,6 @@ fr30_elf_relocate_section (output_bfd, i r_symndx = ELF32_R_SYM (rel->r_info); - if (info->relocateable) - { - /* This is a relocateable 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; - } - } - - continue; - } - - /* This is a final link. */ howto = fr30_elf_howto_table + ELF32_R_TYPE (rel->r_info); h = NULL; sym = NULL; @@ -806,6 +788,7 @@ fr30_elf_check_relocs (abfd, info, sec, #define elf_backend_check_relocs fr30_elf_check_relocs #define elf_backend_can_gc_sections 1 +#define elf_backend_rela_normal 1 #define bfd_elf32_bfd_reloc_type_lookup fr30_reloc_type_lookup diff -uprN binutils-2.12.90.0.7/bfd/elf32-hppa.c binutils-2.12.90.0.9/bfd/elf32-hppa.c --- binutils-2.12.90.0.7/bfd/elf32-hppa.c Tue Apr 23 11:56:30 2002 +++ binutils-2.12.90.0.9/bfd/elf32-hppa.c Thu May 23 15:10:10 2002 @@ -236,6 +236,12 @@ struct elf32_hppa_link_hash_table { asection *stub_sec; } *stub_group; + /* Assorted information used by elf32_hppa_size_stubs. */ + unsigned int bfd_count; + int top_index; + asection **input_list; + Elf_Internal_Sym **all_local_syms; + /* Short-cuts to get to dynamic linker sections. */ asection *sgot; asection *srelgot; @@ -359,6 +365,12 @@ static boolean clobber_millicode_symbols static boolean elf32_hppa_size_dynamic_sections PARAMS ((bfd *, struct bfd_link_info *)); +static void group_sections + PARAMS ((struct elf32_hppa_link_hash_table *, bfd_size_type, boolean)); + +static int get_local_syms + PARAMS ((bfd *, bfd *, struct bfd_link_info *)); + static boolean elf32_hppa_final_link PARAMS ((bfd *, struct bfd_link_info *)); @@ -2544,57 +2556,25 @@ elf32_hppa_size_dynamic_sections (output /* External entry points for sizing and building linker stubs. */ -/* Determine and set the size of the stub section for a final link. +/* Set up various things so that we can make a list of input sections + for each output section included in the link. Returns -1 on error, + 0 when no stubs will be needed, and 1 on success. */ - The basic idea here is to examine all the relocations looking for - PC-relative calls to a target that is unreachable with a "bl" - instruction. */ - -boolean -elf32_hppa_size_stubs (output_bfd, stub_bfd, info, multi_subspace, group_size, - add_stub_section, layout_sections_again) +int +elf32_hppa_setup_section_lists (output_bfd, info) bfd *output_bfd; - bfd *stub_bfd; struct bfd_link_info *info; - boolean multi_subspace; - bfd_signed_vma group_size; - asection * (*add_stub_section) PARAMS ((const char *, asection *)); - void (*layout_sections_again) PARAMS ((void)); { bfd *input_bfd; + unsigned int bfd_count; + int top_id, top_index; asection *section; asection **input_list, **list; - Elf_Internal_Sym *local_syms, **all_local_syms; - unsigned int bfd_indx, bfd_count; - int top_id, top_index; - struct elf32_hppa_link_hash_table *htab; - bfd_size_type stub_group_size; - boolean stubs_always_before_branch; - boolean stub_changed = 0; - boolean ret = 0; bfd_size_type amt; + struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info); - htab = hppa_link_hash_table (info); - - /* Stash our params away. */ - htab->stub_bfd = stub_bfd; - htab->multi_subspace = multi_subspace; - htab->add_stub_section = add_stub_section; - htab->layout_sections_again = layout_sections_again; - stubs_always_before_branch = group_size < 0; - if (group_size < 0) - stub_group_size = -group_size; - else - stub_group_size = group_size; - if (stub_group_size == 1) - { - /* Default values. */ - stub_group_size = 7680000; - if (htab->has_17bit_branch || htab->multi_subspace) - stub_group_size = 240000; - if (htab->has_12bit_branch) - stub_group_size = 7500; - } + 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; @@ -2610,16 +2590,14 @@ elf32_hppa_size_stubs (output_bfd, stub_ top_id = section->id; } } + htab->bfd_count = bfd_count; amt = sizeof (struct map_stub) * (top_id + 1); htab->stub_group = (struct map_stub *) bfd_zmalloc (amt); if (htab->stub_group == NULL) - return false; + return -1; - /* Make a list of input sections for each output section included in - the link. - - We can't use output_bfd->section_count here to find the top output + /* We can't use output_bfd->section_count here to find the top output section index as some sections may have been removed, and _bfd_strip_section_from_output doesn't renumber the indices. */ for (section = output_bfd->sections, top_index = 0; @@ -2630,10 +2608,12 @@ elf32_hppa_size_stubs (output_bfd, stub_ top_index = section->index; } + htab->top_index = top_index; amt = sizeof (asection *) * (top_index + 1); input_list = (asection **) bfd_malloc (amt); + htab->input_list = input_list; if (input_list == NULL) - return false; + return -1; /* For sections we aren't interested in, mark their entries with a value we can check later. */ @@ -2650,40 +2630,50 @@ elf32_hppa_size_stubs (output_bfd, stub_ input_list[section->index] = NULL; } - /* Now actually build the lists. */ - for (input_bfd = info->input_bfds; - input_bfd != NULL; - input_bfd = input_bfd->link_next) + return 1; +} + +/* The linker repeatedly calls this function for each input section, + in the order that input sections are linked into output sections. + Build lists of input sections to determine groupings between which + we may insert linker stubs. */ + +void +elf32_hppa_next_input_section (info, isec) + struct bfd_link_info *info; + asection *isec; +{ + struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info); + + if (isec->output_section->index <= htab->top_index) { - for (section = input_bfd->sections; - section != NULL; - section = section->next) + asection **list = htab->input_list + isec->output_section->index; + if (*list != bfd_abs_section_ptr) { - if (section->output_section != NULL - && section->output_section->owner == output_bfd - && section->output_section->index <= top_index) - { - list = input_list + section->output_section->index; - if (*list != bfd_abs_section_ptr) - { - /* Steal the link_sec pointer for our list. */ + /* Steal the link_sec pointer for our list. */ #define PREV_SEC(sec) (htab->stub_group[(sec)->id].link_sec) - /* This happens to make the list in reverse order, - which is what we want. */ - PREV_SEC (section) = *list; - *list = section; - } - } + /* This happens to make the list in reverse order, + which is what we want. */ + PREV_SEC (isec) = *list; + *list = isec; } } +} - /* See whether we can group stub sections together. Grouping stub - sections may result in fewer stubs. More importantly, we need to - put all .init* and .fini* stubs at the beginning of the .init or - .fini output sections respectively, because glibc splits the - _init and _fini functions into multiple parts. Putting a stub in - the middle of a function is not a good idea. */ - list = input_list + top_index; +/* See whether we can group stub sections together. Grouping stub + sections may result in fewer stubs. More importantly, we need to + put all .init* and .fini* stubs at the beginning of the .init or + .fini output sections respectively, because glibc splits the + _init and _fini functions into multiple parts. Putting a stub in + the middle of a function is not a good idea. */ + +static void +group_sections (htab, stub_group_size, stubs_always_before_branch) + struct elf32_hppa_link_hash_table *htab; + bfd_size_type stub_group_size; + boolean stubs_always_before_branch; +{ + asection **list = htab->input_list + htab->top_index; do { asection *tail = *list; @@ -2743,22 +2733,39 @@ elf32_hppa_size_stubs (output_bfd, stub_ tail = prev; } } - while (list-- != input_list); - free (input_list); + while (list-- != htab->input_list); + free (htab->input_list); #undef PREV_SEC +} + +/* Read in all local syms for all input bfds, and create hash entries + for export stubs if we are building a multi-subspace shared lib. + Returns -1 on error, 1 if export stubs created, 0 otherwise. */ + +static int +get_local_syms (output_bfd, input_bfd, info) + bfd *output_bfd; + bfd *input_bfd; + struct bfd_link_info *info; +{ + unsigned int bfd_indx; + Elf_Internal_Sym *local_syms, **all_local_syms; + int stub_changed = 0; + struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info); /* We want to read in symbol extension records only once. To do this we need to read in the local symbols in parallel and save them for later use; so hold pointers to the local symbols in an array. */ - amt = sizeof (Elf_Internal_Sym *) * bfd_count; + bfd_size_type amt = sizeof (Elf_Internal_Sym *) * htab->bfd_count; all_local_syms = (Elf_Internal_Sym **) bfd_zmalloc (amt); + htab->all_local_syms = all_local_syms; if (all_local_syms == NULL) - return false; + return -1; /* Walk over all the input BFDs, swapping in local symbols. If we are creating a shared library, create hash entries for the export stubs. */ - for (input_bfd = info->input_bfds, bfd_indx = 0; + for (bfd_indx = 0; input_bfd != NULL; input_bfd = input_bfd->link_next, bfd_indx++) { @@ -2780,21 +2787,21 @@ elf32_hppa_size_stubs (output_bfd, stub_ sec_size *= sizeof (Elf_Internal_Sym); local_syms = (Elf_Internal_Sym *) bfd_malloc (sec_size); if (local_syms == NULL) - goto error_ret_free_local; + return -1; all_local_syms[bfd_indx] = local_syms; sec_size = symtab_hdr->sh_info; sec_size *= sizeof (Elf32_External_Sym); ext_syms = (Elf32_External_Sym *) bfd_malloc (sec_size); if (ext_syms == NULL) - goto error_ret_free_local; + return -1; if (bfd_seek (input_bfd, symtab_hdr->sh_offset, SEEK_SET) != 0 || bfd_bread ((PTR) ext_syms, sec_size, input_bfd) != sec_size) { error_ret_free_ext_syms: free (ext_syms); - goto error_ret_free_local; + return -1; } shndx_buf = NULL; @@ -2877,7 +2884,7 @@ elf32_hppa_size_stubs (output_bfd, stub_ { stub_entry = hppa_add_stub (stub_name, sec, htab); if (!stub_entry) - goto error_ret_free_local; + return -1; stub_entry->target_value = hash->elf.root.u.def.value; stub_entry->target_section = hash->elf.root.u.def.section; @@ -2896,8 +2903,74 @@ elf32_hppa_size_stubs (output_bfd, stub_ } } + return stub_changed; +} + +/* Determine and set the size of the stub section for a final link. + + The basic idea here is to examine all the relocations looking for + PC-relative calls to a target that is unreachable with a "bl" + instruction. */ + +boolean +elf32_hppa_size_stubs (output_bfd, stub_bfd, info, multi_subspace, group_size, + add_stub_section, layout_sections_again) + bfd *output_bfd; + bfd *stub_bfd; + struct bfd_link_info *info; + boolean multi_subspace; + bfd_signed_vma group_size; + asection * (*add_stub_section) PARAMS ((const char *, asection *)); + void (*layout_sections_again) PARAMS ((void)); +{ + bfd_size_type stub_group_size; + boolean stubs_always_before_branch; + boolean stub_changed; + boolean ret = 0; + struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info); + + /* Stash our params away. */ + htab->stub_bfd = stub_bfd; + htab->multi_subspace = multi_subspace; + htab->add_stub_section = add_stub_section; + htab->layout_sections_again = layout_sections_again; + stubs_always_before_branch = group_size < 0; + if (group_size < 0) + stub_group_size = -group_size; + else + stub_group_size = group_size; + if (stub_group_size == 1) + { + /* Default values. */ + stub_group_size = 7680000; + if (htab->has_17bit_branch || htab->multi_subspace) + stub_group_size = 240000; + if (htab->has_12bit_branch) + stub_group_size = 7500; + } + + group_sections (htab, stub_group_size, stubs_always_before_branch); + + switch (get_local_syms (output_bfd, info->input_bfds, info)) + { + default: + if (htab->all_local_syms) + goto error_ret_free_local; + return false; + + case 0: + stub_changed = false; + break; + + case 1: + stub_changed = true; + break; + } + while (1) { + bfd *input_bfd; + unsigned int bfd_indx; asection *stub_sec; for (input_bfd = info->input_bfds, bfd_indx = 0; @@ -2905,13 +2978,15 @@ elf32_hppa_size_stubs (output_bfd, stub_ input_bfd = input_bfd->link_next, bfd_indx++) { Elf_Internal_Shdr *symtab_hdr; + asection *section; + Elf_Internal_Sym *local_syms; /* We'll need the symbol table in a second. */ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; if (symtab_hdr->sh_info == 0) continue; - local_syms = all_local_syms[bfd_indx]; + local_syms = htab->all_local_syms[bfd_indx]; /* Walk over each section attached to the input bfd. */ for (section = input_bfd->sections; @@ -2921,6 +2996,7 @@ elf32_hppa_size_stubs (output_bfd, stub_ Elf_Internal_Shdr *input_rel_hdr; Elf32_External_Rela *external_relocs, *erelaend, *erela; Elf_Internal_Rela *internal_relocs, *irelaend, *irela; + bfd_size_type amt; /* If there aren't any relocs, then there's nothing more to do. */ @@ -3114,7 +3190,7 @@ elf32_hppa_size_stubs (output_bfd, stub_ stub_entry->stub_type = hppa_stub_long_branch_shared; } stub_entry->h = hash; - stub_changed = 1; + stub_changed = true; } /* We're done with the internal relocs, free them. */ @@ -3139,16 +3215,16 @@ elf32_hppa_size_stubs (output_bfd, stub_ /* Ask the linker to do its stuff. */ (*htab->layout_sections_again) (); - stub_changed = 0; + stub_changed = false; } - ret = 1; + ret = true; error_ret_free_local: - while (bfd_count-- > 0) - if (all_local_syms[bfd_count]) - free (all_local_syms[bfd_count]); - free (all_local_syms); + while (htab->bfd_count-- > 0) + if (htab->all_local_syms[htab->bfd_count]) + free (htab->all_local_syms[htab->bfd_count]); + free (htab->all_local_syms); return ret; } @@ -3161,23 +3237,39 @@ elf32_hppa_set_gp (abfd, info) bfd *abfd; struct bfd_link_info *info; { + struct bfd_link_hash_entry *h; + asection *sec = NULL; + bfd_vma gp_val = 0; struct elf32_hppa_link_hash_table *htab; - struct elf_link_hash_entry *h; - asection *sec; - bfd_vma gp_val; htab = hppa_link_hash_table (info); - h = elf_link_hash_lookup (&htab->elf, "$global$", false, false, false); + h = bfd_link_hash_lookup (&htab->elf.root, "$global$", false, false, false); if (h != NULL - && (h->root.type == bfd_link_hash_defined - || h->root.type == bfd_link_hash_defweak)) + && (h->type == bfd_link_hash_defined + || h->type == bfd_link_hash_defweak)) { - gp_val = h->root.u.def.value; - sec = h->root.u.def.section; + gp_val = h->u.def.value; + sec = h->u.def.section; } 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"); + } + /* Choose to point our LTP at, in this order, one of .plt, .got, or .data, if these sections exist. In the case of choosing .plt try to make the LTP ideal for addressing anywhere in the @@ -3186,21 +3278,18 @@ elf32_hppa_set_gp (abfd, info) if either the .plt or .got is larger than 0x2000. If both the .plt and .got are smaller than 0x2000, choose the end of the .plt section. */ - - sec = htab->splt; + sec = splt; if (sec != NULL) { gp_val = sec->_raw_size; - if (gp_val > 0x2000 - || (htab->sgot && htab->sgot->_raw_size > 0x2000)) + if (gp_val > 0x2000 || (sgot && sgot->_raw_size > 0x2000)) { gp_val = 0x2000; } } else { - gp_val = 0; - sec = htab->sgot; + sec = sgot; if (sec != NULL) { /* We know we don't have a .plt. If .got is large, @@ -3217,12 +3306,12 @@ elf32_hppa_set_gp (abfd, info) if (h != NULL) { - h->root.type = bfd_link_hash_defined; - h->root.u.def.value = gp_val; + h->type = bfd_link_hash_defined; + h->u.def.value = gp_val; if (sec != NULL) - h->root.u.def.section = sec; + h->u.def.section = sec; else - h->root.u.def.section = bfd_abs_section_ptr; + h->u.def.section = bfd_abs_section_ptr; } } @@ -3282,7 +3371,7 @@ elf32_hppa_final_link (abfd, info) return false; /* If we're producing a final executable, sort the contents of the - unwind section. */ + unwind section. */ return elf_hppa_sort_unwind (abfd); } diff -uprN binutils-2.12.90.0.7/bfd/elf32-hppa.h binutils-2.12.90.0.9/bfd/elf32-hppa.h --- binutils-2.12.90.0.7/bfd/elf32-hppa.h Thu Mar 7 11:52:36 2002 +++ binutils-2.12.90.0.9/bfd/elf32-hppa.h Thu May 23 15:10:10 2002 @@ -36,6 +36,12 @@ #include "libhppa.h" #include "elf/hppa.h" +int elf32_hppa_setup_section_lists + PARAMS ((bfd *, struct bfd_link_info *)); + +void elf32_hppa_next_input_section + PARAMS ((struct bfd_link_info *, asection *)); + boolean elf32_hppa_size_stubs PARAMS ((bfd *, bfd *, struct bfd_link_info *, boolean, bfd_signed_vma, asection * (*) PARAMS ((const char *, asection *)), diff -uprN binutils-2.12.90.0.7/bfd/elf32-i370.c binutils-2.12.90.0.9/bfd/elf32-i370.c --- binutils-2.12.90.0.7/bfd/elf32-i370.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/elf32-i370.c Thu May 23 15:10:10 2002 @@ -1277,6 +1277,9 @@ i370_elf_relocate_section (output_bfd, i bfd_vma *local_got_offsets; boolean ret = true; + if (info->relocateable) + return true; + #ifdef DEBUG fprintf (stderr, "i370_elf_relocate_section called for %s section %s, %ld relocations%s\n", bfd_archive_filename (input_bfd), @@ -1320,34 +1323,6 @@ i370_elf_relocate_section (output_bfd, i howto = i370_elf_howto_table[(int)r_type]; r_symndx = ELF32_R_SYM (rel->r_info); - if (info->relocateable) - { - /* This is a relocateable 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 ((unsigned)ELF_ST_TYPE (sym->st_info) == STT_SECTION) - { - sec = local_sections[r_symndx]; - addend = rel->r_addend += sec->output_offset + sym->st_value; - } - } - -#ifdef DEBUG - fprintf (stderr, "\ttype = %s (%d), symbol index = %ld, offset = %ld, addend = %ld\n", - howto->name, - (int)r_type, - r_symndx, - (long)offset, - (long)addend); -#endif - continue; - } - - /* This is a final link. */ if (r_symndx < symtab_hdr->sh_info) { sym = local_syms + r_symndx; @@ -1661,6 +1636,7 @@ i370_elf_post_process_headers (abfd, lin #define elf_backend_plt_not_loaded 1 #define elf_backend_got_symbol_offset 4 +#define elf_backend_rela_normal 1 #define bfd_elf32_bfd_reloc_type_lookup i370_elf_reloc_type_lookup #define bfd_elf32_bfd_set_private_flags i370_elf_set_private_flags diff -uprN binutils-2.12.90.0.7/bfd/elf32-i386.c binutils-2.12.90.0.9/bfd/elf32-i386.c --- binutils-2.12.90.0.7/bfd/elf32-i386.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/elf32-i386.c Thu May 23 15:10:10 2002 @@ -46,6 +46,13 @@ static boolean elf_i386_create_dynamic_s PARAMS((bfd *, struct bfd_link_info *)); static void elf_i386_copy_indirect_symbol PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *)); +static int elf_i386_tls_transition + PARAMS ((struct bfd_link_info *, int, int)); + +static boolean elf_i386_mkobject + PARAMS((bfd *)); +static boolean elf_i386_object_p + PARAMS((bfd *)); static boolean elf_i386_check_relocs PARAMS ((bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *)); @@ -65,6 +72,10 @@ static boolean elf_i386_fake_sections PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *)); static boolean elf_i386_size_dynamic_sections PARAMS ((bfd *, struct bfd_link_info *)); +static bfd_vma dtpoff_base + PARAMS ((struct bfd_link_info *)); +static bfd_vma tpoff + PARAMS ((struct bfd_link_info *, bfd_vma)); static boolean elf_i386_relocate_section PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **)); @@ -121,9 +132,18 @@ static reloc_howto_type elf_howto_table[ R_386_ext_offset is the value to subtract from a reloc type of R_386_16 thru R_386_PC8 to form an index into this table. */ #define R_386_standard ((unsigned int) R_386_GOTPC + 1) -#define R_386_ext_offset ((unsigned int) R_386_16 - R_386_standard) +#define R_386_ext_offset ((unsigned int) R_386_TLS_LE - R_386_standard) /* The remaining relocs are a GNU extension. */ + HOWTO(R_386_TLS_LE, 0, 2, 32, false, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_TLS_LE", + true, 0xffffffff, 0xffffffff, false), + HOWTO(R_386_TLS_GD, 0, 2, 32, false, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_TLS_GD", + true, 0xffffffff, 0xffffffff, false), + HOWTO(R_386_TLS_LDM, 0, 2, 32, false, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_TLS_LDM", + true, 0xffffffff, 0xffffffff, false), HOWTO(R_386_16, 0, 1, 16, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_386_16", true, 0xffff, 0xffff, false), @@ -137,9 +157,31 @@ static reloc_howto_type elf_howto_table[ bfd_elf_generic_reloc, "R_386_PC8", true, 0xff, 0xff, true), - /* Another gap. */ #define R_386_ext ((unsigned int) R_386_PC8 + 1 - R_386_ext_offset) -#define R_386_vt_offset ((unsigned int) R_386_GNU_VTINHERIT - R_386_ext) +#define R_386_tls_offset ((unsigned int) R_386_TLS_LDO_32 - R_386_ext) + /* These are common with Solaris TLS implementation. */ + HOWTO(R_386_TLS_LDO_32, 0, 2, 32, false, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_TLS_LDO_32", + true, 0xffffffff, 0xffffffff, false), + HOWTO(R_386_TLS_IE_32, 0, 2, 32, false, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_TLS_IE_32", + true, 0xffffffff, 0xffffffff, false), + HOWTO(R_386_TLS_LE_32, 0, 2, 32, false, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_TLS_LE_32", + true, 0xffffffff, 0xffffffff, false), + HOWTO(R_386_TLS_DTPMOD32, 0, 2, 32, false, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_TLS_DTPMOD32", + true, 0xffffffff, 0xffffffff, false), + HOWTO(R_386_TLS_DTPOFF32, 0, 2, 32, false, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_TLS_DTPOFF32", + true, 0xffffffff, 0xffffffff, false), + HOWTO(R_386_TLS_TPOFF32, 0, 2, 32, false, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_TLS_TPOFF32", + true, 0xffffffff, 0xffffffff, false), + + /* Another gap. */ +#define R_386_tls ((unsigned int) R_386_TLS_TPOFF32 + 1 - R_386_tls_offset) +#define R_386_vt_offset ((unsigned int) R_386_GNU_VTINHERIT - R_386_tls) /* GNU extension to record C++ vtable hierarchy. */ HOWTO (R_386_GNU_VTINHERIT, /* type */ @@ -154,7 +196,7 @@ static reloc_howto_type elf_howto_table[ false, /* partial_inplace */ 0, /* src_mask */ 0, /* dst_mask */ - false), + false), /* pcrel_offset */ /* GNU extension to record C++ vtable member usage. */ HOWTO (R_386_GNU_VTENTRY, /* type */ @@ -169,7 +211,7 @@ static reloc_howto_type elf_howto_table[ false, /* partial_inplace */ 0, /* src_mask */ 0, /* dst_mask */ - false) + false) /* pcrel_offset */ #define R_386_vt ((unsigned int) R_386_GNU_VTENTRY + 1 - R_386_vt_offset) @@ -237,6 +279,18 @@ elf_i386_reloc_type_lookup (abfd, code) return &elf_howto_table[(unsigned int) R_386_GOTPC ]; /* The remaining relocs are a GNU extension. */ + case BFD_RELOC_386_TLS_LE: + TRACE ("BFD_RELOC_386_TLS_LE"); + return &elf_howto_table[(unsigned int) R_386_TLS_LE - R_386_ext_offset]; + + case BFD_RELOC_386_TLS_GD: + TRACE ("BFD_RELOC_386_TLS_GD"); + return &elf_howto_table[(unsigned int) R_386_TLS_GD - R_386_ext_offset]; + + case BFD_RELOC_386_TLS_LDM: + TRACE ("BFD_RELOC_386_TLS_LDM"); + return &elf_howto_table[(unsigned int) R_386_TLS_LDM - R_386_ext_offset]; + case BFD_RELOC_16: TRACE ("BFD_RELOC_16"); return &elf_howto_table[(unsigned int) R_386_16 - R_386_ext_offset]; @@ -253,6 +307,31 @@ elf_i386_reloc_type_lookup (abfd, code) TRACE ("BFD_RELOC_8_PCREL"); return &elf_howto_table[(unsigned int) R_386_PC8 - R_386_ext_offset]; + /* Common with Sun TLS implementation. */ + case BFD_RELOC_386_TLS_LDO_32: + TRACE ("BFD_RELOC_386_TLS_LDO_32"); + return &elf_howto_table[(unsigned int) R_386_TLS_LDO_32 - R_386_tls_offset]; + + case BFD_RELOC_386_TLS_IE_32: + TRACE ("BFD_RELOC_386_TLS_IE_32"); + return &elf_howto_table[(unsigned int) R_386_TLS_IE_32 - R_386_tls_offset]; + + case BFD_RELOC_386_TLS_LE_32: + TRACE ("BFD_RELOC_386_TLS_LE_32"); + return &elf_howto_table[(unsigned int) R_386_TLS_LE_32 - R_386_tls_offset]; + + case BFD_RELOC_386_TLS_DTPMOD32: + TRACE ("BFD_RELOC_386_TLS_DTPMOD32"); + return &elf_howto_table[(unsigned int) R_386_TLS_DTPMOD32 - R_386_tls_offset]; + + case BFD_RELOC_386_TLS_DTPOFF32: + TRACE ("BFD_RELOC_386_TLS_DTPOFF32"); + return &elf_howto_table[(unsigned int) R_386_TLS_DTPOFF32 - R_386_tls_offset]; + + case BFD_RELOC_386_TLS_TPOFF32: + TRACE ("BFD_RELOC_386_TLS_TPOFF32"); + return &elf_howto_table[(unsigned int) R_386_TLS_TPOFF32 - R_386_tls_offset]; + case BFD_RELOC_VTABLE_INHERIT: TRACE ("BFD_RELOC_VTABLE_INHERIT"); return &elf_howto_table[(unsigned int) R_386_GNU_VTINHERIT @@ -292,8 +371,10 @@ elf_i386_info_to_howto_rel (abfd, cache_ if ((indx = r_type) >= R_386_standard && ((indx = r_type - R_386_ext_offset) - R_386_standard >= R_386_ext - R_386_standard) - && ((indx = r_type - R_386_vt_offset) - R_386_ext - >= R_386_vt - R_386_ext)) + && ((indx = r_type - R_386_tls_offset) - R_386_ext + >= R_386_tls - R_386_ext) + && ((indx = r_type - R_386_vt_offset) - R_386_tls + >= R_386_vt - R_386_tls)) { (*_bfd_error_handler) (_("%s: invalid relocation type %d"), bfd_archive_filename (abfd), (int) r_type); @@ -481,8 +562,54 @@ struct elf_i386_link_hash_entry /* Track dynamic relocs copied for this symbol. */ struct elf_i386_dyn_relocs *dyn_relocs; + + enum { + GOT_UNKNOWN = 0, GOT_NORMAL, GOT_TLS_GD, GOT_TLS_IE + } tls_type; }; +#define elf_i386_hash_entry(ent) ((struct elf_i386_link_hash_entry *)(ent)) + +struct elf_i386_obj_tdata +{ + struct elf_obj_tdata root; + + /* tls_type for each local got entry. */ + char *local_got_tls_type; +}; + +#define elf_i386_tdata(abfd) \ + ((struct elf_i386_obj_tdata *) (abfd)->tdata.any) + +#define elf_i386_local_got_tls_type(abfd) \ + (elf_i386_tdata (abfd)->local_got_tls_type) + +static boolean +elf_i386_mkobject (abfd) + bfd *abfd; +{ + bfd_size_type amt = sizeof (struct elf_i386_obj_tdata); + abfd->tdata.any = bfd_zalloc (abfd, amt); + if (abfd->tdata.any == NULL) + return false; + return true; +} + +static boolean +elf_i386_object_p (abfd) + 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 @@ -498,6 +625,11 @@ struct elf_i386_link_hash_table asection *sdynbss; asection *srelbss; + union { + bfd_signed_vma refcount; + bfd_vma offset; + } tls_ldm_got; + /* Small local sym to section mapping cache. */ struct sym_sec_cache sym_sec; }; @@ -533,6 +665,7 @@ link_hash_newfunc (entry, table, string) eh = (struct elf_i386_link_hash_entry *) entry; eh->dyn_relocs = NULL; + eh->tls_type = GOT_UNKNOWN; } return entry; @@ -678,6 +811,29 @@ elf_i386_copy_indirect_symbol (dir, ind) _bfd_elf_link_hash_copy_indirect (dir, ind); } +static int +elf_i386_tls_transition (info, r_type, is_local) + struct bfd_link_info *info; + int r_type; + int is_local; +{ + if (info->shared) + return r_type; + + switch (r_type) + { + case R_386_TLS_GD: + case R_386_TLS_IE_32: + if (is_local) + return R_386_TLS_LE_32; + return R_386_TLS_IE_32; + case R_386_TLS_LDM: + return R_386_TLS_LE_32; + } + + return r_type; +} + /* Look through the relocs for a section during the first phase, and calculate needed space in the global offset table, procedure linkage table, and dynamic reloc sections. */ @@ -708,10 +864,12 @@ elf_i386_check_relocs (abfd, info, sec, rel_end = relocs + sec->reloc_count; for (rel = relocs; rel < rel_end; rel++) { + unsigned int r_type; unsigned long r_symndx; struct elf_link_hash_entry *h; r_symndx = ELF32_R_SYM (rel->r_info); + r_type = ELF32_R_TYPE (rel->r_info); if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr)) { @@ -726,38 +884,86 @@ elf_i386_check_relocs (abfd, info, sec, else h = sym_hashes[r_symndx - symtab_hdr->sh_info]; - switch (ELF32_R_TYPE (rel->r_info)) + r_type = elf_i386_tls_transition (info, r_type, h == NULL); + + switch (r_type) { + case R_386_TLS_IE_32: + if (info->shared) + info->flags |= DF_STATIC_TLS; + /* FALLTHROUGH */ case R_386_GOT32: + case R_386_TLS_GD: /* This symbol requires a global offset table entry. */ - if (h != NULL) - { - h->got.refcount += 1; - } - else - { - bfd_signed_vma *local_got_refcounts; + { + int tls_type, old_tls_type; - /* 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; + switch (r_type) + { + default: + case R_386_GOT32: tls_type = GOT_NORMAL; break; + case R_386_TLS_GD: tls_type = GOT_TLS_GD; break; + case R_386_TLS_IE_32: tls_type = GOT_TLS_IE; break; + } + + if (h != NULL) + { + h->got.refcount += 1; + old_tls_type = elf_i386_hash_entry(h)->tls_type; + } + 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) + size = symtab_hdr->sh_info; + 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_refcounts (abfd) = local_got_refcounts; + elf_i386_local_got_tls_type (abfd) + = (char *) (local_got_refcounts + symtab_hdr->sh_info); + } + local_got_refcounts[r_symndx] += 1; + old_tls_type = elf_i386_local_got_tls_type (abfd) [r_symndx]; + } + + /* If a TLS symbol is accessed using IE at least once, + there is no point to use dynamic model for it. */ + if (old_tls_type != tls_type && old_tls_type != GOT_UNKNOWN + && (old_tls_type != GOT_TLS_GD || tls_type != GOT_TLS_IE)) + { + if (old_tls_type == GOT_TLS_IE && tls_type == GOT_TLS_GD) + tls_type = GOT_TLS_IE; + else + { + (*_bfd_error_handler) + (_("%s: `%s' accessed both as normal and thread local symbol"), + bfd_archive_filename (abfd), h->root.root.string); return false; - elf_local_got_refcounts (abfd) = local_got_refcounts; - } - local_got_refcounts[r_symndx] += 1; - } + } + } + + if (old_tls_type != tls_type) + { + if (h != NULL) + elf_i386_hash_entry (h)->tls_type = tls_type; + else + elf_i386_local_got_tls_type (abfd) [r_symndx] = tls_type; + } + } /* Fall through */ case R_386_GOTOFF: case R_386_GOTPC: + create_got: if (htab->sgot == NULL) { if (htab->elf.dynobj == NULL) @@ -767,6 +973,10 @@ elf_i386_check_relocs (abfd, info, sec, } break; + case R_386_TLS_LDM: + htab->tls_ldm_got.refcount += 1; + goto create_got; + case R_386_PLT32: /* This symbol requires a procedure linkage table entry. We actually build the entry in adjust_dynamic_symbol, @@ -824,7 +1034,7 @@ elf_i386_check_relocs (abfd, info, sec, symbol. */ if ((info->shared && (sec->flags & SEC_ALLOC) != 0 - && (ELF32_R_TYPE (rel->r_info) != R_386_PC32 + && (r_type != R_386_PC32 || (h != NULL && (! info->symbolic || h->root.type == bfd_link_hash_defweak @@ -923,7 +1133,7 @@ elf_i386_check_relocs (abfd, info, sec, } p->count += 1; - if (ELF32_R_TYPE (rel->r_info) == R_386_PC32) + if (r_type == R_386_PC32) p->pc_count += 1; } break; @@ -942,6 +1152,16 @@ elf_i386_check_relocs (abfd, info, sec, return false; break; + case R_386_TLS_LE_32: + case R_386_TLS_LE: + if (info->shared) + { + (*_bfd_error_handler) (_("%s: TLS local exec code cannot be linked into shared objects"), + bfd_archive_filename (abfd)); + return false; + } + break; + default: break; } @@ -1016,11 +1236,18 @@ elf_i386_gc_sweep_hook (abfd, info, sec, relend = relocs + sec->reloc_count; for (rel = relocs; rel < relend; rel++) - switch (ELF32_R_TYPE (rel->r_info)) + switch (elf_i386_tls_transition (info, ELF32_R_TYPE (rel->r_info), + ELF32_R_SYM (rel->r_info) + >= symtab_hdr->sh_info)) { + case R_386_TLS_LDM: + if (elf_i386_hash_table (info)->tls_ldm_got.refcount > 0) + elf_i386_hash_table (info)->tls_ldm_got.refcount -= 1; + break; + + case R_386_TLS_GD: + case R_386_TLS_IE_32: case R_386_GOT32: - case R_386_GOTOFF: - case R_386_GOTPC: r_symndx = ELF32_R_SYM (rel->r_info); if (r_symndx >= symtab_hdr->sh_info) { @@ -1319,10 +1546,18 @@ allocate_dynrelocs (h, inf) h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; } - if (h->got.refcount > 0) + /* If R_386_TLS_IE_32 symbol is now local to the binary, + make it a R_386_TLS_LE_32 requiring no TLS entry. */ + if (h->got.refcount > 0 + && !info->shared + && h->dynindx == -1 + && elf_i386_hash_entry(h)->tls_type == GOT_TLS_IE) + h->got.offset = (bfd_vma) -1; + else if (h->got.refcount > 0) { asection *s; boolean dyn; + int tls_type = elf_i386_hash_entry(h)->tls_type; /* Make sure this symbol is output as a dynamic symbol. Undefined weak syms won't yet be marked as dynamic. */ @@ -1336,8 +1571,18 @@ allocate_dynrelocs (h, inf) s = htab->sgot; h->got.offset = s->_raw_size; s->_raw_size += 4; + /* R_386_TLS_GD needs 2 consecutive GOT slots. */ + if (tls_type == GOT_TLS_GD) + s->_raw_size += 4; dyn = htab->elf.dynamic_sections_created; - if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h)) + /* R_386_TLS_IE_32 needs one dynamic relocation, + R_386_TLS_GD needs one if local symbol and two if global. */ + if ((tls_type == GOT_TLS_GD && h->dynindx == -1) + || tls_type == GOT_TLS_IE) + htab->srelgot->_raw_size += sizeof (Elf32_External_Rel); + else if (tls_type == GOT_TLS_GD) + htab->srelgot->_raw_size += 2 * sizeof (Elf32_External_Rel); + else if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h)) htab->srelgot->_raw_size += sizeof (Elf32_External_Rel); } else @@ -1483,6 +1728,7 @@ elf_i386_size_dynamic_sections (output_b { 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; @@ -1524,15 +1770,20 @@ elf_i386_size_dynamic_sections (output_b symtab_hdr = &elf_tdata (ibfd)->symtab_hdr; locsymcount = symtab_hdr->sh_info; end_local_got = local_got + locsymcount; + local_tls_type = elf_i386_local_got_tls_type (ibfd); s = htab->sgot; srel = htab->srelgot; - for (; local_got < end_local_got; ++local_got) + 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) + if (*local_tls_type == GOT_TLS_GD) + s->_raw_size += 4; + if (info->shared + || *local_tls_type == GOT_TLS_GD + || *local_tls_type == GOT_TLS_IE) srel->_raw_size += sizeof (Elf32_External_Rel); } else @@ -1540,6 +1791,17 @@ elf_i386_size_dynamic_sections (output_b } } + if (htab->tls_ldm_got.refcount > 0) + { + /* Allocate 2 got entries and 1 dynamic reloc for R_386_TLS_LDM + relocs. */ + htab->tls_ldm_got.offset = htab->sgot->_raw_size; + htab->sgot->_raw_size += 8; + htab->srelgot->_raw_size += sizeof (Elf32_External_Rel); + } + else + htab->tls_ldm_got.offset = -1; + /* Allocate global sym .plt and .got entries, and space for global sym dynamic relocs. */ elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, (PTR) info); @@ -1685,6 +1947,34 @@ elf_i386_fake_sections (abfd, hdr, sec) return true; } +/* Return the base VMA address which should be subtracted from real addresses + when resolving @dtpoff relocation. + This is PT_TLS segment p_vaddr. */ + +static bfd_vma +dtpoff_base (info) + struct bfd_link_info *info; +{ + BFD_ASSERT (elf_hash_table (info)->tls_segment != NULL); + return elf_hash_table (info)->tls_segment->start; +} + +/* Return the relocation value for @tpoff relocation + if STT_TLS virtual address is ADDRESS. */ + +static bfd_vma +tpoff (info, address) + struct bfd_link_info *info; + bfd_vma address; +{ + struct elf_link_tls_segment *tls_segment + = elf_hash_table (info)->tls_segment; + + BFD_ASSERT (tls_segment != NULL); + return (align_power (tls_segment->size, tls_segment->align) + + tls_segment->start - address); +} + /* Relocate an i386 ELF section. */ static boolean @@ -1715,7 +2005,7 @@ elf_i386_relocate_section (output_bfd, i relend = relocs + input_section->reloc_count; for (; rel < relend; rel++) { - int r_type; + unsigned int r_type; reloc_howto_type *howto; unsigned long r_symndx; struct elf_link_hash_entry *h; @@ -1726,6 +2016,7 @@ elf_i386_relocate_section (output_bfd, i boolean unresolved_reloc; bfd_reloc_status_type r; unsigned int indx; + int tls_type; r_type = ELF32_R_TYPE (rel->r_info); if (r_type == (int) R_386_GNU_VTINHERIT @@ -1733,8 +2024,10 @@ elf_i386_relocate_section (output_bfd, i continue; if ((indx = (unsigned) r_type) >= R_386_standard - && ((indx = (unsigned) r_type - R_386_ext_offset) - R_386_standard - >= R_386_ext - R_386_standard)) + && ((indx = r_type - R_386_ext_offset) - R_386_standard + >= R_386_ext - R_386_standard) + && ((indx = r_type - R_386_tls_offset) - R_386_ext + >= R_386_tls - R_386_ext)) { bfd_set_error (bfd_error_bad_value); return false; @@ -1745,22 +2038,43 @@ elf_i386_relocate_section (output_bfd, i if (info->relocateable) { + 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) - { - bfd_vma val; + if (r_symndx >= symtab_hdr->sh_info) + continue; - sec = local_sections[r_symndx]; - val = bfd_get_32 (input_bfd, contents + rel->r_offset); - val += sec->output_offset + sym->st_value; - bfd_put_32 (input_bfd, val, contents + rel->r_offset); - } + 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; + switch (howto->size) + { + /* FIXME: overflow checks. */ + case 0: + val += bfd_get_8 (input_bfd, where); + bfd_put_8 (input_bfd, val, where); + break; + case 1: + val += bfd_get_16 (input_bfd, where); + bfd_put_16 (input_bfd, val, where); + break; + case 2: + val += bfd_get_32 (input_bfd, where); + bfd_put_32 (input_bfd, val, where); + break; + default: + abort (); } continue; } @@ -1782,24 +2096,62 @@ elf_i386_relocate_section (output_bfd, i { asection *msec; bfd_vma addend; + bfd_byte *where = contents + rel->r_offset; - if (howto->src_mask != 0xffffffff) + switch (howto->size) { - (*_bfd_error_handler) - (_("%s(%s+0x%lx): %s relocation against SEC_MERGE section"), - bfd_archive_filename (input_bfd), - bfd_get_section_name (input_bfd, input_section), - (long) rel->r_offset, howto->name); - return false; + case 0: + addend = bfd_get_8 (input_bfd, where); + if (howto->pc_relative) + { + addend = (addend ^ 0x80) - 0x80; + addend += 1; + } + break; + case 1: + addend = bfd_get_16 (input_bfd, where); + if (howto->pc_relative) + { + addend = (addend ^ 0x8000) - 0x8000; + addend += 2; + } + break; + case 2: + addend = bfd_get_32 (input_bfd, where); + if (howto->pc_relative) + { + addend = (addend ^ 0x80000000) - 0x80000000; + addend += 4; + } + break; + default: + abort (); } - addend = bfd_get_32 (input_bfd, contents + rel->r_offset); msec = sec; - addend = - _bfd_elf_rel_local_sym (output_bfd, sym, &msec, addend) - - relocation; + addend = _bfd_elf_rel_local_sym (output_bfd, sym, &msec, addend); + addend -= relocation; addend += msec->output_section->vma + msec->output_offset; - bfd_put_32 (input_bfd, addend, contents + rel->r_offset); + + switch (howto->size) + { + case 0: + /* FIXME: overflow checks. */ + if (howto->pc_relative) + addend -= 1; + bfd_put_8 (input_bfd, addend, where); + break; + case 1: + if (howto->pc_relative) + addend -= 2; + bfd_put_16 (input_bfd, addend, where); + break; + case 2: + if (howto->pc_relative) + addend -= 4; + bfd_put_32 (input_bfd, addend, where); + break; + } } } else @@ -2059,6 +2411,330 @@ elf_i386_relocate_section (output_bfd, i } break; + case R_386_TLS_GD: + case R_386_TLS_IE_32: + r_type = elf_i386_tls_transition (info, r_type, h == NULL); + tls_type = GOT_UNKNOWN; + if (h == NULL && local_got_offsets) + tls_type = elf_i386_local_got_tls_type (input_bfd) [r_symndx]; + else if (h != NULL) + { + tls_type = elf_i386_hash_entry(h)->tls_type; + if (!info->shared && h->dynindx == -1 && tls_type == GOT_TLS_IE) + r_type = R_386_TLS_LE_32; + } + if (r_type == R_386_TLS_GD && tls_type == GOT_TLS_IE) + r_type = R_386_TLS_IE_32; + + if (r_type == R_386_TLS_LE_32) + { + BFD_ASSERT (unresolved_reloc == false); + if (ELF32_R_TYPE (rel->r_info) == R_386_TLS_GD) + { + unsigned int val, type; + bfd_vma roff; + + /* GD->LE transition. */ + BFD_ASSERT (rel->r_offset >= 2); + type = bfd_get_8 (input_bfd, contents + rel->r_offset - 2); + BFD_ASSERT (type == 0x8d || type == 0x04); + BFD_ASSERT (rel->r_offset + 9 <= input_section->_raw_size); + BFD_ASSERT (bfd_get_8 (input_bfd, + contents + rel->r_offset + 4) + == 0xe8); + BFD_ASSERT (rel + 1 < relend); + BFD_ASSERT (ELF32_R_TYPE (rel[1].r_info) == R_386_PLT32); + roff = rel->r_offset + 5; + val = bfd_get_8 (input_bfd, + contents + rel->r_offset - 1); + if (type == 0x04) + { + /* leal foo(,%reg,1), %eax; call ___tls_get_addr + Change it into: + movl %gs:0, %eax; subl $foo@tpoff, %eax + (6 byte form of subl). */ + BFD_ASSERT (rel->r_offset >= 3); + BFD_ASSERT (bfd_get_8 (input_bfd, + contents + rel->r_offset - 3) + == 0x8d); + BFD_ASSERT ((val & 0xc7) == 0x05 && val != (4 << 3)); + memcpy (contents + rel->r_offset - 3, + "\x65\xa1\0\0\0\0\x81\xe8\0\0\0", 12); + } + else + { + BFD_ASSERT ((val & 0xf8) == 0x80 && (val & 7) != 4); + if (rel->r_offset + 10 <= input_section->_raw_size + && bfd_get_8 (input_bfd, + contents + rel->r_offset + 9) == 0x90) + { + /* leal foo(%reg), %eax; call ___tls_get_addr; nop + Change it into: + movl %gs:0, %eax; subl $foo@tpoff, %eax + (6 byte form of subl). */ + memcpy (contents + rel->r_offset - 2, + "\x65\xa1\0\0\0\0\x81\xe8\0\0\0", 12); + roff = rel->r_offset + 6; + } + else + { + /* leal foo(%reg), %eax; call ___tls_get_addr + Change it into: + movl %gs:0, %eax; subl $foo@tpoff, %eax + (5 byte form of subl). */ + memcpy (contents + rel->r_offset - 2, + "\x65\xa1\0\0\0\0\x2d\0\0\0", 11); + } + } + bfd_put_32 (output_bfd, tpoff (info, relocation), + contents + roff); + /* Skip R_386_PLT32. */ + rel++; + continue; + } + else + { + unsigned int val, type; + + /* IE->LE transition: + Originally it can be either: + subl foo(%reg1), %reg2 + or + movl foo(%reg1), %reg2 + We change it into: + subl $foo, %reg2 + or + movl $foo, %reg2 (6 byte form) */ + BFD_ASSERT (rel->r_offset >= 2); + type = bfd_get_8 (input_bfd, contents + rel->r_offset - 2); + val = bfd_get_8 (input_bfd, contents + rel->r_offset - 1); + BFD_ASSERT (rel->r_offset + 4 <= input_section->_raw_size); + if (type == 0x8b) + { + /* movl */ + BFD_ASSERT ((val & 0xc0) == 0x80 && (val & 7) != 4); + bfd_put_8 (output_bfd, 0xc7, + contents + rel->r_offset - 2); + bfd_put_8 (output_bfd, 0xc0 | ((val >> 3) & 7), + contents + rel->r_offset - 1); + } + else if (type == 0x2b) + { + /* subl */ + BFD_ASSERT ((val & 0xc0) == 0x80 && (val & 7) != 4); + bfd_put_8 (output_bfd, 0x81, + contents + rel->r_offset - 2); + bfd_put_8 (output_bfd, 0xe8 | ((val >> 3) & 7), + contents + rel->r_offset - 1); + } + else + BFD_FAIL (); + bfd_put_32 (output_bfd, tpoff (info, relocation), + contents + rel->r_offset); + continue; + } + } + + if (htab->sgot == NULL) + abort (); + + if (h != NULL) + off = h->got.offset; + else + { + if (local_got_offsets == NULL) + abort (); + + off = local_got_offsets[r_symndx]; + } + + if ((off & 1) != 0) + off &= ~1; + else + { + Elf_Internal_Rel outrel; + Elf32_External_Rel *loc; + int dr_type, indx; + + if (htab->srelgot == NULL) + abort (); + + outrel.r_offset = (htab->sgot->output_section->vma + + htab->sgot->output_offset + off); + + bfd_put_32 (output_bfd, 0, + htab->sgot->contents + off); + indx = h && h->dynindx != -1 ? h->dynindx : 0; + if (r_type == R_386_TLS_GD) + dr_type = R_386_TLS_DTPMOD32; + else + dr_type = R_386_TLS_TPOFF32; + outrel.r_info = ELF32_R_INFO (indx, dr_type); + loc = (Elf32_External_Rel *) htab->srelgot->contents; + loc += htab->srelgot->reloc_count++; + bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); + + if (r_type == R_386_TLS_GD) + { + if (indx == 0) + { + BFD_ASSERT (unresolved_reloc == false); + bfd_put_32 (output_bfd, + relocation - dtpoff_base (info), + htab->sgot->contents + off + 4); + } + else + { + bfd_put_32 (output_bfd, 0, + htab->sgot->contents + off + 4); + outrel.r_info = ELF32_R_INFO (indx, + R_386_TLS_DTPOFF32); + outrel.r_offset += 4; + htab->srelgot->reloc_count++; + loc++; + bfd_elf32_swap_reloc_out (output_bfd, &outrel, + loc); + } + } + + if (h != NULL) + h->got.offset |= 1; + else + local_got_offsets[r_symndx] |= 1; + } + + if (off >= (bfd_vma) -2) + abort (); + if (r_type == ELF32_R_TYPE (rel->r_info)) + { + relocation = htab->sgot->output_offset + off; + unresolved_reloc = false; + } + else + { + unsigned int val, type; + bfd_vma roff; + + /* GD->IE transition. */ + BFD_ASSERT (rel->r_offset >= 2); + type = bfd_get_8 (input_bfd, contents + rel->r_offset - 2); + BFD_ASSERT (type == 0x8d || type == 0x04); + BFD_ASSERT (rel->r_offset + 9 <= input_section->_raw_size); + BFD_ASSERT (bfd_get_8 (input_bfd, contents + rel->r_offset + 4) + == 0xe8); + BFD_ASSERT (rel + 1 < relend); + BFD_ASSERT (ELF32_R_TYPE (rel[1].r_info) == R_386_PLT32); + roff = rel->r_offset - 3; + val = bfd_get_8 (input_bfd, contents + rel->r_offset - 1); + if (type == 0x04) + { + /* leal foo(,%reg,1), %eax; call ___tls_get_addr + Change it into: + movl %gs:0, %eax; subl $foo@gottpoff(%reg), %eax. */ + BFD_ASSERT (rel->r_offset >= 3); + BFD_ASSERT (bfd_get_8 (input_bfd, + contents + rel->r_offset - 3) + == 0x8d); + BFD_ASSERT ((val & 0xc7) == 0x05 && val != (4 << 3)); + val >>= 3; + } + else + { + /* leal foo(%reg), %eax; call ___tls_get_addr; nop + Change it into: + movl %gs:0, %eax; subl $foo@gottpoff(%reg), %eax. */ + BFD_ASSERT (rel->r_offset + 10 <= input_section->_raw_size); + BFD_ASSERT ((val & 0xf8) == 0x80 && (val & 7) != 4); + BFD_ASSERT (bfd_get_8 (input_bfd, + contents + rel->r_offset + 9) + == 0x90); + roff = rel->r_offset - 2; + } + memcpy (contents + roff, + "\x65\xa1\0\0\0\0\x2b\x80\0\0\0", 12); + contents[roff + 7] = 0x80 | (val & 7); + bfd_put_32 (output_bfd, htab->sgot->output_offset + off, + contents + roff + 8); + /* Skip R_386_PLT32. */ + rel++; + continue; + } + break; + + case R_386_TLS_LDM: + if (! info->shared) + { + unsigned int val; + + /* LD->LE transition: + Ensure it is: + leal foo(%reg), %eax; call ___tls_get_addr. + We change it into: + movl %gs:0, %eax; nop; leal 0(%esi,1), %esi. */ + BFD_ASSERT (rel->r_offset >= 2); + BFD_ASSERT (bfd_get_8 (input_bfd, contents + rel->r_offset - 2) + == 0x8d); + val = bfd_get_8 (input_bfd, contents + rel->r_offset - 1); + BFD_ASSERT ((val & 0xf8) == 0x80 && (val & 7) != 4); + BFD_ASSERT (rel->r_offset + 9 <= input_section->_raw_size); + BFD_ASSERT (bfd_get_8 (input_bfd, contents + rel->r_offset + 4) + == 0xe8); + BFD_ASSERT (rel + 1 < relend); + BFD_ASSERT (ELF32_R_TYPE (rel[1].r_info) == R_386_PLT32); + memcpy (contents + rel->r_offset - 2, + "\x65\xa1\0\0\0\0\x90\x8d\x74\x26", 11); + /* Skip R_386_PLT32. */ + rel++; + continue; + } + + if (htab->sgot == NULL) + abort (); + + off = htab->tls_ldm_got.offset; + if (off & 1) + off &= ~1; + else + { + Elf_Internal_Rel outrel; + Elf32_External_Rel *loc; + + if (htab->srelgot == NULL) + abort (); + + outrel.r_offset = (htab->sgot->output_section->vma + + htab->sgot->output_offset + off); + + bfd_put_32 (output_bfd, 0, + htab->sgot->contents + off); + bfd_put_32 (output_bfd, 0, + htab->sgot->contents + off + 4); + outrel.r_info = ELF32_R_INFO (0, R_386_TLS_DTPMOD32); + loc = (Elf32_External_Rel *) htab->srelgot->contents; + loc += htab->srelgot->reloc_count++; + bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); + htab->tls_ldm_got.offset |= 1; + } + relocation = htab->sgot->output_offset + off; + unresolved_reloc = false; + break; + + case R_386_TLS_LDO_32: + if (info->shared) + relocation -= dtpoff_base (info); + else + /* When converting LDO to LE, we must negate. */ + relocation = -tpoff (info, relocation); + break; + + case R_386_TLS_LE_32: + relocation = tpoff (info, relocation); + break; + + case R_386_TLS_LE: + relocation = -tpoff (info, relocation); + break; + default: break; } @@ -2102,7 +2778,6 @@ elf_i386_relocate_section (output_bfd, i if (r == bfd_reloc_overflow) { - if (! ((*info->callbacks->reloc_overflow) (info, name, howto->name, (bfd_vma) 0, input_bfd, input_section, rel->r_offset))) @@ -2215,7 +2890,9 @@ elf_i386_finish_dynamic_symbol (output_b } } - if (h->got.offset != (bfd_vma) -1) + if (h->got.offset != (bfd_vma) -1 + && elf_i386_hash_entry(h)->tls_type != GOT_TLS_GD + && elf_i386_hash_entry(h)->tls_type != GOT_TLS_IE) { Elf_Internal_Rel rel; Elf32_External_Rel *loc; @@ -2447,6 +3124,9 @@ elf_i386_finish_dynamic_sections (output #define elf_info_to_howto elf_i386_info_to_howto #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 #define bfd_elf32_bfd_reloc_type_lookup elf_i386_reloc_type_lookup diff -uprN binutils-2.12.90.0.7/bfd/elf32-i860.c binutils-2.12.90.0.9/bfd/elf32-i860.c --- binutils-2.12.90.0.7/bfd/elf32-i860.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/bfd/elf32-i860.c Thu May 23 15:10:10 2002 @@ -1,5 +1,6 @@ /* Intel i860 specific support for 32-bit ELF. - Copyright 1993, 1995, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1993, 1995, 1999, 2000, 2001, 2002 + Free Software Foundation, Inc. Full i860 support contributed by Jason Eckhardt . @@ -878,6 +879,9 @@ elf32_i860_relocate_section (output_bfd, Elf_Internal_Rela * rel; Elf_Internal_Rela * relend; + if (info->relocateable) + return true; + symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); relend = relocs + input_section->reloc_count; @@ -904,27 +908,6 @@ elf32_i860_relocate_section (output_bfd, r_symndx = ELF32_R_SYM (rel->r_info); - if (info->relocateable) - { - /* This is a relocateable 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; - } - } - - continue; - } - - /* This is a final link. */ howto = lookup_howto ((unsigned) ELF32_R_TYPE (rel->r_info)); h = NULL; sym = NULL; @@ -1097,6 +1080,7 @@ elf32_i860_is_local_label_name (abfd, na #define ELF_MACHINE_CODE EM_860 #define ELF_MAXPAGESIZE 4096 +#define elf_backend_rela_normal 1 #define elf_info_to_howto_rel NULL #define elf_info_to_howto elf32_i860_info_to_howto_rela #define elf_backend_relocate_section elf32_i860_relocate_section diff -uprN binutils-2.12.90.0.7/bfd/elf32-m32r.c binutils-2.12.90.0.9/bfd/elf32-m32r.c --- binutils-2.12.90.0.7/bfd/elf32-m32r.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/bfd/elf32-m32r.c Thu May 23 15:10:10 2002 @@ -981,6 +981,11 @@ m32r_elf_relocate_section (output_bfd, i /* Assume success. */ boolean ret = true; +#ifndef USE_REL + if (info->relocateable) + return true; +#endif + rel = relocs; relend = relocs + input_section->reloc_count; for (; rel < relend; rel++) @@ -1020,6 +1025,7 @@ m32r_elf_relocate_section (output_bfd, i howto = m32r_elf_howto_table + r_type; r_symndx = ELF32_R_SYM (rel->r_info); +#ifdef USE_REL if (info->relocateable) { /* This is a relocateable link. We don't have to change @@ -1045,16 +1051,7 @@ m32r_elf_relocate_section (output_bfd, i sec = local_sections[r_symndx]; addend += sec->output_offset + sym->st_value; -#ifndef USE_REL - /* This can't be done for USE_REL because it doesn't mean anything - and elf_link_input_bfd asserts this stays zero. */ - rel->r_addend = addend; -#endif -#ifndef USE_REL - /* Addends are stored with relocs. We're done. */ - continue; -#else /* USE_REL */ /* If partial_inplace, we need to store any additional addend back in the section. */ if (! howto->partial_inplace) @@ -1088,9 +1085,9 @@ m32r_elf_relocate_section (output_bfd, i r = _bfd_relocate_contents (howto, input_bfd, addend, contents + offset); } -#endif /* USE_REL */ } else +#endif /* USE_REL */ { bfd_vma relocation; @@ -2161,6 +2158,9 @@ m32r_elf_check_relocs (abfd, info, sec, #define elf_backend_check_relocs m32r_elf_check_relocs #define elf_backend_can_gc_sections 1 +#ifndef USE_REL +#define elf_backend_rela_normal 1 +#endif #if 0 /* not yet */ /* relax support */ #define bfd_elf32_bfd_relax_section m32r_elf_relax_section diff -uprN binutils-2.12.90.0.7/bfd/elf32-m68k.c binutils-2.12.90.0.9/bfd/elf32-m68k.c --- binutils-2.12.90.0.7/bfd/elf32-m68k.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/elf32-m68k.c Sun May 26 09:57:12 2002 @@ -413,7 +413,7 @@ elf32_m68k_print_private_bfd_data (abfd, fprintf (file, _(" [cpu32]")); if (elf_elfheader (abfd)->e_flags & EF_M68000) - fprintf (file, _ (" [m68000]")); + fprintf (file, _(" [m68000]")); fputc ('\n', file); @@ -1308,6 +1308,9 @@ elf_m68k_relocate_section (output_bfd, i Elf_Internal_Rela *rel; Elf_Internal_Rela *relend; + if (info->relocateable) + return true; + dynobj = elf_hash_table (info)->dynobj; symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); @@ -1340,26 +1343,6 @@ elf_m68k_relocate_section (output_bfd, i r_symndx = ELF32_R_SYM (rel->r_info); - if (info->relocateable) - { - /* This is a relocateable 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; - } - } - - continue; - } - - /* This is a final link. */ h = NULL; sym = NULL; sec = NULL; @@ -2325,5 +2308,6 @@ elf32_m68k_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_rela_normal 1 #include "elf32-target.h" diff -uprN binutils-2.12.90.0.7/bfd/elf32-mcore.c binutils-2.12.90.0.9/bfd/elf32-mcore.c --- binutils-2.12.90.0.7/bfd/elf32-mcore.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/bfd/elf32-mcore.c Thu May 23 15:10:10 2002 @@ -1,5 +1,6 @@ /* Motorola MCore specific support for 32-bit ELF - Copyright 1994, 1995, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1994, 1995, 1999, 2000, 2001, 2002 + Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -414,6 +415,9 @@ mcore_elf_relocate_section (output_bfd, (info->relocateable) ? " (relocatable)" : ""); #endif + if (info->relocateable) + return true; + if (! mcore_elf_howto_table [R_MCORE_PCRELIMM8BY4]) /* Initialize howto table if needed */ mcore_elf_howto_init (); @@ -447,32 +451,6 @@ mcore_elf_relocate_section (output_bfd, howto = mcore_elf_howto_table [(int) r_type]; r_symndx = ELF32_R_SYM (rel->r_info); - if (info->relocateable) - { - /* This is a relocateable 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 ((unsigned)ELF_ST_TYPE (sym->st_info) == STT_SECTION) - { - sec = local_sections[r_symndx]; - addend = rel->r_addend += sec->output_offset + sym->st_value; - } - } - -#ifdef DEBUG - fprintf (stderr, "\ttype = %s (%d), symbol index = %ld, offset = %ld, addend = %ld\n", - howto->name, (int) r_type, r_symndx, (long) offset, (long) addend); -#endif - continue; - } - - /* This is a final link. */ - /* Complain about known relocation that are not yet supported. */ if (howto->special_function == mcore_elf_unsupported_reloc) { @@ -726,5 +704,6 @@ mcore_elf_check_relocs (abfd, info, sec, #define elf_backend_check_relocs mcore_elf_check_relocs #define elf_backend_can_gc_sections 1 +#define elf_backend_rela_normal 1 #include "elf32-target.h" diff -uprN binutils-2.12.90.0.7/bfd/elf32-mips.c binutils-2.12.90.0.9/bfd/elf32-mips.c --- binutils-2.12.90.0.7/bfd/elf32-mips.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/bfd/elf32-mips.c Thu May 23 15:10:10 2002 @@ -89,164 +89,20 @@ static boolean elf32_mips_write_section static irix_compat_t elf32_mips_irix_compat PARAMS ((bfd *)); -extern const bfd_target bfd_elf32_tradbigmips_vec; -extern const bfd_target bfd_elf32_tradlittlemips_vec; +extern const bfd_target bfd_elf32_bigmips_vec; +extern const bfd_target bfd_elf32_littlemips_vec; /* Nonzero if ABFD is using the N32 ABI. */ - #define ABI_N32_P(abfd) \ ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI2) != 0) -/* Nonzero if ABFD is using the 64-bit ABI. */ -#define ABI_64_P(abfd) \ - ((elf_elfheader (abfd)->e_ident[EI_CLASS] == ELFCLASS64) != 0) - -#define NEWABI_P(abfd) (ABI_N32_P (abfd) || ABI_64_P (abfd)) - /* Whether we are trying to be compatible with IRIX at all. */ #define SGI_COMPAT(abfd) \ (elf32_mips_irix_compat (abfd) != ict_none) -/* The size of an external REL relocation. */ -#define MIPS_ELF_REL_SIZE(abfd) \ - (get_elf_backend_data (abfd)->s->sizeof_rel) - /* The number of local .got entries we reserve. */ #define MIPS_RESERVED_GOTNO (2) -#if 0 -/* We no longer try to identify particular sections for the .dynsym - section. When we do, we wind up crashing if there are other random - sections with relocations. */ - -/* Names of sections which appear in the .dynsym section in an Irix 5 - executable. */ - -static const char * const mips_elf_dynsym_sec_names[] = -{ - ".text", - ".init", - ".fini", - ".data", - ".rodata", - ".sdata", - ".sbss", - ".bss", - NULL -}; - -#define SIZEOF_MIPS_DYNSYM_SECNAMES \ - (sizeof mips_elf_dynsym_sec_names / sizeof mips_elf_dynsym_sec_names[0]) - -/* The number of entries in mips_elf_dynsym_sec_names which go in the - text segment. */ - -#define MIPS_TEXT_DYNSYM_SECNO (3) - -#endif /* 0 */ - -/* The names of the runtime procedure table symbols used on Irix 5. */ - -static const char * const mips_elf_dynsym_rtproc_names[] = -{ - "_procedure_table", - "_procedure_string_table", - "_procedure_table_size", - NULL -}; - -/* These structures are used to generate the .compact_rel section on - Irix 5. */ - -typedef struct -{ - unsigned long id1; /* Always one? */ - unsigned long num; /* Number of compact relocation entries. */ - unsigned long id2; /* Always two? */ - unsigned long offset; /* The file offset of the first relocation. */ - unsigned long reserved0; /* Zero? */ - unsigned long reserved1; /* Zero? */ -} Elf32_compact_rel; - -typedef struct -{ - bfd_byte id1[4]; - bfd_byte num[4]; - bfd_byte id2[4]; - bfd_byte offset[4]; - bfd_byte reserved0[4]; - bfd_byte reserved1[4]; -} Elf32_External_compact_rel; - -typedef struct -{ - unsigned int ctype : 1; /* 1: long 0: short format. See below. */ - unsigned int rtype : 4; /* Relocation types. See below. */ - unsigned int dist2to : 8; - unsigned int relvaddr : 19; /* (VADDR - vaddr of the previous entry)/ 4 */ - unsigned long konst; /* KONST field. See below. */ - unsigned long vaddr; /* VADDR to be relocated. */ -} Elf32_crinfo; - -typedef struct -{ - unsigned int ctype : 1; /* 1: long 0: short format. See below. */ - unsigned int rtype : 4; /* Relocation types. See below. */ - unsigned int dist2to : 8; - unsigned int relvaddr : 19; /* (VADDR - vaddr of the previous entry)/ 4 */ - unsigned long konst; /* KONST field. See below. */ -} Elf32_crinfo2; - -typedef struct -{ - bfd_byte info[4]; - bfd_byte konst[4]; - bfd_byte vaddr[4]; -} Elf32_External_crinfo; - -typedef struct -{ - bfd_byte info[4]; - bfd_byte konst[4]; -} Elf32_External_crinfo2; - -/* These are the constants used to swap the bitfields in a crinfo. */ - -#define CRINFO_CTYPE (0x1) -#define CRINFO_CTYPE_SH (31) -#define CRINFO_RTYPE (0xf) -#define CRINFO_RTYPE_SH (27) -#define CRINFO_DIST2TO (0xff) -#define CRINFO_DIST2TO_SH (19) -#define CRINFO_RELVADDR (0x7ffff) -#define CRINFO_RELVADDR_SH (0) - -/* A compact relocation info has long (3 words) or short (2 words) - formats. A short format doesn't have VADDR field and relvaddr - fields contains ((VADDR - vaddr of the previous entry) >> 2). */ -#define CRF_MIPS_LONG 1 -#define CRF_MIPS_SHORT 0 - -/* There are 4 types of compact relocation at least. The value KONST - has different meaning for each type: - - (type) (konst) - CT_MIPS_REL32 Address in data - CT_MIPS_WORD Address in word (XXX) - CT_MIPS_GPHI_LO GP - vaddr - CT_MIPS_JMPAD Address to jump - */ - -#define CRT_MIPS_REL32 0xa -#define CRT_MIPS_WORD 0xb -#define CRT_MIPS_GPHI_LO 0xc -#define CRT_MIPS_JMPAD 0xd - -#define mips_elf_set_cr_format(x,format) ((x).ctype = (format)) -#define mips_elf_set_cr_type(x,type) ((x).rtype = (type)) -#define mips_elf_set_cr_dist2to(x,v) ((x).dist2to = (v)) -#define mips_elf_set_cr_relvaddr(x,d) ((x).relvaddr = (d)<<2) - /* In case we're on a 32-bit machine, construct a 64-bit "-1" value from smaller values. Start with zero, widen, *then* decrement. */ #define MINUS_ONE (((bfd_vma)0) - 1) @@ -904,7 +760,7 @@ mips_elf_hi16_reloc (abfd, reloc_entry, bfd_vma relocation; struct mips_hi16 *n; - /* If we're relocating, and this an external symbol, we don't want + /* 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 @@ -1099,7 +955,7 @@ mips_elf_got16_reloc (abfd, reloc_entry, bfd *output_bfd; char **error_message; { - /* If we're relocating, and this an external symbol, we don't want + /* 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 @@ -1264,8 +1120,8 @@ _bfd_mips_elf32_gprel16_reloc (abfd, rel data, gp); } -/* Do a R_MIPS_GPREL32 relocation. Is this 32 bit value the offset - from the gp register? XXX */ +/* Do a R_MIPS_GPREL32 relocation. This is a 32 bit value which must + become the offset from the gp register. */ static bfd_reloc_status_type gprel32_with_gp PARAMS ((bfd *, asymbol *, arelent *, asection *, @@ -1531,8 +1387,8 @@ mips16_gprel_reloc (abfd, reloc_entry, s /* A mapping from BFD reloc types to MIPS ELF reloc types. */ struct elf_reloc_map { - bfd_reloc_code_real_type bfd_reloc_val; - enum elf_mips_reloc_type elf_reloc_val; + bfd_reloc_code_real_type bfd_val; + enum elf_mips_reloc_type elf_val; }; static const struct elf_reloc_map mips_reloc_map[] = @@ -1540,6 +1396,7 @@ static const struct elf_reloc_map mips_r { BFD_RELOC_NONE, R_MIPS_NONE, }, { BFD_RELOC_16, R_MIPS_16 }, { BFD_RELOC_32, R_MIPS_32 }, + /* There is no BFD reloc for R_MIPS_REL32. */ { BFD_RELOC_64, R_MIPS_64 }, { BFD_RELOC_MIPS_JMP, R_MIPS_26 }, { BFD_RELOC_HI16_S, R_MIPS_HI16 }, @@ -1568,11 +1425,13 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, c bfd_reloc_code_real_type code; { unsigned int i; + reloc_howto_type *howto_table = elf_mips_howto_table_rel; - for (i = 0; i < sizeof (mips_reloc_map) / sizeof (struct elf_reloc_map); i++) + for (i = 0; i < sizeof (mips_reloc_map) / sizeof (struct elf_reloc_map); + i++) { - if (mips_reloc_map[i].bfd_reloc_val == code) - return &elf_mips_howto_table_rel[(int) mips_reloc_map[i].elf_reloc_val]; + if (mips_reloc_map[i].bfd_val == code) + return &howto_table[(int) mips_reloc_map[i].elf_val]; } switch (code) @@ -1586,7 +1445,7 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, c Select the right relocation (R_MIPS_32 or R_MIPS_64) based on the size of addresses on this architecture. */ if (bfd_arch_bits_per_address (abfd) == 32) - return &elf_mips_howto_table_rel[(int) R_MIPS_32]; + return &howto_table[(int) R_MIPS_32]; else return &elf_mips_ctor64_howto; @@ -1622,32 +1481,22 @@ mips_elf32_rtype_to_howto (r_type, rela_ { case R_MIPS16_26: return &elf_mips16_jump_howto; - break; case R_MIPS16_GPREL: return &elf_mips16_gprel_howto; - break; case R_MIPS_GNU_VTINHERIT: return &elf_mips_gnu_vtinherit_howto; - break; case R_MIPS_GNU_VTENTRY: return &elf_mips_gnu_vtentry_howto; - break; case R_MIPS_GNU_REL_HI16: return &elf_mips_gnu_rel_hi16; - break; case R_MIPS_GNU_REL_LO16: return &elf_mips_gnu_rel_lo16; - break; case R_MIPS_GNU_REL16_S2: return &elf_mips_gnu_rel16_s2; - break; case R_MIPS_PC64: return &elf_mips_gnu_pcrel64; - break; case R_MIPS_PC32: return &elf_mips_gnu_pcrel32; - break; - default: BFD_ASSERT (r_type < (unsigned int) R_MIPS_max); return &elf_mips_howto_table_rel[r_type]; @@ -1822,7 +1671,6 @@ elf32_mips_discard_info (abfd, cookie, i struct bfd_link_info *info; { asection *o; - struct elf_backend_data *bed = get_elf_backend_data (abfd); boolean ret = false; unsigned char *tdata; size_t i, skip; @@ -1852,8 +1700,7 @@ elf32_mips_discard_info (abfd, cookie, i } cookie->rel = cookie->rels; - cookie->relend = - cookie->rels + o->reloc_count * bed->s->int_rels_per_ext_rel; + cookie->relend = cookie->rels + o->reloc_count; for (i = 0, skip = 0; i < o->_raw_size; i ++) { @@ -1927,11 +1774,11 @@ static irix_compat_t elf32_mips_irix_compat (abfd) bfd *abfd; { - if ((abfd->xvec == &bfd_elf32_tradbigmips_vec) - || (abfd->xvec == &bfd_elf32_tradlittlemips_vec)) - return ict_none; - else + if ((abfd->xvec == &bfd_elf32_bigmips_vec) + || (abfd->xvec == &bfd_elf32_littlemips_vec)) return ict_irix5; + else + return ict_none; } /* Given a data section and an in-memory embedded reloc section, store diff -uprN binutils-2.12.90.0.7/bfd/elf32-openrisc.c binutils-2.12.90.0.9/bfd/elf32-openrisc.c --- binutils-2.12.90.0.7/bfd/elf32-openrisc.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/bfd/elf32-openrisc.c Thu May 23 15:10:10 2002 @@ -1,5 +1,5 @@ /* OpenRISC-specific support for 32-bit ELF. - Copyright 2001 Free Software Foundation, Inc. + Copyright 2001, 2002 Free Software Foundation, Inc. Contributed by Johan Rydberg, jrydberg@opencores.org This file is part of BFD, the Binary File Descriptor library. @@ -338,6 +338,9 @@ openrisc_elf_relocate_section (output_bf Elf_Internal_Rela *rel; Elf_Internal_Rela *relend; + if (info->relocateable) + return true; + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); relend = relocs + input_section->reloc_count; @@ -361,25 +364,6 @@ openrisc_elf_relocate_section (output_bf || r_type == R_OPENRISC_GNU_VTENTRY) continue; - if (info->relocateable) - { - /* This is a relocateable 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; - } - } - continue; - } - if ((unsigned int) r_type > (sizeof openrisc_elf_howto_table / sizeof (reloc_howto_type))) abort (); @@ -645,6 +629,7 @@ openrisc_elf_final_write_processing (abf #define elf_backend_check_relocs openrisc_elf_check_relocs #define elf_backend_can_gc_sections 1 +#define elf_backend_rela_normal 1 #define bfd_elf32_bfd_reloc_type_lookup openrisc_reloc_type_lookup diff -uprN binutils-2.12.90.0.7/bfd/elf32-ppc.c binutils-2.12.90.0.9/bfd/elf32-ppc.c --- binutils-2.12.90.0.7/bfd/elf32-ppc.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/bfd/elf32-ppc.c Thu May 23 15:10:10 2002 @@ -1,5 +1,5 @@ /* PowerPC-specific support for 32-bit ELF - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. @@ -49,6 +49,8 @@ static boolean ppc_elf_merge_private_bfd static int ppc_elf_additional_program_headers PARAMS ((bfd *)); static boolean ppc_elf_modify_segment_map PARAMS ((bfd *)); +static asection *ppc_elf_create_got + PARAMS ((bfd *, struct bfd_link_info *)); static boolean ppc_elf_create_dynamic_sections PARAMS ((bfd *, struct bfd_link_info *)); @@ -679,20 +681,20 @@ static reloc_howto_type ppc_elf_howto_ra 0xffff, /* dst_mask */ false), /* pcrel_offset */ - /* 32-bit section relative relocation. */ + /* 16-bit section relative relocation. */ HOWTO (R_PPC_SECTOFF, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ - true, /* pc_relative */ + 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_PPC_SECTOFF", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0, /* dst_mask */ - true), /* pcrel_offset */ + 0xffff, /* dst_mask */ + false), /* pcrel_offset */ /* 16-bit lower half section relative relocation. */ HOWTO (R_PPC_SECTOFF_LO, /* type */ @@ -1295,7 +1297,7 @@ ppc_elf_reloc_type_lookup (abfd, code) case BFD_RELOC_HI16_PLTOFF: ppc_reloc = R_PPC_PLT16_HI; break; case BFD_RELOC_HI16_S_PLTOFF: ppc_reloc = R_PPC_PLT16_HA; break; case BFD_RELOC_GPREL16: ppc_reloc = R_PPC_SDAREL16; break; - case BFD_RELOC_32_BASEREL: ppc_reloc = R_PPC_SECTOFF; break; + case BFD_RELOC_16_BASEREL: ppc_reloc = R_PPC_SECTOFF; break; case BFD_RELOC_LO16_BASEREL: ppc_reloc = R_PPC_SECTOFF_LO; break; case BFD_RELOC_HI16_BASEREL: ppc_reloc = R_PPC_SECTOFF_HI; break; case BFD_RELOC_HI16_S_BASEREL: ppc_reloc = R_PPC_SECTOFF_HA; break; @@ -1632,6 +1634,30 @@ ppc_elf_modify_segment_map (abfd) return true; } +/* The powerpc .got has a blrl instruction in it. Mark it executable. */ + +static asection * +ppc_elf_create_got (abfd, info) + bfd *abfd; + struct bfd_link_info *info; +{ + register asection *s; + flagword flags; + + if (!_bfd_elf_create_got_section (abfd, info)) + return NULL; + + s = bfd_get_section_by_name (abfd, ".got"); + if (s == NULL) + abort (); + + flags = (SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS | SEC_IN_MEMORY + | SEC_LINKER_CREATED); + if (!bfd_set_section_flags (abfd, s, flags)) + return NULL; + return s; +} + /* We have to create .dynsbss and .rela.sbss here so that they get mapped to output sections (just like _bfd_elf_create_dynamic_sections has to create .dynbss and .rela.bss). */ @@ -1644,6 +1670,9 @@ ppc_elf_create_dynamic_sections (abfd, i register asection *s; flagword flags; + if (!ppc_elf_create_got (abfd, info)) + return false; + if (!_bfd_elf_create_dynamic_sections (abfd, info)) return false; @@ -1663,7 +1692,13 @@ ppc_elf_create_dynamic_sections (abfd, i || ! bfd_set_section_alignment (abfd, s, 2)) return false; } - return true; + + s = bfd_get_section_by_name (abfd, ".plt"); + if (s == NULL) + abort (); + + flags = SEC_ALLOC | SEC_CODE | SEC_IN_MEMORY | SEC_LINKER_CREATED; + return bfd_set_section_flags (abfd, s, flags); } /* Adjust a symbol defined by a dynamic object and referenced by a @@ -2119,10 +2154,9 @@ ppc_elf_check_relocs (abfd, info, sec, r { if (dynobj == NULL) elf_hash_table (info)->dynobj = dynobj = abfd; - if (! _bfd_elf_create_got_section (dynobj, info)) + sgot = ppc_elf_create_got (dynobj, info); + if (sgot == NULL) return false; - sgot = bfd_get_section_by_name (dynobj, ".got"); - BFD_ASSERT (sgot != NULL); } } @@ -2139,10 +2173,9 @@ ppc_elf_check_relocs (abfd, info, sec, r { if (dynobj == NULL) elf_hash_table (info)->dynobj = dynobj = abfd; - if (! _bfd_elf_create_got_section (dynobj, info)) + sgot = ppc_elf_create_got (dynobj, info); + if (sgot == NULL) return false; - sgot = bfd_get_section_by_name (dynobj, ".got"); - BFD_ASSERT (sgot != NULL); } if (srelgot == NULL @@ -2896,6 +2929,9 @@ ppc_elf_relocate_section (output_bfd, in (info->relocateable) ? " (relocatable)" : ""); #endif + if (info->relocateable) + return true; + if (!ppc_elf_howto_table[R_PPC_ADDR32]) /* Initialize howto table if needed. */ ppc_elf_howto_init (); @@ -2940,34 +2976,6 @@ ppc_elf_relocate_section (output_bfd, in howto = ppc_elf_howto_table[(int) r_type]; r_symndx = ELF32_R_SYM (rel->r_info); - if (info->relocateable) - { - /* This is a relocateable 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 ((unsigned) ELF_ST_TYPE (sym->st_info) == STT_SECTION) - { - sec = local_sections[r_symndx]; - addend = rel->r_addend += sec->output_offset + sym->st_value; - } - } - -#ifdef DEBUG - fprintf (stderr, "\ttype = %s (%d), symbol index = %ld, offset = %ld, addend = %ld\n", - howto->name, - (int) r_type, - r_symndx, - (long) offset, - (long) addend); -#endif - continue; - } - - /* This is a final link. */ if (r_symndx < symtab_hdr->sh_info) { sym = local_syms + r_symndx; @@ -3782,6 +3790,7 @@ ppc_elf_grok_psinfo (abfd, note) #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_bfd_merge_private_bfd_data ppc_elf_merge_private_bfd_data #define bfd_elf32_bfd_relax_section ppc_elf_relax_section diff -uprN binutils-2.12.90.0.7/bfd/elf32-s390.c binutils-2.12.90.0.9/bfd/elf32-s390.c --- binutils-2.12.90.0.7/bfd/elf32-s390.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/elf32-s390.c Thu May 23 15:10:10 2002 @@ -1632,6 +1632,9 @@ elf_s390_relocate_section (output_bfd, i Elf_Internal_Rela *rel; Elf_Internal_Rela *relend; + if (info->relocateable) + return true; + htab = elf_s390_hash_table (info); symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); @@ -1661,30 +1664,9 @@ elf_s390_relocate_section (output_bfd, i bfd_set_error (bfd_error_bad_value); return false; } - howto = elf_howto_table + r_type; + howto = elf_howto_table + r_type; r_symndx = ELF32_R_SYM (rel->r_info); - - if (info->relocateable) - { - /* This is a relocateable 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; - } - } - - continue; - } - - /* This is a final link. */ h = NULL; sym = NULL; sec = NULL; @@ -2467,6 +2449,7 @@ elf_s390_grok_prstatus (abfd, note) #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.12.90.0.7/bfd/elf32-xstormy16.c binutils-2.12.90.0.9/bfd/elf32-xstormy16.c --- binutils-2.12.90.0.7/bfd/elf32-xstormy16.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/elf32-xstormy16.c Thu May 23 15:10:10 2002 @@ -790,6 +790,9 @@ xstormy16_elf_relocate_section (output_b bfd *dynobj; asection *splt; + if (info->relocateable) + return true; + symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); relend = relocs + input_section->reloc_count; @@ -818,28 +821,6 @@ xstormy16_elf_relocate_section (output_b continue; r_symndx = ELF32_R_SYM (rel->r_info); - - if (info->relocateable) - { - /* This is a relocateable 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; - } - } - - continue; - } - - /* This is a final link. */ howto = xstormy16_elf_howto_table + ELF32_R_TYPE (rel->r_info); h = NULL; sym = NULL; @@ -1108,6 +1089,7 @@ xstormy16_elf_gc_sweep_hook (abfd, info, xstormy16_elf_finish_dynamic_sections #define elf_backend_can_gc_sections 1 +#define elf_backend_rela_normal 1 #define bfd_elf32_bfd_reloc_type_lookup xstormy16_reloc_type_lookup #define bfd_elf32_bfd_relax_section xstormy16_elf_relax_section diff -uprN binutils-2.12.90.0.7/bfd/elf64-alpha.c binutils-2.12.90.0.9/bfd/elf64-alpha.c --- binutils-2.12.90.0.7/bfd/elf64-alpha.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/elf64-alpha.c Thu May 23 15:10:10 2002 @@ -3695,6 +3695,16 @@ elf64_alpha_relocate_section (output_bfd } goto default_reloc; + case R_ALPHA_SREL32: + case R_ALPHA_SREL64: + /* ??? .eh_frame references to discarded sections will be smashed + to relocations against SHN_UNDEF. The .eh_frame format allows + NULL to be encoded as 0 in any format, so this works here. */ + if (r_symndx == 0) + howto = (elf64_alpha_howto_table + + (r_type - R_ALPHA_SREL32 + R_ALPHA_REFLONG)); + goto default_reloc; + default: default_reloc: r = _bfd_final_link_relocate (howto, input_bfd, input_section, diff -uprN binutils-2.12.90.0.7/bfd/elf64-ppc.c binutils-2.12.90.0.9/bfd/elf64-ppc.c --- binutils-2.12.90.0.7/bfd/elf64-ppc.c Fri Apr 5 10:03:49 2002 +++ binutils-2.12.90.0.9/bfd/elf64-ppc.c Sun May 26 09:57:12 2002 @@ -39,7 +39,21 @@ static reloc_howto_type *ppc64_elf_reloc PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); static void ppc64_elf_info_to_howto PARAMS ((bfd *abfd, arelent *cache_ptr, Elf64_Internal_Rela *dst)); -static bfd_reloc_status_type ppc64_elf_addr16_ha_reloc +static bfd_reloc_status_type ppc64_elf_ha_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type ppc64_elf_brtaken_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type ppc64_elf_sectoff_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type ppc64_elf_sectoff_ha_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type ppc64_elf_toc_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type ppc64_elf_toc_ha_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type ppc64_elf_toc64_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type ppc64_elf_unhandled_reloc PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); static boolean ppc64_elf_set_private_flags PARAMS ((bfd *, flagword)); @@ -47,65 +61,7 @@ static boolean ppc64_elf_merge_private_b PARAMS ((bfd *, bfd *)); static boolean ppc64_elf_section_from_shdr PARAMS ((bfd *, Elf64_Internal_Shdr *, char *)); -static struct bfd_hash_entry *link_hash_newfunc - PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *)); -static struct bfd_link_hash_table *ppc64_elf_link_hash_table_create - PARAMS ((bfd *)); -static boolean create_linkage_sections - PARAMS ((bfd *, struct bfd_link_info *)); -static boolean create_got_section - PARAMS ((bfd *, struct bfd_link_info *)); -static boolean ppc64_elf_create_dynamic_sections - PARAMS ((bfd *, struct bfd_link_info *)); -static void ppc64_elf_copy_indirect_symbol - PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *)); -static boolean ppc64_elf_check_relocs - PARAMS ((bfd *, struct bfd_link_info *, asection *, - const Elf_Internal_Rela *)); -static asection * ppc64_elf_gc_mark_hook - PARAMS ((bfd *abfd, struct bfd_link_info *info, Elf_Internal_Rela *rel, - struct elf_link_hash_entry *h, Elf_Internal_Sym *sym)); -static boolean ppc64_elf_gc_sweep_hook - PARAMS ((bfd *abfd, struct bfd_link_info *info, asection *sec, - const Elf_Internal_Rela *relocs)); -static boolean func_desc_adjust - PARAMS ((struct elf_link_hash_entry *, PTR)); -static boolean ppc64_elf_func_desc_adjust - PARAMS ((bfd *, struct bfd_link_info *)); -static boolean ppc64_elf_adjust_dynamic_symbol - PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); -static void ppc64_elf_hide_symbol - PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean)); -static boolean allocate_dynrelocs - PARAMS ((struct elf_link_hash_entry *, PTR)); -static boolean readonly_dynrelocs - PARAMS ((struct elf_link_hash_entry *, PTR)); -static enum elf_reloc_type_class ppc64_elf_reloc_type_class - PARAMS ((const Elf_Internal_Rela *)); -static boolean ppc64_elf_size_dynamic_sections - PARAMS ((bfd *, struct bfd_link_info *)); -static bfd_byte *build_plt_stub - PARAMS ((bfd *, bfd_byte *, int, int)); -static boolean build_one_stub - PARAMS ((struct elf_link_hash_entry *, PTR)); -static boolean ppc64_elf_fake_sections - PARAMS ((bfd *, Elf64_Internal_Shdr *, asection *)); -static boolean ppc64_elf_relocate_section - PARAMS ((bfd *, struct bfd_link_info *info, bfd *, asection *, bfd_byte *, - Elf_Internal_Rela *relocs, Elf_Internal_Sym *local_syms, - asection **)); -static boolean ppc64_elf_finish_dynamic_symbol - PARAMS ((bfd *, struct bfd_link_info *, struct elf_link_hash_entry *, - Elf_Internal_Sym *)); -static boolean ppc64_elf_finish_dynamic_sections - PARAMS ((bfd *, struct bfd_link_info *)); - - -/* Mask to set RA in memory instructions. */ -#define RA_REGISTER_MASK 0x001f0000 -/* Value to shift register by to insert RA. */ -#define RA_REGISTER_SHIFT 16 /* The name of the dynamic interpreter. This is put in the .interp section. */ @@ -146,6 +102,10 @@ static boolean ppc64_elf_finish_dynamic_ /* Pad with this. */ #define NOP 0x60000000 +/* Some other nops. */ +#define CROR_151515 0x4def7b82 +#define CROR_313131 0x4ffffb82 + /* .glink entries for the first 32k functions are two instructions. */ #define LI_R0_0 0x38000000 /* li %r0,0 */ #define B_DOT 0x48000000 /* b . */ @@ -273,7 +233,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - ppc64_elf_addr16_ha_reloc, /* special_function */ + ppc64_elf_ha_reloc, /* special_function */ "R_PPC64_ADDR16_HA", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -306,7 +266,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_brtaken_reloc, /* special_function */ "R_PPC64_ADDR14_BRTAKEN",/* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -323,7 +283,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_brtaken_reloc, /* special_function */ "R_PPC64_ADDR14_BRNTAKEN",/* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -370,7 +330,7 @@ static reloc_howto_type ppc64_elf_howto_ true, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_brtaken_reloc, /* special_function */ "R_PPC64_REL14_BRTAKEN", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -387,7 +347,7 @@ static reloc_howto_type ppc64_elf_howto_ true, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_brtaken_reloc, /* special_function */ "R_PPC64_REL14_BRNTAKEN",/* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -403,7 +363,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_GOT16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -419,7 +379,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_GOT16_LO", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -435,7 +395,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont,/* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_GOT16_HI", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -451,7 +411,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont,/* complain_on_overflow */ - ppc64_elf_addr16_ha_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_GOT16_HA", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -470,7 +430,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_COPY", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -486,7 +446,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_GLOB_DAT", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -502,7 +462,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_JMP_SLOT", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -580,7 +540,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLT32", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -612,7 +572,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLT16_LO", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -628,7 +588,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLT16_HI", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -644,31 +604,29 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - ppc64_elf_addr16_ha_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLT16_HA", /* name */ false, /* partial_inplace */ 0, /* src_mask */ 0xffff, /* dst_mask */ false), /* pcrel_offset */ - /* 32-bit section relative relocation. */ - /* FIXME: Verify R_PPC64_SECTOFF. Seems strange with size=2 and - dst_mask=0. */ + /* 16-bit section relative relocation. */ HOWTO (R_PPC64_SECTOFF, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ - true, /* pc_relative */ + 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 */ + ppc64_elf_sectoff_reloc, /* special_function */ "R_PPC64_SECTOFF", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0, /* dst_mask */ - true), /* pcrel_offset */ + 0xffff, /* dst_mask */ + false), /* pcrel_offset */ - /* 16-bit lower half section relative relocation. */ + /* Like R_PPC64_SECTOFF, but no overflow warning. */ HOWTO (R_PPC64_SECTOFF_LO, /* type */ 0, /* rightshift */ 1, /* size (0 = byte, 1 = short, 2 = long) */ @@ -676,7 +634,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_sectoff_reloc, /* special_function */ "R_PPC64_SECTOFF_LO", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -691,7 +649,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_sectoff_reloc, /* special_function */ "R_PPC64_SECTOFF_HI", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -706,7 +664,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - ppc64_elf_addr16_ha_reloc, /* special_function */ + ppc64_elf_sectoff_ha_reloc, /* special_function */ "R_PPC64_SECTOFF_HA", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -714,8 +672,7 @@ static reloc_howto_type ppc64_elf_howto_ false), /* pcrel_offset */ /* Like R_PPC64_REL24 without touching the two least significant - bits. */ - /* FIXME: Verify R_PPC64_ADDR30. */ + bits. Should have been named R_PPC64_REL30! */ HOWTO (R_PPC64_ADDR30, /* type */ 2, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -771,7 +728,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - ppc64_elf_addr16_ha_reloc, /* special_function */ + ppc64_elf_ha_reloc, /* special_function */ "R_PPC64_ADDR16_HIGHERA", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -802,7 +759,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - ppc64_elf_addr16_ha_reloc, /* special_function */ + ppc64_elf_ha_reloc, /* special_function */ "R_PPC64_ADDR16_HIGHESTA", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -847,7 +804,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLT64", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -864,7 +821,7 @@ static reloc_howto_type ppc64_elf_howto_ true, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLTREL64", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -881,7 +838,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_toc_reloc, /* special_function */ "R_PPC64_TOC16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -898,7 +855,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_toc_reloc, /* special_function */ "R_PPC64_TOC16_LO", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -915,7 +872,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_toc_reloc, /* special_function */ "R_PPC64_TOC16_HI", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -934,7 +891,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - ppc64_elf_addr16_ha_reloc, /* special_function */ + ppc64_elf_toc_ha_reloc, /* special_function */ "R_PPC64_TOC16_HA", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -951,7 +908,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_toc64_reloc, /* special_function */ "R_PPC64_TOC", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -974,7 +931,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLTGOT16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -990,7 +947,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLTGOT16_LO", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1006,7 +963,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLTGOT16_HI", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1024,7 +981,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont,/* complain_on_overflow */ - ppc64_elf_addr16_ha_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLTGOT16_HA", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1069,7 +1026,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_GOT16_DS", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1084,7 +1041,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_GOT16_LO_DS", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1099,7 +1056,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLT16_LO_DS", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1107,21 +1064,19 @@ static reloc_howto_type ppc64_elf_howto_ false), /* pcrel_offset */ /* Like R_PPC64_SECTOFF, but for instructions with a DS field. */ - /* FIXME: Verify R_PPC64_SECTOFF. Seems strange with size=2 and - dst_mask=0. */ HOWTO (R_PPC64_SECTOFF_DS, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ - true, /* pc_relative */ + 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 */ + ppc64_elf_sectoff_reloc, /* special_function */ "R_PPC64_SECTOFF_DS", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0, /* dst_mask */ - true), /* pcrel_offset */ + 0xfffc, /* dst_mask */ + false), /* pcrel_offset */ /* Like R_PPC64_SECTOFF_LO, but for instructions with a DS field. */ HOWTO (R_PPC64_SECTOFF_LO_DS, /* type */ @@ -1131,7 +1086,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_sectoff_reloc, /* special_function */ "R_PPC64_SECTOFF_LO_DS",/* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1146,7 +1101,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_toc_reloc, /* special_function */ "R_PPC64_TOC16_DS", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1161,7 +1116,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_toc_reloc, /* special_function */ "R_PPC64_TOC16_LO_DS", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1177,7 +1132,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLTGOT16_DS", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1193,7 +1148,7 @@ static reloc_howto_type ppc64_elf_howto_ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + ppc64_elf_unhandled_reloc, /* special_function */ "R_PPC64_PLTGOT16_LO_DS",/* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1319,7 +1274,7 @@ ppc64_elf_reloc_type_lookup (abfd, code) break; case BFD_RELOC_HI16_S_PLTOFF: ppc_reloc = R_PPC64_PLT16_HA; break; - case BFD_RELOC_32_BASEREL: ppc_reloc = R_PPC64_SECTOFF; + case BFD_RELOC_16_BASEREL: ppc_reloc = R_PPC64_SECTOFF; break; case BFD_RELOC_LO16_BASEREL: ppc_reloc = R_PPC64_SECTOFF_LO; break; @@ -1404,8 +1359,8 @@ ppc64_elf_info_to_howto (abfd, cache_ptr { unsigned int type; + /* Initialize howto table if needed. */ if (!ppc64_elf_howto_table[R_PPC64_ADDR32]) - /* Initialize howto table if needed. */ ppc_howto_init (); type = ELF64_R_TYPE (dst->r_info); @@ -1417,41 +1372,265 @@ ppc64_elf_info_to_howto (abfd, cache_ptr /* Handle the R_PPC_ADDR16_HA and similar relocs. */ static bfd_reloc_status_type -ppc64_elf_addr16_ha_reloc (abfd, reloc_entry, symbol, data, input_section, - output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; +ppc64_elf_ha_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 this is a relocatable link (output_bfd test tells us), just + call the generic function. Any adjustment will be done at final + link time. */ + if (output_bfd != NULL) + return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); + + /* Adjust the addend for sign extension of the low 16 bits. + We won't actually be using the low 16 bits, so trashing them + doesn't matter. */ + reloc_entry->addend += 0x8000; + return bfd_reloc_continue; +} + +static bfd_reloc_status_type +ppc64_elf_brtaken_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message) + bfd *abfd; arelent *reloc_entry; asymbol *symbol; - PTR data ATTRIBUTE_UNUSED; + PTR data; asection *input_section; bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; + char **error_message; { - bfd_vma relocation; + long insn; + enum elf_ppc_reloc_type r_type; + bfd_size_type octets; + /* Disabled until we sort out how ld should choose 'y' vs 'at'. */ + boolean is_power4 = false; + /* If this is a relocatable link (output_bfd test tells us), just + call the generic function. Any adjustment will be done at final + link time. */ if (output_bfd != NULL) + return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); + + octets = reloc_entry->address * bfd_octets_per_byte (abfd); + insn = bfd_get_32 (abfd, (bfd_byte *) data + octets); + insn &= ~(0x01 << 21); + r_type = (enum elf_ppc_reloc_type) reloc_entry->howto->type; + if (r_type == R_PPC64_ADDR14_BRTAKEN + || r_type == R_PPC64_REL14_BRTAKEN) + insn |= 0x01 << 21; /* 'y' or 't' bit, lowest bit of BO field. */ + + if (is_power4) + { + /* Set 'a' bit. This is 0b00010 in BO field for branch + on CR(BI) insns (BO == 001at or 011at), and 0b01000 + for branch on CTR insns (BO == 1a00t or 1a01t). */ + if ((insn & (0x14 << 21)) == (0x04 << 21)) + insn |= 0x02 << 21; + else if ((insn & (0x14 << 21)) == (0x10 << 21)) + insn |= 0x08 << 21; + else + return bfd_reloc_continue; + } + else { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; + bfd_vma target = 0; + bfd_vma from; + + if (!bfd_is_com_section (symbol->section)) + target = symbol->value; + target += symbol->section->output_section->vma; + target += symbol->section->output_offset; + target += reloc_entry->addend; + + from = (reloc_entry->address + + input_section->output_offset + + input_section->output_section->vma); + + /* Invert 'y' bit if not the default. */ + if ((bfd_signed_vma) (target - from) < 0) + insn ^= 0x01 << 21; } + bfd_put_32 (abfd, (bfd_vma) insn, (bfd_byte *) data + octets); + return bfd_reloc_continue; +} + +static bfd_reloc_status_type +ppc64_elf_sectoff_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 this is a relocatable link (output_bfd test tells us), just + call the generic function. Any adjustment will be done at final + link time. */ + if (output_bfd != NULL) + return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); - if (reloc_entry->address > input_section->_cooked_size) - return bfd_reloc_outofrange; + /* Subtract the symbol section base address. */ + reloc_entry->addend -= symbol->section->output_section->vma; + return bfd_reloc_continue; +} - if (bfd_is_com_section (symbol->section)) - relocation = 0; - else - relocation = symbol->value; +static bfd_reloc_status_type +ppc64_elf_sectoff_ha_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 this is a relocatable link (output_bfd test tells us), just + call the generic function. Any adjustment will be done at final + link time. */ + if (output_bfd != NULL) + return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); + + /* Subtract the symbol section base address. */ + reloc_entry->addend -= symbol->section->output_section->vma; - relocation += symbol->section->output_section->vma; - relocation += symbol->section->output_offset; - relocation += reloc_entry->addend; + /* Adjust the addend for sign extension of the low 16 bits. */ + reloc_entry->addend += 0x8000; + return bfd_reloc_continue; +} + +static bfd_reloc_status_type +ppc64_elf_toc_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_vma TOCstart; + + /* If this is a relocatable link (output_bfd test tells us), just + call the generic function. Any adjustment will be done at final + link time. */ + if (output_bfd != NULL) + return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); + + TOCstart = _bfd_get_gp_value (input_section->output_section->owner); + if (TOCstart == 0) + TOCstart = ppc64_elf_toc (input_section->output_section->owner); + + /* Subtract the TOC base address. */ + reloc_entry->addend -= TOCstart + TOC_BASE_OFF; + return bfd_reloc_continue; +} + +static bfd_reloc_status_type +ppc64_elf_toc_ha_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_vma TOCstart; + + /* If this is a relocatable link (output_bfd test tells us), just + call the generic function. Any adjustment will be done at final + link time. */ + if (output_bfd != NULL) + return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); - reloc_entry->addend += (relocation & 0x8000) << 1; + TOCstart = _bfd_get_gp_value (input_section->output_section->owner); + if (TOCstart == 0) + TOCstart = ppc64_elf_toc (input_section->output_section->owner); + /* Subtract the TOC base address. */ + reloc_entry->addend -= TOCstart + TOC_BASE_OFF; + + /* Adjust the addend for sign extension of the low 16 bits. */ + reloc_entry->addend += 0x8000; return bfd_reloc_continue; } +static bfd_reloc_status_type +ppc64_elf_toc64_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_vma TOCstart; + bfd_size_type octets; + + /* If this is a relocatable link (output_bfd test tells us), just + call the generic function. Any adjustment will be done at final + link time. */ + if (output_bfd != NULL) + return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); + + TOCstart = _bfd_get_gp_value (input_section->output_section->owner); + if (TOCstart == 0) + TOCstart = ppc64_elf_toc (input_section->output_section->owner); + + octets = reloc_entry->address * bfd_octets_per_byte (abfd); + bfd_put_64 (abfd, TOCstart + TOC_BASE_OFF, (bfd_byte *) data + octets); + return bfd_reloc_ok; +} + +static bfd_reloc_status_type +ppc64_elf_unhandled_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 this is a relocatable link (output_bfd test tells us), just + call the generic function. Any adjustment will be done at final + link time. */ + if (output_bfd != NULL) + return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); + + if (error_message != NULL) + { + static char buf[60]; + sprintf (buf, "generic linker can't handle %s", + reloc_entry->howto->name); + *error_message = buf; + } + return bfd_reloc_dangerous; +} + /* Function to set whether a module needs the -mrelocatable bit set. */ static boolean @@ -1690,22 +1869,98 @@ struct ppc_dyn_relocs selects between relative and absolute types. */ #define IS_ABSOLUTE_RELOC(RTYPE) \ - ((RTYPE) != R_PPC64_REL14 \ - && (RTYPE) != R_PPC64_REL14_BRNTAKEN \ - && (RTYPE) != R_PPC64_REL14_BRTAKEN \ - && (RTYPE) != R_PPC64_REL24 \ - && (RTYPE) != R_PPC64_REL32 \ - && (RTYPE) != R_PPC64_REL64) + ((RTYPE) != R_PPC64_REL32 \ + && (RTYPE) != R_PPC64_REL64 \ + && (RTYPE) != R_PPC64_ADDR30) + +/* Section name for stubs is the associated section name plus this + string. */ +#define STUB_SUFFIX ".stub" + +/* Linker stubs. + ppc_stub_long_branch: + Used when a 14 bit branch (or even a 24 bit branch) can't reach its + destination, but a 24 bit branch in a stub section will reach. + . b dest + + ppc_stub_plt_branch: + Similar to the above, but a 24 bit branch in the stub section won't + reach its destination. + . addis %r12,%r2,xxx@ha + . ld %r11,xxx@l(%r12) + . mtctr %r11 + . bctr + + ppc_stub_plt_call: + Used to call a function in a shared library. + . addis %r12,%r2,xxx@ha + . std %r2,40(%r1) + . ld %r11,xxx+0@l(%r12) + . ld %r2,xxx+8@l(%r12) + . mtctr %r11 + . ld %r11,xxx+16@l(%r12) + . bctr +*/ + +enum ppc_stub_type { + ppc_stub_none, + ppc_stub_long_branch, + ppc_stub_plt_branch, + ppc_stub_plt_call +}; + +struct ppc_stub_hash_entry { + + /* Base hash table entry structure. */ + struct bfd_hash_entry root; + + /* The stub section. */ + asection *stub_sec; + + /* Offset within stub_sec of the beginning of this stub. */ + bfd_vma stub_offset; + + /* Given the symbol's value and its section we can determine its final + value when building the stubs (so the stub knows where to jump. */ + bfd_vma target_value; + asection *target_section; + + enum ppc_stub_type stub_type; + + /* The symbol table entry, if any, that this was derived from. */ + struct ppc_link_hash_entry *h; + + /* Where this stub is being called from, or, in the case of combined + stub sections, the first input section in the group. */ + asection *id_sec; +}; + +struct ppc_branch_hash_entry { + + /* Base hash table entry structure. */ + struct bfd_hash_entry root; + + /* Offset within .branch_lt. */ + unsigned int offset; -/* ppc64 ELF linker hash entry. */ + /* Generation marker. */ + unsigned int iter; +}; struct ppc_link_hash_entry { struct elf_link_hash_entry elf; + /* A pointer to the most recently used stub hash entry against this + symbol. */ + struct ppc_stub_hash_entry *stub_cache; + /* Track dynamic relocs copied for this symbol. */ struct ppc_dyn_relocs *dyn_relocs; + /* Link between function code and descriptor symbols. */ + struct elf_link_hash_entry *oh; + /* Flag function code and descriptor symbols. */ unsigned int is_func:1; unsigned int is_func_descriptor:1; @@ -1717,6 +1972,34 @@ struct ppc_link_hash_table { struct elf_link_hash_table elf; + /* The stub hash table. */ + struct bfd_hash_table stub_hash_table; + + /* Another hash table for plt_branch stubs. */ + struct bfd_hash_table branch_hash_table; + + /* Linker stub bfd. */ + bfd *stub_bfd; + + /* Linker call-backs. */ + asection * (*add_stub_section) PARAMS ((const char *, asection *)); + void (*layout_sections_again) PARAMS ((void)); + + /* Array to keep track of which stub sections have been created, and + information on stub grouping. */ + struct map_stub { + /* This is the section to which stubs in the group will be attached. */ + asection *link_sec; + /* The stub section. */ + asection *stub_sec; + } *stub_group; + + /* Assorted information used by ppc64_elf_size_stubs. */ + unsigned int bfd_count; + int top_index; + asection **input_list; + Elf_Internal_Sym **all_local_syms; + /* Short-cuts to get to dynamic linker sections. */ asection *sgot; asection *srelgot; @@ -1724,34 +2007,198 @@ struct ppc_link_hash_table asection *srelplt; asection *sdynbss; asection *srelbss; - asection *sstub; asection *sglink; asection *sfpr; + asection *sbrlt; + asection *srelbrlt; /* Set on error. */ - int plt_overflow; + unsigned int stub_error; - /* Small local sym to section mapping cache. */ - struct sym_sec_cache sym_sec; -}; + /* Flag set when small branches are detected. Used to + select suitable defaults for the stub group size. */ + unsigned int has_14bit_branch; -/* Get the ppc64 ELF linker hash table from a link_info structure. */ + /* Set if we detect a reference undefined weak symbol. */ + unsigned int have_undefweak; -#define ppc_hash_table(p) \ - ((struct ppc_link_hash_table *) ((p)->hash)) + /* Incremented every time we size stubs. */ + unsigned int stub_iteration; -/* Create an entry in a ppc64 ELF linker hash table. */ + /* Small local sym to section mapping cache. */ + struct sym_sec_cache sym_sec; +}; -static struct bfd_hash_entry * -link_hash_newfunc (entry, table, string) - struct bfd_hash_entry *entry; - struct bfd_hash_table *table; - const char *string; -{ - /* Allocate the structure if it has not already been allocated by a - subclass. */ - if (entry == NULL) - { +static struct bfd_hash_entry *stub_hash_newfunc + PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *)); +static struct bfd_hash_entry *branch_hash_newfunc + PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *)); +static struct bfd_hash_entry *link_hash_newfunc + PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *)); +static struct bfd_link_hash_table *ppc64_elf_link_hash_table_create + PARAMS ((bfd *)); +static void ppc64_elf_link_hash_table_free + PARAMS ((struct bfd_link_hash_table *)); +static char *ppc_stub_name + PARAMS ((const asection *, const asection *, + const struct ppc_link_hash_entry *, const Elf_Internal_Rela *)); +static struct ppc_stub_hash_entry *ppc_get_stub_entry + PARAMS ((const asection *, const asection *, struct elf_link_hash_entry *, + const Elf_Internal_Rela *, struct ppc_link_hash_table *)); +static struct ppc_stub_hash_entry *ppc_add_stub + PARAMS ((const char *, asection *, struct ppc_link_hash_table *)); +static boolean create_linkage_sections + PARAMS ((bfd *, struct bfd_link_info *)); +static boolean create_got_section + PARAMS ((bfd *, struct bfd_link_info *)); +static boolean ppc64_elf_create_dynamic_sections + PARAMS ((bfd *, struct bfd_link_info *)); +static void ppc64_elf_copy_indirect_symbol + PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *)); +static boolean ppc64_elf_check_relocs + PARAMS ((bfd *, struct bfd_link_info *, asection *, + const Elf_Internal_Rela *)); +static asection * ppc64_elf_gc_mark_hook + PARAMS ((bfd *abfd, struct bfd_link_info *info, Elf_Internal_Rela *rel, + struct elf_link_hash_entry *h, Elf_Internal_Sym *sym)); +static boolean ppc64_elf_gc_sweep_hook + PARAMS ((bfd *abfd, struct bfd_link_info *info, asection *sec, + const Elf_Internal_Rela *relocs)); +static boolean func_desc_adjust + PARAMS ((struct elf_link_hash_entry *, PTR)); +static boolean ppc64_elf_func_desc_adjust + PARAMS ((bfd *, struct bfd_link_info *)); +static boolean ppc64_elf_adjust_dynamic_symbol + PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); +static void ppc64_elf_hide_symbol + PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean)); +static boolean allocate_dynrelocs + PARAMS ((struct elf_link_hash_entry *, PTR)); +static boolean readonly_dynrelocs + PARAMS ((struct elf_link_hash_entry *, PTR)); +static enum elf_reloc_type_class ppc64_elf_reloc_type_class + PARAMS ((const Elf_Internal_Rela *)); +static boolean ppc64_elf_size_dynamic_sections + PARAMS ((bfd *, struct bfd_link_info *)); +static INLINE enum ppc_stub_type ppc_type_of_stub + PARAMS ((asection *, const Elf_Internal_Rela *, + struct ppc_link_hash_entry **, bfd_vma)); +static bfd_byte *build_plt_stub + PARAMS ((bfd *, bfd_byte *, int, int)); +static boolean ppc_build_one_stub + PARAMS ((struct bfd_hash_entry *, PTR)); +static boolean ppc_size_one_stub + PARAMS ((struct bfd_hash_entry *, PTR)); +static void group_sections + PARAMS ((struct ppc_link_hash_table *, bfd_size_type, boolean)); +static boolean get_local_syms + PARAMS ((bfd *, struct ppc_link_hash_table *)); +static boolean ppc64_elf_fake_sections + PARAMS ((bfd *, Elf64_Internal_Shdr *, asection *)); +static boolean ppc64_elf_relocate_section + PARAMS ((bfd *, struct bfd_link_info *info, bfd *, asection *, bfd_byte *, + Elf_Internal_Rela *relocs, Elf_Internal_Sym *local_syms, + asection **)); +static boolean ppc64_elf_finish_dynamic_symbol + PARAMS ((bfd *, struct bfd_link_info *, struct elf_link_hash_entry *, + Elf_Internal_Sym *)); +static boolean ppc64_elf_finish_dynamic_sections + PARAMS ((bfd *, struct bfd_link_info *)); + +/* Get the ppc64 ELF linker hash table from a link_info structure. */ + +#define ppc_hash_table(p) \ + ((struct ppc_link_hash_table *) ((p)->hash)) + +#define ppc_stub_hash_lookup(table, string, create, copy) \ + ((struct ppc_stub_hash_entry *) \ + bfd_hash_lookup ((table), (string), (create), (copy))) + +#define ppc_branch_hash_lookup(table, string, create, copy) \ + ((struct ppc_branch_hash_entry *) \ + bfd_hash_lookup ((table), (string), (create), (copy))) + +/* Create an entry in the stub hash table. */ + +static struct bfd_hash_entry * +stub_hash_newfunc (entry, table, string) + struct bfd_hash_entry *entry; + struct bfd_hash_table *table; + const char *string; +{ + /* Allocate the structure if it has not already been allocated by a + subclass. */ + if (entry == NULL) + { + entry = bfd_hash_allocate (table, sizeof (struct ppc_stub_hash_entry)); + if (entry == NULL) + return entry; + } + + /* Call the allocation method of the superclass. */ + entry = bfd_hash_newfunc (entry, table, string); + if (entry != NULL) + { + struct ppc_stub_hash_entry *eh; + + /* Initialize the local fields. */ + eh = (struct ppc_stub_hash_entry *) entry; + eh->stub_sec = NULL; + eh->stub_offset = 0; + eh->target_value = 0; + eh->target_section = NULL; + eh->stub_type = ppc_stub_none; + eh->h = NULL; + eh->id_sec = NULL; + } + + return entry; +} + +/* Create an entry in the branch hash table. */ + +static struct bfd_hash_entry * +branch_hash_newfunc (entry, table, string) + struct bfd_hash_entry *entry; + struct bfd_hash_table *table; + const char *string; +{ + /* Allocate the structure if it has not already been allocated by a + subclass. */ + if (entry == NULL) + { + entry = bfd_hash_allocate (table, sizeof (struct ppc_branch_hash_entry)); + if (entry == NULL) + return entry; + } + + /* Call the allocation method of the superclass. */ + entry = bfd_hash_newfunc (entry, table, string); + if (entry != NULL) + { + struct ppc_branch_hash_entry *eh; + + /* Initialize the local fields. */ + eh = (struct ppc_branch_hash_entry *) entry; + eh->offset = 0; + eh->iter = 0; + } + + return entry; +} + +/* Create an entry in a ppc64 ELF linker hash table. */ + +static struct bfd_hash_entry * +link_hash_newfunc (entry, table, string) + struct bfd_hash_entry *entry; + struct bfd_hash_table *table; + const char *string; +{ + /* Allocate the structure if it has not already been allocated by a + subclass. */ + if (entry == NULL) + { entry = bfd_hash_allocate (table, sizeof (struct ppc_link_hash_entry)); if (entry == NULL) return entry; @@ -1763,7 +2210,9 @@ link_hash_newfunc (entry, table, string) { struct ppc_link_hash_entry *eh = (struct ppc_link_hash_entry *) entry; + eh->stub_cache = NULL; eh->dyn_relocs = NULL; + eh->oh = NULL; eh->is_func = 0; eh->is_func_descriptor = 0; } @@ -1790,21 +2239,197 @@ ppc64_elf_link_hash_table_create (abfd) return NULL; } + /* Init the stub hash table too. */ + if (!bfd_hash_table_init (&htab->stub_hash_table, stub_hash_newfunc)) + return NULL; + + /* And the branch hash table. */ + if (!bfd_hash_table_init (&htab->branch_hash_table, branch_hash_newfunc)) + return NULL; + + htab->stub_bfd = NULL; + htab->add_stub_section = NULL; + htab->layout_sections_again = NULL; + htab->stub_group = NULL; htab->sgot = NULL; htab->srelgot = NULL; htab->splt = NULL; htab->srelplt = NULL; htab->sdynbss = NULL; htab->srelbss = NULL; - htab->sstub = NULL; htab->sglink = NULL; htab->sfpr = NULL; - htab->plt_overflow = 0; + htab->sbrlt = NULL; + htab->srelbrlt = NULL; + htab->stub_error = 0; + htab->has_14bit_branch = 0; + htab->have_undefweak = 0; + htab->stub_iteration = 0; htab->sym_sec.abfd = NULL; return &htab->elf.root; } +/* Free the derived linker hash table. */ + +static void +ppc64_elf_link_hash_table_free (hash) + struct bfd_link_hash_table *hash; +{ + struct ppc_link_hash_table *ret = (struct ppc_link_hash_table *) hash; + + bfd_hash_table_free (&ret->stub_hash_table); + bfd_hash_table_free (&ret->branch_hash_table); + _bfd_generic_link_hash_table_free (hash); +} + +/* Build a name for an entry in the stub hash table. */ + +static char * +ppc_stub_name (input_section, sym_sec, h, rel) + const asection *input_section; + const asection *sym_sec; + const struct ppc_link_hash_entry *h; + const Elf_Internal_Rela *rel; +{ + char *stub_name; + bfd_size_type len; + + /* rel->r_addend is actually 64 bit, but who uses more than +/- 2^31 + offsets from a sym as a branch target? In fact, we could + probably assume the addend is always zero. */ + BFD_ASSERT (((int) rel->r_addend & 0xffffffff) == rel->r_addend); + + if (h) + { + len = 8 + 1 + strlen (h->elf.root.root.string) + 1 + 8 + 1; + stub_name = bfd_malloc (len); + if (stub_name != NULL) + { + sprintf (stub_name, "%08x_%s+%x", + input_section->id & 0xffffffff, + h->elf.root.root.string, + (int) rel->r_addend & 0xffffffff); + } + } + else + { + len = 8 + 1 + 8 + 1 + 8 + 1 + 16 + 1; + stub_name = bfd_malloc (len); + if (stub_name != NULL) + { + sprintf (stub_name, "%08x_%x:%x+%x", + input_section->id & 0xffffffff, + sym_sec->id & 0xffffffff, + (int) ELF64_R_SYM (rel->r_info) & 0xffffffff, + (int) rel->r_addend & 0xffffffff); + } + } + return stub_name; +} + +/* Look up an entry in the stub hash. Stub entries are cached because + creating the stub name takes a bit of time. */ + +static struct ppc_stub_hash_entry * +ppc_get_stub_entry (input_section, sym_sec, hash, rel, htab) + const asection *input_section; + const asection *sym_sec; + struct elf_link_hash_entry *hash; + const Elf_Internal_Rela *rel; + struct ppc_link_hash_table *htab; +{ + struct ppc_stub_hash_entry *stub_entry; + struct ppc_link_hash_entry *h = (struct ppc_link_hash_entry *) hash; + const asection *id_sec; + + /* If this input section is part of a group of sections sharing one + stub section, then use the id of the first section in the group. + Stub names need to include a section id, as there may well be + more than one stub used to reach say, printf, and we need to + distinguish between them. */ + id_sec = htab->stub_group[input_section->id].link_sec; + + if (h != NULL && h->stub_cache != NULL + && h->stub_cache->h == h + && h->stub_cache->id_sec == id_sec) + { + stub_entry = h->stub_cache; + } + else + { + char *stub_name; + + stub_name = ppc_stub_name (id_sec, sym_sec, h, rel); + if (stub_name == NULL) + return NULL; + + stub_entry = ppc_stub_hash_lookup (&htab->stub_hash_table, + stub_name, false, false); + if (h != NULL) + h->stub_cache = stub_entry; + + free (stub_name); + } + + return stub_entry; +} + +/* Add a new stub entry to the stub hash. Not all fields of the new + stub entry are initialised. */ + +static struct ppc_stub_hash_entry * +ppc_add_stub (stub_name, section, htab) + const char *stub_name; + asection *section; + struct ppc_link_hash_table *htab; +{ + asection *link_sec; + asection *stub_sec; + struct ppc_stub_hash_entry *stub_entry; + + link_sec = htab->stub_group[section->id].link_sec; + stub_sec = htab->stub_group[section->id].stub_sec; + if (stub_sec == NULL) + { + stub_sec = htab->stub_group[link_sec->id].stub_sec; + if (stub_sec == NULL) + { + bfd_size_type len; + char *s_name; + + len = strlen (link_sec->name) + sizeof (STUB_SUFFIX); + s_name = bfd_alloc (htab->stub_bfd, len); + if (s_name == NULL) + return NULL; + + strcpy (s_name, link_sec->name); + strcpy (s_name + len - sizeof (STUB_SUFFIX), STUB_SUFFIX); + stub_sec = (*htab->add_stub_section) (s_name, link_sec); + if (stub_sec == NULL) + return NULL; + htab->stub_group[link_sec->id].stub_sec = stub_sec; + } + htab->stub_group[section->id].stub_sec = stub_sec; + } + + /* Enter this entry into the linker stub hash table. */ + stub_entry = ppc_stub_hash_lookup (&htab->stub_hash_table, stub_name, + true, false); + if (stub_entry == NULL) + { + (*_bfd_error_handler) (_("%s: cannot create stub entry %s"), + bfd_archive_filename (section->owner), + stub_name); + return NULL; + } + + stub_entry->stub_sec = stub_sec; + stub_entry->stub_offset = 0; + stub_entry->id_sec = link_sec; + return stub_entry; +} + /* Create sections for linker generated code. */ static boolean @@ -1820,24 +2445,38 @@ create_linkage_sections (dynobj, info) /* Create .sfpr for code to save and restore fp regs. */ flags = (SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_READONLY | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED); - htab->sfpr = bfd_make_section (dynobj, ".sfpr"); + htab->sfpr = bfd_make_section_anyway (dynobj, ".sfpr"); if (htab->sfpr == NULL || ! bfd_set_section_flags (dynobj, htab->sfpr, flags) || ! bfd_set_section_alignment (dynobj, htab->sfpr, 2)) return false; - /* Create .stub and .glink for global linkage functions. */ - htab->sstub = bfd_make_section (dynobj, ".stub"); - if (htab->sstub == NULL - || ! bfd_set_section_flags (dynobj, htab->sstub, flags) - || ! bfd_set_section_alignment (dynobj, htab->sstub, 2)) - return false; - htab->sglink = bfd_make_section (dynobj, ".glink"); + /* Create .glink for lazy dynamic linking support. */ + htab->sglink = bfd_make_section_anyway (dynobj, ".glink"); if (htab->sglink == NULL || ! bfd_set_section_flags (dynobj, htab->sglink, flags) || ! bfd_set_section_alignment (dynobj, htab->sglink, 2)) return false; + /* Create .branch_lt for plt_branch stubs. */ + flags = (SEC_ALLOC | SEC_LOAD + | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED); + htab->sbrlt = bfd_make_section_anyway (dynobj, ".branch_lt"); + if (htab->sbrlt == NULL + || ! bfd_set_section_flags (dynobj, htab->sbrlt, flags) + || ! bfd_set_section_alignment (dynobj, htab->sbrlt, 3)) + return false; + + if (info->shared) + { + flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY + | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED); + htab->srelbrlt = bfd_make_section (dynobj, ".rela.branch_lt"); + if (!htab->srelbrlt + || ! bfd_set_section_flags (dynobj, htab->srelbrlt, flags) + || ! bfd_set_section_alignment (dynobj, htab->srelbrlt, 3)) + return false; + } return true; } @@ -2099,6 +2738,12 @@ ppc64_elf_check_relocs (abfd, info, sec, return false; break; + case R_PPC64_REL14: + case R_PPC64_REL14_BRTAKEN: + case R_PPC64_REL14_BRNTAKEN: + htab->has_14bit_branch = 1; + /* Fall through. */ + case R_PPC64_REL24: if (h != NULL && h->root.root.string[0] == '.' @@ -2124,22 +2769,16 @@ ppc64_elf_check_relocs (abfd, info, sec, false, false, false); if (fdh != NULL) { - /* Ensure the function descriptor symbol string is - part of the code symbol string. We aren't - changing the name here, just allowing some tricks - in ppc64_elf_hide_symbol. */ - fdh->root.root.string = h->root.root.string + 1; ((struct ppc_link_hash_entry *) fdh)->is_func_descriptor = 1; + ((struct ppc_link_hash_entry *) fdh)->oh = h; ((struct ppc_link_hash_entry *) h)->is_func = 1; + ((struct ppc_link_hash_entry *) h)->oh = fdh; } } /* Fall through. */ case R_PPC64_REL64: case R_PPC64_REL32: - case R_PPC64_REL14: - case R_PPC64_REL14_BRTAKEN: - case R_PPC64_REL14_BRNTAKEN: case R_PPC64_ADDR14: case R_PPC64_ADDR14_BRNTAKEN: case R_PPC64_ADDR14_BRTAKEN: @@ -2407,6 +3046,9 @@ ppc64_elf_gc_sweep_hook (abfd, info, sec } break; + case R_PPC64_REL14: + case R_PPC64_REL14_BRNTAKEN: + case R_PPC64_REL14_BRTAKEN: case R_PPC64_REL24: if (r_symndx >= symtab_hdr->sh_info) { @@ -2416,9 +3058,6 @@ ppc64_elf_gc_sweep_hook (abfd, info, sec } break; - case R_PPC64_REL14: - case R_PPC64_REL14_BRNTAKEN: - case R_PPC64_REL14_BRTAKEN: case R_PPC64_REL32: case R_PPC64_REL64: if (r_symndx >= symtab_hdr->sh_info) @@ -2515,18 +3154,23 @@ func_desc_adjust (h, inf) if (!((struct ppc_link_hash_entry *) h)->is_func) return true; + if (h->root.type == bfd_link_hash_undefweak + && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR)) + htab->have_undefweak = true; + if (h->plt.refcount > 0 && h->root.root.string[0] == '.' && h->root.root.string[1] != '\0') { - struct elf_link_hash_entry *fdh; + struct elf_link_hash_entry *fdh = ((struct ppc_link_hash_entry *) h)->oh; boolean force_local; /* Find the corresponding function descriptor symbol. Create it as undefined if necessary. */ - fdh = elf_link_hash_lookup (&htab->elf, h->root.root.string + 1, - false, false, true); + if (fdh == NULL) + fdh = elf_link_hash_lookup (&htab->elf, h->root.root.string + 1, + false, false, true); if (fdh == NULL && info->shared @@ -2575,7 +3219,8 @@ func_desc_adjust (h, inf) fdh->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; } ((struct ppc_link_hash_entry *) fdh)->is_func_descriptor = 1; - fdh->root.root.string = h->root.root.string + 1; + ((struct ppc_link_hash_entry *) fdh)->oh = h; + ((struct ppc_link_hash_entry *) h)->oh = fdh; } /* Now that the info is on the function descriptor, clear the @@ -2585,8 +3230,14 @@ func_desc_adjust (h, inf) been imported from another library. Function code syms that are really in the library we must leave global to prevent the linker dragging in a definition from a static library. */ - force_local = ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0 - && info->shared); + force_local = (info->shared + && ((h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0 + || fdh == NULL + || (fdh->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0 + || (fdh->elf_link_hash_flags + & ELF_LINK_FORCED_LOCAL) != 0)); _bfd_elf_link_hash_hide_symbol (info, h, force_local); } @@ -2610,6 +3261,7 @@ ppc64_elf_func_desc_adjust (obfd, info) unsigned int lowest_restf = MAX_SAVE_FPR + 2; unsigned int i; struct elf_link_hash_entry *h; + bfd_byte *p; char sym[10]; htab = ppc_hash_table (info); @@ -2660,43 +3312,53 @@ ppc64_elf_func_desc_adjust (obfd, info) } } + elf_link_hash_traverse (&htab->elf, func_desc_adjust, (PTR) info); + htab->sfpr->_raw_size = ((MAX_SAVE_FPR + 2 - lowest_savef) * 4 + (MAX_SAVE_FPR + 2 - lowest_restf) * 4); if (htab->sfpr->_raw_size == 0) { - _bfd_strip_section_from_output (info, htab->sfpr); - } - else - { - bfd_byte *p = (bfd_byte *) bfd_alloc (htab->elf.dynobj, - htab->sfpr->_raw_size); - if (p == NULL) - return false; - htab->sfpr->contents = p; - - for (i = lowest_savef; i <= MAX_SAVE_FPR; i++) + if (!htab->have_undefweak) { - unsigned int fpr = i << 21; - unsigned int stackoff = (1 << 16) - (MAX_SAVE_FPR + 1 - i) * 8; - bfd_put_32 (htab->elf.dynobj, STFD_FR0_0R1 + fpr + stackoff, p); - p += 4; + _bfd_strip_section_from_output (info, htab->sfpr); + return true; } + + htab->sfpr->_raw_size = 4; + } + + p = (bfd_byte *) bfd_alloc (htab->elf.dynobj, htab->sfpr->_raw_size); + if (p == NULL) + return false; + htab->sfpr->contents = p; + + for (i = lowest_savef; i <= MAX_SAVE_FPR; i++) + { + unsigned int fpr = i << 21; + unsigned int stackoff = (1 << 16) - (MAX_SAVE_FPR + 1 - i) * 8; + bfd_put_32 (htab->elf.dynobj, STFD_FR0_0R1 + fpr + stackoff, p); + p += 4; + } + if (lowest_savef <= MAX_SAVE_FPR) + { bfd_put_32 (htab->elf.dynobj, BLR, p); p += 4; + } - for (i = lowest_restf; i <= MAX_SAVE_FPR; i++) - { - unsigned int fpr = i << 21; - unsigned int stackoff = (1 << 16) - (MAX_SAVE_FPR + 1 - i) * 8; - bfd_put_32 (htab->elf.dynobj, LFD_FR0_0R1 + fpr + stackoff, p); - p += 4; - } - bfd_put_32 (htab->elf.dynobj, BLR, p); + for (i = lowest_restf; i <= MAX_SAVE_FPR; i++) + { + unsigned int fpr = i << 21; + unsigned int stackoff = (1 << 16) - (MAX_SAVE_FPR + 1 - i) * 8; + bfd_put_32 (htab->elf.dynobj, LFD_FR0_0R1 + fpr + stackoff, p); p += 4; } + if (lowest_restf <= MAX_SAVE_FPR + || htab->sfpr->_raw_size == 4) + { + bfd_put_32 (htab->elf.dynobj, BLR, p); + } - elf_link_hash_traverse (&htab->elf, func_desc_adjust, (PTR) info); return true; } @@ -2840,13 +3502,48 @@ ppc64_elf_hide_symbol (info, h, force_lo if (((struct ppc_link_hash_entry *) h)->is_func_descriptor) { - const char *name; - struct elf_link_hash_entry *fh; - struct ppc_link_hash_table *htab; - - name = h->root.root.string - 1; - htab = ppc_hash_table (info); - fh = elf_link_hash_lookup (&htab->elf, name, false, false, false); + struct elf_link_hash_entry *fh = ((struct ppc_link_hash_entry *) h)->oh; + + if (fh == NULL) + { + const char *p, *q; + struct ppc_link_hash_table *htab; + char save; + + /* We aren't supposed to use alloca in BFD because on + systems which do not have alloca the version in libiberty + calls xmalloc, which might cause the program to crash + when it runs out of memory. This function doesn't have a + return status, so there's no way to gracefully return an + error. So cheat. We know that string[-1] can be safely + dereferenced; It's either a string in an ELF string + table, or allocated in an objalloc structure. */ + + p = h->root.root.string - 1; + save = *p; + *(char *) p = '.'; + htab = ppc_hash_table (info); + fh = elf_link_hash_lookup (&htab->elf, p, false, false, false); + *(char *) p = save; + + /* Unfortunately, if it so happens that the string we were + looking for was allocated immediately before this string, + then we overwrote the string terminator. That's the only + reason the lookup should fail. */ + if (fh == NULL) + { + q = h->root.root.string + strlen (h->root.root.string); + while (q >= h->root.root.string && *q == *p) + --q, --p; + if (q < h->root.root.string && *p == '.') + fh = elf_link_hash_lookup (&htab->elf, p, false, false, false); + } + if (fh != NULL) + { + ((struct ppc_link_hash_entry *) h)->oh = fh; + ((struct ppc_link_hash_entry *) fh)->oh = h; + } + } if (fh != NULL) _bfd_elf_link_hash_hide_symbol (info, fh, force_local); } @@ -2905,10 +3602,7 @@ allocate_dynrelocs (h, inf) /* Make room for this entry. */ s->_raw_size += PLT_ENTRY_SIZE; - /* Make room for the .stub and .glink code. */ - s = htab->sstub; - s->_raw_size += PLT_CALL_STUB_SIZE; - + /* Make room for the .glink code. */ s = htab->sglink; if (s->_raw_size == 0) s->_raw_size += GLINK_CALL_STUB_SIZE; @@ -3162,15 +3856,15 @@ ppc64_elf_size_dynamic_sections (output_ relocs = false; for (s = dynobj->sections; s != NULL; s = s->next) { - bfd_vma size; - if ((s->flags & SEC_LINKER_CREATED) == 0) continue; - if (s == htab->splt - || s == htab->sgot - || s == htab->sstub - || s == htab->sglink) + if (s == htab->sbrlt || s == htab->srelbrlt) + /* These haven't been allocated yet; don't strip. */ + continue; + else if (s == htab->splt + || s == htab->sgot + || s == htab->sglink) { /* Strip this section if we don't need it; see the comment below. */ @@ -3216,13 +3910,7 @@ ppc64_elf_size_dynamic_sections (output_ section's contents are written out. This should not happen, but this way if it does, we get a R_PPC64_NONE reloc instead of garbage. */ - size = s->_raw_size; - if (s == htab->sstub) - { - /* .stub may grow. Allocate enough for the maximum growth. */ - size += (size + 65536 + 65535) / 65536 * 4; - } - s->contents = (bfd_byte *) bfd_zalloc (dynobj, size); + s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->_raw_size); if (s->contents == NULL) return false; } @@ -3243,7 +3931,7 @@ ppc64_elf_size_dynamic_sections (output_ return false; } - if (htab->splt->_raw_size != 0) + if (htab->splt != NULL && htab->splt->_raw_size != 0) { if (!add_dynamic_entry (DT_PLTGOT, 0) || !add_dynamic_entry (DT_PLTRELSZ, 0) @@ -3285,125 +3973,56 @@ ppc64_elf_size_dynamic_sections (output_ return true; } -/* Called after we have seen all the input files/sections, but before - final symbol resolution and section placement has been determined. +/* Determine the type of stub needed, if any, for a call. */ - We use this hook to provide a value for TOCstart, which we store in - the output bfd elf_gp. */ - -boolean -ppc64_elf_set_toc (obfd, info) - bfd *obfd; - struct bfd_link_info *info; +static INLINE enum ppc_stub_type +ppc_type_of_stub (input_sec, rel, hash, destination) + asection *input_sec; + const Elf_Internal_Rela *rel; + struct ppc_link_hash_entry **hash; + bfd_vma destination; { - if (!info->relocateable) - { - asection *s; - bfd_vma TOCstart; + struct ppc_link_hash_entry *h = *hash; + bfd_vma location; + bfd_vma branch_offset; + bfd_vma max_branch_offset; + unsigned int r_type; - /* The TOC consists of sections .got, .toc, .tocbss, .plt in that - order. The TOC starts where the first of these sections starts. */ - s = bfd_get_section_by_name (obfd, ".got"); - if (s == NULL) - s = bfd_get_section_by_name (obfd, ".toc"); - if (s == NULL) - s = bfd_get_section_by_name (obfd, ".tocbss"); - if (s == NULL) - s = bfd_get_section_by_name (obfd, ".plt"); - if (s == NULL) + if (h != NULL) + { + if (h->oh != NULL + && h->oh->plt.offset != (bfd_vma) -1 + && h->oh->dynindx != -1) { - /* This may happen for - o references to TOC base (SYM@toc / TOC[tc0]) without a - .toc directive - o bad linker script - o --gc-sections and empty TOC sections - - FIXME: Warn user? */ - - /* Look for a likely section. We probably won't even be - using TOCstart. */ - for (s = obfd->sections; s != NULL; s = s->next) - if ((s->flags & (SEC_ALLOC | SEC_SMALL_DATA | SEC_READONLY)) - == (SEC_ALLOC | SEC_SMALL_DATA)) - break; - if (s == NULL) - for (s = obfd->sections; s != NULL; s = s->next) - if ((s->flags & (SEC_ALLOC | SEC_SMALL_DATA)) - == (SEC_ALLOC | SEC_SMALL_DATA)) - break; - if (s == NULL) - for (s = obfd->sections; s != NULL; s = s->next) - if ((s->flags & (SEC_ALLOC | SEC_READONLY)) == SEC_ALLOC) - break; - if (s == NULL) - for (s = obfd->sections; s != NULL; s = s->next) - if ((s->flags & SEC_ALLOC) == SEC_ALLOC) - break; + *hash = (struct ppc_link_hash_entry *) h->oh; + return ppc_stub_plt_call; } - TOCstart = 0; - if (s != NULL) - TOCstart = s->output_section->vma + s->output_offset; - - elf_gp (obfd) = TOCstart; + if (h->elf.root.type == bfd_link_hash_undefweak + || h->elf.root.type == bfd_link_hash_undefined) + return ppc_stub_none; } - return true; -} -/* PowerPC64 .plt entries are 24 bytes long, which doesn't divide - evenly into 64k. Sometimes with a large enough .plt, we'll need to - use offsets differing in the high 16 bits when accessing a .plt - entry from a .plt call stub. This function adjusts the size of - .stub to accommodate the extra stub instruction needed in such - cases. */ + /* Determine where the call point is. */ + location = (input_sec->output_offset + + input_sec->output_section->vma + + rel->r_offset); -boolean -ppc64_elf_size_stubs (obfd, info, changed) - bfd *obfd; - struct bfd_link_info *info; - int *changed; -{ - struct ppc_link_hash_table *htab = ppc_hash_table (info); - bfd_vma plt_offset, next_64k; - long base, num, extra; + branch_offset = destination - location; + r_type = ELF64_R_TYPE (rel->r_info); - /* .plt and .stub should be both present, or both absent. */ - if ((htab->splt == NULL || htab->splt->_raw_size == 0) - != (htab->sstub == NULL || htab->sstub->_raw_size == 0)) - abort (); + /* Determine if a long branch stub is needed. */ + max_branch_offset = 1 << 25; + if (r_type != (unsigned int) R_PPC64_REL24) + max_branch_offset = 1 << 15; - /* If no .plt, then nothing to do. */ - if (htab->splt == NULL || htab->splt->_raw_size == 0) - return true; + if (branch_offset + max_branch_offset >= 2 * max_branch_offset) + /* We need a stub. Figure out whether a long_branch or plt_branch + is needed later. */ + return ppc_stub_long_branch; - plt_offset = (htab->splt->output_section->vma - + htab->splt->output_offset - - elf_gp (obfd)); - next_64k = (plt_offset + 65535) & -65536; - - /* If the .plt doesn't have any entries crossing a 64k boundary, - then there is no need for bigger stubs. */ - if (plt_offset + htab->splt->_raw_size <= next_64k) - return true; - - /* OK, so we have at least one transition. Since .plt entries are - 24 bytes long, we'll strike it lucky every 3*64k, with the 64k - boundary between .plt entries. */ - base = next_64k / 65536; - num = (plt_offset + htab->splt->_raw_size - next_64k) / 65536; - extra = (base % 3 + num + 1) * 2 / 3; - - /* Allow one extra instruction for each EXTRA. The change in .stub - may change the location of .toc and .plt. .toc and .plt ought to - move as a group, but someone might be playing with eg. .plt - alignment, so don't allow .stub size to decrease. */ - if (htab->sstub->_cooked_size < htab->sstub->_raw_size + extra * 4) - { - htab->sstub->_cooked_size = htab->sstub->_raw_size + extra * 4; - *changed = true; - } - return true; -} + return ppc_stub_none; +} /* Build a .plt call stub. */ @@ -3437,139 +4056,969 @@ build_plt_stub (obfd, p, offset, glink) return p; } -/* Build the stubs for one function call. */ - static boolean -build_one_stub (h, inf) - struct elf_link_hash_entry *h; - PTR inf; +ppc_build_one_stub (gen_entry, in_arg) + struct bfd_hash_entry *gen_entry; + PTR in_arg; { + struct ppc_stub_hash_entry *stub_entry; + struct ppc_branch_hash_entry *br_entry; struct bfd_link_info *info; struct ppc_link_hash_table *htab; + asection *stub_sec; + bfd *stub_bfd; + bfd_byte *loc; + bfd_byte *p; + unsigned int indx; + bfd_vma off; + int size; + + /* Massage our args to the form they really have. */ + stub_entry = (struct ppc_stub_hash_entry *) gen_entry; + info = (struct bfd_link_info *) in_arg; - if (h->root.type == bfd_link_hash_indirect - || h->root.type == bfd_link_hash_warning) - return true; - - info = (struct bfd_link_info *) inf; htab = ppc_hash_table (info); + stub_sec = stub_entry->stub_sec; - if (htab->elf.dynamic_sections_created - && h->plt.offset != (bfd_vma) -1 - && ((struct ppc_link_hash_entry *) h)->is_func_descriptor) + /* Make a note of the offset within the stubs for this entry. */ + stub_entry->stub_offset = stub_sec->_cooked_size; + loc = stub_sec->contents + stub_entry->stub_offset; + + stub_bfd = stub_sec->owner; + + switch (stub_entry->stub_type) { - struct elf_link_hash_entry *fh; - asection *s; - bfd_vma plt_r2; - bfd_byte *p; - unsigned int indx; + case ppc_stub_long_branch: + /* Branches are relative. This is where we are going to. */ + off = (stub_entry->target_value + + stub_entry->target_section->output_offset + + stub_entry->target_section->output_section->vma); - fh = elf_link_hash_lookup (&htab->elf, h->root.root.string - 1, - false, false, true); + /* And this is where we are coming from. */ + off -= (stub_entry->stub_offset + + stub_sec->output_offset + + stub_sec->output_section->vma); - if (fh == NULL) - abort (); + BFD_ASSERT (off + (1 << 25) < (bfd_vma) (1 << 26)); - BFD_ASSERT (((struct ppc_link_hash_entry *) fh)->is_func); + bfd_put_32 (stub_bfd, (bfd_vma) B_DOT | (off & 0x3fffffc), loc); + size = 4; + break; - /* Build the .plt call stub. */ - plt_r2 = (htab->splt->output_section->vma - + htab->splt->output_offset - + h->plt.offset - - elf_gp (htab->splt->output_section->owner) - - TOC_BASE_OFF); + case ppc_stub_plt_branch: + br_entry = ppc_branch_hash_lookup (&htab->branch_hash_table, + stub_entry->root.string + 9, + false, false); + if (br_entry == NULL) + { + (*_bfd_error_handler) (_("can't find branch stub `%s'"), + stub_entry->root.string + 9); + htab->stub_error = true; + return false; + } + + off = (stub_entry->target_value + + stub_entry->target_section->output_offset + + stub_entry->target_section->output_section->vma); + + bfd_put_64 (htab->sbrlt->owner, off, + htab->sbrlt->contents + br_entry->offset); + + if (info->shared) + { + /* Create a reloc for the branch lookup table entry. */ + Elf_Internal_Rela rela; + Elf64_External_Rela *r; + + rela.r_offset = (br_entry->offset + + htab->sbrlt->output_offset + + htab->sbrlt->output_section->vma); + rela.r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE); + rela.r_addend = off; + + r = (Elf64_External_Rela *) htab->srelbrlt->contents; + r += htab->srelbrlt->reloc_count++; + bfd_elf64_swap_reloca_out (htab->srelbrlt->owner, &rela, r); + } + + off = (br_entry->offset + + htab->sbrlt->output_offset + + htab->sbrlt->output_section->vma + - elf_gp (htab->sbrlt->output_section->owner) + - TOC_BASE_OFF); - if (plt_r2 + 0x80000000 > 0xffffffff - || (plt_r2 & 3) != 0) + if (off + 0x80000000 > 0xffffffff || (off & 7) != 0) { (*_bfd_error_handler) (_("linkage table error against `%s'"), - h->root.root.string); + stub_entry->root.string); bfd_set_error (bfd_error_bad_value); - htab->plt_overflow = true; + htab->stub_error = true; return false; } - s = htab->sstub; - /* Steal plt.offset to store the stub offset. */ - fh->plt.offset = s->_cooked_size; - p = s->contents + s->_cooked_size; - p = build_plt_stub (s->owner, p, (int) plt_r2, 0); - s->_cooked_size = p - s->contents; + indx = off; + bfd_put_32 (stub_bfd, (bfd_vma) ADDIS_R12_R2 | PPC_HA (indx), loc); + bfd_put_32 (stub_bfd, (bfd_vma) LD_R11_0R12 | PPC_LO (indx), loc + 4); + bfd_put_32 (stub_bfd, (bfd_vma) MTCTR_R11, loc + 8); + bfd_put_32 (stub_bfd, (bfd_vma) BCTR, loc + 12); + size = 16; + break; + case ppc_stub_plt_call: /* Build the .glink lazy link call stub. */ - s = htab->sglink; - p = s->contents + s->_cooked_size; - indx = s->reloc_count; + p = htab->sglink->contents + htab->sglink->_cooked_size; + indx = htab->sglink->reloc_count; if (indx < 0x8000) { - bfd_put_32 (s->owner, LI_R0_0 | indx, p); + bfd_put_32 (htab->sglink->owner, LI_R0_0 | indx, p); p += 4; } else { - bfd_put_32 (s->owner, LIS_R0_0 | PPC_HI (indx), p); + bfd_put_32 (htab->sglink->owner, LIS_R0_0 | PPC_HI (indx), p); p += 4; - bfd_put_32 (s->owner, ORI_R0_R0_0 | PPC_LO (indx), p); + bfd_put_32 (htab->sglink->owner, ORI_R0_R0_0 | PPC_LO (indx), p); p += 4; } - bfd_put_32 (s->owner, B_DOT | ((s->contents - p) & 0x3fffffc), p); + bfd_put_32 (htab->sglink->owner, + B_DOT | ((htab->sglink->contents - p) & 0x3fffffc), p); p += 4; - s->_cooked_size = p - s->contents; - s->reloc_count += 1; + htab->sglink->_cooked_size = p - htab->sglink->contents; + htab->sglink->reloc_count += 1; + + /* Do the best we can for shared libraries built without + exporting ".foo" for each "foo". This can happen when symbol + versioning scripts strip all bar a subset of symbols. */ + if (stub_entry->h->oh->root.type != bfd_link_hash_defined + && stub_entry->h->oh->root.type != bfd_link_hash_defweak) + { + /* Point the symbol at the stub. There may be multiple stubs, + we don't really care; The main thing is to make this sym + defined somewhere. */ + stub_entry->h->oh->root.type = bfd_link_hash_defined; + stub_entry->h->oh->root.u.def.section = stub_entry->stub_sec; + stub_entry->h->oh->root.u.def.value = stub_entry->stub_offset; + } + + /* Now build the stub. */ + off = stub_entry->h->elf.plt.offset; + if (off >= (bfd_vma) -2) + abort (); + + off &= ~ (bfd_vma) 1; + off += (htab->splt->output_offset + + htab->splt->output_section->vma + - elf_gp (htab->splt->output_section->owner) + - TOC_BASE_OFF); + + if (off + 0x80000000 > 0xffffffff || (off & 7) != 0) + { + (*_bfd_error_handler) + (_("linkage table error against `%s'"), + stub_entry->h->elf.root.root.string); + bfd_set_error (bfd_error_bad_value); + htab->stub_error = true; + return false; + } + + p = build_plt_stub (stub_bfd, loc, (int) off, 0); + size = p - loc; + break; + + default: + BFD_FAIL (); + return false; } + + stub_sec->_cooked_size += size; return true; } +/* As above, but don't actually build the stub. Just bump offset so + we know stub section sizes, and select plt_branch stubs where + long_branch stubs won't do. */ + +static boolean +ppc_size_one_stub (gen_entry, in_arg) + struct bfd_hash_entry *gen_entry; + PTR in_arg; +{ + struct ppc_stub_hash_entry *stub_entry; + 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 = (struct ppc_link_hash_table *) in_arg; + + if (stub_entry->stub_type == ppc_stub_plt_call) + { + off = stub_entry->h->elf.plt.offset & ~(bfd_vma) 1; + off += (htab->splt->output_offset + + htab->splt->output_section->vma + - elf_gp (htab->splt->output_section->owner) + - TOC_BASE_OFF); + + size = 28; + if (PPC_HA ((int) off + 16) != PPC_HA ((int) off)) + size += 4; + } + else + { + /* ppc_stub_long_branch or ppc_stub_plt_branch. */ + stub_entry->stub_type = ppc_stub_long_branch; + size = 4; + + off = (stub_entry->target_value + + stub_entry->target_section->output_offset + + stub_entry->target_section->output_section->vma); + off -= (stub_entry->stub_sec->_raw_size + + stub_entry->stub_sec->output_offset + + stub_entry->stub_sec->output_section->vma); + + if (off + (1 << 25) >= (bfd_vma) (1 << 26)) + { + struct ppc_branch_hash_entry *br_entry; + + br_entry = ppc_branch_hash_lookup (&htab->branch_hash_table, + stub_entry->root.string + 9, + true, false); + if (br_entry == NULL) + { + (*_bfd_error_handler) (_("can't build branch stub `%s'"), + stub_entry->root.string + 9); + htab->stub_error = true; + return false; + } + + if (br_entry->iter != htab->stub_iteration) + { + br_entry->iter = htab->stub_iteration; + br_entry->offset = htab->sbrlt->_raw_size; + htab->sbrlt->_raw_size += 8; + } + stub_entry->stub_type = ppc_stub_plt_branch; + size = 16; + } + } + + stub_entry->stub_sec->_raw_size += size; + return true; +} + +/* Set up various things so that we can make a list of input sections + for each output section included in the link. Returns -1 on error, + 0 when no stubs will be needed, and 1 on success. */ + +int +ppc64_elf_setup_section_lists (output_bfd, info) + bfd *output_bfd; + struct bfd_link_info *info; +{ + bfd *input_bfd; + unsigned int bfd_count; + int top_id, top_index; + asection *section; + asection **input_list, **list; + bfd_size_type amt; + struct ppc_link_hash_table *htab = ppc_hash_table (info); + + if (htab->elf.root.creator->flavour != bfd_target_elf_flavour + || htab->sbrlt == NULL) + 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; + input_bfd = input_bfd->link_next) + { + bfd_count += 1; + for (section = input_bfd->sections; + section != NULL; + section = section->next) + { + if (top_id < section->id) + top_id = section->id; + } + } + htab->bfd_count = bfd_count; + + amt = sizeof (struct map_stub) * (top_id + 1); + htab->stub_group = (struct map_stub *) bfd_zmalloc (amt); + if (htab->stub_group == NULL) + return -1; + + /* We can't use output_bfd->section_count here to find the top output + section index as some sections may have been removed, and + _bfd_strip_section_from_output doesn't renumber the indices. */ + for (section = output_bfd->sections, top_index = 0; + section != NULL; + section = section->next) + { + if (top_index < section->index) + top_index = section->index; + } + + htab->top_index = top_index; + amt = sizeof (asection *) * (top_index + 1); + input_list = (asection **) bfd_malloc (amt); + htab->input_list = input_list; + if (input_list == NULL) + return -1; + + /* For sections we aren't interested in, mark their entries with a + value we can check later. */ + list = input_list + top_index; + do + *list = bfd_abs_section_ptr; + while (list-- != input_list); + + for (section = output_bfd->sections; + section != NULL; + section = section->next) + { + if ((section->flags & SEC_CODE) != 0) + input_list[section->index] = NULL; + } + + return 1; +} + +/* The linker repeatedly calls this function for each input section, + in the order that input sections are linked into output sections. + Build lists of input sections to determine groupings between which + we may insert linker stubs. */ + +void +ppc64_elf_next_input_section (info, isec) + struct bfd_link_info *info; + asection *isec; +{ + struct ppc_link_hash_table *htab = ppc_hash_table (info); + + if (isec->output_section->index <= htab->top_index) + { + asection **list = htab->input_list + isec->output_section->index; + if (*list != bfd_abs_section_ptr) + { + /* Steal the link_sec pointer for our list. */ +#define PREV_SEC(sec) (htab->stub_group[(sec)->id].link_sec) + /* This happens to make the list in reverse order, + which is what we want. */ + PREV_SEC (isec) = *list; + *list = isec; + } + } +} + +/* See whether we can group stub sections together. Grouping stub + sections may result in fewer stubs. More importantly, we need to + put all .init* and .fini* stubs at the beginning of the .init or + .fini output sections respectively, because glibc splits the + _init and _fini functions into multiple parts. Putting a stub in + the middle of a function is not a good idea. */ + +static void +group_sections (htab, stub_group_size, stubs_always_before_branch) + struct ppc_link_hash_table *htab; + bfd_size_type stub_group_size; + boolean stubs_always_before_branch; +{ + asection **list = htab->input_list + htab->top_index; + do + { + asection *tail = *list; + if (tail == bfd_abs_section_ptr) + continue; + while (tail != NULL) + { + asection *curr; + asection *prev; + bfd_size_type total; + + curr = tail; + if (tail->_cooked_size) + total = tail->_cooked_size; + else + total = tail->_raw_size; + while ((prev = PREV_SEC (curr)) != NULL + && ((total += curr->output_offset - prev->output_offset) + < stub_group_size)) + curr = prev; + + /* OK, the size from the start of CURR to the end is less + than stub_group_size and thus can be handled by one stub + section. (or the tail section is itself larger than + stub_group_size, in which case we may be toast.) We + should really be keeping track of the total size of stubs + added here, as stubs contribute to the final output + section size. That's a little tricky, and this way will + only break if stubs added make the total size more than + 2^25, ie. for the default stub_group_size, if stubs total + more than 2834432 bytes, or over 100000 plt call stubs. */ + do + { + prev = PREV_SEC (tail); + /* Set up this stub group. */ + htab->stub_group[tail->id].link_sec = curr; + } + while (tail != curr && (tail = prev) != NULL); + + /* But wait, there's more! Input sections up to stub_group_size + bytes before the stub section can be handled by it too. */ + if (!stubs_always_before_branch) + { + total = 0; + while (prev != NULL + && ((total += tail->output_offset - prev->output_offset) + < stub_group_size)) + { + tail = prev; + prev = PREV_SEC (tail); + htab->stub_group[tail->id].link_sec = curr; + } + } + tail = prev; + } + } + while (list-- != htab->input_list); + free (htab->input_list); +#undef PREV_SEC +} + +/* Read in all local syms for all input bfds. */ + +static boolean +get_local_syms (input_bfd, htab) + bfd *input_bfd; + struct ppc_link_hash_table *htab; +{ + unsigned int bfd_indx; + Elf_Internal_Sym *local_syms, **all_local_syms; + + /* We want to read in symbol extension records only once. To do this + we need to read in the local symbols in parallel and save them for + later use; so hold pointers to the local symbols in an array. */ + bfd_size_type amt = sizeof (Elf_Internal_Sym *) * htab->bfd_count; + all_local_syms = (Elf_Internal_Sym **) bfd_zmalloc (amt); + htab->all_local_syms = all_local_syms; + if (all_local_syms == NULL) + return false; + + /* Walk over all the input BFDs, swapping in local symbols. + If we are creating a shared library, create hash entries for the + export stubs. */ + for (bfd_indx = 0; + input_bfd != NULL; + input_bfd = input_bfd->link_next, bfd_indx++) + { + Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; + Elf_Internal_Sym *isym; + Elf64_External_Sym *ext_syms, *esym, *end_sy; + Elf_External_Sym_Shndx *shndx_buf, *shndx; + bfd_size_type sec_size; + + /* We'll need the symbol table in a second. */ + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; + if (symtab_hdr->sh_info == 0) + continue; + + /* We need an array of the local symbols attached to the input bfd. + Unfortunately, we're going to have to read & swap them in. */ + sec_size = symtab_hdr->sh_info; + sec_size *= sizeof (Elf_Internal_Sym); + local_syms = (Elf_Internal_Sym *) bfd_malloc (sec_size); + if (local_syms == NULL) + return false; + + all_local_syms[bfd_indx] = local_syms; + sec_size = symtab_hdr->sh_info; + sec_size *= sizeof (Elf64_External_Sym); + ext_syms = (Elf64_External_Sym *) bfd_malloc (sec_size); + if (ext_syms == NULL) + return false; + + if (bfd_seek (input_bfd, symtab_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) ext_syms, sec_size, input_bfd) != sec_size) + { + error_ret_free_ext_syms: + free (ext_syms); + return false; + } + + shndx_buf = NULL; + shndx_hdr = &elf_tdata (input_bfd)->symtab_shndx_hdr; + if (shndx_hdr->sh_size != 0) + { + sec_size = symtab_hdr->sh_info; + sec_size *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (sec_size); + if (shndx_buf == NULL) + goto error_ret_free_ext_syms; + + if (bfd_seek (input_bfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, sec_size, input_bfd) != sec_size) + { + free (shndx_buf); + goto error_ret_free_ext_syms; + } + } + + /* Swap the local symbols in. */ + for (esym = ext_syms, end_sy = esym + symtab_hdr->sh_info, + isym = local_syms, shndx = shndx_buf; + esym < end_sy; + esym++, isym++, shndx = (shndx ? shndx + 1 : NULL)) + bfd_elf64_swap_symbol_in (input_bfd, esym, shndx, isym); + + /* Now we can free the external symbols. */ + free (shndx_buf); + free (ext_syms); + } + + return true; +} + +/* Determine and set the size of the stub section for a final link. + + The basic idea here is to examine all the relocations looking for + PC-relative calls to a target that is unreachable with a "bl" + instruction. */ + boolean -ppc64_elf_build_stubs (obfd, info) +ppc64_elf_size_stubs (output_bfd, stub_bfd, info, group_size, + add_stub_section, layout_sections_again) + bfd *output_bfd; + bfd *stub_bfd; + struct bfd_link_info *info; + bfd_signed_vma group_size; + asection * (*add_stub_section) PARAMS ((const char *, asection *)); + void (*layout_sections_again) PARAMS ((void)); +{ + bfd_size_type stub_group_size; + boolean stubs_always_before_branch; + boolean ret = false; + struct ppc_link_hash_table *htab = ppc_hash_table (info); + + /* Stash our params away. */ + htab->stub_bfd = stub_bfd; + htab->add_stub_section = add_stub_section; + htab->layout_sections_again = layout_sections_again; + stubs_always_before_branch = group_size < 0; + if (group_size < 0) + stub_group_size = -group_size; + else + stub_group_size = group_size; + if (stub_group_size == 1) + { + /* Default values. */ + stub_group_size = 30720000; + if (htab->has_14bit_branch) + stub_group_size = 30000; + } + + group_sections (htab, stub_group_size, stubs_always_before_branch); + + if (! get_local_syms (info->input_bfds, htab)) + { + if (htab->all_local_syms) + goto error_ret_free_local; + return false; + } + + while (1) + { + bfd *input_bfd; + unsigned int bfd_indx; + asection *stub_sec; + boolean stub_changed; + + htab->stub_iteration += 1; + stub_changed = false; + + for (input_bfd = info->input_bfds, bfd_indx = 0; + input_bfd != NULL; + input_bfd = input_bfd->link_next, bfd_indx++) + { + Elf_Internal_Shdr *symtab_hdr; + asection *section; + Elf_Internal_Sym *local_syms; + + /* We'll need the symbol table in a second. */ + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; + if (symtab_hdr->sh_info == 0) + continue; + + local_syms = htab->all_local_syms[bfd_indx]; + + /* Walk over each section attached to the input bfd. */ + for (section = input_bfd->sections; + section != NULL; + section = section->next) + { + Elf_Internal_Shdr *input_rel_hdr; + Elf64_External_Rela *external_relocs, *erelaend, *erela; + Elf_Internal_Rela *internal_relocs, *irelaend, *irela; + bfd_size_type amt; + + /* If there aren't any relocs, then there's nothing more + to do. */ + if ((section->flags & SEC_RELOC) == 0 + || section->reloc_count == 0) + continue; + + /* If this section is a link-once section that will be + discarded, then don't create any stubs. */ + if (section->output_section == NULL + || section->output_section->owner != output_bfd) + continue; + + /* Allocate space for the external relocations. */ + amt = section->reloc_count; + amt *= sizeof (Elf64_External_Rela); + external_relocs = (Elf64_External_Rela *) bfd_malloc (amt); + if (external_relocs == NULL) + { + goto error_ret_free_local; + } + + /* Likewise for the internal relocations. */ + amt = section->reloc_count; + amt *= sizeof (Elf_Internal_Rela); + internal_relocs = (Elf_Internal_Rela *) bfd_malloc (amt); + if (internal_relocs == NULL) + { + free (external_relocs); + goto error_ret_free_local; + } + + /* Read in the external relocs. */ + input_rel_hdr = &elf_section_data (section)->rel_hdr; + if (bfd_seek (input_bfd, input_rel_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) external_relocs, + input_rel_hdr->sh_size, + input_bfd) != input_rel_hdr->sh_size) + { + free (external_relocs); + error_ret_free_internal: + free (internal_relocs); + goto error_ret_free_local; + } + + /* Swap in the relocs. */ + erela = external_relocs; + erelaend = erela + section->reloc_count; + irela = internal_relocs; + for (; erela < erelaend; erela++, irela++) + bfd_elf64_swap_reloca_in (input_bfd, erela, irela); + + /* We're done with the external relocs, free them. */ + free (external_relocs); + + /* Now examine each relocation. */ + irela = internal_relocs; + irelaend = irela + section->reloc_count; + for (; irela < irelaend; irela++) + { + unsigned int r_type, r_indx; + enum ppc_stub_type stub_type; + struct ppc_stub_hash_entry *stub_entry; + asection *sym_sec; + bfd_vma sym_value; + bfd_vma destination; + struct ppc_link_hash_entry *hash; + char *stub_name; + const asection *id_sec; + + r_type = ELF64_R_TYPE (irela->r_info); + r_indx = ELF64_R_SYM (irela->r_info); + + if (r_type >= (unsigned int) R_PPC_max) + { + bfd_set_error (bfd_error_bad_value); + goto error_ret_free_internal; + } + + /* Only look for stubs on branch instructions. */ + if (r_type != (unsigned int) R_PPC64_REL24 + && r_type != (unsigned int) R_PPC64_REL14 + && r_type != (unsigned int) R_PPC64_REL14_BRTAKEN + && r_type != (unsigned int) R_PPC64_REL14_BRNTAKEN) + continue; + + /* Now determine the call target, its name, value, + section. */ + sym_sec = NULL; + sym_value = 0; + destination = 0; + hash = NULL; + if (r_indx < symtab_hdr->sh_info) + { + /* It's a local symbol. */ + Elf_Internal_Sym *sym; + Elf_Internal_Shdr *hdr; + + sym = local_syms + r_indx; + hdr = elf_elfsections (input_bfd)[sym->st_shndx]; + sym_sec = hdr->bfd_section; + if (ELF_ST_TYPE (sym->st_info) != STT_SECTION) + sym_value = sym->st_value; + destination = (sym_value + irela->r_addend + + sym_sec->output_offset + + sym_sec->output_section->vma); + } + else + { + /* It's an external symbol. */ + int e_indx; + + e_indx = r_indx - symtab_hdr->sh_info; + hash = ((struct ppc_link_hash_entry *) + elf_sym_hashes (input_bfd)[e_indx]); + + while (hash->elf.root.type == bfd_link_hash_indirect + || hash->elf.root.type == bfd_link_hash_warning) + hash = ((struct ppc_link_hash_entry *) + hash->elf.root.u.i.link); + + if (hash->elf.root.type == bfd_link_hash_defined + || hash->elf.root.type == bfd_link_hash_defweak) + { + sym_sec = hash->elf.root.u.def.section; + sym_value = hash->elf.root.u.def.value; + if (sym_sec->output_section != NULL) + destination = (sym_value + irela->r_addend + + sym_sec->output_offset + + sym_sec->output_section->vma); + } + else if (hash->elf.root.type == bfd_link_hash_undefweak) + ; + else if (hash->elf.root.type == bfd_link_hash_undefined) + ; + else + { + bfd_set_error (bfd_error_bad_value); + goto error_ret_free_internal; + } + } + + /* Determine what (if any) linker stub is needed. */ + stub_type = ppc_type_of_stub (section, irela, &hash, + destination); + if (stub_type == ppc_stub_none) + continue; + + /* Support for grouping stub sections. */ + id_sec = htab->stub_group[section->id].link_sec; + + /* Get the name of this stub. */ + stub_name = ppc_stub_name (id_sec, sym_sec, hash, irela); + if (!stub_name) + goto error_ret_free_internal; + + stub_entry = ppc_stub_hash_lookup (&htab->stub_hash_table, + stub_name, false, false); + if (stub_entry != NULL) + { + /* The proper stub has already been created. */ + free (stub_name); + continue; + } + + stub_entry = ppc_add_stub (stub_name, section, htab); + if (stub_entry == NULL) + { + free (stub_name); + goto error_ret_free_local; + } + + stub_entry->target_value = sym_value; + stub_entry->target_section = sym_sec; + stub_entry->stub_type = stub_type; + stub_entry->h = hash; + stub_changed = true; + } + + /* We're done with the internal relocs, free them. */ + free (internal_relocs); + } + } + + if (!stub_changed) + break; + + /* OK, we've added some stubs. Find out the new size of the + stub sections. */ + for (stub_sec = htab->stub_bfd->sections; + stub_sec != NULL; + stub_sec = stub_sec->next) + { + stub_sec->_raw_size = 0; + stub_sec->_cooked_size = 0; + } + htab->sbrlt->_raw_size = 0; + htab->sbrlt->_cooked_size = 0; + + bfd_hash_traverse (&htab->stub_hash_table, ppc_size_one_stub, htab); + + /* Ask the linker to do its stuff. */ + (*htab->layout_sections_again) (); + } + + /* It would be nice to strip .branch_lt from the output if the + section is empty, but it's too late. If we strip sections here, + the dynamic symbol table is corrupted since the section symbol + for the stripped section isn't written. */ + + ret = true; + + error_ret_free_local: + while (htab->bfd_count-- > 0) + if (htab->all_local_syms[htab->bfd_count]) + free (htab->all_local_syms[htab->bfd_count]); + free (htab->all_local_syms); + + return ret; +} + +/* Called after we have determined section placement. If sections + move, we'll be called again. Provide a value for TOCstart. */ + +bfd_vma +ppc64_elf_toc (obfd) bfd *obfd; +{ + asection *s; + bfd_vma TOCstart; + + /* The TOC consists of sections .got, .toc, .tocbss, .plt in that + order. The TOC starts where the first of these sections starts. */ + s = bfd_get_section_by_name (obfd, ".got"); + if (s == NULL) + s = bfd_get_section_by_name (obfd, ".toc"); + if (s == NULL) + s = bfd_get_section_by_name (obfd, ".tocbss"); + if (s == NULL) + s = bfd_get_section_by_name (obfd, ".plt"); + if (s == NULL) + { + /* This may happen for + o references to TOC base (SYM@toc / TOC[tc0]) without a + .toc directive + o bad linker script + o --gc-sections and empty TOC sections + + FIXME: Warn user? */ + + /* Look for a likely section. We probably won't even be + using TOCstart. */ + for (s = obfd->sections; s != NULL; s = s->next) + if ((s->flags & (SEC_ALLOC | SEC_SMALL_DATA | SEC_READONLY)) + == (SEC_ALLOC | SEC_SMALL_DATA)) + break; + if (s == NULL) + for (s = obfd->sections; s != NULL; s = s->next) + if ((s->flags & (SEC_ALLOC | SEC_SMALL_DATA)) + == (SEC_ALLOC | SEC_SMALL_DATA)) + break; + if (s == NULL) + for (s = obfd->sections; s != NULL; s = s->next) + if ((s->flags & (SEC_ALLOC | SEC_READONLY)) == SEC_ALLOC) + break; + if (s == NULL) + for (s = obfd->sections; s != NULL; s = s->next) + if ((s->flags & SEC_ALLOC) == SEC_ALLOC) + break; + } + + TOCstart = 0; + if (s != NULL) + TOCstart = s->output_section->vma + s->output_offset; + + return TOCstart; +} + +/* Build all the stubs associated with the current output file. + The stubs are kept in a hash table attached to the main linker + hash table. This function is called via gldelf64ppc_finish. */ + +boolean +ppc64_elf_build_stubs (info) struct bfd_link_info *info; { struct ppc_link_hash_table *htab = ppc_hash_table (info); - bfd_vma old_stub_size; + asection *stub_sec; bfd_vma plt_r2; bfd_byte *p; - /* If no .plt stubs, then nothing to do. */ - if (htab->sstub == NULL || htab->sstub->_raw_size == 0) - return true; - - old_stub_size = htab->sstub->_cooked_size; - htab->sstub->_cooked_size = 0; + for (stub_sec = htab->stub_bfd->sections; + stub_sec != NULL; + stub_sec = stub_sec->next) + { + bfd_size_type size; + + /* Allocate memory to hold the linker stubs. */ + size = stub_sec->_raw_size; + if (size != 0) + { + stub_sec->contents = (bfd_byte *) bfd_zalloc (htab->stub_bfd, size); + if (stub_sec->contents == NULL) + return false; + } + stub_sec->_cooked_size = 0; + } - /* Build the .glink plt call stub. */ - plt_r2 = (htab->splt->output_section->vma - + htab->splt->output_offset - - elf_gp (obfd) - - TOC_BASE_OFF); - p = htab->sglink->contents; - p = build_plt_stub (htab->sglink->owner, p, (int) plt_r2, 1); - while (p - htab->sglink->contents < GLINK_CALL_STUB_SIZE) + if (htab->splt != NULL) { - bfd_put_32 (htab->sglink->owner, NOP, p); - p += 4; + /* Build the .glink plt call stub. */ + plt_r2 = (htab->splt->output_offset + + htab->splt->output_section->vma + - elf_gp (htab->splt->output_section->owner) + - TOC_BASE_OFF); + p = htab->sglink->contents; + p = build_plt_stub (htab->sglink->owner, p, (int) plt_r2, 1); + while (p - htab->sglink->contents < GLINK_CALL_STUB_SIZE) + { + bfd_put_32 (htab->sglink->owner, NOP, p); + p += 4; + } + htab->sglink->_cooked_size = p - htab->sglink->contents; + + /* Use reloc_count to count entries. */ + htab->sglink->reloc_count = 0; } - htab->sglink->_cooked_size = p - htab->sglink->contents; - /* Use reloc_count to count entries. */ - htab->sglink->reloc_count = 0; + if (htab->sbrlt->_raw_size != 0) + { + htab->sbrlt->contents = (bfd_byte *) bfd_zalloc (htab->sbrlt->owner, + htab->sbrlt->_raw_size); + if (htab->sbrlt->contents == NULL) + return false; + } - elf_link_hash_traverse (&htab->elf, build_one_stub, (PTR) info); + /* Build the stubs as directed by the stub hash table. */ + bfd_hash_traverse (&htab->stub_hash_table, ppc_build_one_stub, info); htab->sglink->reloc_count = 0; - if (htab->plt_overflow) - return false; + for (stub_sec = htab->stub_bfd->sections; + stub_sec != NULL; + stub_sec = stub_sec->next) + { + if (stub_sec->_raw_size != stub_sec->_cooked_size) + break; + } - if (old_stub_size != htab->sstub->_cooked_size + if (stub_sec != NULL || htab->sglink->_raw_size != htab->sglink->_cooked_size) { - (*_bfd_error_handler) - (_("stub section size doesn't match calculated size")); - bfd_set_error (bfd_error_bad_value); - return false; + htab->stub_error = true; + (*_bfd_error_handler) (_("stubs don't match calculated size")); } - return true; + + return !htab->stub_error; } /* Set up any other section flags and such that may be necessary. */ @@ -3642,6 +5091,9 @@ ppc64_elf_relocate_section (output_bfd, /* Disabled until we sort out how ld should choose 'y' vs 'at'. */ boolean is_power4 = false; + if (info->relocateable) + return true; + /* Initialize howto table if needed. */ if (!ppc64_elf_howto_table[R_PPC64_ADDR32]) ppc_howto_init (); @@ -3664,36 +5116,19 @@ ppc64_elf_relocate_section (output_bfd, Elf_Internal_Sym *sym; asection *sec; struct elf_link_hash_entry *h; + struct elf_link_hash_entry *fdh; const char *sym_name; unsigned long r_symndx; bfd_vma relocation; boolean unresolved_reloc; - boolean has_nop; + boolean warned; long insn; + struct ppc_stub_hash_entry *stub_entry; + bfd_vma max_br_offset; + bfd_vma from; r_type = (enum elf_ppc_reloc_type) ELF64_R_TYPE (rel->r_info); r_symndx = ELF64_R_SYM (rel->r_info); - - if (info->relocateable) - { - /* 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 ((unsigned) ELF_ST_TYPE (sym->st_info) == STT_SECTION) - { - sec = local_sections[r_symndx]; - rel->r_addend += sec->output_offset + sym->st_value; - } - } - continue; - } - - /* This is a final link. */ - offset = rel->r_offset; addend = rel->r_addend; r = bfd_reloc_other; @@ -3702,6 +5137,7 @@ ppc64_elf_relocate_section (output_bfd, h = (struct elf_link_hash_entry *) 0; sym_name = (const char *) 0; unresolved_reloc = false; + warned = false; if (r_type == R_PPC64_TOC) { @@ -3716,6 +5152,7 @@ ppc64_elf_relocate_section (output_bfd, sym_name = ""; relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + /* rel may have changed, update our copy of addend. */ addend = rel->r_addend; } else @@ -3757,6 +5194,7 @@ ppc64_elf_relocate_section (output_bfd, || info->no_undefined || ELF_ST_VISIBILITY (h->other))))) return false; + warned = true; } } @@ -3791,8 +5229,12 @@ ppc64_elf_relocate_section (output_bfd, } else { + from = (offset + + input_section->output_offset + + input_section->output_section->vma); + /* Invert 'y' bit if not the default. */ - if ((bfd_signed_vma) (relocation - offset) < 0) + if ((bfd_signed_vma) (relocation + addend - from) < 0) insn ^= 0x01 << 21; } @@ -3800,57 +5242,72 @@ ppc64_elf_relocate_section (output_bfd, break; case R_PPC64_REL24: - case R_PPC64_ADDR24: - /* An ADDR24 or REL24 branching to a linkage function may be - followed by a nop that we have to replace with a ld in - order to restore the TOC base pointer. Only calls to - shared objects need to alter the TOC base. These are - recognized by their need for a PLT entry. */ - has_nop = 0; + /* A REL24 branching to a linkage function is followed by a + nop. We replace the nop with a ld in order to restore + the TOC base pointer. Only calls to shared objects need + to alter the TOC base. These are recognized by their + need for a PLT entry. */ if (h != NULL - && h->plt.offset != (bfd_vma) -1 - && htab->sstub != NULL) + && (fdh = ((struct ppc_link_hash_entry *) h)->oh) != NULL + && fdh->plt.offset != (bfd_vma) -1 + && (stub_entry = ppc_get_stub_entry (input_section, sec, fdh, + rel, htab)) != NULL) { - /* plt.offset here is the offset into the stub section. */ - relocation = (htab->sstub->output_section->vma - + htab->sstub->output_offset - + h->plt.offset); - unresolved_reloc = false; + boolean can_plt_call = 0; - /* Make sure that there really is an instruction after - the branch that we can decode. */ if (offset + 8 <= input_section->_cooked_size) { - bfd_byte *pnext; - - pnext = contents + offset + 4; - insn = bfd_get_32 (input_bfd, pnext); - - if (insn == 0x60000000 /* nop (ori r0,r0,0) */ - || insn == 0x4def7b82 /* cror 15,15,15 */ - || insn == 0x4ffffb82) /* cror 31,31,31 */ + insn = bfd_get_32 (input_bfd, contents + offset + 4); + if (insn == NOP + || insn == CROR_151515 || insn == CROR_313131) { - bfd_put_32 (input_bfd, - (bfd_vma) 0xe8410028, /* ld r2,40(r1) */ - pnext); - has_nop = 1; + bfd_put_32 (input_bfd, (bfd_vma) LD_R2_40R1, + contents + offset + 4); + can_plt_call = 1; } } + + if (!can_plt_call) + { + /* If this is a plain branch rather than a branch + and link, don't require a nop. */ + insn = bfd_get_32 (input_bfd, contents + offset); + if ((insn & 1) == 0) + can_plt_call = 1; + } + + if (can_plt_call) + { + relocation = (stub_entry->stub_offset + + stub_entry->stub_sec->output_offset + + stub_entry->stub_sec->output_section->vma); + addend = 0; + unresolved_reloc = false; + } } if (h != NULL && h->root.type == bfd_link_hash_undefweak - && r_type == R_PPC64_REL24 - && addend == 0 - && relocation == 0) - { - /* Tweak calls to undefined weak functions to behave as - if the "called" function immediately returns. We can - thus call to a weak function without first checking - whether the function is defined. */ - relocation = 4; - if (has_nop) - relocation = 8; + && relocation == 0 + && addend == 0) + { + /* Tweak calls to undefined weak functions to point at a + blr. We can thus call a weak function without first + checking whether the function is defined. We have a + blr at the end of .sfpr. */ + BFD_ASSERT (htab->sfpr->_raw_size != 0); + relocation = (htab->sfpr->_raw_size - 4 + + htab->sfpr->output_offset + + htab->sfpr->output_section->vma); + from = (offset + + input_section->output_offset + + input_section->output_section->vma); + + /* But let's not be silly about it. If the blr isn't in + reach, just go to the next instruction. */ + if (relocation - from + (1 << 25) >= (1 << 26) + || htab->sfpr->_raw_size == 0) + relocation = from + 4; } break; } @@ -4029,14 +5486,14 @@ ppc64_elf_relocate_section (output_bfd, addend -= sec->output_section->vma; break; + case R_PPC64_REL14: + case R_PPC64_REL14_BRNTAKEN: + case R_PPC64_REL14_BRTAKEN: case R_PPC64_REL24: break; /* Relocations that may need to be propagated if this is a dynamic object. */ - case R_PPC64_REL14: - case R_PPC64_REL14_BRNTAKEN: - case R_PPC64_REL14_BRTAKEN: case R_PPC64_REL32: case R_PPC64_REL64: case R_PPC64_ADDR14: @@ -4134,6 +5591,16 @@ ppc64_elf_relocate_section (output_bfd, relocate = true; if (r_type == R_PPC64_ADDR64 || r_type == R_PPC64_TOC) { + if (is_opd && h != NULL && info->shared) + { + /* Lie about opd entries. This case occurs + when building shared libraries and we + reference a function in another shared + lib. In that case we won't use the opd + entry in this lib; We ought to edit the + opd section to remove unused entries. */ + unresolved_reloc = false; + } outrel.r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE); } else @@ -4253,6 +5720,34 @@ ppc64_elf_relocate_section (output_bfd, continue; } break; + + case R_PPC64_REL14: + case R_PPC64_REL14_BRNTAKEN: + case R_PPC64_REL14_BRTAKEN: + max_br_offset = 1 << 15; + goto branch_check; + + case R_PPC64_REL24: + max_br_offset = 1 << 25; + + branch_check: + /* If the branch is out of reach, then redirect the + call to the local stub for this function. */ + from = (offset + + input_section->output_offset + + input_section->output_section->vma); + if (relocation + addend - from + max_br_offset >= 2 * max_br_offset + && (stub_entry = ppc_get_stub_entry (input_section, sec, h, + rel, htab)) != NULL) + { + /* Munge up the value and addend so that we call the stub + rather than the procedure directly. */ + relocation = (stub_entry->stub_offset + + stub_entry->stub_sec->output_offset + + stub_entry->stub_sec->output_section->vma); + addend = 0; + } + break; } /* FIXME: Why do we allow debugging sections to escape this error? @@ -4263,12 +5758,15 @@ ppc64_elf_relocate_section (output_bfd, && !(info->shared && (input_section->flags & SEC_DEBUGGING) != 0 && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0)) - (*_bfd_error_handler) - (_("%s(%s+0x%lx): unresolvable relocation against symbol `%s'"), - bfd_archive_filename (input_bfd), - bfd_get_section_name (input_bfd, input_section), - (long) rel->r_offset, - h->root.root.string); + { + (*_bfd_error_handler) + (_("%s(%s+0x%lx): unresolvable relocation against symbol `%s'"), + bfd_archive_filename (input_bfd), + bfd_get_section_name (input_bfd, input_section), + (long) rel->r_offset, + h->root.root.string); + ret = false; + } r = _bfd_final_link_relocate (ppc64_elf_howto_table[(int) r_type], input_bfd, @@ -4278,9 +5776,7 @@ ppc64_elf_relocate_section (output_bfd, relocation, addend); - if (r == bfd_reloc_ok) - ; - else if (r == bfd_reloc_overflow) + if (r != bfd_reloc_ok) { const char *name; @@ -4311,13 +5807,25 @@ ppc64_elf_relocate_section (output_bfd, name = bfd_section_name (input_bfd, sec); } - if (! ((*info->callbacks->reloc_overflow) - (info, name, ppc64_elf_howto_table[(int) r_type]->name, - (bfd_vma) 0, input_bfd, input_section, offset))) - return false; + if (r == bfd_reloc_overflow) + { + if (warned) + continue; + if (!((*info->callbacks->reloc_overflow) + (info, name, ppc64_elf_howto_table[(int) r_type]->name, + rel->r_addend, input_bfd, input_section, offset))) + return false; + } + else + { + (*_bfd_error_handler) + (_("%s(%s+0x%lx): reloc against `%s': error %d"), + bfd_archive_filename (input_bfd), + bfd_get_section_name (input_bfd, input_section), + (long) rel->r_offset, name, (int) r); + ret = false; + } } - else - ret = false; } return ret; @@ -4593,11 +6101,13 @@ ppc64_elf_finish_dynamic_sections (outpu #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 #define bfd_elf64_bfd_reloc_type_lookup ppc64_elf_reloc_type_lookup #define bfd_elf64_bfd_set_private_flags ppc64_elf_set_private_flags #define bfd_elf64_bfd_merge_private_bfd_data ppc64_elf_merge_private_bfd_data #define bfd_elf64_bfd_link_hash_table_create ppc64_elf_link_hash_table_create +#define bfd_elf64_bfd_link_hash_table_free ppc64_elf_link_hash_table_free #define elf_backend_section_from_shdr ppc64_elf_section_from_shdr #define elf_backend_create_dynamic_sections ppc64_elf_create_dynamic_sections diff -uprN binutils-2.12.90.0.7/bfd/elf64-ppc.h binutils-2.12.90.0.9/bfd/elf64-ppc.h --- binutils-2.12.90.0.7/bfd/elf64-ppc.h Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/bfd/elf64-ppc.h Thu May 23 15:10:10 2002 @@ -17,6 +17,14 @@ 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. */ -boolean ppc64_elf_set_toc PARAMS ((bfd *, struct bfd_link_info *)); -boolean ppc64_elf_size_stubs PARAMS ((bfd *, struct bfd_link_info *, int *)); -boolean ppc64_elf_build_stubs PARAMS ((bfd *, struct bfd_link_info *)); +bfd_vma ppc64_elf_toc + PARAMS ((bfd *)); +int ppc64_elf_setup_section_lists + PARAMS ((bfd *, struct bfd_link_info *)); +void ppc64_elf_next_input_section + PARAMS ((struct bfd_link_info *, asection *)); +boolean ppc64_elf_size_stubs + PARAMS ((bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma, + asection *(*) (const char *, asection *), void (*) (void))); +boolean ppc64_elf_build_stubs + PARAMS ((struct bfd_link_info *)); diff -uprN binutils-2.12.90.0.7/bfd/elf64-s390.c binutils-2.12.90.0.9/bfd/elf64-s390.c --- binutils-2.12.90.0.7/bfd/elf64-s390.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/elf64-s390.c Thu May 23 15:10:10 2002 @@ -1587,6 +1587,9 @@ elf_s390_relocate_section (output_bfd, i Elf_Internal_Rela *rel; Elf_Internal_Rela *relend; + if (info->relocateable) + return true; + htab = elf_s390_hash_table (info); symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); @@ -1616,30 +1619,9 @@ elf_s390_relocate_section (output_bfd, i bfd_set_error (bfd_error_bad_value); return false; } - howto = elf_howto_table + r_type; + howto = elf_howto_table + r_type; r_symndx = ELF64_R_SYM (rel->r_info); - - if (info->relocateable) - { - /* This is a relocateable 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; - } - } - - continue; - } - - /* This is a final link. */ h = NULL; sym = NULL; sec = NULL; @@ -2384,6 +2366,7 @@ const struct elf_size_info s390_elf64_si #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.12.90.0.7/bfd/elf64-x86-64.c binutils-2.12.90.0.9/bfd/elf64-x86-64.c --- binutils-2.12.90.0.7/bfd/elf64-x86-64.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/elf64-x86-64.c Sun May 26 09:57:12 2002 @@ -125,6 +125,10 @@ static reloc_howto_type *elf64_x86_64_re PARAMS ((bfd *, bfd_reloc_code_real_type)); static void elf64_x86_64_info_to_howto PARAMS ((bfd *, arelent *, Elf64_Internal_Rela *)); +static boolean elf64_x86_64_grok_prstatus + PARAMS ((bfd *, Elf_Internal_Note *)); +static boolean elf64_x86_64_grok_psinfo + PARAMS ((bfd *, Elf_Internal_Note *)); static struct bfd_link_hash_table *elf64_x86_64_link_hash_table_create PARAMS ((bfd *)); static boolean elf64_x86_64_elf_object_p PARAMS ((bfd *abfd)); @@ -208,6 +212,73 @@ elf64_x86_64_info_to_howto (abfd, cache_ BFD_ASSERT (r_type == cache_ptr->howto->type); } +/* Support for core dump NOTE sections. */ +static boolean +elf64_x86_64_grok_prstatus (abfd, note) + bfd *abfd; + Elf_Internal_Note *note; +{ + int offset; + size_t raw_size; + + switch (note->descsz) + { + default: + return false; + + case 336: /* sizeof(istruct elf_prstatus) on Linux/x86_64 */ + /* 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 + 32); + + /* pr_reg */ + offset = 112; + raw_size = 216; + + break; + } + + /* Make a ".reg/999" section. */ + return _bfd_elfcore_make_pseudosection (abfd, ".reg", + raw_size, note->descpos + offset); +} + +static boolean +elf64_x86_64_grok_psinfo (abfd, note) + bfd *abfd; + Elf_Internal_Note *note; +{ + switch (note->descsz) + { + default: + return false; + + case 136: /* sizeof(struct elf_prpsinfo) on Linux/x86_64 */ + elf_tdata (abfd)->core_program + = _bfd_elfcore_strndup (abfd, note->descdata + 40, 16); + elf_tdata (abfd)->core_command + = _bfd_elfcore_strndup (abfd, note->descdata + 56, 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); + + if (0 < n && command[n - 1] == ' ') + command[n - 1] = '\0'; + } + + return true; +} + /* Functions for the x86-64 ELF linker. */ /* The name of the dynamic interpreter. This is put in the .interp @@ -246,7 +317,7 @@ static const bfd_byte elf64_x86_64_plt_e }; /* The x86-64 linker needs to keep track of the number of relocs that - decides to copy as dynamic relocs in check_relocs for each symbol. + 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. */ @@ -1494,6 +1565,9 @@ elf64_x86_64_relocate_section (output_bf Elf_Internal_Rela *rel; Elf_Internal_Rela *relend; + if (info->relocateable) + return true; + htab = elf64_x86_64_hash_table (info); symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); @@ -1524,30 +1598,9 @@ elf64_x86_64_relocate_section (output_bf bfd_set_error (bfd_error_bad_value); return false; } - howto = x86_64_elf_howto_table + r_type; + howto = x86_64_elf_howto_table + r_type; r_symndx = ELF64_R_SYM (rel->r_info); - - if (info->relocateable) - { - /* This is a relocateable 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; - } - } - - continue; - } - - /* This is a final link. */ h = NULL; sym = NULL; sec = NULL; @@ -2230,6 +2283,7 @@ elf64_x86_64_finish_dynamic_sections (ou #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 @@ -2245,6 +2299,8 @@ elf64_x86_64_finish_dynamic_sections (ou #define elf_backend_finish_dynamic_symbol elf64_x86_64_finish_dynamic_symbol #define elf_backend_gc_mark_hook elf64_x86_64_gc_mark_hook #define elf_backend_gc_sweep_hook elf64_x86_64_gc_sweep_hook +#define elf_backend_grok_prstatus elf64_x86_64_grok_prstatus +#define elf_backend_grok_psinfo elf64_x86_64_grok_psinfo #define elf_backend_reloc_type_class elf64_x86_64_reloc_type_class #define elf_backend_relocate_section elf64_x86_64_relocate_section #define elf_backend_size_dynamic_sections elf64_x86_64_size_dynamic_sections diff -uprN binutils-2.12.90.0.7/bfd/elflink.h binutils-2.12.90.0.9/bfd/elflink.h --- binutils-2.12.90.0.7/bfd/elflink.h Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/elflink.h Thu May 23 15:10:10 2002 @@ -65,7 +65,7 @@ static boolean elf_link_read_relocs_from PARAMS ((bfd *, Elf_Internal_Shdr *, PTR, Elf_Internal_Rela *)); static size_t compute_bucket_count PARAMS ((struct bfd_link_info *)); -static void elf_link_output_relocs +static boolean elf_link_output_relocs PARAMS ((bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *)); static boolean elf_link_size_reloc_section PARAMS ((bfd *, Elf_Internal_Shdr *, asection *)); @@ -1875,7 +1875,23 @@ elf_link_add_object_symbols (abfd, info) if (name == (const char *) NULL) goto error_return; - if (add_symbol_hook) + if (sym.st_shndx == SHN_COMMON && ELF_ST_TYPE (sym.st_info) == STT_TLS) + { + asection *tcomm = bfd_get_section_by_name (abfd, ".tcommon"); + + if (tcomm == NULL) + { + tcomm = bfd_make_section (abfd, ".tcommon"); + if (tcomm == NULL + || !bfd_set_section_flags (abfd, tcomm, (SEC_ALLOC + | SEC_IS_COMMON + | SEC_LINKER_CREATED + | SEC_THREAD_LOCAL))) + goto error_return; + } + sec = tcomm; + } + else if (add_symbol_hook) { if (! (*add_symbol_hook) (abfd, info, &sym, &name, &flags, &sec, &value)) @@ -2410,7 +2426,9 @@ elf_link_add_object_symbols (abfd, info) asection *stab, *stabstr; stab = bfd_get_section_by_name (abfd, ".stab"); - if (stab != NULL && !(stab->flags & SEC_MERGE)) + if (stab != NULL + && (stab->flags & SEC_MERGE) == 0 + && !bfd_is_abs_section (stab->output_section)) { stabstr = bfd_get_section_by_name (abfd, ".stabstr"); @@ -2436,7 +2454,8 @@ elf_link_add_object_symbols (abfd, info) asection *s; for (s = abfd->sections; s != NULL; s = s->next) - if (s->flags & SEC_MERGE) + if ((s->flags & SEC_MERGE) != 0 + && !bfd_is_abs_section (s->output_section)) { struct bfd_elf_section_data *secdata; @@ -3622,7 +3641,7 @@ NAME(bfd_elf,size_dynamic_sections) (out elf_tdata (output_bfd)->cverdefs = cdefs; } - if (info->new_dtags && info->flags) + if ((info->new_dtags && info->flags) || (info->flags & DF_STATIC_TLS)) { if (! elf_add_dynamic_entry (info, (bfd_vma) DT_FLAGS, info->flags)) return false; @@ -4646,6 +4665,8 @@ 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. */ @@ -5125,6 +5146,14 @@ elf_bfd_final_link (abfd, info) finfo.symbuf = NULL; finfo.symshndxbuf = NULL; finfo.symbuf_count = 0; + finfo.first_tls_sec = NULL; + for (o = abfd->sections; o != (asection *) 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 @@ -5489,6 +5518,40 @@ elf_bfd_final_link (abfd, info) goto error_return; } + if (finfo.first_tls_sec) + { + unsigned int align = 0; + bfd_vma base = finfo.first_tls_sec->vma, end = 0; + asection *sec; + + for (sec = finfo.first_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) + { + 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; + } + /* Since ELF permits relocations to be against local symbols, we must have the local symbols available when we do the relocations. Since we would rather only read the local symbols once, and we @@ -5515,21 +5578,11 @@ elf_bfd_final_link (abfd, info) { for (p = o->link_order_head; p != NULL; p = p->next) { - Elf_Internal_Shdr *rhdr; - if (p->type == bfd_indirect_link_order - && (bfd_get_flavour (p->u.indirect.section->owner) + && (bfd_get_flavour ((sub = p->u.indirect.section->owner)) == bfd_target_elf_flavour) - && (((rhdr = &elf_section_data (p->u.indirect.section)->rel_hdr) - ->sh_entsize == 0) - || rhdr->sh_entsize == sizeof (Elf_External_Rel) - || rhdr->sh_entsize == sizeof (Elf_External_Rela)) - && (((rhdr = elf_section_data (p->u.indirect.section)->rel_hdr2) - == NULL) - || rhdr->sh_entsize == sizeof (Elf_External_Rel) - || rhdr->sh_entsize == sizeof (Elf_External_Rela))) + && elf_elfheader (sub)->e_ident[EI_CLASS] == bed->s->elfclass) { - sub = p->u.indirect.section->owner; if (! sub->output_has_begun) { if (! elf_link_input_bfd (&finfo, sub)) @@ -6288,7 +6341,16 @@ elf_link_output_extsym (h, data) addresses. */ sym.st_value = h->root.u.def.value + input_sec->output_offset; if (! finfo->info->relocateable) - sym.st_value += input_sec->output_section->vma; + { + sym.st_value += input_sec->output_section->vma; + if (h->type == STT_TLS) + { + /* 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; + } + } } else { @@ -6442,7 +6504,7 @@ elf_link_output_extsym (h, data) originated from the section given by INPUT_REL_HDR) to the OUTPUT_BFD. */ -static void +static boolean elf_link_output_relocs (output_bfd, input_section, input_rel_hdr, internal_relocs) bfd *output_bfd; @@ -6474,8 +6536,16 @@ elf_link_output_relocs (output_bfd, inpu output_rel_hdr = elf_section_data (output_section)->rel_hdr2; rel_countp = &elf_section_data (output_section)->rel_count2; } - - BFD_ASSERT (output_rel_hdr != NULL); + else + { + (*_bfd_error_handler) ( + _("%s: relocation size mismatch in %s section %s"), + bfd_get_filename (output_bfd), + bfd_archive_filename (input_section->owner), + input_section->name); + bfd_set_error (bfd_error_wrong_object_format); + return false; + } bed = get_elf_backend_data (output_bfd); irela = internal_relocs; @@ -6532,6 +6602,8 @@ elf_link_output_relocs (output_bfd, inpu /* Bump the counter, so that we know where to add the next set of relocations. */ *rel_countp += NUM_SHDR_ENTRIES (input_rel_hdr); + + return true; } /* Link an input file into the linker output file. This function @@ -6742,7 +6814,15 @@ elf_link_input_bfd (finfo, input_bfd) these requirements. */ osym.st_value += isec->output_offset; if (! finfo->info->relocateable) - osym.st_value += isec->output_section->vma; + { + osym.st_value += isec->output_section->vma; + 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; + } + } if (! elf_link_output_sym (finfo, name, &osym, isec)) return false; @@ -6942,9 +7022,15 @@ elf_link_input_bfd (finfo, input_bfd) struct elf_link_hash_entry **rel_hash; Elf_Internal_Shdr *input_rel_hdr; unsigned int next_erel; - void (*reloc_emitter) PARAMS ((bfd *, asection *, - Elf_Internal_Shdr *, - Elf_Internal_Rela *)); + boolean (*reloc_emitter) PARAMS ((bfd *, asection *, + Elf_Internal_Shdr *, + Elf_Internal_Rela *)); + boolean rela_normal; + + input_rel_hdr = &elf_section_data (o)->rel_hdr; + rela_normal = (bed->rela_normal + && (input_rel_hdr->sh_entsize + == sizeof (Elf_External_Rela))); /* Adjust the reloc addresses and symbol indices. */ @@ -6967,7 +7053,7 @@ elf_link_input_bfd (finfo, input_bfd) irela->r_offset += o->output_offset; /* Relocs in an executable have to be virtual addresses. */ - if (finfo->info->emitrelocations) + if (!finfo->info->relocateable) irela->r_offset += o->output_section->vma; r_symndx = ELF_R_SYM (irela->r_info); @@ -7018,10 +7104,9 @@ elf_link_input_bfd (finfo, input_bfd) processor specific section. If we have discarded a section, the output_section will be the absolute section. */ - if (sec != NULL - && (bfd_is_abs_section (sec) - || (sec->output_section != NULL - && bfd_is_abs_section (sec->output_section)))) + if (bfd_is_abs_section (sec) + || (sec != NULL + && bfd_is_abs_section (sec->output_section))) r_symndx = 0; else if (sec == NULL || sec->owner == NULL) { @@ -7033,6 +7118,11 @@ elf_link_input_bfd (finfo, input_bfd) r_symndx = sec->output_section->target_index; BFD_ASSERT (r_symndx != 0); } + + /* Adjust the addend according to where the + section winds up in the output section. */ + if (rela_normal) + irela->r_addend += sec->output_offset; } else { @@ -7067,7 +7157,16 @@ elf_link_input_bfd (finfo, input_bfd) isym->st_value += sec->output_offset; if (! finfo->info->relocateable) - isym->st_value += osec->vma; + { + isym->st_value += osec->vma; + if (ELF_ST_TYPE (isym->st_info) == STT_TLS) + { + /* STT_TLS symbols are relative to PT_TLS + segment base. */ + BFD_ASSERT (finfo->first_tls_sec != NULL); + isym->st_value -= finfo->first_tls_sec->vma; + } + } finfo->indices[r_symndx] = bfd_get_symcount (output_bfd); @@ -7091,15 +7190,18 @@ elf_link_input_bfd (finfo, input_bfd) else reloc_emitter = elf_link_output_relocs; - input_rel_hdr = &elf_section_data (o)->rel_hdr; - (*reloc_emitter) (output_bfd, o, input_rel_hdr, internal_relocs); + if (! (*reloc_emitter) (output_bfd, o, input_rel_hdr, + internal_relocs)) + return false; input_rel_hdr = elf_section_data (o)->rel_hdr2; if (input_rel_hdr) { internal_relocs += (NUM_SHDR_ENTRIES (input_rel_hdr) * bed->s->int_rels_per_ext_rel); - reloc_emitter (output_bfd, o, input_rel_hdr, internal_relocs); + if (! (*reloc_emitter) (output_bfd, o, input_rel_hdr, + internal_relocs)) + return false; } } @@ -8448,11 +8550,19 @@ elf_bfd_discard_info (output_bfd, info) if (ehdr) { eh = bfd_get_section_by_name (abfd, ".eh_frame"); - if (eh && eh->_raw_size == 0) + if (eh && (eh->_raw_size == 0 + || bfd_is_abs_section (eh->output_section))) eh = NULL; } - stab = strip ? NULL : bfd_get_section_by_name (abfd, ".stab"); + stab = NULL; + if (!strip) + { + stab = bfd_get_section_by_name (abfd, ".stab"); + if (stab && (stab->_raw_size == 0 + || bfd_is_abs_section (stab->output_section))) + stab = NULL; + } if ((! stab || elf_section_data(stab)->sec_info_type != ELF_INFO_TYPE_STABS) && ! eh diff -uprN binutils-2.12.90.0.7/bfd/elfxx-ia64.c binutils-2.12.90.0.9/bfd/elfxx-ia64.c --- binutils-2.12.90.0.7/bfd/elfxx-ia64.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/elfxx-ia64.c Thu May 23 15:10:10 2002 @@ -79,6 +79,9 @@ struct elfNN_ia64_dyn_sym_info bfd_vma pltoff_offset; bfd_vma plt_offset; bfd_vma plt2_offset; + bfd_vma tprel_offset; + bfd_vma dtpmod_offset; + bfd_vma dtprel_offset; /* The symbol table entry, if any, that this was derrived from. */ struct elf_link_hash_entry *h; @@ -97,6 +100,9 @@ struct elfNN_ia64_dyn_sym_info unsigned got_done : 1; unsigned fptr_done : 1; unsigned pltoff_done : 1; + unsigned tprel_done : 1; + unsigned dtpmod_done : 1; + unsigned dtprel_done : 1; /* True for the different kinds of linker data we want created. */ unsigned want_got : 1; @@ -105,6 +111,9 @@ struct elfNN_ia64_dyn_sym_info unsigned want_plt : 1; unsigned want_plt2 : 1; unsigned want_pltoff : 1; + unsigned want_tprel : 1; + unsigned want_dtpmod : 1; + unsigned want_dtprel : 1; }; struct elfNN_ia64_local_hash_entry @@ -285,6 +294,10 @@ static bfd_vma set_pltoff_entry PARAMS ((bfd *abfd, struct bfd_link_info *info, struct elfNN_ia64_dyn_sym_info *dyn_i, bfd_vma value, boolean)); +static bfd_vma elfNN_ia64_tprel_base + PARAMS ((struct bfd_link_info *info)); +static bfd_vma elfNN_ia64_dtprel_base + PARAMS ((struct bfd_link_info *info)); static int elfNN_ia64_unwind_entry_compare PARAMS ((const PTR, const PTR)); static boolean elfNN_ia64_final_link @@ -423,10 +436,25 @@ static reloc_howto_type ia64_howto_table IA64_HOWTO (R_IA64_LTOFF22X, "LTOFF22X", 0, false, true), IA64_HOWTO (R_IA64_LDXMOV, "LDXMOV", 0, false, true), + IA64_HOWTO (R_IA64_TPREL14, "TPREL14", 0, false, false), IA64_HOWTO (R_IA64_TPREL22, "TPREL22", 0, false, false), + IA64_HOWTO (R_IA64_TPREL64I, "TPREL64I", 0, false, false), IA64_HOWTO (R_IA64_TPREL64MSB, "TPREL64MSB", 8, false, false), IA64_HOWTO (R_IA64_TPREL64LSB, "TPREL64LSB", 8, false, false), - IA64_HOWTO (R_IA64_LTOFF_TP22, "LTOFF_TP22", 0, false, false), + IA64_HOWTO (R_IA64_LTOFF_TPREL22, "LTOFF_TPREL22", 0, false, false), + + IA64_HOWTO (R_IA64_DTPMOD64MSB, "TPREL64MSB", 8, false, false), + IA64_HOWTO (R_IA64_DTPMOD64LSB, "TPREL64LSB", 8, false, false), + IA64_HOWTO (R_IA64_LTOFF_DTPMOD22, "LTOFF_DTPMOD22", 0, false, false), + + IA64_HOWTO (R_IA64_DTPREL14, "DTPREL14", 0, false, false), + IA64_HOWTO (R_IA64_DTPREL22, "DTPREL22", 0, false, false), + IA64_HOWTO (R_IA64_DTPREL64I, "DTPREL64I", 0, false, false), + IA64_HOWTO (R_IA64_DTPREL32MSB, "DTPREL32MSB", 4, false, false), + IA64_HOWTO (R_IA64_DTPREL32LSB, "DTPREL32LSB", 4, false, false), + IA64_HOWTO (R_IA64_DTPREL64MSB, "DTPREL64MSB", 8, false, false), + IA64_HOWTO (R_IA64_DTPREL64LSB, "DTPREL64LSB", 8, false, false), + IA64_HOWTO (R_IA64_LTOFF_DTPREL22, "LTOFF_DTPREL22", 0, false, false), }; static unsigned char elf_code_to_howto_index[R_IA64_MAX_RELOC_CODE + 1]; @@ -541,10 +569,25 @@ elfNN_ia64_reloc_type_lookup (abfd, bfd_ case BFD_RELOC_IA64_LTOFF22X: rtype = R_IA64_LTOFF22X; break; case BFD_RELOC_IA64_LDXMOV: rtype = R_IA64_LDXMOV; break; + case BFD_RELOC_IA64_TPREL14: rtype = R_IA64_TPREL14; break; case BFD_RELOC_IA64_TPREL22: rtype = R_IA64_TPREL22; break; + case BFD_RELOC_IA64_TPREL64I: rtype = R_IA64_TPREL64I; break; case BFD_RELOC_IA64_TPREL64MSB: rtype = R_IA64_TPREL64MSB; break; case BFD_RELOC_IA64_TPREL64LSB: rtype = R_IA64_TPREL64LSB; break; - case BFD_RELOC_IA64_LTOFF_TP22: rtype = R_IA64_LTOFF_TP22; break; + case BFD_RELOC_IA64_LTOFF_TPREL22: rtype = R_IA64_LTOFF_TPREL22; break; + + case BFD_RELOC_IA64_DTPMOD64MSB: rtype = R_IA64_DTPMOD64MSB; break; + case BFD_RELOC_IA64_DTPMOD64LSB: rtype = R_IA64_DTPMOD64LSB; break; + case BFD_RELOC_IA64_LTOFF_DTPMOD22: rtype = R_IA64_LTOFF_DTPMOD22; break; + + case BFD_RELOC_IA64_DTPREL14: rtype = R_IA64_DTPREL14; break; + case BFD_RELOC_IA64_DTPREL22: rtype = R_IA64_DTPREL22; break; + case BFD_RELOC_IA64_DTPREL64I: rtype = R_IA64_DTPREL64I; break; + case BFD_RELOC_IA64_DTPREL32MSB: rtype = R_IA64_DTPREL32MSB; break; + case BFD_RELOC_IA64_DTPREL32LSB: rtype = R_IA64_DTPREL32LSB; break; + case BFD_RELOC_IA64_DTPREL64MSB: rtype = R_IA64_DTPREL64MSB; break; + case BFD_RELOC_IA64_DTPREL64LSB: rtype = R_IA64_DTPREL64LSB; break; + case BFD_RELOC_IA64_LTOFF_DTPREL22: rtype = R_IA64_LTOFF_DTPREL22; break; default: return 0; } @@ -2097,6 +2140,9 @@ elfNN_ia64_check_relocs (abfd, info, sec NEED_FULL_PLT = 16, NEED_DYNREL = 32, NEED_LTOFF_FPTR = 64, + NEED_TPREL = 128, + NEED_DTPMOD = 256, + NEED_DTPREL = 512 }; struct elf_link_hash_entry *h = NULL; @@ -2134,11 +2180,42 @@ elfNN_ia64_check_relocs (abfd, info, sec need_entry = 0; switch (ELFNN_R_TYPE (rel->r_info)) { - case R_IA64_TPREL22: case R_IA64_TPREL64MSB: case R_IA64_TPREL64LSB: - case R_IA64_LTOFF_TP22: - return false; + if (info->shared || maybe_dynamic) + need_entry = NEED_DYNREL; + dynrel_type = R_IA64_TPREL64LSB; + if (info->shared) + info->flags |= DF_STATIC_TLS; + break; + + case R_IA64_LTOFF_TPREL22: + need_entry = NEED_TPREL; + if (info->shared) + info->flags |= DF_STATIC_TLS; + break; + + case R_IA64_DTPREL64MSB: + case R_IA64_DTPREL64LSB: + if (info->shared || maybe_dynamic) + need_entry = NEED_DYNREL; + dynrel_type = R_IA64_DTPREL64LSB; + break; + + case R_IA64_LTOFF_DTPREL22: + need_entry = NEED_DTPREL; + break; + + case R_IA64_DTPMOD64MSB: + case R_IA64_DTPMOD64LSB: + if (info->shared || maybe_dynamic) + need_entry = NEED_DYNREL; + dynrel_type = R_IA64_DTPMOD64LSB; + break; + + case R_IA64_LTOFF_DTPMOD22: + need_entry = NEED_DTPMOD; + break; case R_IA64_LTOFF_FPTR22: case R_IA64_LTOFF_FPTR64I: @@ -2248,7 +2325,7 @@ elfNN_ia64_check_relocs (abfd, info, sec dyn_i->h = h; /* Create what's needed. */ - if (need_entry & NEED_GOT) + if (need_entry & (NEED_GOT | NEED_TPREL | NEED_DTPMOD | NEED_DTPREL)) { if (!got) { @@ -2256,7 +2333,14 @@ elfNN_ia64_check_relocs (abfd, info, sec if (!got) return false; } - dyn_i->want_got = 1; + if (need_entry & NEED_GOT) + dyn_i->want_got = 1; + if (need_entry & NEED_TPREL) + dyn_i->want_tprel = 1; + if (need_entry & NEED_DTPMOD) + dyn_i->want_dtpmod = 1; + if (need_entry & NEED_DTPREL) + dyn_i->want_dtprel = 1; } if (need_entry & NEED_FPTR) { @@ -2336,6 +2420,21 @@ allocate_global_data_got (dyn_i, data) dyn_i->got_offset = x->ofs; x->ofs += 8; } + if (dyn_i->want_tprel) + { + dyn_i->tprel_offset = x->ofs; + x->ofs += 8; + } + if (dyn_i->want_dtpmod) + { + dyn_i->dtpmod_offset = x->ofs; + x->ofs += 8; + } + if (dyn_i->want_dtprel) + { + dyn_i->dtprel_offset = x->ofs; + x->ofs += 8; + } return true; } @@ -2582,6 +2681,10 @@ allocate_dynrel_entries (dyn_i, data) if (!dynamic_symbol) count *= 2; break; + case R_IA64_TPREL64LSB: + case R_IA64_DTPREL64LSB: + case R_IA64_DTPMOD64LSB: + break; default: abort (); } @@ -2593,6 +2696,12 @@ allocate_dynrel_entries (dyn_i, data) if (((dynamic_symbol || shared) && dyn_i->want_got) || (dyn_i->want_ltoff_fptr && dyn_i->h && dyn_i->h->dynindx != -1)) ia64_info->rel_got_sec->_raw_size += sizeof (ElfNN_External_Rela); + if ((dynamic_symbol || shared) && dyn_i->want_tprel) + ia64_info->rel_got_sec->_raw_size += sizeof (ElfNN_External_Rela); + if ((dynamic_symbol || shared) && dyn_i->want_dtpmod) + ia64_info->rel_got_sec->_raw_size += sizeof (ElfNN_External_Rela); + if (dynamic_symbol && dyn_i->want_dtprel) + ia64_info->rel_got_sec->_raw_size += sizeof (ElfNN_External_Rela); if (dyn_i->want_pltoff) { @@ -2903,7 +3012,11 @@ elfNN_ia64_install_value (abfd, hit_addr /* Instruction relocations. */ - case R_IA64_IMM14: opnd = IA64_OPND_IMM14; break; + case R_IA64_IMM14: + case R_IA64_TPREL14: + case R_IA64_DTPREL14: + opnd = IA64_OPND_IMM14; + break; case R_IA64_PCREL21F: opnd = IA64_OPND_TGT25; break; case R_IA64_PCREL21M: opnd = IA64_OPND_TGT25b; break; @@ -2920,6 +3033,11 @@ elfNN_ia64_install_value (abfd, hit_addr case R_IA64_PLTOFF22: case R_IA64_PCREL22: case R_IA64_LTOFF_FPTR22: + case R_IA64_TPREL22: + case R_IA64_DTPREL22: + case R_IA64_LTOFF_TPREL22: + case R_IA64_LTOFF_DTPMOD22: + case R_IA64_LTOFF_DTPREL22: opnd = IA64_OPND_IMM22; break; @@ -2930,6 +3048,8 @@ elfNN_ia64_install_value (abfd, hit_addr case R_IA64_PCREL64I: case R_IA64_FPTR64I: case R_IA64_LTOFF_FPTR64I: + case R_IA64_TPREL64I: + case R_IA64_DTPREL64I: opnd = IA64_OPND_IMMU64; break; @@ -2943,6 +3063,7 @@ elfNN_ia64_install_value (abfd, hit_addr case R_IA64_SEGREL32MSB: case R_IA64_SECREL32MSB: case R_IA64_LTV32MSB: + case R_IA64_DTPREL32MSB: size = 4; bigendian = 1; break; @@ -2954,6 +3075,7 @@ elfNN_ia64_install_value (abfd, hit_addr case R_IA64_SEGREL32LSB: case R_IA64_SECREL32LSB: case R_IA64_LTV32LSB: + case R_IA64_DTPREL32LSB: size = 4; bigendian = 0; break; @@ -2966,6 +3088,9 @@ elfNN_ia64_install_value (abfd, hit_addr case R_IA64_SEGREL64MSB: case R_IA64_SECREL64MSB: case R_IA64_LTV64MSB: + case R_IA64_TPREL64MSB: + case R_IA64_DTPMOD64MSB: + case R_IA64_DTPREL64MSB: size = 8; bigendian = 1; break; @@ -2978,6 +3103,9 @@ elfNN_ia64_install_value (abfd, hit_addr case R_IA64_SEGREL64LSB: case R_IA64_SECREL64LSB: case R_IA64_LTV64LSB: + case R_IA64_TPREL64LSB: + case R_IA64_DTPMOD64LSB: + case R_IA64_DTPREL64LSB: size = 8; bigendian = 0; break; @@ -3132,26 +3260,53 @@ set_got_entry (abfd, info, dyn_i, dynind { struct elfNN_ia64_link_hash_table *ia64_info; asection *got_sec; + boolean done; + bfd_vma got_offset; ia64_info = elfNN_ia64_hash_table (info); got_sec = ia64_info->got_sec; - BFD_ASSERT ((dyn_i->got_offset & 7) == 0); - - if (! dyn_i->got_done) + switch (dyn_r_type) { + case R_IA64_TPREL64LSB: + done = dyn_i->tprel_done; + dyn_i->tprel_done = true; + got_offset = dyn_i->tprel_offset; + break; + case R_IA64_DTPMOD64LSB: + done = dyn_i->dtpmod_done; + dyn_i->dtpmod_done = true; + got_offset = dyn_i->dtpmod_offset; + break; + case R_IA64_DTPREL64LSB: + done = dyn_i->dtprel_done; + dyn_i->dtprel_done = true; + got_offset = dyn_i->dtprel_offset; + break; + default: + done = dyn_i->got_done; dyn_i->got_done = true; + got_offset = dyn_i->got_offset; + break; + } + BFD_ASSERT ((got_offset & 7) == 0); + + if (! done) + { /* Store the target address in the linkage table entry. */ - bfd_put_64 (abfd, value, got_sec->contents + dyn_i->got_offset); + bfd_put_64 (abfd, value, got_sec->contents + got_offset); /* Install a dynamic relocation if needed. */ - if (info->shared + if ((info->shared && dyn_r_type != R_IA64_DTPREL64LSB) || elfNN_ia64_dynamic_symbol_p (dyn_i->h, info) || elfNN_ia64_aix_vec (abfd->xvec) || (dynindx != -1 && dyn_r_type == R_IA64_FPTR64LSB)) { - if (dynindx == -1) + if (dynindx == -1 + && dyn_r_type != R_IA64_TPREL64LSB + && dyn_r_type != R_IA64_DTPMOD64LSB + && dyn_r_type != R_IA64_DTPREL64LSB) { dyn_r_type = R_IA64_REL64LSB; dynindx = 0; @@ -3171,6 +3326,15 @@ set_got_entry (abfd, info, dyn_i, dynind case R_IA64_FPTR64LSB: dyn_r_type = R_IA64_FPTR64MSB; break; + case R_IA64_TPREL64LSB: + dyn_r_type = R_IA64_TPREL64MSB; + break; + case R_IA64_DTPMOD64LSB: + dyn_r_type = R_IA64_DTPMOD64MSB; + break; + case R_IA64_DTPREL64LSB: + dyn_r_type = R_IA64_DTPREL64MSB; + break; default: BFD_ASSERT (false); break; @@ -3179,7 +3343,7 @@ set_got_entry (abfd, info, dyn_i, dynind elfNN_ia64_install_dyn_reloc (abfd, NULL, got_sec, ia64_info->rel_got_sec, - dyn_i->got_offset, dyn_r_type, + got_offset, dyn_r_type, dynindx, addend); } } @@ -3187,7 +3351,7 @@ set_got_entry (abfd, info, dyn_i, dynind /* Return the address of the linkage table entry. */ value = (got_sec->output_section->vma + got_sec->output_offset - + dyn_i->got_offset); + + got_offset); return value; } @@ -3285,6 +3449,35 @@ set_pltoff_entry (abfd, info, dyn_i, val return value; } +/* Return the base VMA address which should be subtracted from real addresses + when resolving @tprel() relocation. + Main program TLS (whose template starts at PT_TLS p_vaddr) + is assigned offset round(16, PT_TLS p_align). */ + +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; + + BFD_ASSERT (tls_segment != NULL); + return (tls_segment->start + - align_power ((bfd_vma) 16, tls_segment->align)); +} + +/* Return the base VMA address which should be subtracted from real addresses + when resolving @dtprel() relocation. + This is PT_TLS segment p_vaddr. */ + +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; +} + /* Called through qsort to sort the .IA_64.unwind section during a non-relocatable link. Set elfNN_ia64_unwind_entry_compare_bfd to the output bfd so we can do proper endianness frobbing. */ @@ -3502,6 +3695,7 @@ elfNN_ia64_relocate_section (output_bfd, elf_section_data(input_section->output_section) ->this_hdr.sh_flags |= flags; + return true; } gp_val = _bfd_get_gp_value (output_bfd); @@ -3534,29 +3728,9 @@ elfNN_ia64_relocate_section (output_bfd, ret_val = false; continue; } + howto = lookup_howto (r_type); r_symndx = ELFNN_R_SYM (rel->r_info); - - if (info->relocateable) - { - /* This is a relocateable 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) - { - sym_sec = local_sections[r_symndx]; - rel->r_addend += sym_sec->output_offset; - } - } - continue; - } - - /* This is a final link. */ - h = NULL; sym = NULL; sym_sec = NULL; @@ -4049,6 +4223,55 @@ elfNN_ia64_relocate_section (output_bfd, r_type); break; + case R_IA64_TPREL14: + case R_IA64_TPREL22: + case R_IA64_TPREL64I: + value -= elfNN_ia64_tprel_base (info); + r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type); + break; + + case R_IA64_DTPREL14: + case R_IA64_DTPREL22: + case R_IA64_DTPREL64I: + value -= elfNN_ia64_dtprel_base (info); + r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type); + break; + + case R_IA64_LTOFF_TPREL22: + case R_IA64_LTOFF_DTPMOD22: + case R_IA64_LTOFF_DTPREL22: + { + int got_r_type; + + switch (r_type) + { + default: + case R_IA64_LTOFF_TPREL22: + if (!dynamic_symbol_p && !info->shared) + value -= elfNN_ia64_tprel_base (info); + got_r_type = R_IA64_TPREL64LSB; + break; + case R_IA64_LTOFF_DTPMOD22: + if (!dynamic_symbol_p && !info->shared) + value = 1; + got_r_type = R_IA64_DTPMOD64LSB; + break; + case R_IA64_LTOFF_DTPREL22: + if (!dynamic_symbol_p) + value -= elfNN_ia64_dtprel_base (info); + got_r_type = R_IA64_DTPREL64LSB; + break; + } + dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false); + value = set_got_entry (input_bfd, info, dyn_i, + (h ? h->dynindx : -1), rel->r_addend, + value, got_r_type); + value -= gp_val; + r = elfNN_ia64_install_value (output_bfd, hit_addr, value, + r_type); + } + break; + default: r = bfd_reloc_notsupported; break; @@ -4561,6 +4784,7 @@ elfNN_hpux_backend_section_from_bfd_sect #define elf_backend_copy_indirect_symbol elfNN_ia64_hash_copy_indirect #define elf_backend_hide_symbol elfNN_ia64_hash_hide_symbol #define elf_backend_reloc_type_class elfNN_ia64_reloc_type_class +#define elf_backend_rela_normal 1 #include "elfNN-target.h" diff -uprN binutils-2.12.90.0.7/bfd/elfxx-mips.c binutils-2.12.90.0.9/bfd/elfxx-mips.c --- binutils-2.12.90.0.7/bfd/elfxx-mips.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/elfxx-mips.c Thu May 23 15:10:10 2002 @@ -115,6 +115,9 @@ struct mips_elf_link_hash_entry /* This is like the call_stub field, but it is used if the function being called returns a floating point value. */ asection *call_fp_stub; + + /* Are we forced local? .*/ + boolean forced_local; }; /* MIPS ELF linker hash table. */ @@ -132,7 +135,7 @@ struct mips_elf_link_hash_table /* The size of the .compact_rel section (if SGI_COMPAT). */ bfd_size_type compact_rel_size; /* This flag indicates that the value of DT_MIPS_RLD_MAP dynamic - entry is set to the address of __rld_obj_head as in Irix 5. */ + entry is set to the address of __rld_obj_head as in IRIX5. */ boolean use_rld_obj_head; /* This is the value of the __rld_map or __rld_obj_head symbol. */ bfd_vma rld_value; @@ -151,7 +154,7 @@ struct extsym_info boolean failed; }; -/* The names of the runtime procedure table symbols used on Irix 5. */ +/* The names of the runtime procedure table symbols used on IRIX5. */ static const char * const mips_elf_dynsym_rtproc_names[] = { @@ -162,7 +165,7 @@ static const char * const mips_elf_dynsy }; /* These structures are used to generate the .compact_rel section on - Irix 5. */ + IRIX5. */ typedef struct { @@ -581,6 +584,7 @@ mips_elf_link_hash_newfunc (entry, table ret->need_fn_stub = false; ret->call_stub = NULL; ret->call_fp_stub = NULL; + ret->forced_local = false; } return (struct bfd_hash_entry *) ret; @@ -1685,9 +1689,18 @@ mips_elf_record_global_got_symbol (h, in { /* A global symbol in the GOT must also be in the dynamic symbol table. */ - if (h->dynindx == -1 - && !bfd_elf32_link_record_dynamic_symbol (info, h)) - return false; + if (h->dynindx == -1) + { + switch (ELF_ST_VISIBILITY (h->other)) + { + case STV_INTERNAL: + case STV_HIDDEN: + _bfd_mips_elf_hide_symbol (info, h, true); + break; + } + if (!bfd_elf32_link_record_dynamic_symbol (info, h)) + return false; + } /* If we've already marked this entry as needing GOT space, we don't need to do it again. */ @@ -2398,7 +2411,7 @@ mips_elf_calculate_relocation (abfd, inp { value = addend + gp - p + 4; /* The MIPS ABI requires checking the R_MIPS_LO16 relocation - for overflow. But, on, say, Irix 5, relocations against + for overflow. But, on, say, IRIX5, relocations against _gp_disp are normally generated from the .cpload pseudo-op. It generates code that normally looks like this: @@ -3529,7 +3542,7 @@ _bfd_mips_elf_fake_sections (abfd, hdr, else if (strcmp (name, ".mdebug") == 0) { hdr->sh_type = SHT_MIPS_DEBUG; - /* In a shared object on Irix 5.3, the .mdebug section has an + /* In a shared object on IRIX 5.3, the .mdebug section has an entsize of 0. FIXME: Does this matter? */ if (SGI_COMPAT (abfd) && (abfd->flags & DYNAMIC) != 0) hdr->sh_entsize = 0; @@ -3539,7 +3552,7 @@ _bfd_mips_elf_fake_sections (abfd, hdr, else if (strcmp (name, ".reginfo") == 0) { hdr->sh_type = SHT_MIPS_REGINFO; - /* In a shared object on Irix 5.3, the .reginfo section has an + /* In a shared object on IRIX 5.3, the .reginfo section has an entsize of 0x18. FIXME: Does this matter? */ if (SGI_COMPAT (abfd)) { @@ -3559,7 +3572,7 @@ _bfd_mips_elf_fake_sections (abfd, hdr, if (SGI_COMPAT (abfd)) hdr->sh_entsize = 0; #if 0 - /* This isn't how the Irix 6 linker behaves. */ + /* This isn't how the IRIX6 linker behaves. */ hdr->sh_info = SIZEOF_MIPS_DYNSYM_SECNAMES; #endif } @@ -3680,7 +3693,7 @@ _bfd_mips_elf_add_symbol_hook (abfd, inf && (abfd->flags & DYNAMIC) != 0 && strcmp (*namep, "_rld_new_interface") == 0) { - /* Skip Irix 5 rld entry name. */ + /* Skip IRIX5 rld entry name. */ *namep = NULL; return true; } @@ -4777,7 +4790,7 @@ _bfd_mips_elf_size_dynamic_sections (out } else if (strcmp (name, MIPS_ELF_STUB_SECTION_NAME (output_bfd)) == 0) { - /* Irix rld assumes that the function stub isn't at the end + /* IRIX rld assumes that the function stub isn't at the end of .text section. So put a dummy. XXX */ s->_raw_size += MIPS_FUNCTION_STUB_SIZE; } @@ -5772,7 +5785,7 @@ _bfd_mips_elf_finish_dynamic_sections (o /* The first entry of the global offset table will be filled at runtime. The second entry will be used by some runtime loaders. - This isn't the case of Irix rld. */ + 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); @@ -6017,7 +6030,7 @@ _bfd_mips_elf_final_write_processing (ab } } -/* When creating an Irix 5 executable, we need REGINFO and RTPROC +/* When creating an IRIX5 executable, we need REGINFO and RTPROC segments. */ int @@ -6047,7 +6060,7 @@ _bfd_mips_elf_additional_program_headers return ret; } -/* Modify the segment map for an Irix 5 executable. */ +/* Modify the segment map for an IRIX5 executable. */ boolean _bfd_mips_elf_modify_segment_map (abfd) @@ -6170,7 +6183,7 @@ _bfd_mips_elf_modify_segment_map (abfd) } } } - /* On Irix 5, the PT_DYNAMIC segment includes the .dynamic, + /* On IRIX5, the PT_DYNAMIC segment includes the .dynamic, .dynstr, .dynsym, and .hash sections, and everything in between. */ for (pm = &elf_tdata (abfd)->segment_map; *pm != NULL; @@ -6384,7 +6397,12 @@ _bfd_mips_elf_hide_symbol (info, entry, asection *got; struct mips_got_info *g; struct mips_elf_link_hash_entry *h; + h = (struct mips_elf_link_hash_entry *) entry; + if (h->forced_local) + return; + h->forced_local = true; + dynobj = elf_hash_table (info)->dynobj; got = bfd_get_section_by_name (dynobj, ".got"); g = (struct mips_got_info *) elf_section_data (got)->tdata; @@ -7761,6 +7779,12 @@ _bfd_mips_elf_print_private_bfd_data (ab else fprintf (file, _(" [unknown ISA]")); + if (elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH_ASE_MDMX) + fprintf (file, _(" [mdmx]")); + + if (elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH_ASE_M16) + fprintf (file, _(" [mips16]")); + if (elf_elfheader (abfd)->e_flags & EF_MIPS_32BITMODE) fprintf (file, _(" [32bitmode]")); else diff -uprN binutils-2.12.90.0.7/bfd/elfxx-target.h binutils-2.12.90.0.9/bfd/elfxx-target.h --- binutils-2.12.90.0.7/bfd/elfxx-target.h Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/elfxx-target.h Thu May 23 15:10:10 2002 @@ -194,6 +194,11 @@ Foundation, Inc., 59 Temple Place - Suit #define bfd_elfNN_bfd_final_link _bfd_generic_final_link #endif #endif /* ! defined (elf_backend_relocate_section) */ + +#ifndef bfd_elfNN_bfd_link_just_syms +#define bfd_elfNN_bfd_link_just_syms _bfd_elf_link_just_syms +#endif + #ifndef bfd_elfNN_bfd_link_split_section #define bfd_elfNN_bfd_link_split_section _bfd_generic_link_split_section #endif @@ -400,6 +405,10 @@ Foundation, Inc., 59 Temple Place - Suit #define elf_backend_default_use_rela_p !USE_REL #endif +#ifndef elf_backend_rela_normal +#define elf_backend_rela_normal 0 +#endif + #ifndef ELF_MACHINE_ALT1 #define ELF_MACHINE_ALT1 0 #endif @@ -482,6 +491,7 @@ static const struct elf_backend_data elf elf_backend_may_use_rel_p, elf_backend_may_use_rela_p, elf_backend_default_use_rela_p, + elf_backend_rela_normal, elf_backend_sign_extend_vma, elf_backend_want_got_plt, elf_backend_plt_readonly, diff -uprN binutils-2.12.90.0.7/bfd/hash.c binutils-2.12.90.0.9/bfd/hash.c --- binutils-2.12.90.0.7/bfd/hash.c Mon Oct 1 15:25:21 2001 +++ binutils-2.12.90.0.9/bfd/hash.c Thu May 23 15:10:10 2002 @@ -375,8 +375,8 @@ bfd_hash_lookup (table, string, create, { hash += c + (c << 17); hash ^= hash >> 2; - ++len; } + len = (s - (const unsigned char *) string) - 1; hash += len + (len << 17); hash ^= hash >> 2; diff -uprN binutils-2.12.90.0.7/bfd/i386msdos.c binutils-2.12.90.0.9/bfd/i386msdos.c --- binutils-2.12.90.0.7/bfd/i386msdos.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/i386msdos.c Thu May 23 15:10:10 2002 @@ -176,6 +176,7 @@ msdos_set_section_contents (abfd, sectio #define msdos_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define msdos_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define msdos_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define msdos_bfd_link_just_syms _bfd_generic_link_just_syms #define msdos_bfd_final_link _bfd_generic_final_link #define msdos_bfd_link_split_section _bfd_generic_link_split_section #define msdos_set_arch_mach _bfd_generic_set_arch_mach diff -uprN binutils-2.12.90.0.7/bfd/i386os9k.c binutils-2.12.90.0.9/bfd/i386os9k.c --- binutils-2.12.90.0.7/bfd/i386os9k.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/i386os9k.c Thu May 23 15:10:10 2002 @@ -332,6 +332,7 @@ os9k_sizeof_headers (ignore_abfd, ignore #define os9k_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define os9k_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define os9k_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define os9k_bfd_link_just_syms _bfd_generic_link_just_syms #define os9k_bfd_final_link _bfd_generic_final_link #define os9k_bfd_link_split_section _bfd_generic_link_split_section diff -uprN binutils-2.12.90.0.7/bfd/ieee.c binutils-2.12.90.0.9/bfd/ieee.c --- binutils-2.12.90.0.7/bfd/ieee.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/ieee.c Thu May 23 15:10:10 2002 @@ -4013,6 +4013,7 @@ ieee_bfd_debug_info_accumulate (abfd, se #define ieee_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define ieee_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define ieee_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define ieee_bfd_link_just_syms _bfd_generic_link_just_syms #define ieee_bfd_final_link _bfd_generic_final_link #define ieee_bfd_link_split_section _bfd_generic_link_split_section diff -uprN binutils-2.12.90.0.7/bfd/ihex.c binutils-2.12.90.0.9/bfd/ihex.c --- binutils-2.12.90.0.7/bfd/ihex.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/bfd/ihex.c Thu May 23 15:10:10 2002 @@ -980,6 +980,7 @@ ihex_sizeof_headers (abfd, exec) #define ihex_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define ihex_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define ihex_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define ihex_bfd_link_just_syms _bfd_generic_link_just_syms #define ihex_bfd_final_link _bfd_generic_final_link #define ihex_bfd_link_split_section _bfd_generic_link_split_section diff -uprN binutils-2.12.90.0.7/bfd/libbfd-in.h binutils-2.12.90.0.9/bfd/libbfd-in.h --- binutils-2.12.90.0.7/bfd/libbfd-in.h Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/libbfd-in.h Thu May 23 15:10:10 2002 @@ -328,6 +328,8 @@ extern boolean _bfd_generic_set_section_ ((void (*) PARAMS ((struct bfd_link_hash_table *))) bfd_void) #define _bfd_nolink_bfd_link_add_symbols \ ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) +#define _bfd_nolink_bfd_link_just_syms \ + ((void (*) PARAMS ((asection *, struct bfd_link_info *))) bfd_void) #define _bfd_nolink_bfd_final_link \ ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) #define _bfd_nolink_bfd_link_split_section \ @@ -410,8 +412,6 @@ extern boolean _bfd_generic_link_add_arc PARAMS ((bfd *, struct bfd_link_info *, boolean (*checkfn) (bfd *, struct bfd_link_info *, boolean *))); - - /* Forward declaration to avoid prototype errors. */ typedef struct bfd_link_hash_entry _bfd_link_hash_entry; @@ -421,6 +421,10 @@ extern boolean _bfd_generic_link_add_one asection *, bfd_vma, const char *, boolean copy, boolean constructor, struct bfd_link_hash_entry **)); +/* Generic routine to mark section as supplying symbols only. */ +extern void _bfd_generic_link_just_syms + PARAMS ((asection *, struct bfd_link_info *)); + /* Generic link routine. */ extern boolean _bfd_generic_final_link PARAMS ((bfd *, struct bfd_link_info *)); diff -uprN binutils-2.12.90.0.7/bfd/libbfd.h binutils-2.12.90.0.9/bfd/libbfd.h --- binutils-2.12.90.0.7/bfd/libbfd.h Mon Apr 22 19:56:51 2002 +++ binutils-2.12.90.0.9/bfd/libbfd.h Thu May 23 15:10:10 2002 @@ -333,6 +333,8 @@ extern boolean _bfd_generic_set_section_ ((void (*) PARAMS ((struct bfd_link_hash_table *))) bfd_void) #define _bfd_nolink_bfd_link_add_symbols \ ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) +#define _bfd_nolink_bfd_link_just_syms \ + ((void (*) PARAMS ((asection *, struct bfd_link_info *))) bfd_void) #define _bfd_nolink_bfd_final_link \ ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) #define _bfd_nolink_bfd_link_split_section \ @@ -415,8 +417,6 @@ extern boolean _bfd_generic_link_add_arc PARAMS ((bfd *, struct bfd_link_info *, boolean (*checkfn) (bfd *, struct bfd_link_info *, boolean *))); - - /* Forward declaration to avoid prototype errors. */ typedef struct bfd_link_hash_entry _bfd_link_hash_entry; @@ -426,6 +426,10 @@ extern boolean _bfd_generic_link_add_one asection *, bfd_vma, const char *, boolean copy, boolean constructor, struct bfd_link_hash_entry **)); +/* Generic routine to mark section as supplying symbols only. */ +extern void _bfd_generic_link_just_syms + PARAMS ((asection *, struct bfd_link_info *)); + /* Generic link routine. */ extern boolean _bfd_generic_final_link PARAMS ((bfd *, struct bfd_link_info *)); @@ -767,6 +771,15 @@ static const char *const bfd_reloc_code_ "BFD_RELOC_386_RELATIVE", "BFD_RELOC_386_GOTOFF", "BFD_RELOC_386_GOTPC", + "BFD_RELOC_386_TLS_LE", + "BFD_RELOC_386_TLS_GD", + "BFD_RELOC_386_TLS_LDM", + "BFD_RELOC_386_TLS_LDO_32", + "BFD_RELOC_386_TLS_IE_32", + "BFD_RELOC_386_TLS_LE_32", + "BFD_RELOC_386_TLS_DTPMOD32", + "BFD_RELOC_386_TLS_DTPOFF32", + "BFD_RELOC_386_TLS_TPOFF32", "BFD_RELOC_X86_64_GOT32", "BFD_RELOC_X86_64_PLT32", "BFD_RELOC_X86_64_COPY", @@ -1138,12 +1151,25 @@ static const char *const bfd_reloc_code_ "BFD_RELOC_IA64_IPLTMSB", "BFD_RELOC_IA64_IPLTLSB", "BFD_RELOC_IA64_COPY", + "BFD_RELOC_IA64_LTOFF22X", + "BFD_RELOC_IA64_LDXMOV", + "BFD_RELOC_IA64_TPREL14", "BFD_RELOC_IA64_TPREL22", + "BFD_RELOC_IA64_TPREL64I", "BFD_RELOC_IA64_TPREL64MSB", "BFD_RELOC_IA64_TPREL64LSB", - "BFD_RELOC_IA64_LTOFF_TP22", - "BFD_RELOC_IA64_LTOFF22X", - "BFD_RELOC_IA64_LDXMOV", + "BFD_RELOC_IA64_LTOFF_TPREL22", + "BFD_RELOC_IA64_DTPMOD64MSB", + "BFD_RELOC_IA64_DTPMOD64LSB", + "BFD_RELOC_IA64_LTOFF_DTPMOD22", + "BFD_RELOC_IA64_DTPREL14", + "BFD_RELOC_IA64_DTPREL22", + "BFD_RELOC_IA64_DTPREL64I", + "BFD_RELOC_IA64_DTPREL32MSB", + "BFD_RELOC_IA64_DTPREL32LSB", + "BFD_RELOC_IA64_DTPREL64MSB", + "BFD_RELOC_IA64_DTPREL64LSB", + "BFD_RELOC_IA64_LTOFF_DTPREL22", "BFD_RELOC_M68HC11_HI8", "BFD_RELOC_M68HC11_LO8", "BFD_RELOC_M68HC11_3B", diff -uprN binutils-2.12.90.0.7/bfd/libecoff.h binutils-2.12.90.0.9/bfd/libecoff.h --- binutils-2.12.90.0.7/bfd/libecoff.h Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/libecoff.h Thu May 23 15:10:10 2002 @@ -333,6 +333,7 @@ extern struct bfd_link_hash_table *_bfd_ #define _bfd_ecoff_bfd_link_hash_table_free _bfd_generic_link_hash_table_free extern boolean _bfd_ecoff_bfd_link_add_symbols PARAMS ((bfd *, struct bfd_link_info *)); +#define _bfd_ecoff_bfd_link_just_syms _bfd_generic_link_just_syms extern boolean _bfd_ecoff_bfd_final_link PARAMS ((bfd *, struct bfd_link_info *)); diff -uprN binutils-2.12.90.0.7/bfd/libxcoff.h binutils-2.12.90.0.9/bfd/libxcoff.h --- binutils-2.12.90.0.7/bfd/libxcoff.h Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/bfd/libxcoff.h Thu May 23 15:10:10 2002 @@ -200,4 +200,36 @@ struct xcoff_backend_data_rec #define bfd_xcoff_text_align_power(a) ((xcoff_data (a)->text_align_power)) #define bfd_xcoff_data_align_power(a) ((xcoff_data (a)->data_align_power)) +/* xcoff*_ppc_relocate_section macros */ +#define XCOFF_MAX_CALCULATE_RELOCATION (0x1c) +#define XCOFF_MAX_COMPLAIN_OVERFLOW (4) +/* N_ONES produces N one bits, without overflowing machine arithmetic. */ +#ifdef N_ONES +#undef N_ONES +#endif +#define N_ONES(n) (((((bfd_vma) 1 << ((n) - 1)) - 1) << 1) | 1) + +#define XCOFF_RELOC_FUNCTION_ARGS \ + bfd *, asection *, bfd *, struct internal_reloc *, \ + struct internal_syment *, struct reloc_howto_struct *, bfd_vma, bfd_vma, \ + bfd_vma *relocation, bfd_byte *contents + +#define XCOFF_COMPLAIN_FUNCTION_ARGS \ + bfd *, bfd_vma, bfd_vma, struct reloc_howto_struct *howto + +extern boolean (*xcoff_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION]) + (XCOFF_RELOC_FUNCTION_ARGS); +extern boolean (*xcoff_complain_overflow[XCOFF_MAX_COMPLAIN_OVERFLOW]) + (XCOFF_COMPLAIN_FUNCTION_ARGS); + +/* Relocation functions */ +boolean xcoff_reloc_type_noop PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); +boolean xcoff_reloc_type_fail PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); +boolean xcoff_reloc_type_pos PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); +boolean xcoff_reloc_type_neg PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); +boolean xcoff_reloc_type_rel PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); +boolean xcoff_reloc_type_toc PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); +boolean xcoff_reloc_type_ba PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); +boolean xcoff_reloc_type_crel PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); + #endif /* LIBXCOFF_H */ diff -uprN binutils-2.12.90.0.7/bfd/linker.c binutils-2.12.90.0.9/bfd/linker.c --- binutils-2.12.90.0.7/bfd/linker.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/linker.c Thu May 23 15:10:10 2002 @@ -757,6 +757,19 @@ _bfd_generic_link_add_symbols_collect (a return generic_link_add_symbols (abfd, info, true); } +/* Indicate that we are only retrieving symbol values from this + section. We want the symbols to act as though the values in the + file are absolute. */ + +void +_bfd_generic_link_just_syms (sec, info) + asection *sec; + struct bfd_link_info *info ATTRIBUTE_UNUSED; +{ + sec->output_section = bfd_abs_section_ptr; + sec->output_offset = sec->vma; +} + /* Add symbols from an object file to the global hash table. */ static boolean @@ -1800,37 +1813,38 @@ _bfd_generic_link_add_one_symbol (info, /* Fall through. */ case MDEF: /* Handle a multiple definition. */ - { - asection *msec = NULL; - bfd_vma mval = 0; + if (!info->allow_multiple_definition) + { + asection *msec = NULL; + bfd_vma mval = 0; - switch (h->type) - { - case bfd_link_hash_defined: - msec = h->u.def.section; - mval = h->u.def.value; - break; - case bfd_link_hash_indirect: - msec = bfd_ind_section_ptr; - mval = 0; + switch (h->type) + { + case bfd_link_hash_defined: + msec = h->u.def.section; + mval = h->u.def.value; + break; + case bfd_link_hash_indirect: + msec = bfd_ind_section_ptr; + mval = 0; + break; + default: + abort (); + } + + /* Ignore a redefinition of an absolute symbol to the + same value; it's harmless. */ + if (h->type == bfd_link_hash_defined + && bfd_is_abs_section (msec) + && bfd_is_abs_section (section) + && value == mval) break; - default: - abort (); - } - /* Ignore a redefinition of an absolute symbol to the same - value; it's harmless. */ - if (h->type == bfd_link_hash_defined - && bfd_is_abs_section (msec) - && bfd_is_abs_section (section) - && value == mval) - break; - - if (! ((*info->callbacks->multiple_definition) - (info, h->root.string, msec->owner, msec, mval, abfd, - section, value))) - return false; - } + if (! ((*info->callbacks->multiple_definition) + (info, h->root.string, msec->owner, msec, mval, + abfd, section, value))) + return false; + } break; case CIND: diff -uprN binutils-2.12.90.0.7/bfd/mmo.c binutils-2.12.90.0.9/bfd/mmo.c --- binutils-2.12.90.0.7/bfd/mmo.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/mmo.c Thu May 23 15:10:10 2002 @@ -3247,6 +3247,7 @@ mmo_canonicalize_reloc (abfd, section, r #define mmo_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define mmo_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define mmo_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define mmo_bfd_link_just_syms _bfd_generic_link_just_syms #define mmo_bfd_final_link _bfd_generic_final_link #define mmo_bfd_link_split_section _bfd_generic_link_split_section diff -uprN binutils-2.12.90.0.7/bfd/nlm-target.h binutils-2.12.90.0.9/bfd/nlm-target.h --- binutils-2.12.90.0.7/bfd/nlm-target.h Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/nlm-target.h Thu May 23 15:10:10 2002 @@ -47,6 +47,7 @@ Foundation, Inc., 59 Temple Place - Suit #define nlm_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define nlm_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define nlm_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define nlm_bfd_link_just_syms _bfd_generic_link_just_syms #define nlm_bfd_final_link _bfd_generic_final_link #define nlm_bfd_link_split_section _bfd_generic_link_split_section diff -uprN binutils-2.12.90.0.7/bfd/oasys.c binutils-2.12.90.0.9/bfd/oasys.c --- binutils-2.12.90.0.7/bfd/oasys.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/oasys.c Thu May 23 15:10:10 2002 @@ -1493,6 +1493,7 @@ oasys_sizeof_headers (abfd, exec) #define oasys_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define oasys_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define oasys_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define oasys_bfd_link_just_syms _bfd_generic_link_just_syms #define oasys_bfd_final_link _bfd_generic_final_link #define oasys_bfd_link_split_section _bfd_generic_link_split_section diff -uprN binutils-2.12.90.0.7/bfd/opncls.c binutils-2.12.90.0.9/bfd/opncls.c --- binutils-2.12.90.0.7/bfd/opncls.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/bfd/opncls.c Thu May 23 15:10:10 2002 @@ -93,6 +93,8 @@ _bfd_new_bfd_contained_in (obfd) bfd *nbfd; nbfd = _bfd_new_bfd (); + if (nbfd == NULL) + return NULL; nbfd->xvec = obfd->xvec; nbfd->my_archive = obfd; nbfd->direction = read_direction; @@ -614,7 +616,6 @@ bfd_make_readable(abfd) abfd->arch_info = &bfd_default_arch_struct; abfd->where = 0; - abfd->sections = (asection *) NULL; abfd->format = bfd_unknown; abfd->my_archive = (bfd *) NULL; abfd->origin = 0; @@ -633,7 +634,8 @@ bfd_make_readable(abfd) abfd->outsymbols = 0; abfd->tdata.any = 0; - bfd_check_format(abfd, bfd_object); + bfd_section_list_clear (abfd); + bfd_check_format (abfd, bfd_object); return true; } diff -uprN binutils-2.12.90.0.7/bfd/peXXigen.c binutils-2.12.90.0.9/bfd/peXXigen.c --- binutils-2.12.90.0.7/bfd/peXXigen.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/bfd/peXXigen.c Thu May 23 15:10:10 2002 @@ -1219,10 +1219,58 @@ pe_print_idata (abfd, vfile) if (hint_addr != first_thunk && time_stamp == 0) { + bfd_byte *ft_data; + asection *ft_section; + bfd_vma ft_addr; + bfd_size_type ft_datasize; + int ft_idx; int differ = 0; - int idx2; + int ft_allocated = 0; - idx2 = first_thunk - adj; + ft_addr = first_thunk + extra->ImageBase; + + /* Find the section which contains the first thunk. */ + for (ft_section = abfd->sections; + ft_section != NULL; + ft_section = ft_section->next) + { + ft_datasize = bfd_section_size (abfd, ft_section); + if (ft_addr >= ft_section->vma + && ft_addr < ft_section->vma + ft_datasize) + break; + } + + if (ft_section == NULL) + { + fprintf (file, + _("\nThere is a first thunk, but the section containing it could not be found\n")); + continue; + } + + /* Now check to see if this section is the same as our current + section. If it is not then we will have to load its data in. */ + if (ft_section == section) + { + ft_data = data; + ft_idx = first_thunk - adj; + } + else + { + ft_idx = first_thunk - (ft_section->vma - extra->ImageBase); + ft_data = (bfd_byte *) bfd_malloc (datasize); + if (ft_data == NULL) + continue; + + /* Read datasize bfd_bytes starting at offset ft_idx. */ + if (! bfd_get_section_contents (abfd, ft_section, (PTR) ft_data, (bfd_vma) ft_idx, datasize)) + { + free (ft_data); + continue; + } + + ft_idx = 0; + ft_allocated = 1; + } for (j = 0; j < datasize; j += 4) { @@ -1233,7 +1281,7 @@ pe_print_idata (abfd, vfile) if (hint_addr != 0) hint_member = bfd_get_32 (abfd, data + idx + j); - iat_member = bfd_get_32 (abfd, data + idx2 + j); + iat_member = bfd_get_32 (abfd, ft_data + ft_idx + j); if (hint_addr == 0 && iat_member == 0) break; @@ -1269,6 +1317,9 @@ pe_print_idata (abfd, vfile) if (differ == 0) fprintf (file, _("\tThe Import Address Table is identical\n")); + + if (ft_allocated) + free (ft_data); } fprintf (file, "\n"); diff -uprN binutils-2.12.90.0.7/bfd/ppcboot.c binutils-2.12.90.0.9/bfd/ppcboot.c --- binutils-2.12.90.0.7/bfd/ppcboot.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/ppcboot.c Thu May 23 15:10:10 2002 @@ -472,6 +472,7 @@ ppcboot_bfd_print_private_bfd_data (abfd #define ppcboot_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define ppcboot_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define ppcboot_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define ppcboot_bfd_link_just_syms _bfd_generic_link_just_syms #define ppcboot_bfd_final_link _bfd_generic_final_link #define ppcboot_bfd_link_split_section _bfd_generic_link_split_section #define ppcboot_get_section_contents_in_window \ diff -uprN binutils-2.12.90.0.7/bfd/reloc.c binutils-2.12.90.0.9/bfd/reloc.c --- binutils-2.12.90.0.7/bfd/reloc.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/bfd/reloc.c Thu May 23 15:10:10 2002 @@ -2072,6 +2072,24 @@ ENUMX BFD_RELOC_386_GOTOFF ENUMX BFD_RELOC_386_GOTPC +ENUMX + BFD_RELOC_386_TLS_LE +ENUMX + BFD_RELOC_386_TLS_GD +ENUMX + BFD_RELOC_386_TLS_LDM +ENUMX + BFD_RELOC_386_TLS_LDO_32 +ENUMX + BFD_RELOC_386_TLS_IE_32 +ENUMX + BFD_RELOC_386_TLS_LE_32 +ENUMX + BFD_RELOC_386_TLS_DTPMOD32 +ENUMX + BFD_RELOC_386_TLS_DTPOFF32 +ENUMX + BFD_RELOC_386_TLS_TPOFF32 ENUMDOC i386/elf relocations @@ -3185,17 +3203,43 @@ ENUMX ENUMX BFD_RELOC_IA64_COPY ENUMX + BFD_RELOC_IA64_LTOFF22X +ENUMX + BFD_RELOC_IA64_LDXMOV +ENUMX + BFD_RELOC_IA64_TPREL14 +ENUMX BFD_RELOC_IA64_TPREL22 ENUMX + BFD_RELOC_IA64_TPREL64I +ENUMX BFD_RELOC_IA64_TPREL64MSB ENUMX BFD_RELOC_IA64_TPREL64LSB ENUMX - BFD_RELOC_IA64_LTOFF_TP22 + BFD_RELOC_IA64_LTOFF_TPREL22 ENUMX - BFD_RELOC_IA64_LTOFF22X + BFD_RELOC_IA64_DTPMOD64MSB ENUMX - BFD_RELOC_IA64_LDXMOV + BFD_RELOC_IA64_DTPMOD64LSB +ENUMX + BFD_RELOC_IA64_LTOFF_DTPMOD22 +ENUMX + BFD_RELOC_IA64_DTPREL14 +ENUMX + BFD_RELOC_IA64_DTPREL22 +ENUMX + BFD_RELOC_IA64_DTPREL64I +ENUMX + BFD_RELOC_IA64_DTPREL32MSB +ENUMX + BFD_RELOC_IA64_DTPREL32LSB +ENUMX + BFD_RELOC_IA64_DTPREL64MSB +ENUMX + BFD_RELOC_IA64_DTPREL64LSB +ENUMX + BFD_RELOC_IA64_LTOFF_DTPREL22 ENUMDOC Intel IA64 Relocations. diff -uprN binutils-2.12.90.0.7/bfd/rs6000-core.c binutils-2.12.90.0.9/bfd/rs6000-core.c --- binutils-2.12.90.0.7/bfd/rs6000-core.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/bfd/rs6000-core.c Thu May 23 15:10:10 2002 @@ -182,7 +182,7 @@ typedef union { /* Return the c_impl field from struct core_dumpx C. */ -#ifdef AIX_CORE_DUMPX_CORE +#if defined (HAVE_ST_C_IMPL) || defined (AIX_5_CORE) # define CNEW_IMPL(c) (c).c_impl #else # define CNEW_IMPL(c) 0 diff -uprN binutils-2.12.90.0.7/bfd/section.c binutils-2.12.90.0.9/bfd/section.c --- binutils-2.12.90.0.7/bfd/section.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/bfd/section.c Thu May 23 15:10:10 2002 @@ -230,12 +230,6 @@ CODE_FRAGMENT . standard data. *} .#define SEC_CONSTRUCTOR 0x100 . -. {* The section is a constructor, and should be placed at the -. end of the text, data, or bss section(?). *} -.#define SEC_CONSTRUCTOR_TEXT 0x1100 -.#define SEC_CONSTRUCTOR_DATA 0x2100 -.#define SEC_CONSTRUCTOR_BSS 0x3100 -. . {* The section has contents - a data section could be . <> | <>; a debug section could be . <> *} @@ -256,6 +250,9 @@ CODE_FRAGMENT . sections. *} .#define SEC_COFF_SHARED_LIBRARY 0x800 . +. {* The section contains thread local data. *} +.#define SEC_THREAD_LOCAL 0x1000 +. . {* The section has GOT references. This flag is only for the . linker, and is currently only used by the elf32-hppa back end. . It will be set if global offset table references were detected diff -uprN binutils-2.12.90.0.7/bfd/som.c binutils-2.12.90.0.9/bfd/som.c --- binutils-2.12.90.0.7/bfd/som.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/som.c Thu May 23 15:10:10 2002 @@ -6335,6 +6335,7 @@ som_bfd_link_split_section (abfd, sec) #define som_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define som_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define som_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define som_bfd_link_just_syms _bfd_generic_link_just_syms #define som_bfd_final_link _bfd_generic_final_link #define som_bfd_gc_sections bfd_generic_gc_sections diff -uprN binutils-2.12.90.0.7/bfd/srec.c binutils-2.12.90.0.9/bfd/srec.c --- binutils-2.12.90.0.7/bfd/srec.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/srec.c Thu May 23 15:10:10 2002 @@ -1273,6 +1273,7 @@ srec_print_symbol (abfd, afile, symbol, #define srec_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define srec_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define srec_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define srec_bfd_link_just_syms _bfd_generic_link_just_syms #define srec_bfd_final_link _bfd_generic_final_link #define srec_bfd_link_split_section _bfd_generic_link_split_section diff -uprN binutils-2.12.90.0.7/bfd/syms.c binutils-2.12.90.0.9/bfd/syms.c --- binutils-2.12.90.0.7/bfd/syms.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/bfd/syms.c Thu May 23 15:10:10 2002 @@ -285,6 +285,9 @@ CODE_FRAGMENT . as well. *} .#define BSF_DEBUGGING_RELOC 0x20000 . +. {* This symbol is thread local. Used in ELF. *} +.#define BSF_THREAD_LOCAL 0x40000 +. . flagword flags; . . {* A pointer to the section to which this symbol is @@ -1297,7 +1300,8 @@ _bfd_stab_section_find_nearest_line (abf *pfound = true; - if (IS_ABSOLUTE_PATH(file_name) || directory_name == NULL) + if (file_name == NULL || IS_ABSOLUTE_PATH (file_name) + || directory_name == NULL) *pfilename = file_name; else { diff -uprN binutils-2.12.90.0.7/bfd/targets.c binutils-2.12.90.0.9/bfd/targets.c --- binutils-2.12.90.0.7/bfd/targets.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/targets.c Thu May 23 15:10:10 2002 @@ -396,6 +396,7 @@ the tokens. .CONCAT2 (NAME,_bfd_link_hash_table_create), \ .CONCAT2 (NAME,_bfd_link_hash_table_free), \ .CONCAT2 (NAME,_bfd_link_add_symbols), \ +.CONCAT2 (NAME,_bfd_link_just_syms), \ .CONCAT2 (NAME,_bfd_final_link), \ .CONCAT2 (NAME,_bfd_link_split_section), \ .CONCAT2 (NAME,_bfd_gc_sections), \ @@ -418,6 +419,9 @@ the tokens. . {* Add symbols from this object file into the hash table. *} . boolean (*_bfd_link_add_symbols) PARAMS ((bfd *, struct bfd_link_info *)); . +. {* Indicate that we are only retrieving symbol values from this section. *} +. void (*_bfd_link_just_syms) PARAMS ((asection *, struct bfd_link_info *)); +. . {* Do a link based on the link_order structures attached to each . section of the BFD. *} . boolean (*_bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *)); diff -uprN binutils-2.12.90.0.7/bfd/tekhex.c binutils-2.12.90.0.9/bfd/tekhex.c --- binutils-2.12.90.0.7/bfd/tekhex.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/tekhex.c Thu May 23 15:10:10 2002 @@ -1008,6 +1008,7 @@ tekhex_print_symbol (abfd, filep, symbol #define tekhex_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define tekhex_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define tekhex_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define tekhex_bfd_link_just_syms _bfd_generic_link_just_syms #define tekhex_bfd_final_link _bfd_generic_final_link #define tekhex_bfd_link_split_section _bfd_generic_link_split_section diff -uprN binutils-2.12.90.0.7/bfd/versados.c binutils-2.12.90.0.9/bfd/versados.c --- binutils-2.12.90.0.7/bfd/versados.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/versados.c Thu May 23 15:10:10 2002 @@ -870,6 +870,7 @@ versados_canonicalize_reloc (abfd, secti #define versados_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define versados_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define versados_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define versados_bfd_link_just_syms _bfd_generic_link_just_syms #define versados_bfd_final_link _bfd_generic_final_link #define versados_bfd_link_split_section _bfd_generic_link_split_section diff -uprN binutils-2.12.90.0.7/bfd/version.h binutils-2.12.90.0.9/bfd/version.h --- binutils-2.12.90.0.7/bfd/version.h Mon Apr 22 19:56:51 2002 +++ binutils-2.12.90.0.9/bfd/version.h Sun May 26 09:57:12 2002 @@ -1 +1 @@ -#define BFD_VERSION_DATE 20020423 +#define BFD_VERSION_DATE 20020526 diff -uprN binutils-2.12.90.0.7/bfd/vms.c binutils-2.12.90.0.9/bfd/vms.c --- binutils-2.12.90.0.7/bfd/vms.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/vms.c Thu May 23 15:10:10 2002 @@ -132,6 +132,7 @@ static boolean vms_bfd_merge_private_bfd static boolean vms_bfd_set_private_flags PARAMS ((bfd *abfd, flagword flags)); #define vms_make_empty_symbol _bfd_generic_make_empty_symbol +#define vms_bfd_link_just_syms _bfd_generic_link_just_syms /*===========================================================================*/ diff -uprN binutils-2.12.90.0.7/bfd/xcofflink.c binutils-2.12.90.0.9/bfd/xcofflink.c --- binutils-2.12.90.0.7/bfd/xcofflink.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/bfd/xcofflink.c Thu May 23 15:10:10 2002 @@ -1778,12 +1778,19 @@ xcoff_link_add_symbols (abfd, info) if (info->hash->creator == abfd->xvec) { if (! bfd_is_und_section (section)) - *sym_hash = xcoff_link_hash_lookup (xcoff_hash_table (info), - name, true, copy, false); + { + *sym_hash = xcoff_link_hash_lookup (xcoff_hash_table (info), + name, true, copy, false); + } else - *sym_hash = ((struct xcoff_link_hash_entry *) - bfd_wrapped_link_hash_lookup (abfd, info, name, - true, copy, false)); + { + /* Make a copy of the symbol name to prevent problems with + merging symbols. */ + *sym_hash = ((struct xcoff_link_hash_entry *) + bfd_wrapped_link_hash_lookup (abfd, info, name, + true, true, + false)); + } if (*sym_hash == NULL) goto error_return; if (((*sym_hash)->root.type == bfd_link_hash_defined @@ -2121,7 +2128,7 @@ xcoff_link_add_dynamic_symbols (abfd, in /* Remove the sections from this object, so that they do not get included in the link. */ - abfd->sections = NULL; + bfd_section_list_clear (abfd); bfd_xcoff_swap_ldhdr_in (abfd, contents, &ldhdr); diff -uprN binutils-2.12.90.0.7/binutils/ChangeLog binutils-2.12.90.0.9/binutils/ChangeLog --- binutils-2.12.90.0.7/binutils/ChangeLog Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/binutils/ChangeLog Sun May 26 09:57:12 2002 @@ -1,3 +1,167 @@ +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. diff -uprN binutils-2.12.90.0.7/binutils/MAINTAINERS binutils-2.12.90.0.9/binutils/MAINTAINERS --- binutils-2.12.90.0.7/binutils/MAINTAINERS Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/binutils/MAINTAINERS Sun May 26 09:57:12 2002 @@ -54,23 +54,23 @@ responsibility among the other maintaine ARM Nick Clifton ARM Richard Earnshaw AVR Denis Chertykov + AVR Marek Michalkiewicz CRIS Hans-Peter Nilsson + D10V Tom Rix DWARF2 Jason Merrill HPPA elf32 Alan Modra IA64 Jim Wilson - x86_64 Jan Hubicka - x86_64 Andreas Jaeger i860 Jason Eckhardt ix86 Alan Modra ix86 COFF,PE DJ Delorie ix86 H.J.Lu ix86 INTEL MODE Diego Novillo - M68HC11 M68HC12 Stephane Carrez - MN10300 Eric Christopher - MN10300 Alexandre Oliva - MIPS Eric Christopher + M68HC11 M68HC12 Stephane Carrez M88k Ben Elliston + MIPS Eric Christopher MMIX Hans-Peter Nilsson + MN10300 Eric Christopher + MN10300 Alexandre Oliva PPC Geoff Keating PPC XCOFF Tom Rix s390, s390x Martin Schwidefsky @@ -79,7 +79,11 @@ responsibility among the other maintaine SH Alexandre Oliva SPARC Jakub Jelinek TIC54X Timothy Wall - z8k Christian Groessler + VAX Jason R Thorpe + x86_64 Jan Hubicka + x86_64 Andreas Jaeger + z8k Christian Groessler + --------- CGEN Maintainers ------------- diff -uprN binutils-2.12.90.0.7/binutils/Makefile.am binutils-2.12.90.0.9/binutils/Makefile.am --- binutils-2.12.90.0.7/binutils/Makefile.am Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/binutils/Makefile.am Thu May 23 15:10:10 2002 @@ -348,18 +348,18 @@ install-exec-local: install-binPROGRAMS @list='$(noinst_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done - $(mkinstalldirs) $(tooldir)/bin + $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin for i in $(TOOL_PROGS); do \ if [ -f $$i$(EXEEXT) ]; then \ j=`echo $$i | sed -e 's/-new//'`; \ k=`echo $$j | sed '$(transform)'`; \ - if [ "$(bindir)/$$k$(EXEEXT)" != "$(tooldir)/bin/$$j$(EXEEXT)" ]; then \ - rm -f $(tooldir)/bin/$$j$(EXEEXT); \ - ln $(bindir)/$$k$(EXEEXT) $(tooldir)/bin/$$j$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$i$(EXEEXT) $(tooldir)/bin/$$j$(EXEEXT); \ + if [ "$(DESTDIR)$(bindir)/$$k$(EXEEXT)" != "$(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT)" ]; 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); \ fi; \ else true; \ fi; \ diff -uprN binutils-2.12.90.0.7/binutils/Makefile.in binutils-2.12.90.0.9/binutils/Makefile.in --- binutils-2.12.90.0.7/binutils/Makefile.in Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/binutils/Makefile.in Thu May 23 15:10:10 2002 @@ -435,7 +435,7 @@ configure.in deflex.c defparse.c nlmhead DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = tar +TAR = gtar GZIP_ENV = --best SOURCES = $(nlmconv_SOURCES) $(srconv_SOURCES) $(sysdump_SOURCES) $(coffdump_SOURCES) $(dlltool_SOURCES) $(windres_SOURCES) $(dllwrap_SOURCES) $(size_SOURCES) $(objdump_SOURCES) $(ar_SOURCES) $(strings_SOURCES) $(ranlib_SOURCES) $(objcopy_SOURCES) $(addr2line_SOURCES) $(readelf_SOURCES) $(nm_new_SOURCES) $(strip_new_SOURCES) $(cxxfilt_SOURCES) OBJECTS = $(nlmconv_OBJECTS) $(srconv_OBJECTS) $(sysdump_OBJECTS) $(coffdump_OBJECTS) $(dlltool_OBJECTS) $(windres_OBJECTS) $(dllwrap_OBJECTS) $(size_OBJECTS) $(objdump_OBJECTS) $(ar_OBJECTS) $(strings_OBJECTS) $(ranlib_OBJECTS) $(objcopy_OBJECTS) $(addr2line_OBJECTS) $(readelf_OBJECTS) $(nm_new_OBJECTS) $(strip_new_OBJECTS) $(cxxfilt_OBJECTS) @@ -1074,18 +1074,18 @@ install-exec-local: install-binPROGRAMS @list='$(noinst_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done - $(mkinstalldirs) $(tooldir)/bin + $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin for i in $(TOOL_PROGS); do \ if [ -f $$i$(EXEEXT) ]; then \ j=`echo $$i | sed -e 's/-new//'`; \ k=`echo $$j | sed '$(transform)'`; \ - if [ "$(bindir)/$$k$(EXEEXT)" != "$(tooldir)/bin/$$j$(EXEEXT)" ]; then \ - rm -f $(tooldir)/bin/$$j$(EXEEXT); \ - ln $(bindir)/$$k$(EXEEXT) $(tooldir)/bin/$$j$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$i$(EXEEXT) $(tooldir)/bin/$$j$(EXEEXT); \ + if [ "$(DESTDIR)$(bindir)/$$k$(EXEEXT)" != "$(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT)" ]; 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); \ fi; \ else true; \ fi; \ diff -uprN binutils-2.12.90.0.7/binutils/addr2line.c binutils-2.12.90.0.9/binutils/addr2line.c --- binutils-2.12.90.0.7/binutils/addr2line.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/binutils/addr2line.c Thu May 23 15:10:10 2002 @@ -20,10 +20,10 @@ /* Derived from objdump.c and nm.c by Ulrich.Lauther@mchp.siemens.de - Usage: + Usage: addr2line [options] addr addr ... or - addr2line [options] + addr2line [options] both forms write results to stdout, the second form reads addresses to be converted from stdin. */ diff -uprN binutils-2.12.90.0.7/binutils/ar.c binutils-2.12.90.0.9/binutils/ar.c --- binutils-2.12.90.0.7/binutils/ar.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/binutils/ar.c Thu May 23 15:10:10 2002 @@ -222,7 +222,7 @@ map_over_members (arch, function, files, { ++match_count; if (counted_name_mode - && match_count != counted_name_counter) + && match_count != counted_name_counter) { /* Counting, and didn't match on count; go on to the next one. */ @@ -248,7 +248,7 @@ usage (help) FILE *s; s = help ? stdout : stderr; - + if (! is_ranlib) { /* xgettext:c-format */ @@ -283,7 +283,7 @@ usage (help) } else { - /* xgettext:c-format */ + /* xgettext:c-format */ fprintf (s, _("Usage: %s [options] archive\n"), program_name); fprintf (s, _(" Generate an index to speed access to archives\n")); fprintf (s, _(" The options are:\n\ @@ -405,14 +405,14 @@ main (argc, argv) temp = strrchr (program_name, '/'); #ifdef HAVE_DOS_BASED_FILE_SYSTEM - { - /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */ - char *bslash = strrchr (program_name, '\\'); - if (temp == NULL || (bslash != NULL && bslash > temp)) - temp = bslash; - if (temp == NULL && program_name[0] != '\0' && program_name[1] == ':') - temp = program_name + 1; - } + { + /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */ + char *bslash = strrchr (program_name, '\\'); + if (temp == NULL || (bslash != NULL && bslash > temp)) + temp = bslash; + if (temp == NULL && program_name[0] != '\0' && program_name[1] == ':') + temp = program_name + 1; + } #endif if (temp == NULL) temp = program_name; @@ -452,7 +452,7 @@ main (argc, argv) break; argv += (i - 1); argc -= (i - 1); - + if (is_ranlib) { boolean touch = false; @@ -626,12 +626,12 @@ main (argc, argv) if (postype != pos_default) posname = argv[arg_index++]; - if (counted_name_mode) + if (counted_name_mode) { - if (operation != extract && operation != delete) + if (operation != extract && operation != delete) fatal (_("`N' is only meaningful with the `x' and `d' options.")); counted_name_counter = atoi (argv[arg_index++]); - if (counted_name_counter <= 0) + if (counted_name_counter <= 0) fatal (_("Value for `N' must be positive.")); } @@ -667,7 +667,7 @@ main (argc, argv) if (operation == quick_append) { /* Note that quick appending to a non-existent archive creates it, - even if there are no files to append. */ + even if there are no files to append. */ do_quick_append (inarch_filename, files); xexit (0); } @@ -882,7 +882,7 @@ extract_file (abfd) long ncopied = 0; long size; struct stat buf; - + if (bfd_stat_arch_elt (abfd, &buf) != 0) /* xgettext:c-format */ fatal (_("internal stat error on %s"), bfd_get_filename (abfd)); @@ -891,7 +891,7 @@ extract_file (abfd) if (size < 0) /* xgettext:c-format */ fatal (_("stat returns negative size for %s"), bfd_get_filename (abfd)); - + if (verbose) printf ("x - %s\n", bfd_get_filename (abfd)); @@ -1203,11 +1203,11 @@ delete_members (arch, files_to_delete) while (*current_ptr_ptr) { if (FILENAME_CMP (normalize (*files_to_delete, arch), - (*current_ptr_ptr)->filename) == 0) + (*current_ptr_ptr)->filename) == 0) { ++match_count; if (counted_name_mode - && match_count != counted_name_counter) + && match_count != counted_name_counter) { /* Counting, and didn't match on count; go on to the next one. */ @@ -1302,7 +1302,6 @@ replace_members (arch, files_to_move, qu bfd **after_bfd; /* New entries go after this one */ bfd *current; bfd **current_ptr; - bfd *temp; while (files_to_move && *files_to_move) { @@ -1331,7 +1330,8 @@ replace_members (arch, files_to_move, qu } if (bfd_stat_arch_elt (current, &asbuf) != 0) /* xgettext:c-format */ - fatal (_("internal stat error on %s"), current->filename); + fatal (_("internal stat error on %s"), + current->filename); if (fsbuf.st_mtime <= asbuf.st_mtime) goto next_file; @@ -1339,7 +1339,7 @@ replace_members (arch, files_to_move, qu after_bfd = get_pos_bfd (&arch->next, pos_after, current->filename); - if (ar_emul_replace (after_bfd, *files_to_move, + if (ar_emul_replace (after_bfd, *files_to_move, verbose)) { /* Snip out this entry from the chain. */ diff -uprN binutils-2.12.90.0.7/binutils/arlex.l binutils-2.12.90.0.9/binutils/arlex.l --- binutils-2.12.90.0.7/binutils/arlex.l Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/binutils/arlex.l Sun May 26 09:57:12 2002 @@ -1,7 +1,7 @@ %{ /* arlex.l - Strange script language lexer */ -/* Copyright 1992, 1997, 2000 Free Software Foundation, Inc. +/* Copyright 1992, 1997, 2000, 2002 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suit */ #define DONTDECLARE_MALLOC -#include +#include "ansidecl.h" #include "libiberty.h" #include "arparse.h" diff -uprN binutils-2.12.90.0.7/binutils/arsup.c binutils-2.12.90.0.9/binutils/arsup.c --- binutils-2.12.90.0.7/binutils/arsup.c Fri Nov 16 14:05:52 2001 +++ binutils-2.12.90.0.9/binutils/arsup.c Thu May 23 15:10:10 2002 @@ -74,7 +74,7 @@ map_over_list (arch, function, list) boolean found = false; bfd *prev = arch; - for (head = arch->next; head; head = head->next) + for (head = arch->next; head; head = head->next) { if (head->filename != NULL && FILENAME_CMP (ptr->name, head->filename) == 0) @@ -121,7 +121,7 @@ ar_directory (ar_name, list, output) output = 0; } } - else + else outfile = stdout; map_over_list (arch, ar_directory_doer, list); @@ -136,23 +136,23 @@ void DEFUN_VOID(prompt) { extern int interactive; - if (interactive) + if (interactive) { printf("AR >"); - fflush(stdout); + fflush(stdout); } } void maybequit () { - if (! interactive) + if (! interactive) xexit (9); } bfd *obfd; -char *real_name ; +char *real_name ; void DEFUN(ar_open,(name, t), char *name AND @@ -250,7 +250,7 @@ DEFUN(ar_addmod, (list), fprintf(stderr, _("%s: no open output archive\n"), program_name); maybequit(); } - else + else { while (list) { bfd *abfd = bfd_openr(list->name, NULL); @@ -273,7 +273,7 @@ DEFUN(ar_addmod, (list), void DEFUN_VOID(ar_clear) { -if (obfd) +if (obfd) obfd->archive_head = 0; } @@ -285,7 +285,7 @@ DEFUN(ar_delete, (list), fprintf(stderr, _("%s: no open output archive\n"), program_name); maybequit(); } - else + else { while (list) { /* Find this name in the archive */ @@ -324,7 +324,7 @@ DEFUN_VOID(ar_save) else { char *ofilename = xstrdup (bfd_get_filename (obfd)); bfd_close(obfd); - + rename (ofilename, real_name); obfd = 0; free(ofilename); @@ -341,20 +341,20 @@ DEFUN(ar_replace, (list), fprintf(stderr, _("%s: no open output archive\n"), program_name); maybequit(); } - else + else { while (list) { /* Find this name in the archive */ bfd *member = obfd->archive_head; bfd **prev = &(obfd->archive_head); int found = 0; - while (member) + while (member) { - if (FILENAME_CMP(member->filename, list->name) == 0) + if (FILENAME_CMP(member->filename, list->name) == 0) { /* Found the one to replace */ bfd *abfd = bfd_openr(list->name, 0); - if (!abfd) + if (!abfd) { fprintf(stderr, _("%s: can't open file %s\n"), program_name, list->name); maybequit(); @@ -374,12 +374,12 @@ DEFUN(ar_replace, (list), bfd *abfd = bfd_openr(list->name, 0); fprintf(stderr,_("%s: can't find module file %s\n"), program_name, list->name); - if (!abfd) + if (!abfd) { fprintf(stderr, _("%s: can't open file %s\n"), program_name, list->name); maybequit(); } - else + else { *prev = abfd; } @@ -394,7 +394,7 @@ DEFUN(ar_replace, (list), void DEFUN_VOID(ar_list) { - if (!obfd) + if (!obfd) { fprintf(stderr, _("%s: no open output archive\n"), program_name); maybequit(); @@ -406,7 +406,7 @@ DEFUN_VOID(ar_list) printf(_("Current open archive is %s\n"), bfd_get_filename (obfd)); for (abfd = obfd->archive_head; abfd != (bfd *)NULL; - abfd = abfd->next) + abfd = abfd->next) { ar_directory_doer (abfd, (bfd *) NULL); } @@ -414,7 +414,7 @@ DEFUN_VOID(ar_list) } -void +void DEFUN_VOID(ar_end) { if (obfd) @@ -427,21 +427,21 @@ void DEFUN(ar_extract,(list), struct list *list) { - if (!obfd) + if (!obfd) { fprintf(stderr, _("%s: no open archive\n"), program_name); maybequit(); } - else + else { while (list) { /* Find this name in the archive */ bfd *member = obfd->archive_head; int found = 0; - while (member && !found) + while (member && !found) { - if (FILENAME_CMP(member->filename, list->name) == 0) + if (FILENAME_CMP(member->filename, list->name) == 0) { extract_file(member); found = 1; diff -uprN binutils-2.12.90.0.7/binutils/arsup.h binutils-2.12.90.0.9/binutils/arsup.h --- binutils-2.12.90.0.7/binutils/arsup.h Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/binutils/arsup.h Thu May 23 15:10:10 2002 @@ -18,7 +18,7 @@ along with this program; if not, write t Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ struct list { - char *name; + char *name; struct list *next; }; diff -uprN binutils-2.12.90.0.7/binutils/binemul.c binutils-2.12.90.0.9/binutils/binemul.c --- binutils-2.12.90.0.7/binutils/binemul.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/binutils/binemul.c Thu May 23 15:10:10 2002 @@ -108,7 +108,7 @@ ar_emul_create (abfd_out, archive_file_n char *file_name; { if (bin_dummy_emulation.ar_create) - return bin_dummy_emulation.ar_create (abfd_out, archive_file_name, + return bin_dummy_emulation.ar_create (abfd_out, archive_file_name, file_name); return false; @@ -159,7 +159,7 @@ ar_emul_parse_arg (arg) boolean ar_emul_default_parse_arg (arg) - char *arg; + char *arg ATTRIBUTE_UNUSED; { return false; } diff -uprN binutils-2.12.90.0.7/binutils/binemul.h binutils-2.12.90.0.9/binutils/binemul.h --- binutils-2.12.90.0.7/binutils/binemul.h Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/binutils/binemul.h Thu May 23 15:10:10 2002 @@ -50,7 +50,7 @@ extern boolean ar_emul_default_parse_arg #define AR_EMUL_REPLACE_PRINT_VERBOSE(verbose, file_name) \ do { if (verbose) printf ("r - %s\n", file_name); } while (0) -typedef struct bin_emulation_xfer_struct +typedef struct bin_emulation_xfer_struct { /* Print out the extra options. */ void (* ar_usage) PARAMS ((FILE *fp)); @@ -61,4 +61,4 @@ typedef struct bin_emulation_xfer_struct } bin_emulation_xfer_type; -#endif +#endif diff -uprN binutils-2.12.90.0.7/binutils/bucomm.c binutils-2.12.90.0.9/binutils/bucomm.c --- binutils-2.12.90.0.7/binutils/bucomm.c Mon Nov 26 14:25:27 2001 +++ binutils-2.12.90.0.9/binutils/bucomm.c Thu May 23 15:10:10 2002 @@ -257,7 +257,7 @@ parse_vma (s, arg) const char *end; ret = bfd_scan_vma (s, &end, 0); - + if (*end != '\0') fatal (_("%s: bad number: %s"), arg, s); diff -uprN binutils-2.12.90.0.7/binutils/coffdump.c binutils-2.12.90.0.9/binutils/coffdump.c --- binutils-2.12.90.0.7/binutils/coffdump.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/binutils/coffdump.c Sun May 26 09:57:12 2002 @@ -23,8 +23,8 @@ This module reads a type tree generated by coffgrok and prints it out so we can test the grokker. */ -#include -#include +#include "bfd.h" +#include "libiberty.h" #include "coffgrok.h" #include "bucomm.h" @@ -106,7 +106,7 @@ dump_coff_lines (p) tab (1); printf (_("#lines %d "),p->nlines); - for (i = 0; i < p->nlines; i++) + for (i = 0; i < p->nlines; i++) { printf ("(%d 0x%x)", p->lines[i], p->addresses[i]); @@ -133,7 +133,7 @@ dump_coff_type (p) switch (p->type) { case coff_secdef_type: - printf ("section definition at %x size %x\n", + printf ("section definition at %x size %x\n", p->u.asecdef.address, p->u.asecdef.size); nl (); @@ -427,14 +427,14 @@ dump_coff_section(ptr) int i; tab (1); - printf ("section %s %d %d address %x size %x number %d nrelocs %d", + printf ("section %s %d %d address %x size %x number %d nrelocs %d", ptr->name, ptr->code, ptr->data, ptr->address,ptr->size, ptr->number, ptr->nrelocs); nl (); - for (i = 0; i < ptr->nrelocs; i++) + for (i = 0; i < ptr->nrelocs; i++) { - tab (0); + tab (0); printf ("(%x %s %x)", ptr->relocs[i].offset, ptr->relocs[i].symbol->name, diff -uprN binutils-2.12.90.0.7/binutils/coffgrok.c binutils-2.12.90.0.9/binutils/coffgrok.c --- binutils-2.12.90.0.7/binutils/coffgrok.c Wed Aug 22 08:52:10 2001 +++ binutils-2.12.90.0.9/binutils/coffgrok.c Sun May 26 09:57:12 2002 @@ -1,5 +1,6 @@ /* coffgrok.c - Copyright 1994, 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. + Copyright 1994, 1995, 1997, 1998, 2000, 2001, 2002 + Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -25,8 +26,8 @@ Foundation, Inc., 59 Temple Place - Suit */ -#include -#include +#include "bfd.h" +#include "libiberty.h" #include "bucomm.h" #include "coff/internal.h" @@ -145,7 +146,7 @@ do_sections_p1 (head) if (relsize < 0) bfd_fatal (bfd_get_filename (abfd)); if (relsize == 0) - continue; + continue; relpp = (arelent **) xmalloc (relsize); relcount = bfd_canonicalize_reloc (abfd, section, relpp, syms); if (relcount < 0) @@ -277,7 +278,7 @@ do_lines (i, name) /* These lines are for this function - so count them and stick them on */ int c = 0; /* Find the linenumber of the top of the function, since coff linenumbers - are relative to the start of the function. */ + are relative to the start of the function. */ int start_line = rawsyms[i + 3].u.auxent.x_sym.x_misc.x_lnsz.x_lnno; l++; @@ -605,7 +606,7 @@ doit () int i; int infile = 0; struct coff_ofile *head = - (struct coff_ofile *) xmalloc (sizeof (struct coff_ofile)); + (struct coff_ofile *) xmalloc (sizeof (struct coff_ofile)); ofile = head; head->source_head = 0; head->source_tail = 0; diff -uprN binutils-2.12.90.0.7/binutils/coffgrok.h binutils-2.12.90.0.9/binutils/coffgrok.h --- binutils-2.12.90.0.7/binutils/coffgrok.h Wed Aug 22 08:52:10 2001 +++ binutils-2.12.90.0.9/binutils/coffgrok.h Thu May 23 15:10:10 2002 @@ -1,4 +1,4 @@ -/* coffgrok.h +/* coffgrok.h Copyright 2001 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -43,7 +43,7 @@ Foundation, Inc., 59 Temple Place - Suit int addend; }; - struct coff_section + struct coff_section { char *name; int code; @@ -82,7 +82,7 @@ struct coff_sfile /* Vector which maps where in each output section the input file has it's data */ - struct coff_isection *section; + struct coff_isection *section; }; @@ -97,7 +97,7 @@ struct coff_sfile } type; union { - struct + struct { int address; int size; @@ -147,7 +147,7 @@ struct coff_sfile }; - struct coff_line + struct coff_line { int nlines; int *lines; @@ -188,7 +188,7 @@ struct coff_sfile coff_vis_tag, coff_vis_member_of_struct, coff_vis_member_of_enum, - coff_vis_autoparam, + coff_vis_autoparam, coff_vis_regparam, } type; }; diff -uprN binutils-2.12.90.0.7/binutils/configure binutils-2.12.90.0.9/binutils/configure --- binutils-2.12.90.0.7/binutils/configure Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/binutils/configure Sun May 26 09:57:12 2002 @@ -5583,12 +5583,12 @@ do DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_EPOC -DDLLTOOL_ARM" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' ;; - arm-*pe* | arm-*-wince) + arm-pe* | arm-*-wince) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' ;; - thumb-*pe*) + thumb-pe*) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' @@ -5596,7 +5596,7 @@ do arm*-* | xscale-* | strongarm-* | d10v-*) OBJDUMP_DEFS="-DDISASSEMBLER_NEEDS_RELOCS" ;; - i[3-6]86-*pe* | i[3-6]86-*-cygwin* | i[3-6]86-*-mingw32*) + i[3-6]86-pe* | i[3-6]86-*-cygwin* | i[3-6]86-*-mingw32** | i[3-6]86-*-netbsdpe*) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' @@ -5606,22 +5606,22 @@ do BUILD_DLLTOOL='$(DLLTOOL_PROG)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" ;; - powerpc*-*-*pe* | powerpc*-*-cygwin*) + powerpc*-*-pe* | powerpc*-*-cygwin*) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' ;; - sh*-*-*pe) + sh*-*-pe) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_SH" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' ;; - mips*-*-*pe) + mips*-*-pe) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MIPS" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' ;; - mcore-*pe) + mcore-pe) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' diff -uprN binutils-2.12.90.0.7/binutils/configure.in binutils-2.12.90.0.9/binutils/configure.in --- binutils-2.12.90.0.7/binutils/configure.in Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/binutils/configure.in Sun May 26 09:57:12 2002 @@ -246,12 +246,12 @@ changequote([,])dnl DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_EPOC -DDLLTOOL_ARM" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' ;; - arm-*pe* | arm-*-wince) + arm-pe* | arm-*-wince) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' ;; - thumb-*pe*) + thumb-pe*) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' @@ -260,7 +260,7 @@ changequote([,])dnl OBJDUMP_DEFS="-DDISASSEMBLER_NEEDS_RELOCS" ;; changequote(,)dnl - i[3-6]86-*pe* | i[3-6]86-*-cygwin* | i[3-6]86-*-mingw32*) + i[3-6]86-pe* | i[3-6]86-*-cygwin* | i[3-6]86-*-mingw32** | i[3-6]86-*-netbsdpe*) changequote([,])dnl BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" @@ -271,22 +271,22 @@ changequote([,])dnl BUILD_DLLTOOL='$(DLLTOOL_PROG)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" ;; - powerpc*-*-*pe* | powerpc*-*-cygwin*) + powerpc*-*-pe* | powerpc*-*-cygwin*) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' ;; - sh*-*-*pe) + sh*-*-pe) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_SH" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' ;; - mips*-*-*pe) + mips*-*-pe) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MIPS" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' ;; - mcore-*pe) + mcore-pe) BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE" BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' diff -uprN binutils-2.12.90.0.7/binutils/debug.c binutils-2.12.90.0.9/binutils/debug.c --- binutils-2.12.90.0.7/binutils/debug.c Thu Mar 15 14:51:46 2001 +++ binutils-2.12.90.0.9/binutils/debug.c Thu May 23 15:10:10 2002 @@ -1211,7 +1211,7 @@ debug_record_variable (handle, name, typ n->u.variable = v; - return true; + return true; } /* Make a type with a given kind and size. */ @@ -1786,7 +1786,7 @@ debug_make_baseclass (handle, type, bitp bfd_vma bitpos; boolean virtual; enum debug_visibility visibility; -{ +{ struct debug_baseclass *b; b = (struct debug_baseclass *) xmalloc (sizeof *b); @@ -2123,7 +2123,7 @@ debug_find_named_type (handle, name) } } - return DEBUG_TYPE_NULL; + return DEBUG_TYPE_NULL; } /* Find a tagged type. */ @@ -2304,7 +2304,7 @@ debug_get_return_type (handle, type) case DEBUG_KIND_METHOD: return type->u.kmethod->return_type; } - /*NOTREACHED*/ + /*NOTREACHED*/ } /* Get the parameter types of a function or method type (except that @@ -3314,7 +3314,7 @@ debug_type_samep (info, t1, t2) case DEBUG_KIND_POINTER: ret = debug_type_samep (info, t1->u.kpointer, t2->u.kpointer); break; - + case DEBUG_KIND_FUNCTION: if (t1->u.kfunction->varargs != t2->u.kfunction->varargs || ! debug_type_samep (info, t1->u.kfunction->return_type, diff -uprN binutils-2.12.90.0.7/binutils/debug.h binutils-2.12.90.0.9/binutils/debug.h --- binutils-2.12.90.0.7/binutils/debug.h Thu Mar 15 14:51:46 2001 +++ binutils-2.12.90.0.9/binutils/debug.h Thu May 23 15:10:10 2002 @@ -310,7 +310,7 @@ struct debug_write_fns visibility. The type must be popped off the type stack. */ boolean (*class_static_member) PARAMS ((PTR, const char *, const char *, enum debug_visibility)); - + /* Add a baseclass to the class currently being built. The type of the baseclass must be popped off the type stack. The arguments are the bit position, whether the class is virtual, and the diff -uprN binutils-2.12.90.0.7/binutils/dlltool.c binutils-2.12.90.0.9/binutils/dlltool.c --- binutils-2.12.90.0.7/binutils/dlltool.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/binutils/dlltool.c Thu May 23 15:10:10 2002 @@ -115,7 +115,7 @@ asm (".section .drectve"); asm (".ascii \"-export:cdef\""); asm (".ascii \"-export:ddef\""); - + void cdef (char * s) { printf ("hello from the dll %s\n", s); @@ -162,15 +162,15 @@ # Run this tool over the DLL's .def file and generate an exports # file (thedll.o) and an imports file (thedll.a). # (You may have to use -S to tell dlltool where to find the assembler). - + dlltool --def thedll.def --output-exp thedll.o --output-lib thedll.a # Build the dll with the library and the export table - + ld -o thedll.dll thedll.o thedll.in # Link the executable with the import library - + gcc -o themain.exe themain.o thedll.a This example can be extended if relocations are needed in the DLL: @@ -180,21 +180,21 @@ gcc -c file1.c file2.c themain.c # Run this tool over the DLL's .def file and generate an imports file. - + dlltool --def thedll.def --output-lib thedll.lib # Link the executable with the import library and generate a base file # at the same time - + gcc -o themain.exe themain.o thedll.lib -Wl,--base-file -Wl,themain.base # Run this tool over the DLL's .def file and generate an exports file # which includes the relocations from the base file. - + dlltool --def thedll.def --base-file themain.base --output-exp thedll.exp # Build the dll with file1.o, file2.o and the export table - + ld -o thedll.dll thedll.exp file1.o file2.o */ @@ -277,7 +277,7 @@ static char *deduce_name PARAMS ((const static void mcore_elf_cache_filename (char *); static void mcore_elf_gen_out_file (void); #endif - + #ifdef HAVE_SYS_WAIT_H #include #else /* ! HAVE_SYS_WAIT_H */ @@ -372,7 +372,7 @@ static boolean do_default_excludes=true; /* Default symbols to exclude when exporting all the symbols. */ static const char *default_excludes = "DllMain@12,DllEntryPoint@0,impure_ptr"; -/* True if we should add __imp_ to import libraries for backward +/* True if we should add __imp_ to import libraries for backward compatibility to old Cygwin releases. */ static boolean create_compat_implib; @@ -437,7 +437,7 @@ static char * mcore_elf_linker_flags = N #define TMP_TAIL_O "dt.o" #define TMP_STUB "ds" -/* This bit of assemly does jmp * .... */ +/* This bit of assemly does jmp * .... */ static const unsigned char i386_jtab[] = { 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x90, 0x90 @@ -472,26 +472,26 @@ static const unsigned char thumb_jtab[] static const unsigned char mcore_be_jtab[] = { 0x71, 0x02, /* lrw r1,2 */ - 0x81, 0x01, /* ld.w r1,(r1,0) */ + 0x81, 0x01, /* ld.w r1,(r1,0) */ 0x00, 0xC1, /* jmp r1 */ 0x12, 0x00, /* nop */ - 0x00, 0x00, 0x00, 0x00 /*
*/ + 0x00, 0x00, 0x00, 0x00 /*
*/ }; static const unsigned char mcore_le_jtab[] = { 0x02, 0x71, /* lrw r1,2 */ - 0x01, 0x81, /* ld.w r1,(r1,0) */ + 0x01, 0x81, /* ld.w r1,(r1,0) */ 0xC1, 0x00, /* jmp r1 */ 0x00, 0x12, /* nop */ - 0x00, 0x00, 0x00, 0x00 /*
*/ + 0x00, 0x00, 0x00, 0x00 /*
*/ }; /* This is the glue sequence for PowerPC PE. There is a */ -/* tocrel16-tocdefn reloc against the first instruction. */ +/* tocrel16-tocdefn reloc against the first instruction. */ /* We also need a IMGLUE reloc against the glue function */ /* to restore the toc saved by the third instruction in */ -/* the glue. */ +/* the glue. */ static const unsigned char ppc_jtab[] = { 0x00, 0x00, 0x62, 0x81, /* lwz r11,0(r2) */ @@ -646,7 +646,7 @@ typedef struct export export_type; /* A list of symbols which we should not export. */ - + struct string_list { struct string_list *next; @@ -658,6 +658,8 @@ static struct string_list *excludes; static const char *rvaafter PARAMS ((int)); static const char *rvabefore PARAMS ((int)); static const char *asm_prefix PARAMS ((int)); +static void process_def_file PARAMS ((const char *)); +static void new_directive PARAMS ((char *)); static void append_import PARAMS ((const char *, const char *, int)); static void run PARAMS ((const char *, char *)); static void scan_drectve_symbols PARAMS ((bfd *)); @@ -674,6 +676,7 @@ static int sfunc PARAMS ((const void *, static void flush_page PARAMS ((FILE *, long *, int, int)); static void gen_def_file PARAMS ((void)); static void generate_idata_ofile PARAMS ((FILE *)); +static void assemble_file PARAMS ((const char *, const char *)); static void gen_exp_file PARAMS ((void)); static const char *xlate PARAMS ((const char *)); #if 0 @@ -697,28 +700,17 @@ static void inform PARAMS ((const char * static void -#ifdef __STDC__ -inform (const char * message, ...) -#else -inform (message, va_alist) - const char * message; - va_dcl -#endif +inform VPARAMS ((const char *message, ...)) { - va_list args; - + VA_OPEN (args, message); + VA_FIXEDARG (args, const char *, message); + if (!verbose) return; -#ifdef __STDC__ - va_start (args, message); -#else - va_start (args); -#endif - report (message, args); - - va_end (args); + + VA_CLOSE (args); } static const char * @@ -820,12 +812,12 @@ asm_prefix (machine) static char **oav; -void +static void process_def_file (name) const char *name; { FILE *f = fopen (name, FOPEN_RT); - + if (!f) /* xgettext:c-format */ fatal (_("Can't open def file: %s"), name); @@ -834,7 +826,7 @@ process_def_file (name) /* xgettext:c-format */ inform (_("Processing def file: %s"), name); - + yyparse (); inform (_("Processed def file")); @@ -864,7 +856,7 @@ yyerror (err) { /* xgettext:c-format */ non_fatal (_("Syntax error in def file %s:%d"), def_file, linenumber); - + return 0; } @@ -888,8 +880,8 @@ def_exports (name, internal_name, ordina p->next = d_exports; d_exports = p; d_nfuncs++; - - if ((internal_name != NULL) + + if ((internal_name != NULL) && (strchr (internal_name, '.') != NULL)) p->forward = ++d_nforwards; else @@ -903,10 +895,10 @@ def_name (name, base) { /* xgettext:c-format */ inform (_("NAME: %s base: %x"), name, base); - + if (d_is_dll) non_fatal (_("Can't have LIBRARY and NAME")); - + d_name = name; /* if --dllname not provided, use the one in the DEF file. FIXME: Is this appropriate for executables? */ @@ -922,12 +914,12 @@ def_library (name, base) { /* xgettext:c-format */ inform (_("LIBRARY: %s base: %x"), name, base); - + if (d_is_exe) non_fatal (_("Can't have LIBRARY and NAME")); - + d_name = name; - /* if --dllname not provided, use the one in the DEF file. */ + /* if --dllname not provided, use the one in the DEF file. */ if (! dll_name) dll_name = xstrdup (name); d_is_dll = 1; @@ -943,7 +935,7 @@ def_description (desc) d_list = d; } -void +static void new_directive (dir) char *dir; { @@ -1069,7 +1061,7 @@ def_import (app_name, module, dllext, en else application_name = ""; } - + if (dllext != NULL) { buf = (char *) alloca (strlen (module) + strlen (dllext) + 2); @@ -1170,12 +1162,12 @@ run (what, args) if (pid == -1) { inform (strerror (errno)); - + fatal (errmsg_fmt, errmsg_arg); } pid = pwait (pid, & wait_status, 0); - + if (pid == -1) { /* xgettext:c-format */ @@ -1212,15 +1204,15 @@ scan_drectve_symbols (abfd) /* Look for .drectve's */ s = bfd_get_section_by_name (abfd, DRECTVE_SECTION_NAME); - + if (s == NULL) return; - + size = bfd_get_section_size_before_reloc (s); buf = xmalloc (size); bfd_get_section_contents (abfd, s, buf, 0, size); - + /* xgettext:c-format */ inform (_("Sucking in info from %s section in %s"), DRECTVE_SECTION_NAME, bfd_get_filename (abfd)); @@ -1238,7 +1230,7 @@ scan_drectve_symbols (abfd) char * name; char * c; flagword flags = BSF_FUNCTION; - + p += 8; name = p; while (p < e && *p != ',' && *p != ' ' && *p != '-') @@ -1246,7 +1238,7 @@ scan_drectve_symbols (abfd) c = xmalloc (p - name + 1); memcpy (c, name, p - name); c[p - name] = 0; - if (p < e && *p == ',') /* found type tag. */ + if (p < e && *p == ',') /* found type tag. */ { char *tag_start = ++p; while (p < e && *p != ' ' && *p != '-') @@ -1315,7 +1307,7 @@ scan_filtered_symbols (abfd, minisyms, s char *exported_name = xstrdup (symbol_name); char *atsym = strchr (exported_name, '@'); *atsym = '\0'; - /* Note: stdcall alias symbols can never be data. */ + /* Note: stdcall alias symbols can never be data. */ def_exports (exported_name, xstrdup (symbol_name), -1, 0, 0, 0); } } @@ -1336,7 +1328,7 @@ add_excludes (new_excludes) for (; exclude_string; exclude_string = strtok (NULL, ",:")) { struct string_list *new_exclude; - + new_exclude = ((struct string_list *) xmalloc (sizeof (struct string_list))); new_exclude->string = (char *) xmalloc (strlen (exclude_string) + 2); @@ -1408,7 +1400,7 @@ filter_symbols (abfd, minisyms, symcount || (sym->flags & BSF_WEAK) != 0 || bfd_is_com_section (sym->section)) && ! bfd_is_und_section (sym->section)); - + keep = keep && ! match_exclude (sym->name); if (keep) @@ -1475,7 +1467,7 @@ scan_open_obj_file (abfd) scan_all_symbols (abfd); else scan_drectve_symbols (abfd); - + /* FIXME: we ought to read in and block out the base relocations */ /* xgettext:c-format */ @@ -1494,7 +1486,7 @@ scan_obj_file (filename) /* xgettext:c-format */ inform (_("Scanning object file %s"), filename); - + if (bfd_check_format (f, bfd_archive)) { bfd *arfile = bfd_openr_next_archived_file (f, 0); @@ -1505,7 +1497,7 @@ scan_obj_file (filename) bfd_close (arfile); arfile = bfd_openr_next_archived_file (f, arfile); } - + #ifdef DLLTOOL_MCORE_ELF if (mcore_elf_out_file) inform (_("Cannot produce mcore-elf dll from archive file: %s"), filename); @@ -1578,17 +1570,17 @@ flush_page (f, need, page_addr, on_page) ASM_LONG, (on_page * 2) + (on_page & 1) * 2 + 8, ASM_C); - + for (i = 0; i < on_page; i++) { long needed = need[i]; - + if (needed) needed = ((needed - page_addr) | 0x3000) & 0xffff; - + fprintf (f, "\t%s\t0x%lx\n", ASM_SHORT, needed); } - + /* And padding */ if (on_page & 1) fprintf (f, "\t%s\t0x%x\n", ASM_SHORT, 0 | 0x0000); @@ -1601,7 +1593,7 @@ gen_def_file () export_type *exp; inform (_("Adding exports to output file")); - + fprintf (output_def, ";"); for (i = 0; oav[i]; i++) fprintf (output_def, " %s", oav[i]); @@ -1614,7 +1606,7 @@ gen_def_file () char *res = cplus_demangle (exp->internal_name, DMGL_ANSI | DMGL_PARAMS); if (strcmp (exp->name, exp->internal_name) == 0) - { + { fprintf (output_def, "\t%s%s%s @ %d%s%s ; %s\n", quote, @@ -1625,9 +1617,9 @@ gen_def_file () exp->data ? " DATA" : "", res ? res : ""); } - else - { - char *quote1 = strchr (exp->internal_name, '.') ? "\"" : ""; + else + { + char *quote1 = strchr (exp->internal_name, '.') ? "\"" : ""; /* char *alias = */ fprintf (output_def, "\t%s%s%s = %s%s%s @ %d%s%s ; %s\n", quote, @@ -1642,9 +1634,9 @@ gen_def_file () res ? res : ""); } if (res) - free (res); + free (res); } - + inform (_("Added exports to output file")); } @@ -1744,14 +1736,14 @@ generate_idata_ofile (filvar) } } -/* Assemble the specified file. */ +/* Assemble the specified file. */ static void assemble_file (source, dest) const char * source; const char * dest; { char * cmd; - + cmd = (char *) alloca (strlen (ASM_SWITCHES) + strlen (as_flags) + strlen (source) + strlen (dest) + 50); @@ -1770,17 +1762,17 @@ gen_exp_file () /* xgettext:c-format */ inform (_("Generating export file: %s"), exp_name); - + f = fopen (TMP_ASM, FOPEN_WT); if (!f) /* xgettext:c-format */ fatal (_("Unable to open temporary assembler file: %s"), TMP_ASM); - + /* xgettext:c-format */ inform (_("Opened temporary file: %s"), TMP_ASM); dump_def_info (f); - + if (d_exports) { fprintf (f, "\t.section .edata\n\n"); @@ -1879,7 +1871,7 @@ gen_exp_file () fprintf (f, "\t%s\t\"%s\"\n", ASM_TEXT, dl->text); } } - + if (d_list) { fprintf (f, "\t.section .rdata\n"); @@ -1887,7 +1879,7 @@ gen_exp_file () { char *p; int l; - + /* We don't output as ascii because there can be quote characters in the string. */ l = 0; @@ -2000,7 +1992,7 @@ gen_exp_file () if (dontdeltemps == 0) unlink (TMP_ASM); - + inform (_("Generated exports file")); } @@ -2097,7 +2089,7 @@ static sinfo secdata[NSECS] = #else /* Sections numbered to make the order the same as other PowerPC NT */ -/* compilers. This also keeps funny alignment thingies from happening. */ +/* compilers. This also keeps funny alignment thingies from happening. */ #define TEXT 0 #define PDATA 1 #define RDATA 2 @@ -2256,18 +2248,18 @@ make_one_lib_file (exp, i) char * outname = xmalloc (10); int oidx = 0; - + sprintf (outname, "%s%05d.o", TMP_STUB, i); - + abfd = bfd_openw (outname, HOW_BFD_WRITE_TARGET); - + if (!abfd) /* xgettext:c-format */ fatal (_("bfd_open failed open stub file: %s"), outname); /* xgettext:c-format */ inform (_("Creating stub file: %s"), outname); - + bfd_set_format (abfd, bfd_object); bfd_set_arch_mach (abfd, HOW_BFD_ARCH, 0); @@ -2275,9 +2267,9 @@ make_one_lib_file (exp, i) if (machine == MARM_INTERWORK || machine == MTHUMB) bfd_set_private_flags (abfd, F_INTERWORK); #endif - + applicable = bfd_applicable_section_flags (abfd); - + /* First make symbols for the sections */ for (i = 0; i < NSECS; i++) { @@ -2393,7 +2385,7 @@ make_one_lib_file (exp, i) ptrs[oidx++] = toc_symbol; } #endif - + ptrs[oidx] = 0; for (i = 0; i < NSECS; i++) @@ -2414,11 +2406,11 @@ make_one_lib_file (exp, i) /* add the reloc into idata$5 */ rel = xmalloc (sizeof (arelent)); - + rpp = xmalloc (sizeof (arelent *) * 2); rpp[0] = rel; rpp[1] = 0; - + rel->address = HOW_JTAB_ROFF; rel->addend = 0; @@ -2501,7 +2493,7 @@ make_one_lib_file (exp, i) #ifdef DLLTOOL_PPC case PDATA: { - /* The .pdata section is 5 words long. */ + /* The .pdata section is 5 words long. */ /* Think of it as: */ /* struct */ /* { */ @@ -2658,7 +2650,7 @@ make_head () fatal (_("failed to open temporary head file: %s"), TMP_HEAD_S); return NULL; } - + fprintf (f, "%s IMAGE_IMPORT_DESCRIPTOR\n", ASM_C); fprintf (f, "\t.section .idata$2\n"); @@ -2690,7 +2682,7 @@ make_head () fprintf (f, "\t%s\t0\n", ASM_LONG); fprintf (f, "fthunk:\n"); } - + if (!no_idata4) { fprintf (f, "\t.section\t.idata$4\n"); @@ -2699,7 +2691,7 @@ make_head () fprintf (f, "\t.section .idata$4\n"); fprintf (f, "hname:\n"); } - + fclose (f); assemble_file (TMP_HEAD_S, TMP_HEAD_O); @@ -2717,13 +2709,13 @@ make_tail () fatal (_("failed to open temporary tail file: %s"), TMP_TAIL_S); return NULL; } - + if (!no_idata4) { fprintf (f, "\t.section .idata$4\n"); fprintf (f, "\t%s\t0\n", ASM_LONG); } - + if (!no_idata5) { fprintf (f, "\t.section .idata$5\n"); @@ -2762,7 +2754,7 @@ make_tail () fclose (f); assemble_file (TMP_TAIL_S, TMP_TAIL_O); - + return bfd_openr (TMP_TAIL_O, HOW_BFD_READ_TARGET); } @@ -2786,18 +2778,18 @@ gen_lib_file () /* xgettext:c-format */ inform (_("Creating library file: %s"), imp_name); - + bfd_set_format (outarch, bfd_archive); outarch->has_armap = 1; - /* Work out a reasonable size of things to put onto one line. */ + /* Work out a reasonable size of things to put onto one line. */ ar_head = make_head (); ar_tail = make_tail(); if (ar_head == NULL || ar_tail == NULL) return; - + for (i = 0; (exp = d_exports_lexically[i]); i++) { bfd *n = make_one_lib_file (exp, i); @@ -2813,7 +2805,7 @@ gen_lib_file () if (! bfd_set_archive_head (outarch, head)) bfd_fatal ("bfd_set_archive_head"); - + if (! bfd_close (outarch)) bfd_fatal (imp_name); @@ -2847,7 +2839,7 @@ gen_lib_file () non_fatal (_("cannot delete %s: %s"), name, strerror (errno)); } } - + inform (_("Created lib file")); } @@ -2951,11 +2943,11 @@ process_duplicates (d_export_vec) export_type *b = d_export_vec[i + 1]; more = 1; - + /* xgettext:c-format */ inform (_("Warning, ignoring duplicate EXPORT %s %d,%d"), a->name, a->ordinal, b->ordinal); - + if (a->ordinal != -1 && b->ordinal != -1) /* xgettext:c-format */ @@ -3019,14 +3011,14 @@ fill_ordinals (d_export_vec) if (lowest == -1) lowest = 1; - /* Now fill in ordinals where the user wants us to choose. */ + /* Now fill in ordinals where the user wants us to choose. */ for (i = 0; i < d_nfuncs; i++) { if (d_export_vec[i]->ordinal == -1) { register int j; - /* First try within or after any user supplied range. */ + /* First try within or after any user supplied range. */ for (j = lowest; j < size; j++) if (ptr[j] == 0) { @@ -3035,7 +3027,7 @@ fill_ordinals (d_export_vec) goto done; } - /* Then try before the range. */ + /* Then try before the range. */ for (j = lowest; j >0; j--) if (ptr[j] == 0) { @@ -3087,7 +3079,7 @@ mangle_defs () = (export_type **) xmalloc (sizeof (export_type *) * d_nfuncs); inform (_("Processing definitions")); - + for (i = 0, exp = d_exports; exp; i++, exp = exp->next) { d_export_vec[i] = exp; @@ -3123,7 +3115,7 @@ mangle_defs () if (!d_exports_lexically[i]->noname || show_allnames) d_exports_lexically[i]->hint = hint++; } - + inform (_("Processed definitions")); } @@ -3206,6 +3198,8 @@ static const struct option long_options[ {NULL,0,NULL,0} }; +int main PARAMS ((int, char **)); + int main (ac, av) int ac; @@ -3227,7 +3221,7 @@ main (ac, av) textdomain (PACKAGE); while ((c = getopt_long (ac, av, -#ifdef DLLTOOL_MCORE_ELF +#ifdef DLLTOOL_MCORE_ELF "m:e:l:aD:d:z:b:xcCuUkAS:f:nvVHhM:L:F:", #else "m:e:l:aD:d:z:b:xcCuUkAS:f:nvVHh", @@ -3310,7 +3304,7 @@ main (ac, av) break; case 'b': base_file = fopen (optarg, FOPEN_RB); - + if (!base_file) /* xgettext:c-format */ fatal (_("Unable to open base-file: %s"), optarg); @@ -3356,13 +3350,13 @@ main (ac, av) if (as_name == NULL) as_name = deduce_name ("as"); - + /* Don't use the default exclude list if we're reading only the symbols in the .drectve section. The default excludes are meant to avoid exporting DLL entry point and Cygwin32 impure_ptr. */ if (! export_all_symbols) do_default_excludes = false; - + if (do_default_excludes) set_default_excludes (); @@ -3381,10 +3375,10 @@ main (ac, av) if (exp_name) gen_exp_file (); - + if (imp_name) { - /* Make imp_name safe for use as a label. */ + /* Make imp_name safe for use as a label. */ char *p; imp_name_lab = xstrdup (imp_name); @@ -3396,15 +3390,15 @@ main (ac, av) head_label = make_label("_head_", imp_name_lab); gen_lib_file (); } - + if (output_def) gen_def_file (); - + #ifdef DLLTOOL_MCORE_ELF if (mcore_elf_out_file) mcore_elf_gen_out_file (); #endif - + return 0; } @@ -3422,10 +3416,10 @@ look_for_prog (prog_name, prefix, end_pr struct stat s; char *cmd; - cmd = xmalloc (strlen (prefix) - + strlen (prog_name) + cmd = xmalloc (strlen (prefix) + + strlen (prog_name) #ifdef HAVE_EXECUTABLE_SUFFIX - + strlen (EXECUTABLE_SUFFIX) + + strlen (EXECUTABLE_SUFFIX) #endif + 10); strcpy (cmd, prefix); @@ -3438,12 +3432,12 @@ look_for_prog (prog_name, prefix, end_pr found = (stat (cmd, &s) == 0 #ifdef HAVE_EXECUTABLE_SUFFIX - || stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0 + || stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0 #endif ); if (! found) - { + { /* xgettext:c-format */ inform (_("Tried file: %s"), cmd); free (cmd); @@ -3460,24 +3454,24 @@ look_for_prog (prog_name, prefix, end_pr /* Deduce the name of the program we are want to invoke. PROG_NAME is the basic name of the program we want to run, eg "as" or "ld". The catch is that we might want actually - run "i386-pe-as" or "ppc-pe-ld". + run "i386-pe-as" or "ppc-pe-ld". If argv[0] contains the full path, then try to find the program in the same place, with and then without a target-like prefix. Given, argv[0] = /usr/local/bin/i586-cygwin32-dlltool, - deduce_name("as") uses the following search order: + deduce_name("as") uses the following search order: /usr/local/bin/i586-cygwin32-as /usr/local/bin/as as - + If there's an EXECUTABLE_SUFFIX, it'll use that as well; for each name, it'll try without and then with EXECUTABLE_SUFFIX. Given, argv[0] = i586-cygwin32-dlltool, it will not even try "as" as the fallback, but rather return i586-cygwin32-as. - + Oh, and given, argv[0] = dlltool, it'll return "as". Returns a dynamically allocated string. */ @@ -3576,7 +3570,7 @@ mcore_elf_gen_out_file (void) if (mcore_elf_linker_flags != NULL) dyn_string_append (ds, mcore_elf_linker_flags); - + while (ptr->next != NULL) { dyn_string_append (ds, ptr->filename); @@ -3590,18 +3584,18 @@ mcore_elf_gen_out_file (void) if (mcore_elf_linker == NULL) mcore_elf_linker = deduce_name ("ld"); - + run (mcore_elf_linker, ds->s); dyn_string_delete (ds); - /* Step two. Create a .exp file and a .lib file from the temporary file. + /* Step two. Create a .exp file and a .lib file from the temporary file. Do this by recursively invoking dlltool....*/ ds = dyn_string_new (100); dyn_string_append (ds, "-S "); dyn_string_append (ds, as_name); - + dyn_string_append (ds, " -e "); dyn_string_append (ds, MCORE_ELF_TMP_EXP); dyn_string_append (ds, " -l "); @@ -3611,17 +3605,17 @@ mcore_elf_gen_out_file (void) if (verbose) dyn_string_append (ds, " -v"); - + if (dontdeltemps) { dyn_string_append (ds, " -n"); - + if (dontdeltemps > 1) dyn_string_append (ds, " -n"); } /* XXX - FIME: ought to check/copy other command line options as well. */ - + run (program_name, ds->s); dyn_string_delete (ds); diff -uprN binutils-2.12.90.0.7/binutils/dllwrap.c binutils-2.12.90.0.9/binutils/dllwrap.c --- binutils-2.12.90.0.7/binutils/dllwrap.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/binutils/dllwrap.c Thu May 23 15:10:10 2002 @@ -78,7 +78,7 @@ #endif /* ! HAVE_SYS_WAIT_H */ static char *driver_name = NULL; -static char *cygwin_driver_flags = +static char *cygwin_driver_flags = "-Wl,--dll -nostartfiles"; static char *mingw32_driver_flags = "-mdll"; static char *generic_driver_flags = "-Wl,--dll"; @@ -90,10 +90,10 @@ static char *dlltool_name = NULL; static char *target = TARGET; typedef enum { - UNKNOWN_TARGET, - CYGWIN_TARGET, + UNKNOWN_TARGET, + CYGWIN_TARGET, MINGW_TARGET -} +} target_type; static target_type which_target = UNKNOWN_TARGET; @@ -115,14 +115,16 @@ static int delete_exp_file = 1; static int delete_def_file = 1; static int run PARAMS ((const char *, char *)); +static char *mybasename PARAMS ((const char *)); +static int strhash PARAMS ((const char *)); static void usage PARAMS ((FILE *, int)); static void display PARAMS ((const char *, va_list)); static void inform PARAMS ((const char *, ...)); -static void warn PARAMS ((const char *format, ...)); +static void warn PARAMS ((const char *, ...)); static char *look_for_prog PARAMS ((const char *, const char *, int)); static char *deduce_name PARAMS ((const char *)); static void delete_temp_files PARAMS ((void)); -static void cleanup_and_exit PARAMS ((int status)); +static void cleanup_and_exit PARAMS ((int)); /**********************************************************************/ @@ -147,58 +149,30 @@ display (message, args) } -#ifdef __STDC__ static void -inform (const char * message, ...) +inform VPARAMS ((const char *message, ...)) { - va_list args; + VA_OPEN (args, message); + VA_FIXEDARG (args, const char *, message); if (!verbose) return; - va_start (args, message); display (message, args); - va_end (args); -} - -static void -warn (const char *format, ...) -{ - va_list args; - - va_start (args, format); - display (format, args); - va_end (args); -} -#else - -static void -inform (message, va_alist) - const char * message; - va_dcl -{ - va_list args; - if (!verbose) - return; - - va_start (args); - display (message, args); - va_end (args); + VA_CLOSE (args); } static void -warn (format, va_alist) - const char *format; - va_dcl +warn VPARAMS ((const char *format, ...)) { - va_list args; + VA_OPEN (args, format); + VA_FIXEDARG (args, const char *, format); - va_start (args); display (format, args); - va_end (args); + + VA_CLOSE (args); } -#endif /* Look for the program formed by concatenating PROG_NAME and the string running from PREFIX to END_PREFIX. If the concatenated @@ -214,10 +188,10 @@ look_for_prog (prog_name, prefix, end_pr struct stat s; char *cmd; - cmd = xmalloc (strlen (prefix) - + strlen (prog_name) + cmd = xmalloc (strlen (prefix) + + strlen (prog_name) #ifdef HAVE_EXECUTABLE_SUFFIX - + strlen (EXECUTABLE_SUFFIX) + + strlen (EXECUTABLE_SUFFIX) #endif + 10); strcpy (cmd, prefix); @@ -230,12 +204,12 @@ look_for_prog (prog_name, prefix, end_pr found = (stat (cmd, &s) == 0 #ifdef HAVE_EXECUTABLE_SUFFIX - || stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0 + || stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0 #endif ); if (! found) - { + { /* xgettext:c-format */ inform (_("Tried file: %s"), cmd); free (cmd); @@ -252,24 +226,24 @@ look_for_prog (prog_name, prefix, end_pr /* Deduce the name of the program we are want to invoke. PROG_NAME is the basic name of the program we want to run, eg "as" or "ld". The catch is that we might want actually - run "i386-pe-as" or "ppc-pe-ld". + run "i386-pe-as" or "ppc-pe-ld". If argv[0] contains the full path, then try to find the program in the same place, with and then without a target-like prefix. Given, argv[0] = /usr/local/bin/i586-cygwin32-dlltool, - deduce_name("as") uses the following search order: + deduce_name("as") uses the following search order: /usr/local/bin/i586-cygwin32-as /usr/local/bin/as as - + If there's an EXECUTABLE_SUFFIX, it'll use that as well; for each name, it'll try without and then with EXECUTABLE_SUFFIX. Given, argv[0] = i586-cygwin32-dlltool, it will not even try "as" as the fallback, but rather return i586-cygwin32-as. - + Oh, and given, argv[0] = dlltool, it'll return "as". Returns a dynamically allocated string. */ @@ -336,12 +310,12 @@ delete_temp_files () warn (_("Deleting temporary base file %s"), base_file_name); } if (! dontdeltemps) - { - unlink (base_file_name); + { + unlink (base_file_name); free (base_file_name); } } - + if (delete_exp_file && exp_file_name) { if (verbose) @@ -352,9 +326,9 @@ delete_temp_files () warn (_("Deleting temporary exp file %s"), exp_file_name); } if (! dontdeltemps) - { - unlink (exp_file_name); - free (exp_file_name); + { + unlink (exp_file_name); + free (exp_file_name); } } if (delete_def_file && def_file_name) @@ -367,20 +341,21 @@ delete_temp_files () warn (_("Deleting temporary def file %s"), def_file_name); } if (! dontdeltemps) - { - unlink (def_file_name); - free (def_file_name); + { + unlink (def_file_name); + free (def_file_name); } } } -static void -cleanup_and_exit (int status) +static void +cleanup_and_exit (status) + int status; { delete_temp_files (); exit (status); } - + static int run (what, args) const char *what; @@ -423,7 +398,7 @@ run (what, args) break; *s++ = 0; if (in_quote) - s++; + s++; } argv[i++] = NULL; @@ -465,7 +440,7 @@ run (what, args) } else retcode = 1; - + return retcode; } @@ -486,8 +461,9 @@ mybasename (name) return (char *) base; } -static int -strhash (const char *str) +static int +strhash (str) + const char *str; { const unsigned char *s; unsigned long hash; @@ -558,12 +534,12 @@ usage (file, status) #define OPTION_START 149 -/* GENERIC options. */ +/* GENERIC options. */ #define OPTION_QUIET (OPTION_START + 1) #define OPTION_VERBOSE (OPTION_QUIET + 1) #define OPTION_VERSION (OPTION_VERBOSE + 1) -/* DLLWRAP options. */ +/* DLLWRAP options. */ #define OPTION_DRY_RUN (OPTION_VERSION + 1) #define OPTION_DRIVER_NAME (OPTION_DRY_RUN + 1) #define OPTION_DRIVER_FLAGS (OPTION_DRIVER_NAME + 1) @@ -573,7 +549,7 @@ usage (file, status) #define OPTION_TARGET (OPTION_IMAGE_BASE + 1) #define OPTION_MNO_CYGWIN (OPTION_TARGET + 1) -/* DLLTOOL options. */ +/* DLLTOOL options. */ #define OPTION_NODELETE (OPTION_MNO_CYGWIN + 1) #define OPTION_DLLNAME (OPTION_NODELETE + 1) #define OPTION_NO_IDATA4 (OPTION_DLLNAME + 1) @@ -596,13 +572,13 @@ usage (file, status) static const struct option long_options[] = { - /* generic options. */ + /* generic options. */ {"quiet", no_argument, NULL, 'q'}, {"verbose", no_argument, NULL, 'v'}, {"version", no_argument, NULL, OPTION_VERSION}, {"implib", required_argument, NULL, OPTION_OUTPUT_LIB}, - /* dllwrap options. */ + /* dllwrap options. */ {"dry-run", no_argument, NULL, OPTION_DRY_RUN}, {"driver-name", required_argument, NULL, OPTION_DRIVER_NAME}, {"driver-flags", required_argument, NULL, OPTION_DRIVER_FLAGS}, @@ -611,7 +587,7 @@ static const struct option long_options[ {"image-base", required_argument, NULL, OPTION_IMAGE_BASE}, {"target", required_argument, NULL, OPTION_TARGET}, - /* dlltool options. */ + /* dlltool options. */ {"no-delete", no_argument, NULL, 'n'}, {"dllname", required_argument, NULL, OPTION_DLLNAME}, {"no-idata4", no_argument, NULL, OPTION_NO_IDATA4}, @@ -635,6 +611,8 @@ static const struct option long_options[ {0, 0, 0, 0} }; +int main PARAMS ((int, char **)); + int main (argc, argv) int argc; @@ -675,7 +653,7 @@ main (argc, argv) saved_argv = (char **) xmalloc (argc * sizeof (char*)); dlltool_arg_indices = (int *) xmalloc (argc * sizeof (int)); driver_arg_indices = (int *) xmalloc (argc * sizeof (int)); - for (i = 0; i < argc; ++i) + for (i = 0; i < argc; ++i) { size_t len = strlen (argv[i]); char *arg = (char *) xmalloc (len + 1); @@ -689,11 +667,11 @@ main (argc, argv) /* We recognize dllwrap and dlltool options, and everything else is passed onto the language driver (eg., to GCC). We collect options - to dlltool and driver in dlltool_args and driver_args. */ - + to dlltool and driver in dlltool_args and driver_args. */ + opterr = 0; - while ((c = getopt_long_only (argc, argv, "nkAqve:Uho:l:L:I:", - long_options, (int *) 0)) != EOF) + while ((c = getopt_long_only (argc, argv, "nkAqve:Uho:l:L:I:", + long_options, (int *) 0)) != EOF) { int dlltool_arg; int driver_arg; @@ -704,15 +682,15 @@ main (argc, argv) single_word_option_value_pair = 0; if (c != '?') - { + { /* We recognize this option, so it has to be either dllwrap or dlltool option. Do not pass to driver unless it's one of the generic options that are passed to all the tools (such as -v) - which are dealt with later. */ + which are dealt with later. */ driver_arg = 0; } - /* deal with generic and dllwrap options first. */ + /* deal with generic and dllwrap options first. */ switch (c) { case 'h': @@ -791,34 +769,34 @@ main (argc, argv) dlltool_arg = 1; break; } - - /* Handle passing through --option=value case. */ - if (optarg - && saved_argv[optind-1][0] == '-' - && saved_argv[optind-1][1] == '-' + + /* Handle passing through --option=value case. */ + if (optarg + && saved_argv[optind-1][0] == '-' + && saved_argv[optind-1][1] == '-' && strchr (saved_argv[optind-1], '=')) single_word_option_value_pair = 1; if (dlltool_arg) - { + { dlltool_arg_indices[optind-1] = 1; if (optarg && ! single_word_option_value_pair) { dlltool_arg_indices[optind-2] = 1; - } + } } if (! driver_arg) - { + { driver_arg_indices[optind-1] = 0; if (optarg && ! single_word_option_value_pair) { driver_arg_indices[optind-2] = 0; - } + } } } - /* sanity checks. */ + /* sanity checks. */ if (! dll_name && ! dll_file_name) { warn (_("Must provide at least one of -o or --dllname options")); @@ -833,7 +811,7 @@ main (argc, argv) dll_file_name = xstrdup (dll_name); } - /* Deduce driver-name and dlltool-name from our own. */ + /* Deduce driver-name and dlltool-name from our own. */ if (driver_name == NULL) driver_name = deduce_name ("gcc"); @@ -844,24 +822,24 @@ main (argc, argv) { char *fileprefix = choose_temp_base (); def_file_name = (char *) xmalloc (strlen (fileprefix) + 5); - sprintf (def_file_name, "%s.def", - (dontdeltemps) ? mybasename (fileprefix) : fileprefix); + sprintf (def_file_name, "%s.def", + (dontdeltemps) ? mybasename (fileprefix) : fileprefix); delete_def_file = 1; free (fileprefix); delete_def_file = 1; warn (_("no export definition file provided.\n\ Creating one, but that may not be what you want")); } - - /* set the target platform. */ + + /* set the target platform. */ if (strstr (target, "cygwin")) which_target = CYGWIN_TARGET; else if (strstr (target, "mingw")) which_target = MINGW_TARGET; - else + else which_target = UNKNOWN_TARGET; - /* re-create the command lines as a string, taking care to quote stuff. */ + /* re-create the command lines as a string, taking care to quote stuff. */ dlltool_cmdline = dyn_string_new (cmdline_len); if (verbose) { @@ -873,13 +851,13 @@ Creating one, but that may not be what y for (i = 1; i < argc; ++i) { if (dlltool_arg_indices[i]) - { + { char *arg = saved_argv[i]; - int quote = (strchr (arg, ' ') || strchr (arg, '\t')); - dyn_string_append_cstr (dlltool_cmdline, + int quote = (strchr (arg, ' ') || strchr (arg, '\t')); + dyn_string_append_cstr (dlltool_cmdline, (quote) ? " \"" : " "); dyn_string_append_cstr (dlltool_cmdline, arg); - dyn_string_append_cstr (dlltool_cmdline, + dyn_string_append_cstr (dlltool_cmdline, (quote) ? "\"" : ""); } } @@ -888,17 +866,17 @@ Creating one, but that may not be what y if (! driver_flags || strlen (driver_flags) == 0) { switch (which_target) - { + { case CYGWIN_TARGET: - driver_flags = cygwin_driver_flags; + driver_flags = cygwin_driver_flags; break; - + case MINGW_TARGET: - driver_flags = mingw32_driver_flags; + driver_flags = mingw32_driver_flags; break; - + default: - driver_flags = generic_driver_flags; + driver_flags = generic_driver_flags; break; } } @@ -909,25 +887,25 @@ Creating one, but that may not be what y if (! entry_point || strlen (entry_point) == 0) { switch (which_target) - { + { case CYGWIN_TARGET: entry_point = "__cygwin_dll_entry@12"; break; - + case MINGW_TARGET: entry_point = "_DllMainCRTStartup@12"; break; - + default: - entry_point = "_DllMain@12"; + entry_point = "_DllMain@12"; break; } } dyn_string_append_cstr (driver_cmdline, " -Wl,-e,"); dyn_string_append_cstr (driver_cmdline, entry_point); dyn_string_append_cstr (dlltool_cmdline, " --exclude-symbol="); - dyn_string_append_cstr (dlltool_cmdline, - (entry_point[0] == '_') ? entry_point+1 : entry_point); + dyn_string_append_cstr (dlltool_cmdline, + (entry_point[0] == '_') ? entry_point+1 : entry_point); if (! image_base_str || strlen (image_base_str) == 0) { @@ -948,23 +926,23 @@ Creating one, but that may not be what y for (i = 1; i < argc; ++i) { if (driver_arg_indices[i]) - { + { char *arg = saved_argv[i]; - int quote = (strchr (arg, ' ') || strchr (arg, '\t')); - dyn_string_append_cstr (driver_cmdline, + int quote = (strchr (arg, ' ') || strchr (arg, '\t')); + dyn_string_append_cstr (driver_cmdline, (quote) ? " \"" : " "); dyn_string_append_cstr (driver_cmdline, arg); - dyn_string_append_cstr (driver_cmdline, + dyn_string_append_cstr (driver_cmdline, (quote) ? "\"" : ""); } } - + /* * Step pre-1. If no --def is specified, then create it * and then pass it on. */ - - if (! def_file_seen) + + if (! def_file_seen) { int i; dyn_string_t step_pre1; @@ -974,8 +952,8 @@ Creating one, but that may not be what y dyn_string_append_cstr (step_pre1, dlltool_cmdline->s); if (export_all) { - dyn_string_append_cstr (step_pre1, " --export-all --exclude-symbol="); - dyn_string_append_cstr (step_pre1, + dyn_string_append_cstr (step_pre1, " --export-all --exclude-symbol="); + dyn_string_append_cstr (step_pre1, "_cygwin_dll_entry@12,DllMainCRTStartup@12,DllMain@12,DllEntryPoint@12"); } dyn_string_append_cstr (step_pre1, " --output-def "); @@ -987,7 +965,7 @@ Creating one, but that may not be what y { char *arg = saved_argv[i]; size_t len = strlen (arg); - if (len >= 2 && arg[len-2] == '.' + if (len >= 2 && arg[len-2] == '.' && (arg[len-1] == 'o' || arg[len-1] == 'a')) { int quote = (strchr (arg, ' ') || strchr (arg, '\t')); @@ -1002,7 +980,7 @@ Creating one, but that may not be what y if (run (dlltool_name, step_pre1->s)) cleanup_and_exit (1); - + dyn_string_delete (step_pre1); } @@ -1016,67 +994,67 @@ Creating one, but that may not be what y fprintf (stderr, _("DRIVER name : %s\n"), driver_name); fprintf (stderr, _("DRIVER options : %s\n"), driver_cmdline->s); } - + /* * Step 1. Call GCC/LD to create base relocation file. If using GCC, the * driver command line will look like the following: - * + * * % gcc -Wl,--dll --Wl,--base-file,foo.base [rest of command line] * * If the user does not specify a base name, create temporary one that * is deleted at exit. * */ - + if (! base_file_name) { char *fileprefix = choose_temp_base (); base_file_name = (char *) xmalloc (strlen (fileprefix) + 6); - sprintf (base_file_name, "%s.base", - (dontdeltemps) ? mybasename (fileprefix) : fileprefix); + sprintf (base_file_name, "%s.base", + (dontdeltemps) ? mybasename (fileprefix) : fileprefix); delete_base_file = 1; free (fileprefix); } - + { int quote; - dyn_string_t step1 = dyn_string_new (driver_cmdline->length - + strlen (base_file_name) - + 20); + dyn_string_t step1 = dyn_string_new (driver_cmdline->length + + strlen (base_file_name) + + 20); dyn_string_append_cstr (step1, "-Wl,--base-file,"); - quote = (strchr (base_file_name, ' ') - || strchr (base_file_name, '\t')); - dyn_string_append_cstr (step1, + quote = (strchr (base_file_name, ' ') + || strchr (base_file_name, '\t')); + dyn_string_append_cstr (step1, (quote) ? "\"" : ""); dyn_string_append_cstr (step1, base_file_name); - dyn_string_append_cstr (step1, + dyn_string_append_cstr (step1, (quote) ? "\"" : ""); if (driver_cmdline->length) { - dyn_string_append_cstr (step1, " "); - dyn_string_append_cstr (step1, driver_cmdline->s); + dyn_string_append_cstr (step1, " "); + dyn_string_append_cstr (step1, driver_cmdline->s); } if (run (driver_name, step1->s)) cleanup_and_exit (1); - + dyn_string_delete (step1); } /* - * Step 2. generate the exp file by running dlltool. + * Step 2. generate the exp file by running dlltool. * dlltool command line will look like the following: - * + * * % dlltool -Wl,--dll --Wl,--base-file,foo.base [rest of command line] * * If the user does not specify a base name, create temporary one that * is deleted at exit. * */ - + if (! exp_file_name) { char *p = strrchr (dll_name, '.'); @@ -1087,84 +1065,84 @@ Creating one, but that may not be what y strcat (exp_file_name, ".exp"); delete_exp_file = 1; } - + { int quote; - dyn_string_t step2 = dyn_string_new (dlltool_cmdline->length - + strlen (base_file_name) - + strlen (exp_file_name) + dyn_string_t step2 = dyn_string_new (dlltool_cmdline->length + + strlen (base_file_name) + + strlen (exp_file_name) + 20); dyn_string_append_cstr (step2, "--base-file "); - quote = (strchr (base_file_name, ' ') - || strchr (base_file_name, '\t')); - dyn_string_append_cstr (step2, + quote = (strchr (base_file_name, ' ') + || strchr (base_file_name, '\t')); + dyn_string_append_cstr (step2, (quote) ? "\"" : ""); dyn_string_append_cstr (step2, base_file_name); - dyn_string_append_cstr (step2, + dyn_string_append_cstr (step2, (quote) ? "\" " : " "); dyn_string_append_cstr (step2, "--output-exp "); - quote = (strchr (exp_file_name, ' ') - || strchr (exp_file_name, '\t')); - dyn_string_append_cstr (step2, + quote = (strchr (exp_file_name, ' ') + || strchr (exp_file_name, '\t')); + dyn_string_append_cstr (step2, (quote) ? "\"" : ""); dyn_string_append_cstr (step2, exp_file_name); - dyn_string_append_cstr (step2, + dyn_string_append_cstr (step2, (quote) ? "\"" : ""); if (dlltool_cmdline->length) { - dyn_string_append_cstr (step2, " "); - dyn_string_append_cstr (step2, dlltool_cmdline->s); + dyn_string_append_cstr (step2, " "); + dyn_string_append_cstr (step2, dlltool_cmdline->s); } if (run (dlltool_name, step2->s)) cleanup_and_exit (1); - + dyn_string_delete (step2); } /* * Step 3. Call GCC/LD to again, adding the exp file this time. * driver command line will look like the following: - * + * * % gcc -Wl,--dll --Wl,--base-file,foo.base foo.exp [rest ...] */ { int quote; - dyn_string_t step3 = dyn_string_new (driver_cmdline->length - + strlen (exp_file_name) - + strlen (base_file_name) + dyn_string_t step3 = dyn_string_new (driver_cmdline->length + + strlen (exp_file_name) + + strlen (base_file_name) + 20); dyn_string_append_cstr (step3, "-Wl,--base-file,"); - quote = (strchr (base_file_name, ' ') - || strchr (base_file_name, '\t')); - dyn_string_append_cstr (step3, + quote = (strchr (base_file_name, ' ') + || strchr (base_file_name, '\t')); + dyn_string_append_cstr (step3, (quote) ? "\"" : ""); dyn_string_append_cstr (step3, base_file_name); - dyn_string_append_cstr (step3, + dyn_string_append_cstr (step3, (quote) ? "\" " : " "); - quote = (strchr (exp_file_name, ' ') - || strchr (exp_file_name, '\t')); - dyn_string_append_cstr (step3, + quote = (strchr (exp_file_name, ' ') + || strchr (exp_file_name, '\t')); + dyn_string_append_cstr (step3, (quote) ? "\"" : ""); dyn_string_append_cstr (step3, exp_file_name); - dyn_string_append_cstr (step3, + dyn_string_append_cstr (step3, (quote) ? "\"" : ""); if (driver_cmdline->length) { - dyn_string_append_cstr (step3, " "); - dyn_string_append_cstr (step3, driver_cmdline->s); + dyn_string_append_cstr (step3, " "); + dyn_string_append_cstr (step3, driver_cmdline->s); } if (run (driver_name, step3->s)) cleanup_and_exit (1); - + dyn_string_delete (step3); } @@ -1175,52 +1153,52 @@ Creating one, but that may not be what y { int quote; - dyn_string_t step4 = dyn_string_new (dlltool_cmdline->length - + strlen (base_file_name) - + strlen (exp_file_name) + dyn_string_t step4 = dyn_string_new (dlltool_cmdline->length + + strlen (base_file_name) + + strlen (exp_file_name) + 20); dyn_string_append_cstr (step4, "--base-file "); - quote = (strchr (base_file_name, ' ') - || strchr (base_file_name, '\t')); - dyn_string_append_cstr (step4, + quote = (strchr (base_file_name, ' ') + || strchr (base_file_name, '\t')); + dyn_string_append_cstr (step4, (quote) ? "\"" : ""); dyn_string_append_cstr (step4, base_file_name); - dyn_string_append_cstr (step4, + dyn_string_append_cstr (step4, (quote) ? "\" " : " "); dyn_string_append_cstr (step4, "--output-exp "); - quote = (strchr (exp_file_name, ' ') - || strchr (exp_file_name, '\t')); - dyn_string_append_cstr (step4, + quote = (strchr (exp_file_name, ' ') + || strchr (exp_file_name, '\t')); + dyn_string_append_cstr (step4, (quote) ? "\"" : ""); dyn_string_append_cstr (step4, exp_file_name); - dyn_string_append_cstr (step4, + dyn_string_append_cstr (step4, (quote) ? "\"" : ""); if (dlltool_cmdline->length) { - dyn_string_append_cstr (step4, " "); - dyn_string_append_cstr (step4, dlltool_cmdline->s); + dyn_string_append_cstr (step4, " "); + dyn_string_append_cstr (step4, dlltool_cmdline->s); } if (output_lib_file_name) { - dyn_string_append_cstr (step4, " --output-lib "); - dyn_string_append_cstr (step4, output_lib_file_name); + dyn_string_append_cstr (step4, " --output-lib "); + dyn_string_append_cstr (step4, output_lib_file_name); } if (run (dlltool_name, step4->s)) cleanup_and_exit (1); - + dyn_string_delete (step4); } - + /* * Step 5. Link it all together and be done with it. * driver command line will look like the following: - * + * * % gcc -Wl,--dll foo.exp [rest ...] * */ @@ -1228,26 +1206,26 @@ Creating one, but that may not be what y { int quote; - dyn_string_t step5 = dyn_string_new (driver_cmdline->length - + strlen (exp_file_name) + dyn_string_t step5 = dyn_string_new (driver_cmdline->length + + strlen (exp_file_name) + 20); - quote = (strchr (exp_file_name, ' ') - || strchr (exp_file_name, '\t')); - dyn_string_append_cstr (step5, + quote = (strchr (exp_file_name, ' ') + || strchr (exp_file_name, '\t')); + dyn_string_append_cstr (step5, (quote) ? "\"" : ""); dyn_string_append_cstr (step5, exp_file_name); - dyn_string_append_cstr (step5, + dyn_string_append_cstr (step5, (quote) ? "\"" : ""); if (driver_cmdline->length) { - dyn_string_append_cstr (step5, " "); - dyn_string_append_cstr (step5, driver_cmdline->s); + dyn_string_append_cstr (step5, " "); + dyn_string_append_cstr (step5, driver_cmdline->s); } if (run (driver_name, step5->s)) cleanup_and_exit (1); - + dyn_string_delete (step5); } diff -uprN binutils-2.12.90.0.7/binutils/emul_aix.c binutils-2.12.90.0.9/binutils/emul_aix.c --- binutils-2.12.90.0.7/binutils/emul_aix.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/binutils/emul_aix.c Thu May 23 15:10:10 2002 @@ -80,7 +80,7 @@ ar_emul_aix_internal (after_bfd, file_na if (bfd_xcoff_is_xcoff64 (try_bfd) && (! X64)) return false; - if (bfd_xcoff_is_xcoff32 (try_bfd) + if (bfd_xcoff_is_xcoff32 (try_bfd) && bfd_check_format (try_bfd, bfd_object) && (! X32)) return false; @@ -140,7 +140,7 @@ ar_emul_aix5_replace (after_bfd, file_na "aix5coff64-rs6000", false); } -boolean +boolean ar_emul_aix_create (abfd_out, archive_file_name, file_name) bfd **abfd_out; char *archive_file_name; @@ -193,7 +193,7 @@ ar_emul_aix_parse_arg (arg) return true; } -struct bin_emulation_xfer_struct bin_aix_emulation = +struct bin_emulation_xfer_struct bin_aix_emulation = { ar_emul_aix_usage, ar_emul_aix_append, @@ -202,7 +202,7 @@ struct bin_emulation_xfer_struct bin_aix ar_emul_aix_parse_arg, }; -struct bin_emulation_xfer_struct bin_aix5_emulation = +struct bin_emulation_xfer_struct bin_aix5_emulation = { ar_emul_aix_usage, ar_emul_aix5_append, diff -uprN binutils-2.12.90.0.7/binutils/emul_vanilla.c binutils-2.12.90.0.9/binutils/emul_vanilla.c --- binutils-2.12.90.0.7/binutils/emul_vanilla.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/binutils/emul_vanilla.c Thu May 23 15:10:10 2002 @@ -20,7 +20,7 @@ #include "binemul.h" -struct bin_emulation_xfer_struct bin_vanilla_emulation = +struct bin_emulation_xfer_struct bin_vanilla_emulation = { ar_emul_default_usage, ar_emul_default_append, diff -uprN binutils-2.12.90.0.7/binutils/filemode.c binutils-2.12.90.0.9/binutils/filemode.c --- binutils-2.12.90.0.7/binutils/filemode.c Thu Mar 15 14:51:47 2001 +++ binutils-2.12.90.0.9/binutils/filemode.c Thu May 23 15:10:10 2002 @@ -57,7 +57,7 @@ static void setst PARAMS ((unsigned long 9 'x' if any user may execute, 't' if the file is "sticky" (will be retained in swap space after execution), '-' otherwise. - 'T' if the file is sticky but not executable. */ + 'T' if the file is sticky but not executable. */ #if 0 @@ -115,7 +115,7 @@ filemodestring (statp, str) #endif /* Like filemodestring, but only the relevant part of the `struct stat' - is given as an argument. */ + is given as an argument. */ void mode_string (mode, str) @@ -144,7 +144,7 @@ mode_string (mode, str) 'l' for symbolic links 's' for sockets 'p' for fifos - '-' for any other file type. */ + '-' for any other file type. */ #ifndef S_ISDIR #ifdef S_IFDIR @@ -227,7 +227,7 @@ ftypelet (bits) } /* Set the 's' and 't' flags in file attributes string CHARS, - according to the file mode BITS. */ + according to the file mode BITS. */ static void setst (bits, chars) @@ -238,7 +238,7 @@ setst (bits, chars) if (bits & S_ISUID) { if (chars[3] != 'x') - /* Set-uid, but not executable by owner. */ + /* Set-uid, but not executable by owner. */ chars[3] = 'S'; else chars[3] = 's'; @@ -248,7 +248,7 @@ setst (bits, chars) if (bits & S_ISGID) { if (chars[6] != 'x') - /* Set-gid, but not executable by group. */ + /* Set-gid, but not executable by group. */ chars[6] = 'S'; else chars[6] = 's'; @@ -258,7 +258,7 @@ setst (bits, chars) if (bits & S_ISVTX) { if (chars[9] != 'x') - /* Sticky, but not executable by others. */ + /* Sticky, but not executable by others. */ chars[9] = 'T'; else chars[9] = 't'; diff -uprN binutils-2.12.90.0.7/binutils/ieee.c binutils-2.12.90.0.9/binutils/ieee.c --- binutils-2.12.90.0.7/binutils/ieee.c Thu Mar 15 14:51:47 2001 +++ binutils-2.12.90.0.9/binutils/ieee.c Thu May 23 15:10:10 2002 @@ -344,7 +344,7 @@ ieee_read_number (info, pp, pv) } /* Read a number in an IEEE file. If ppresent is not NULL, the number - need not be there. */ + need not be there. */ static boolean ieee_read_optional_number (info, pp, pv, ppresent) @@ -1036,7 +1036,7 @@ parse_ieee_bb (info, pp) case 2: /* BB2: Global type definitions. The name is supposed to be - empty, but we don't check. */ + empty, but we don't check. */ if (! debug_set_filename (info->dhandle, "*global*")) return false; info->saw_filename = true; @@ -6207,7 +6207,7 @@ ieee_end_struct_type (p) /* If we were ignoring this struct definition because it was a duplicate defintion, just through away whatever bytes we have - accumulated. Leave the type on the stack. */ + accumulated. Leave the type on the stack. */ if (info->type_stack->type.ignorep) return true; @@ -6761,7 +6761,7 @@ ieee_tag_type (p, name, id, kind) if (! nt->type.localp) { /* This is a duplicate of a global type, so it must be - local. */ + local. */ localp = true; } } diff -uprN binutils-2.12.90.0.7/binutils/is-ranlib.c binutils-2.12.90.0.9/binutils/is-ranlib.c --- binutils-2.12.90.0.7/binutils/is-ranlib.c Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/binutils/is-ranlib.c Thu May 23 15:10:10 2002 @@ -1,3 +1,3 @@ -/* Linked with ar.o to flag that this program is 'ranlib' (not 'ar'). */ +/* Linked with ar.o to flag that this program is 'ranlib' (not 'ar'). */ int is_ranlib = 1; diff -uprN binutils-2.12.90.0.7/binutils/is-strip.c binutils-2.12.90.0.9/binutils/is-strip.c --- binutils-2.12.90.0.7/binutils/is-strip.c Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/binutils/is-strip.c Thu May 23 15:10:10 2002 @@ -1,4 +1,4 @@ /* Linked with objcopy.o to flag that this program is 'strip' (not - 'objcopy'). */ + 'objcopy'). */ int is_strip = 1; diff -uprN binutils-2.12.90.0.7/binutils/maybe-ranlib.c binutils-2.12.90.0.9/binutils/maybe-ranlib.c --- binutils-2.12.90.0.7/binutils/maybe-ranlib.c Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/binutils/maybe-ranlib.c Thu May 23 15:10:10 2002 @@ -1,4 +1,4 @@ /* Linked with ar.o to flag that this program decides at runtime - (using argv[0] if it is is 'ar' or 'ranlib'. */ + (using argv[0] if it is is 'ar' or 'ranlib'. */ int is_ranlib = -1; diff -uprN binutils-2.12.90.0.7/binutils/maybe-strip.c binutils-2.12.90.0.9/binutils/maybe-strip.c --- binutils-2.12.90.0.7/binutils/maybe-strip.c Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/binutils/maybe-strip.c Thu May 23 15:10:10 2002 @@ -1,4 +1,4 @@ /* Linked with objcopy.o to flag that this program decides at runtime - (using argv[0] if it is is 'strip' or 'objcopy'. */ + (using argv[0] if it is is 'strip' or 'objcopy'. */ int is_strip = -1; diff -uprN binutils-2.12.90.0.7/binutils/nlmconv.c binutils-2.12.90.0.9/binutils/nlmconv.c --- binutils-2.12.90.0.7/binutils/nlmconv.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/binutils/nlmconv.c Sun May 26 09:57:12 2002 @@ -37,12 +37,12 @@ #include "bucomm.h" #include "safe-ctype.h" -#include +#include "ansidecl.h" #include #include #include #include -#include +#include "getopt.h" /* Internal BFD NLM header. */ #include "libnlm.h" @@ -559,7 +559,7 @@ main (argc, argv) sym->section = got_sec->output_section; } #endif - } + } /* If this is a global symbol, check the export list. */ if ((sym->flags & (BSF_EXPORT | BSF_GLOBAL)) != 0) @@ -635,7 +635,7 @@ main (argc, argv) non_fatal (_("warning: symbol %s imported but not in import list"), bfd_asymbol_name (sym)); } - + /* See if it's one of the special named symbols. */ if ((sym->flags & BSF_DEBUGGING) == 0) { @@ -699,7 +699,7 @@ main (argc, argv) } bfd_set_symtab (outbfd, outsyms, symcount + newsymcount); - + if (! gotstart) non_fatal (_("warning: START procedure %s not defined"), start_procedure); if (! gotexit) @@ -1810,7 +1810,7 @@ powerpc_build_stubs (inbfd, outbfd, symb item->next = powerpc_stubs; powerpc_stubs = item; - + ++stubcount; } @@ -1893,7 +1893,7 @@ powerpc_resolve_stubs (inbfd, outbfd) reloc->address = l->toc_index + got_sec->output_offset; reloc->addend = 0; reloc->howto = bfd_reloc_type_lookup (inbfd, BFD_RELOC_32); - + *r++ = reloc; } diff -uprN binutils-2.12.90.0.7/binutils/nlmheader.y binutils-2.12.90.0.9/binutils/nlmheader.y --- binutils-2.12.90.0.7/binutils/nlmheader.y Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/binutils/nlmheader.y Sun May 26 09:57:12 2002 @@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place - Suit This implementation is based on the description in the NetWare Tool Maker Specification manual, edition 1.0. */ -#include +#include "ansidecl.h" #include #include "safe-ctype.h" #include "bfd.h" diff -uprN binutils-2.12.90.0.7/binutils/nm.c binutils-2.12.90.0.9/binutils/nm.c --- binutils-2.12.90.0.7/binutils/nm.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/binutils/nm.c Thu May 23 15:10:10 2002 @@ -1036,7 +1036,7 @@ filter_symbols (abfd, dynamic, minisyms, asymbol *sym; PROGRESS (1); - + sym = bfd_minisymbol_to_symbol (abfd, dynamic, (const PTR) from, store); if (sym == NULL) bfd_fatal (bfd_get_filename (abfd)); @@ -1145,7 +1145,7 @@ print_symbols (abfd, dynamic, minisyms, /* Print the symbols when sorting by size. */ -static void +static void print_size_symbols (abfd, dynamic, symsizes, symcount, archive_bfd) bfd *abfd; boolean dynamic; @@ -1292,7 +1292,8 @@ print_symbol (abfd, sym, archive_bfd) bfd_asymbol_name (*r->sym_ptr_ptr)) == 0 && bfd_find_nearest_line (abfd, secs[i], syms, r->address, &filename, - &functionname, &lineno)) + &functionname, &lineno) + && filename != NULL) { /* We only print the first one we find. */ printf ("\t%s:%u", filename, lineno); diff -uprN binutils-2.12.90.0.7/binutils/not-ranlib.c binutils-2.12.90.0.9/binutils/not-ranlib.c --- binutils-2.12.90.0.7/binutils/not-ranlib.c Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/binutils/not-ranlib.c Thu May 23 15:10:10 2002 @@ -1,3 +1,3 @@ -/* Linked with ar.o to flag that this program is 'ar' (not 'ranlib'). */ +/* Linked with ar.o to flag that this program is 'ar' (not 'ranlib'). */ int is_ranlib = 0; diff -uprN binutils-2.12.90.0.7/binutils/not-strip.c binutils-2.12.90.0.9/binutils/not-strip.c --- binutils-2.12.90.0.7/binutils/not-strip.c Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/binutils/not-strip.c Thu May 23 15:10:10 2002 @@ -1,4 +1,4 @@ /* Linked with objcopy.o to flag that this program is 'objcopy' (not - 'strip'). */ + 'strip'). */ int is_strip = 0; diff -uprN binutils-2.12.90.0.7/binutils/objcopy.c binutils-2.12.90.0.9/binutils/objcopy.c --- binutils-2.12.90.0.7/binutils/objcopy.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/binutils/objcopy.c Thu May 23 15:10:10 2002 @@ -32,7 +32,7 @@ /* A list of symbols to explicitly strip out, or to keep. A linked list is good enough for a small number from the command line, but this will slow things down a lot if many symbols are being - deleted. */ + deleted. */ struct symlist { @@ -97,7 +97,7 @@ static asymbol **osympp = NULL; /* Outpu static int copy_byte = -1; static int interleave = 4; -static boolean verbose; /* Print file and target names. */ +static boolean verbose; /* Print file and target names. */ static boolean preserve_dates; /* Preserve input file timestamp. */ static int status = 0; /* Exit status. */ @@ -110,7 +110,7 @@ enum strip_action STRIP_ALL /* strip all symbols */ }; -/* Which symbols to remove. */ +/* Which symbols to remove. */ static enum strip_action strip_symbols; enum locals_action @@ -339,7 +339,7 @@ extern char *program_name; /* This flag distinguishes between strip and objcopy: 1 means this is 'strip'; 0 means this is 'objcopy'. - -1 means if we should use argv[0] to decide. */ + -1 means if we should use argv[0] to decide. */ extern int is_strip; /* The maximum length of an S record. This variable is declared in srec.c @@ -564,7 +564,7 @@ add_specific_symbol (name, list) *list = tmp_list; } -/* Add symbols listed in `filename' to strip_specific_list. */ +/* Add symbols listed in `filename' to strip_specific_list. */ #define IS_WHITESPACE(c) ((c) == ' ' || (c) == '\t') #define IS_LINE_TERMINATOR(c) ((c) == '\n' || (c) == '\r' || (c) == '\0') @@ -579,7 +579,7 @@ add_specific_symbols (filename, list) 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) @@ -598,7 +598,7 @@ add_specific_symbols (filename, list) buffer [st.st_size + 1] = '\0'; line_count = 1; - + for (line = buffer; * line != '\0'; line ++) { char * eol; @@ -617,7 +617,7 @@ add_specific_symbols (filename, list) ++ eol; finished = true; break; - + case '\r': * eol = '\0'; /* Cope with \r\n. */ @@ -625,18 +625,18 @@ add_specific_symbols (filename, list) ++ eol; finished = true; break; - + case 0: finished = true; break; - + case '#': /* Line comment, Terminate the line here, in case a name is present and then allow the rest of the loop to find the real end of the line. */ * eol = '\0'; break; - + default: break; } @@ -653,8 +653,8 @@ add_specific_symbols (filename, list) for (name_end = name; (! IS_WHITESPACE (* name_end)) && (! IS_LINE_TERMINATOR (* name_end)); - name_end ++) - ; + name_end ++) + ; if (! IS_LINE_TERMINATOR (* name_end)) { @@ -667,7 +667,7 @@ add_specific_symbols (filename, list) non_fatal (_("Ignoring rubbish found on line %d of %s"), line_count, filename); } - + * name_end = '\0'; if (name_end > name) @@ -797,7 +797,7 @@ filter_symbols (abfd, obfd, osyms, isyms && ((*bfd_get_section (sym)->symbol_ptr_ptr)->flags & BSF_KEEP) != 0)) keep = 1; - else if (relocatable /* Relocatable file. */ + else if (relocatable /* Relocatable file. */ && (flags & (BSF_GLOBAL | BSF_WEAK)) != 0) keep = 1; else if (bfd_decode_symclass (sym) == 'I') @@ -960,8 +960,8 @@ copy_object (ibfd, obfd) start = bfd_get_start_address (ibfd); start += change_start; - /* Neither the start address nor the flags - need to be set for a core file. */ + /* Neither the start address nor the flags + need to be set for a core file. */ if (bfd_get_format (obfd) != bfd_core) { if (!bfd_set_start_address (obfd, start) @@ -1088,8 +1088,8 @@ copy_object (ibfd, obfd) size + (gap_stop - gap_start))) { non_fatal (_("Can't fill gap after %s: %s"), - bfd_get_section_name (obfd, osections[i]), - bfd_errmsg (bfd_get_error ())); + bfd_get_section_name (obfd, osections[i]), + bfd_errmsg (bfd_get_error ())); status = 1; break; } @@ -1113,8 +1113,8 @@ copy_object (ibfd, obfd) pad_to - lma)) { non_fatal (_("Can't add padding to %s: %s"), - bfd_get_section_name (obfd, osections[c - 1]), - bfd_errmsg (bfd_get_error ())); + bfd_get_section_name (obfd, osections[c - 1]), + bfd_errmsg (bfd_get_error ())); status = 1; } else @@ -1363,7 +1363,7 @@ copy_archive (ibfd, obfd, output_target) if (!bfd_close (output_bfd)) { bfd_nonfatal (bfd_get_filename (output_bfd)); - /* Error in new object file. Don't change archive. */ + /* Error in new object file. Don't change archive. */ status = 1; } @@ -1493,7 +1493,7 @@ add_section_rename (old_name, new_name, if (strcmp (rename->new_name, new_name) == 0 && rename->flags == flags) return; - + fatal (_("Multiple renames of section %s"), old_name); } @@ -1503,7 +1503,7 @@ add_section_rename (old_name, new_name, rename->new_name = new_name; rename->flags = flags; rename->next = section_rename_list; - + section_rename_list = rename; } @@ -1553,7 +1553,7 @@ setup_section (ibfd, isection, obfdarg) flagword flags; const char *err; const char * name; - + if ((bfd_get_section_flags (ibfd, isection) & SEC_DEBUGGING) != 0 && (strip_symbols == STRIP_DEBUG || strip_symbols == STRIP_UNNEEDED @@ -1573,7 +1573,7 @@ setup_section (ibfd, isection, obfdarg) /* Get the, possibly new, name of the output section. */ name = find_section_rename (ibfd, isection, & flags); - + osection = bfd_make_section_anyway (obfd, name); if (osection == NULL) @@ -1711,7 +1711,7 @@ copy_section (ibfd, isection, obfdarg) if (size == 0 || osection == 0) return; - /* Core files do not need to be relocated. */ + /* Core files do not need to be relocated. */ if (bfd_get_format (obfd) == bfd_core) relsize = 0; else @@ -1732,7 +1732,7 @@ copy_section (ibfd, isection, obfdarg) if (strip_symbols == STRIP_ALL) { /* Remove relocations which are not in - keep_strip_specific_list. */ + keep_strip_specific_list. */ arelent **temp_relpp; long temp_relcount = 0; long i; @@ -1755,7 +1755,7 @@ copy_section (ibfd, isection, obfdarg) isection->_cooked_size = isection->_raw_size; isection->reloc_done = true; - if (bfd_get_section_flags (ibfd, isection) & SEC_HAS_CONTENTS + if (bfd_get_section_flags (ibfd, isection) & SEC_HAS_CONTENTS && bfd_get_section_flags (obfd, osection) & SEC_HAS_CONTENTS) { PTR memhunk = (PTR) xmalloc ((unsigned) size); @@ -2124,9 +2124,9 @@ copy_main (argc, argv) fatal (_("byte number must be non-negative")); break; - case 'B': - binary_architecture = optarg; - break; + case 'B': + binary_architecture = optarg; + break; case 'i': interleave = atoi (optarg); @@ -2492,13 +2492,13 @@ copy_main (argc, argv) set_start_set = true; break; - case OPTION_SREC_LEN: - Chunk = parse_vma (optarg, "--srec-len"); - break; + case OPTION_SREC_LEN: + Chunk = parse_vma (optarg, "--srec-len"); + break; - case OPTION_SREC_FORCES3: + case OPTION_SREC_FORCES3: S3Forced = true; - break; + break; case OPTION_STRIP_SYMBOLS: add_specific_symbols (optarg, &strip_specific_list); @@ -2561,16 +2561,16 @@ copy_main (argc, argv) if (binary_architecture != (char *) NULL) { if (input_target && strcmp (input_target, "binary") == 0) - { - const bfd_arch_info_type * temp_arch_info; + { + const bfd_arch_info_type * temp_arch_info; temp_arch_info = bfd_scan_arch (binary_architecture); - if (temp_arch_info != NULL) - bfd_external_binary_architecture = temp_arch_info->arch; - else - fatal (_("architecture %s unknown"), binary_architecture); - } + if (temp_arch_info != NULL) + bfd_external_binary_architecture = temp_arch_info->arch; + else + fatal (_("architecture %s unknown"), binary_architecture); + } else { non_fatal (_("Warning: input target 'binary' required for binary architecture parameter.")); diff -uprN binutils-2.12.90.0.7/binutils/objdump.c binutils-2.12.90.0.9/binutils/objdump.c --- binutils-2.12.90.0.7/binutils/objdump.c Sun Feb 3 11:22:30 2002 +++ binutils-2.12.90.0.9/binutils/objdump.c Thu May 23 15:10:10 2002 @@ -301,9 +301,6 @@ dump_section_header (abfd, section, igno PF (SEC_HAS_CONTENTS, "CONTENTS"); PF (SEC_ALLOC, "ALLOC"); PF (SEC_CONSTRUCTOR, "CONSTRUCTOR"); - PF (SEC_CONSTRUCTOR_TEXT, "CONSTRUCTOR TEXT"); - PF (SEC_CONSTRUCTOR_DATA, "CONSTRUCTOR DATA"); - PF (SEC_CONSTRUCTOR_BSS, "CONSTRUCTOR BSS"); PF (SEC_LOAD, "LOAD"); PF (SEC_RELOC, "RELOC"); PF (SEC_READONLY, "READONLY"); @@ -319,6 +316,7 @@ dump_section_header (abfd, section, igno PF (SEC_SMALL_DATA, "SMALL_DATA"); PF (SEC_SHARED, "SHARED"); PF (SEC_ARCH_BIT_0, "ARCH_BIT_0"); + PF (SEC_THREAD_LOCAL, "THREAD_LOCAL"); if ((section->flags & SEC_LINK_ONCE) != 0) { @@ -363,7 +361,11 @@ dump_headers (abfd) #ifndef BFD64 printf (_("Idx Name Size VMA LMA File off Algn")); #else - printf (_("Idx Name Size VMA LMA File off Algn")); + /* With BFD64, non-ELF returns -1 and wants always 64 bit addresses. */ + if (bfd_get_arch_size (abfd) == 32) + printf (_("Idx Name Size VMA LMA File off Algn")); + else + printf (_("Idx Name Size VMA LMA File off Algn")); #endif if (wide_output) @@ -439,7 +441,7 @@ slurp_dynamic_symtab (abfd) /* Filter out (in place) symbols that are useless for disassembly. COUNT is the number of elements in SYMBOLS. - Return the number of useful symbols. */ + Return the number of useful symbols. */ static long remove_useless_symbols (symbols, count) @@ -467,7 +469,7 @@ remove_useless_symbols (symbols, count) /* Sort symbols into value order. */ -static int +static int compare_symbols (ap, bp) const PTR ap; const PTR bp; @@ -684,7 +686,7 @@ find_symbol_for_address (abfd, sec, vma, long min = 0; long max = sorted_symcount; long thisplace; - unsigned int opb = bfd_octets_per_byte (abfd); + unsigned int opb = bfd_octets_per_byte (abfd); if (sorted_symcount < 1) return NULL; @@ -721,7 +723,7 @@ find_symbol_for_address (abfd, sec, vma, /* If the file is relocateable, and the symbol could be from this section, prefer a symbol from this section over symbols from others, even if the other symbol's value might be closer. - + Note that this may be wrong for some symbol references if the sections have overlapping memory ranges, but in that case there's no way to tell what's desired without looking at the relocation @@ -950,7 +952,7 @@ skip_to_line (p, line, show) if (strchr (buf, '\n') != NULL) ++p->line; } -} +} /* Show the line number, or the source line, in a dissassembly listing. */ @@ -1071,10 +1073,10 @@ show_line (abfd, section, addr_offset) p->next = print_files; print_files = p; - if (file_start_context) - l = 0; - else - l = line - SHOW_PRECEDING_CONTEXT_LINES; + if (file_start_context) + l = 0; + else + l = line - SHOW_PRECEDING_CONTEXT_LINES; if (l < 0) l = 0; skip_to_line (p, l, false); @@ -1169,8 +1171,8 @@ objdump_sprintf VPARAMS ((SFILE *f, cons /* Disassemble some data in memory between given values. */ static void -disassemble_bytes (info, disassemble_fn, insns, data, - start_offset, stop_offset, relppp, +disassemble_bytes (info, disassemble_fn, insns, data, + start_offset, stop_offset, relppp, relppend) struct disassemble_info *info; disassembler_ftype disassemble_fn; @@ -1239,8 +1241,8 @@ disassemble_bytes (info, disassemble_fn, && (info->insn_info_valid == 0 || info->branch_delay_insns == 0) && (z - addr_offset * opb >= SKIP_ZEROES - || (z == stop_offset * opb && - z - addr_offset * opb < SKIP_ZEROES_AT_END))) + || (z == stop_offset * opb && + z - addr_offset * opb < SKIP_ZEROES_AT_END))) { printf ("\t...\n"); @@ -1446,8 +1448,8 @@ disassemble_bytes (info, disassemble_fn, } if ((section->flags & SEC_RELOC) != 0 -#ifndef DISASSEMBLER_NEEDS_RELOCS - && dump_reloc_info +#ifndef DISASSEMBLER_NEEDS_RELOCS + && dump_reloc_info #endif ) { @@ -1583,7 +1585,7 @@ disassemble_data (abfd) disasm_info.mach = bfd_get_mach (abfd); disasm_info.disassembler_options = disassembler_options; disasm_info.octets_per_byte = opb; - + if (bfd_big_endian (abfd)) disasm_info.display_endian = disasm_info.endian = BFD_ENDIAN_BIG; else if (bfd_little_endian (abfd)) @@ -1615,10 +1617,10 @@ disassemble_data (abfd) continue; if ((section->flags & SEC_RELOC) != 0 -#ifndef DISASSEMBLER_NEEDS_RELOCS +#ifndef DISASSEMBLER_NEEDS_RELOCS && dump_reloc_info #endif - ) + ) { long relsize; @@ -1692,7 +1694,7 @@ disassemble_data (abfd) asymbol *nextsym; unsigned long nextstop_offset; boolean insns; - + if (sym != NULL && bfd_asymbol_value (sym) <= section->vma + addr_offset) { int x; @@ -1717,7 +1719,7 @@ disassemble_data (abfd) false); printf (":\n"); } - + if (sym != NULL && bfd_asymbol_value (sym) > section->vma + addr_offset) nextsym = sym; else if (sym == NULL) @@ -1738,7 +1740,7 @@ disassemble_data (abfd) else nextsym = sorted_syms[place]; } - + if (sym != NULL && bfd_asymbol_value (sym) > section->vma + addr_offset) { nextstop_offset = bfd_asymbol_value (sym) - section->vma; @@ -1753,7 +1755,7 @@ disassemble_data (abfd) 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. */ @@ -1769,14 +1771,14 @@ disassemble_data (abfd) insns = true; else insns = false; - - disassemble_bytes (&disasm_info, disassemble_fn, insns, data, - addr_offset, nextstop_offset, &relpp, relppend); - + + disassemble_bytes (&disasm_info, disassemble_fn, insns, data, + addr_offset, nextstop_offset, &relpp, relppend); + addr_offset = nextstop_offset; sym = nextsym; } - + free (data); if (relbuf != NULL) free (relbuf); @@ -1839,13 +1841,13 @@ read_section_stabs (abfd, stabsect_name, exit_status = 1; return false; } - + stab_size = bfd_section_size (abfd, stabsect); stabstr_size = bfd_section_size (abfd, stabstrsect); stabs = (bfd_byte *) xmalloc (stab_size); strtab = (char *) xmalloc (stabstr_size); - + if (! bfd_get_section_contents (abfd, stabsect, (PTR) stabs, 0, stab_size)) { non_fatal (_("Reading %s section of %s failed: %s"), @@ -1927,7 +1929,7 @@ print_section_stabs (abfd, stabsect_name printf ("\n%-6d ", i); /* Either print the stab name, or, if unnamed, print its number - again (makes consistent formatting for tools like awk). */ + again (makes consistent formatting for tools like awk). */ name = bfd_get_stab_name (type); if (name != NULL) printf ("%-6s", name); @@ -2248,15 +2250,15 @@ dump_data (abfd) if (stop_offset > bfd_section_size (abfd, section) / opb) stop_offset = bfd_section_size (abfd, section) / opb; } - for (addr_offset = start_offset; - addr_offset < stop_offset; addr_offset += onaline) + for (addr_offset = start_offset; + addr_offset < stop_offset; addr_offset += onaline) { bfd_size_type j; - printf (" %04lx ", (unsigned long int) - (addr_offset + section->vma)); - for (j = addr_offset * opb; - j < addr_offset * opb + onaline; j++) + printf (" %04lx ", (unsigned long int) + (addr_offset + section->vma)); + for (j = addr_offset * opb; + j < addr_offset * opb + onaline; j++) { if (j < stop_offset * opb) printf ("%02x", (unsigned) (data[j])); @@ -2917,7 +2919,7 @@ main (argc, argv) show_version = true; seenflag = true; break; - + default: usage (stderr, 1); } diff -uprN binutils-2.12.90.0.7/binutils/rclex.l binutils-2.12.90.0.9/binutils/rclex.l --- binutils-2.12.90.0.7/binutils/rclex.l Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/binutils/rclex.l Thu May 23 15:10:10 2002 @@ -452,7 +452,7 @@ get_string (len) as->s = xmalloc (len); as->next = strings; - strings = as->next; + strings = as; return as->s; } diff -uprN binutils-2.12.90.0.7/binutils/rcparse.y binutils-2.12.90.0.9/binutils/rcparse.y --- binutils-2.12.90.0.7/binutils/rcparse.y Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/binutils/rcparse.y Thu May 23 15:10:10 2002 @@ -153,28 +153,21 @@ static unsigned long class; input: /* empty */ - | input newcmd accelerator - | input newcmd bitmap - | input newcmd cursor - | input newcmd dialog - | input newcmd font - | input newcmd icon - | input newcmd language - | input newcmd menu - | input newcmd menuex - | input newcmd messagetable - | input newcmd rcdata - | input newcmd stringtable - | input newcmd user - | input newcmd versioninfo - | input newcmd IGNORED_TOKEN - ; - -newcmd: - /* empty */ - { - rcparse_discard_strings (); - } + | input accelerator + | input bitmap + | input cursor + | input dialog + | input font + | input icon + | input language + | input menu + | input menuex + | input messagetable + | input rcdata + | input stringtable + | input user + | input versioninfo + | input IGNORED_TOKEN ; /* Accelerator resources. */ @@ -183,6 +176,9 @@ accelerator: id ACCELERATORS suboptions BEG acc_entries END { define_accelerator ($1, &$3, $5); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -309,6 +305,9 @@ bitmap: id BITMAP memflags_move file_name { define_bitmap ($1, &$3, $4); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -318,6 +317,9 @@ cursor: id CURSOR memflags_move_discard file_name { define_cursor ($1, &$3, $4); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -345,6 +347,9 @@ dialog: styles BEG controls END { define_dialog ($1, &sub_res_info, &dialog); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } | id DIALOGEX memflags_move exstyle posnumexpr cnumexpr cnumexpr cnumexpr @@ -369,6 +374,9 @@ dialog: styles BEG controls END { define_dialog ($1, &sub_res_info, &dialog); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } | id DIALOGEX memflags_move exstyle posnumexpr cnumexpr cnumexpr cnumexpr cnumexpr @@ -394,6 +402,9 @@ dialog: styles BEG controls END { define_dialog ($1, &sub_res_info, &dialog); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -902,6 +913,9 @@ font: id FONT memflags_move_discard file_name { define_font ($1, &$3, $4); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -911,6 +925,9 @@ icon: id ICON memflags_move_discard file_name { define_icon ($1, &$3, $4); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -930,6 +947,9 @@ menu: id MENU suboptions BEG menuitems END { define_menu ($1, &$3, $5); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -1017,6 +1037,9 @@ menuex: id MENUEX suboptions BEG menuexitems END { define_menu ($1, &$3, $5); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -1083,6 +1106,9 @@ messagetable: id MESSAGETABLE memflags_move file_name { define_messagetable ($1, &$3, $4); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -1092,6 +1118,9 @@ rcdata: id RCDATA suboptions BEG optrcdata_data END { define_rcdata ($1, &$3, $5.first); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -1171,10 +1200,16 @@ string_data: | string_data numexpr QUOTEDSTRING { define_stringtable (&sub_res_info, $2, $3); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } | string_data numexpr ',' QUOTEDSTRING { define_stringtable (&sub_res_info, $2, $4); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -1185,10 +1220,16 @@ user: id id suboptions BEG optrcdata_data END { define_user_data ($1, $2, &$3, $5.first); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } | id id suboptions file_name { define_user_file ($1, $2, &$3, $4); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; @@ -1198,6 +1239,9 @@ versioninfo: id VERSIONINFO fixedverinfo BEG verblocks END { define_versioninfo ($1, language, $3, $5); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); } ; diff -uprN binutils-2.12.90.0.7/binutils/rdcoff.c binutils-2.12.90.0.9/binutils/rdcoff.c --- binutils-2.12.90.0.7/binutils/rdcoff.c Thu Mar 15 14:51:50 2001 +++ binutils-2.12.90.0.9/binutils/rdcoff.c Thu May 23 15:10:10 2002 @@ -655,7 +655,7 @@ parse_coff_symbol (abfd, types, sym, cof break; } - return true; + return true; } /* Determine if a symbol has external visibility. */ @@ -666,13 +666,13 @@ external_coff_symbol_p (sym_class) { switch (sym_class) { - case C_EXT: - case C_WEAKEXT: - return true; + case C_EXT: + case C_WEAKEXT: + return true; default: break; } - return false; + return false; } /* This is the main routine. It looks through all the symbols and @@ -786,7 +786,7 @@ parse_coff (abfd, syms, symcount, dhandl if (syment.n_type == T_NULL) break; /* Fall through. */ - case C_WEAKEXT: + case C_WEAKEXT: case C_EXT: if (ISFCN (syment.n_type)) { diff -uprN binutils-2.12.90.0.7/binutils/rddbg.c binutils-2.12.90.0.9/binutils/rddbg.c --- binutils-2.12.90.0.7/binutils/rddbg.c Thu Mar 15 14:51:50 2001 +++ binutils-2.12.90.0.9/binutils/rddbg.c Thu May 23 15:10:10 2002 @@ -185,7 +185,7 @@ read_section_stabs_debugging_info (abfd, char *f, *s; f = NULL; - + if (stroff + strx > strsize) { fprintf (stderr, "%s: %s: stab entry %d is corrupt, strx = 0x%x, type = %d\n", @@ -193,9 +193,9 @@ read_section_stabs_debugging_info (abfd, (stab - stabs) / 12, strx, type); continue; } - + s = (char *) strings + stroff + strx; - + while (s[strlen (s) - 1] == '\\' && stab + 12 < stabs + stabsize) { diff -uprN binutils-2.12.90.0.7/binutils/readelf.c binutils-2.12.90.0.9/binutils/readelf.c --- binutils-2.12.90.0.7/binutils/readelf.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/binutils/readelf.c Thu May 23 15:10:10 2002 @@ -534,7 +534,7 @@ print_symbol (width, symbol) printf (symbol); else if (width < 0) printf ("%-*.*s", width, width, symbol); - else + else printf ("%-.*s", width, symbol); } @@ -911,7 +911,7 @@ dump_relocations (file, rel_offset, rel_ } else { - if (elf_header.e_machine == EM_MIPS) + if (elf_header.e_machine == EM_MIPS) { type = ELF64_MIPS_R_TYPE (info); type2 = ELF64_MIPS_R_TYPE2 (info); @@ -1041,7 +1041,7 @@ dump_relocations (file, rel_offset, rel_ case EM_MIPS: case EM_MIPS_RS3_LE: rtype = elf_mips_reloc_type (type); - if (!is_32bit_elf) + if (!is_32bit_elf) { rtype2 = elf_mips_reloc_type (type2); rtype3 = elf_mips_reloc_type (type3); @@ -1095,10 +1095,10 @@ dump_relocations (file, rel_offset, rel_ rtype = elf_x86_64_reloc_type (type); break; - case EM_S390_OLD: - case EM_S390: - rtype = elf_s390_reloc_type (type); - break; + case EM_S390_OLD: + case EM_S390: + rtype = elf_s390_reloc_type (type); + break; case EM_XSTORMY16: rtype = elf_xstormy16_reloc_type (type); @@ -1151,7 +1151,7 @@ dump_relocations (file, rel_offset, rel_ putchar ('\n'); - if (! is_32bit_elf && elf_header.e_machine == EM_MIPS) + if (! is_32bit_elf && elf_header.e_machine == EM_MIPS) { printf (" Type2: "); @@ -1175,7 +1175,7 @@ dump_relocations (file, rel_offset, rel_ else printf ("%-17.17s", rtype3); - putchar ('\n'); + putchar ('\n'); } } @@ -1705,12 +1705,12 @@ get_machine_flags (e_flags, e_machine) decode_ARM_machine_flags (e_flags, buf); break; - case EM_68K: - if (e_flags & EF_CPU32) - strcat (buf, ", cpu32"); + case EM_68K: + if (e_flags & EF_CPU32) + strcat (buf, ", cpu32"); if (e_flags & EF_M68000) strcat (buf, ", m68000"); - break; + break; case EM_PPC: if (e_flags & EF_PPC_EMB) @@ -1987,6 +1987,7 @@ get_segment_type (p_type) case PT_NOTE: return "NOTE"; case PT_SHLIB: return "SHLIB"; case PT_PHDR: return "PHDR"; + case PT_TLS: return "TLS"; case PT_GNU_EH_FRAME: return "GNU_EH_FRAME"; @@ -2392,7 +2393,7 @@ parse_args (argc, argv) else { unsigned int index = 0; - + do_debugging = 0; while (optarg[index]) @@ -2443,7 +2444,7 @@ parse_args (argc, argv) case 'O': do_debug_loc = 1; break; - + default: warn (_("Unrecognized debug option '%s'\n"), optarg); break; @@ -3202,6 +3203,7 @@ get_elf_section_flags (sh_flags) case SHF_LINK_ORDER: strcat (buff, "L"); break; case SHF_OS_NONCONFORMING: strcat (buff, "O"); break; case SHF_GROUP: strcat (buff, "G"); break; + case SHF_TLS: strcat (buff, "T"); break; default: if (flag & SHF_MASKOS) @@ -3425,13 +3427,13 @@ process_section_headers (file) { putchar (' '); print_vma (section->sh_addr, LONG_HEX); - if ((long) section->sh_offset == section->sh_offset) - printf (" %8.8lx", (unsigned long) section->sh_offset); - else - { - printf (" "); - print_vma (section->sh_offset, LONG_HEX); - } + if ((long) section->sh_offset == section->sh_offset) + printf (" %8.8lx", (unsigned long) section->sh_offset); + else + { + printf (" "); + print_vma (section->sh_offset, LONG_HEX); + } printf ("\n "); print_vma (section->sh_size, LONG_HEX); printf (" "); @@ -4242,7 +4244,10 @@ static const char * get_dynamic_flags (flags) bfd_vma flags; { - static char buff [64]; + static char buff [128]; + char *p = buff; + + *p = '\0'; while (flags) { bfd_vma flag; @@ -4250,14 +4255,20 @@ get_dynamic_flags (flags) flag = flags & - flags; flags &= ~ flag; + if (p != buff) + *p++ = ' '; + switch (flag) { - case DF_ORIGIN: strcat (buff, "ORIGIN "); break; - case DF_SYMBOLIC: strcat (buff, "SYMBOLIC "); break; - case DF_TEXTREL: strcat (buff, "TEXTREL "); break; - case DF_BIND_NOW: strcat (buff, "BIND_NOW "); break; - default: strcat (buff, "unknown "); break; + case DF_ORIGIN: strcpy (p, "ORIGIN"); break; + case DF_SYMBOLIC: strcpy (p, "SYMBOLIC"); break; + case DF_TEXTREL: strcpy (p, "TEXTREL"); break; + case DF_BIND_NOW: strcpy (p, "BIND_NOW"); break; + case DF_STATIC_TLS: strcpy (p, "STATIC_TLS"); break; + default: strcpy (p, "unknown"); break; } + + p = strchr (p, '\0'); } return buff; } @@ -4443,7 +4454,7 @@ process_dynamic_segment (file) { case DT_FLAGS: if (do_dynamic) - printf ("%s", get_dynamic_flags (entry->d_un.d_val)); + puts (get_dynamic_flags (entry->d_un.d_val)); break; case DT_AUXILIARY: @@ -5252,6 +5263,7 @@ get_symbol_type (type) case STT_SECTION: return "SECTION"; case STT_FILE: return "FILE"; case STT_COMMON: return "COMMON"; + case STT_TLS: return "TLS"; default: if (type >= STT_LOPROC && type <= STT_HIPROC) { @@ -6169,12 +6181,12 @@ display_debug_lines (section, start, fil state_machine_regs.line += adv; printf (_(" and Line by %d to %d\n"), adv, state_machine_regs.line); - } - else switch (op_code) + } + else switch (op_code) { case DW_LNS_extended_op: data += process_extended_line_op (data, info.li_default_is_stmt, - debug_line_pointer_size); + debug_line_pointer_size); break; case DW_LNS_copy: @@ -6243,17 +6255,17 @@ display_debug_lines (section, start, fil case DW_LNS_set_prologue_end: printf (_(" Set prologue_end to true\n")); break; - + case DW_LNS_set_epilogue_begin: printf (_(" Set epilogue_begin to true\n")); break; - + case DW_LNS_set_isa: adv = read_leb128 (data, & bytes_read, 0); data += bytes_read; printf (_(" Set ISA to %d\n"), adv); break; - + default: printf (_(" Unknown opcode %d with operands: "), op_code); { @@ -6529,6 +6541,7 @@ get_AT_name (attribute) case DW_AT_src_coords: return "DW_AT_src_coords"; case DW_AT_body_begin: return "DW_AT_body_begin"; case DW_AT_body_end: return "DW_AT_body_end"; + case DW_AT_GNU_vector: return "DW_AT_GNU_vector"; default: { static char buffer [100]; @@ -7251,7 +7264,7 @@ display_debug_loc (section, start, file) unsigned long bytes; unsigned char *section_begin = start; bfd_vma addr; - + addr = section->sh_addr; bytes = section->sh_size; section_end = start + bytes; @@ -7273,7 +7286,7 @@ display_debug_loc (section, start, file) while (1) { - /* Normally, the lists in the debug_loc section are related to a + /* 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 seperately here, we either have to store @@ -7284,20 +7297,20 @@ display_debug_loc (section, start, file) start += debug_line_pointer_size; end = byte_get (start, debug_line_pointer_size); start += debug_line_pointer_size; - + if (begin == 0 && end == 0) break; - + begin += addr; end += addr; - + length = byte_get (start, 2); start += 2; - + printf (" %8.8lx %8.8lx %8.8lx (", offset, begin, end); decode_location_expression (start, debug_line_pointer_size, length); printf (")\n"); - + start += length; } printf ("\n"); @@ -7484,7 +7497,7 @@ read_and_display_attr_value (attribute, data += bytes_read; printf (" %s", get_FORM_name (form)); return read_and_display_attr_value (attribute, form, data, cu_offset, - pointer_size); + pointer_size); } switch (form) @@ -7733,7 +7746,7 @@ read_and_display_attr (attribute, form, { printf (" %-18s:", get_AT_name (attribute)); data = read_and_display_attr_value (attribute, form, data, cu_offset, - pointer_size); + pointer_size); printf ("\n"); return data; } @@ -8372,102 +8385,102 @@ display_debug_frames (section, start, fi about to interpret instructions for the chunk. */ if (do_debug_frames_interp) - { - /* Start by making a pass over the chunk, allocating storage - and taking note of what registers are used. */ - unsigned char * tmp = start; - - while (start < block_end) - { - unsigned op, opa; - unsigned long reg; - - op = * start ++; - opa = op & 0x3f; - if (op & 0xc0) - op &= 0xc0; - - /* Warning: if you add any more cases to this switch, be - sure to add them to the corresponding switch below. */ - switch (op) - { - case DW_CFA_advance_loc: - break; - case DW_CFA_offset: - LEB (); - frame_need_space (fc, opa); - fc->col_type[opa] = DW_CFA_undefined; - break; - case DW_CFA_restore: - frame_need_space (fc, opa); - fc->col_type[opa] = DW_CFA_undefined; - break; - case DW_CFA_set_loc: - start += encoded_ptr_size; - break; - case DW_CFA_advance_loc1: - start += 1; - break; - case DW_CFA_advance_loc2: - start += 2; - break; - case DW_CFA_advance_loc4: - start += 4; - break; - case DW_CFA_offset_extended: - reg = LEB (); LEB (); - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; - break; - case DW_CFA_restore_extended: - reg = LEB (); - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; - break; - case DW_CFA_undefined: - reg = LEB (); - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; - break; - case DW_CFA_same_value: - reg = LEB (); - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; - break; - case DW_CFA_register: - reg = LEB (); LEB (); - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; - break; - case DW_CFA_def_cfa: - LEB (); LEB (); - break; - case DW_CFA_def_cfa_register: - LEB (); - break; - case DW_CFA_def_cfa_offset: - LEB (); - break; + { + /* Start by making a pass over the chunk, allocating storage + and taking note of what registers are used. */ + unsigned char * tmp = start; + + while (start < block_end) + { + unsigned op, opa; + unsigned long reg; + + op = * start ++; + opa = op & 0x3f; + if (op & 0xc0) + op &= 0xc0; + + /* Warning: if you add any more cases to this switch, be + sure to add them to the corresponding switch below. */ + switch (op) + { + case DW_CFA_advance_loc: + break; + case DW_CFA_offset: + LEB (); + frame_need_space (fc, opa); + fc->col_type[opa] = DW_CFA_undefined; + break; + case DW_CFA_restore: + frame_need_space (fc, opa); + fc->col_type[opa] = DW_CFA_undefined; + break; + case DW_CFA_set_loc: + start += encoded_ptr_size; + break; + case DW_CFA_advance_loc1: + start += 1; + break; + case DW_CFA_advance_loc2: + start += 2; + break; + case DW_CFA_advance_loc4: + start += 4; + break; + case DW_CFA_offset_extended: + reg = LEB (); LEB (); + frame_need_space (fc, reg); + fc->col_type[reg] = DW_CFA_undefined; + break; + case DW_CFA_restore_extended: + reg = LEB (); + frame_need_space (fc, reg); + fc->col_type[reg] = DW_CFA_undefined; + break; + case DW_CFA_undefined: + reg = LEB (); + frame_need_space (fc, reg); + fc->col_type[reg] = DW_CFA_undefined; + break; + case DW_CFA_same_value: + reg = LEB (); + frame_need_space (fc, reg); + fc->col_type[reg] = DW_CFA_undefined; + break; + case DW_CFA_register: + reg = LEB (); LEB (); + frame_need_space (fc, reg); + fc->col_type[reg] = DW_CFA_undefined; + break; + case DW_CFA_def_cfa: + LEB (); LEB (); + break; + case DW_CFA_def_cfa_register: + LEB (); + break; + case DW_CFA_def_cfa_offset: + LEB (); + break; #ifndef DW_CFA_GNU_args_size #define DW_CFA_GNU_args_size 0x2e #endif - case DW_CFA_GNU_args_size: - LEB (); - break; + case DW_CFA_GNU_args_size: + LEB (); + break; #ifndef DW_CFA_GNU_negative_offset_extended #define DW_CFA_GNU_negative_offset_extended 0x2f #endif - case DW_CFA_GNU_negative_offset_extended: - reg = LEB (); LEB (); - frame_need_space (fc, reg); - fc->col_type[reg] = DW_CFA_undefined; + case DW_CFA_GNU_negative_offset_extended: + reg = LEB (); LEB (); + frame_need_space (fc, reg); + fc->col_type[reg] = DW_CFA_undefined; - default: - break; - } - } - start = tmp; - } + default: + break; + } + } + start = tmp; + } /* Now we know what registers are used, make a second pass over the chunk, this time actually printing out the info. */ @@ -8484,16 +8497,16 @@ display_debug_frames (section, start, fi if (op & 0xc0) op &= 0xc0; - /* Warning: if you add any more cases to this switch, be - sure to add them to the corresponding switch above. */ + /* Warning: if you add any more cases to this switch, be + sure to add them to the corresponding switch above. */ switch (op) { case DW_CFA_advance_loc: if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); + frame_display_row (fc, &need_col_headers, &max_regs); else - printf (" DW_CFA_advance_loc: %d to %08lx\n", - opa * fc->code_factor, + printf (" DW_CFA_advance_loc: %d to %08lx\n", + opa * fc->code_factor, fc->pc_begin + opa * fc->code_factor); fc->pc_begin += opa * fc->code_factor; break; @@ -8501,7 +8514,7 @@ display_debug_frames (section, start, fi case DW_CFA_offset: roffs = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_offset: r%d at cfa%+ld\n", + printf (" DW_CFA_offset: r%d at cfa%+ld\n", opa, roffs * fc->data_factor); fc->col_type[opa] = DW_CFA_offset; fc->col_offset[opa] = roffs * fc->data_factor; @@ -8509,7 +8522,7 @@ display_debug_frames (section, start, fi case DW_CFA_restore: if (! do_debug_frames_interp) - printf (" DW_CFA_restore: r%d\n", opa); + printf (" DW_CFA_restore: r%d\n", opa); fc->col_type[opa] = cie->col_type[opa]; fc->col_offset[opa] = cie->col_offset[opa]; break; @@ -8518,19 +8531,19 @@ display_debug_frames (section, start, fi vma = byte_get (start, encoded_ptr_size); start += encoded_ptr_size; if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); + frame_display_row (fc, &need_col_headers, &max_regs); else - printf (" DW_CFA_set_loc: %08lx\n", (unsigned long)vma); + printf (" DW_CFA_set_loc: %08lx\n", (unsigned long)vma); fc->pc_begin = vma; break; case DW_CFA_advance_loc1: ofs = byte_get (start, 1); start += 1; if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); + frame_display_row (fc, &need_col_headers, &max_regs); else - printf (" DW_CFA_advance_loc1: %ld to %08lx\n", - ofs * fc->code_factor, + printf (" DW_CFA_advance_loc1: %ld to %08lx\n", + ofs * fc->code_factor, fc->pc_begin + ofs * fc->code_factor); fc->pc_begin += ofs * fc->code_factor; break; @@ -8538,10 +8551,10 @@ display_debug_frames (section, start, fi case DW_CFA_advance_loc2: ofs = byte_get (start, 2); start += 2; if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); + frame_display_row (fc, &need_col_headers, &max_regs); else - printf (" DW_CFA_advance_loc2: %ld to %08lx\n", - ofs * fc->code_factor, + printf (" DW_CFA_advance_loc2: %ld to %08lx\n", + ofs * fc->code_factor, fc->pc_begin + ofs * fc->code_factor); fc->pc_begin += ofs * fc->code_factor; break; @@ -8549,10 +8562,10 @@ display_debug_frames (section, start, fi case DW_CFA_advance_loc4: ofs = byte_get (start, 4); start += 4; if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); + frame_display_row (fc, &need_col_headers, &max_regs); else - printf (" DW_CFA_advance_loc4: %ld to %08lx\n", - ofs * fc->code_factor, + printf (" DW_CFA_advance_loc4: %ld to %08lx\n", + ofs * fc->code_factor, fc->pc_begin + ofs * fc->code_factor); fc->pc_begin += ofs * fc->code_factor; break; @@ -8570,7 +8583,7 @@ display_debug_frames (section, start, fi case DW_CFA_restore_extended: reg = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_restore_extended: r%ld\n", reg); + printf (" DW_CFA_restore_extended: r%ld\n", reg); fc->col_type[reg] = cie->col_type[reg]; fc->col_offset[reg] = cie->col_offset[reg]; break; @@ -8578,7 +8591,7 @@ display_debug_frames (section, start, fi case DW_CFA_undefined: reg = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_undefined: r%ld\n", reg); + printf (" DW_CFA_undefined: r%ld\n", reg); fc->col_type[reg] = DW_CFA_undefined; fc->col_offset[reg] = 0; break; @@ -8586,7 +8599,7 @@ display_debug_frames (section, start, fi case DW_CFA_same_value: reg = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_same_value: r%ld\n", reg); + printf (" DW_CFA_same_value: r%ld\n", reg); fc->col_type[reg] = DW_CFA_same_value; fc->col_offset[reg] = 0; break; @@ -8595,14 +8608,14 @@ display_debug_frames (section, start, fi reg = LEB (); roffs = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_register: r%ld\n", reg); + printf (" DW_CFA_register: r%ld\n", reg); fc->col_type[reg] = DW_CFA_register; fc->col_offset[reg] = roffs; break; case DW_CFA_remember_state: if (! do_debug_frames_interp) - printf (" DW_CFA_remember_state\n"); + printf (" DW_CFA_remember_state\n"); rs = (Frame_Chunk *) xmalloc (sizeof (Frame_Chunk)); rs->ncols = fc->ncols; rs->col_type = (short int *) xmalloc (rs->ncols * sizeof (short int)); @@ -8615,7 +8628,7 @@ display_debug_frames (section, start, fi case DW_CFA_restore_state: if (! do_debug_frames_interp) - printf (" DW_CFA_restore_state\n"); + printf (" DW_CFA_restore_state\n"); rs = remembered_state; remembered_state = rs->next; frame_need_space (fc, rs->ncols-1); @@ -8630,25 +8643,25 @@ display_debug_frames (section, start, fi fc->cfa_reg = LEB (); fc->cfa_offset = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_def_cfa: r%d ofs %d\n", + printf (" DW_CFA_def_cfa: r%d ofs %d\n", fc->cfa_reg, fc->cfa_offset); break; case DW_CFA_def_cfa_register: fc->cfa_reg = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_def_cfa_reg: r%d\n", fc->cfa_reg); + printf (" DW_CFA_def_cfa_reg: r%d\n", fc->cfa_reg); break; case DW_CFA_def_cfa_offset: fc->cfa_offset = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_def_cfa_offset: %d\n", fc->cfa_offset); + printf (" DW_CFA_def_cfa_offset: %d\n", fc->cfa_offset); break; case DW_CFA_nop: if (! do_debug_frames_interp) - printf (" DW_CFA_nop\n"); + printf (" DW_CFA_nop\n"); break; #ifndef DW_CFA_GNU_window_save @@ -8656,13 +8669,13 @@ display_debug_frames (section, start, fi #endif case DW_CFA_GNU_window_save: if (! do_debug_frames_interp) - printf (" DW_CFA_GNU_window_save\n"); + printf (" DW_CFA_GNU_window_save\n"); break; case DW_CFA_GNU_args_size: ul = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_GNU_args_size: %ld\n", ul); + printf (" DW_CFA_GNU_args_size: %ld\n", ul); break; case DW_CFA_GNU_negative_offset_extended: @@ -8670,7 +8683,7 @@ display_debug_frames (section, start, fi l = - LEB (); frame_need_space (fc, reg); if (! do_debug_frames_interp) - printf (" DW_CFA_GNU_negative_offset_extended: r%ld at cfa%+ld\n", + printf (" DW_CFA_GNU_negative_offset_extended: r%ld at cfa%+ld\n", reg, l * fc->data_factor); fc->col_type[reg] = DW_CFA_offset; fc->col_offset[reg] = l * fc->data_factor; @@ -8683,7 +8696,7 @@ display_debug_frames (section, start, fi } if (do_debug_frames_interp) - frame_display_row (fc, &need_col_headers, &max_regs); + frame_display_row (fc, &need_col_headers, &max_regs); start = block_end; } @@ -8822,11 +8835,11 @@ process_section_contents (file) int j; if (section->sh_size == 0) - continue; + 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 (strcmp (debug_displays[j].name, name) == 0) { if (debug_displays[j].prescan != NULL) { @@ -8844,8 +8857,8 @@ process_section_contents (file) free (start); } - break; - } + break; + } } for (i = 0, section = section_headers; @@ -9373,7 +9386,7 @@ get_netbsd_elfcore_note_type (e_type) If the value of namesz is zero, there is no name present. */ static int process_note (pnote) - Elf32_Internal_Note * pnote; + Elf32_Internal_Note * pnote; { const char *nt; diff -uprN binutils-2.12.90.0.7/binutils/rename.c binutils-2.12.90.0.9/binutils/rename.c --- binutils-2.12.90.0.7/binutils/rename.c Thu Mar 15 14:51:52 2001 +++ binutils-2.12.90.0.9/binutils/rename.c Thu May 23 15:10:10 2002 @@ -165,8 +165,8 @@ smart_rename (from, to, preserve_dates) ret = rename (from, to); if (ret != 0) { - /* We have to clean up here. */ - + /* We have to clean up here. */ + non_fatal (_("%s: rename: %s"), to, strerror (errno)); unlink (from); } @@ -199,7 +199,7 @@ smart_rename (from, to, preserve_dates) } else { - /* We have to clean up here. */ + /* We have to clean up here. */ non_fatal (_("%s: rename: %s"), to, strerror (errno)); unlink (from); } diff -uprN binutils-2.12.90.0.7/binutils/resbin.c binutils-2.12.90.0.9/binutils/resbin.c --- binutils-2.12.90.0.7/binutils/resbin.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/binutils/resbin.c Thu May 23 15:10:10 2002 @@ -487,7 +487,7 @@ bin_to_res_dialog (data, length, big_end else { int version; - + version = get_16 (big_endian, data); if (version != 1) fatal (_("unexpected DIALOGEX version %d"), version); @@ -518,7 +518,7 @@ bin_to_res_dialog (data, length, big_end d->caption = get_unicode (data + off, length - off, big_endian, &sublen); off += sublen * 2 + 2; - if (sublen == 0) + if (sublen == 0) d->caption = NULL; if ((d->style & DS_SETFONT) == 0) @@ -595,9 +595,9 @@ bin_to_res_dialog (data, length, big_end dc->height = get_16 (big_endian, data + off + 6); if (d->ex != NULL) - dc->id = get_32 (big_endian, data + off + 8); + dc->id = get_32 (big_endian, data + off + 8); else - dc->id = get_16 (big_endian, data + off + 8); + dc->id = get_16 (big_endian, data + off + 8); off += 10 + (d->ex != NULL ? 2 : 0); @@ -629,7 +629,7 @@ bin_to_res_dialog (data, length, big_end dc->data->u.buffer.length = datalen; dc->data->u.buffer.data = data + off; - off += datalen; + off += datalen; } dc->next = NULL; @@ -1219,7 +1219,7 @@ bin_to_res_version (data, length, big_en vi->next = NULL; *pp = vi; - pp = &vi->next; + pp = &vi->next; } v = (struct versioninfo *) res_alloc (sizeof *v); @@ -1230,7 +1230,7 @@ bin_to_res_version (data, length, big_en r->type = RES_TYPE_VERSIONINFO; r->u.versioninfo = v; - return r; + return r; } /* Convert an arbitrary user defined resource from binary. */ @@ -1685,9 +1685,9 @@ res_to_bin_dialog (dialog, big_endian) put_16 (big_endian, dc->height, d->data + dcoff + 6); if (dialogex) - put_32 (big_endian, dc->id, d->data + dcoff + 8); + put_32 (big_endian, dc->id, d->data + dcoff + 8); else - put_16 (big_endian, dc->id, d->data + dcoff + 8); + put_16 (big_endian, dc->id, d->data + dcoff + 8); *pp = d; pp = &d->next; @@ -1776,12 +1776,12 @@ res_to_bin_fontdir (fontdirs, big_endian d->next = NULL; *pp = d; - pp = &d->next; + pp = &d->next; } put_16 (big_endian, c, first->data); - return first; + return first; } /* Convert a group icon resource to binary. */ @@ -2093,7 +2093,7 @@ res_to_bin_stringtable (st, big_endian) d->next = NULL; *pp = d; - pp = &d->next; + pp = &d->next; } return first; @@ -2122,7 +2122,7 @@ string_to_unicode_bin (s, big_endian) d->next = NULL; - return d; + return d; } /* Convert a versioninfo resource to binary. */ @@ -2287,7 +2287,7 @@ res_to_bin_versioninfo (versioninfo, big vsslen += length - hold; *pp = unicode_to_bin (vs->value, big_endian); - put_16 (big_endian, (*pp)->length / 2, vssd->data + 2); + put_16 (big_endian, (*pp)->length / 2, vssd->data + 2); length += (*pp)->length; vilen += (*pp)->length; vslen += (*pp)->length; diff -uprN binutils-2.12.90.0.7/binutils/resrc.c binutils-2.12.90.0.9/binutils/resrc.c --- binutils-2.12.90.0.7/binutils/resrc.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/binutils/resrc.c Thu May 23 15:10:10 2002 @@ -70,7 +70,7 @@ #ifndef STDOUT_FILENO #define STDOUT_FILENO 1 #endif - + #if defined (_WIN32) && ! defined (__CYGWIN__) #define popen _popen #define pclose _pclose @@ -193,38 +193,38 @@ run_cmd (cmd, redir) /* Count the args. */ i = 0; - + for (s = cmd; *s; s++) if (*s == ' ') i++; - + i++; argv = alloca (sizeof (char *) * (i + 3)); i = 0; s = cmd; - + while (1) { while (*s == ' ' && *s != 0) s++; - + if (*s == 0) break; - + in_quote = (*s == '\'' || *s == '"'); sep = (in_quote) ? *s++ : ' '; argv[i++] = s; - + while (*s != sep && *s != 0) s++; - + if (*s == 0) break; - + *s++ = 0; - + if (in_quote) - s++; + s++; } argv[i++] = NULL; @@ -237,8 +237,8 @@ run_cmd (cmd, redir) /* Open temporary output file. */ redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0666); if (redir_handle == -1) - fatal (_("can't open temporary file `%s': %s"), redir, - strerror (errno)); + fatal (_("can't open temporary file `%s': %s"), redir, + strerror (errno)); /* Duplicate the stdout file handle so it can be restored later. */ stdout_save = dup (STDOUT_FILENO); @@ -265,7 +265,7 @@ run_cmd (cmd, redir) retcode = 0; pid = pwait (pid, &wait_status, 0); - + if (pid == -1) { fatal (_("wait: %s"), strerror (errno)); @@ -280,14 +280,14 @@ run_cmd (cmd, redir) { if (WEXITSTATUS (wait_status) != 0) { - fatal (_("%s exited with status %d"), cmd, + fatal (_("%s exited with status %d"), cmd, WEXITSTATUS (wait_status)); retcode = 1; } } else retcode = 1; - + return retcode; } @@ -309,11 +309,11 @@ open_input_stream (cmd) cpp_pipe = fopen (cpp_temp_file, FOPEN_RT);; if (cpp_pipe == NULL) - fatal (_("can't open temporary file `%s': %s"), + fatal (_("can't open temporary file `%s': %s"), cpp_temp_file, strerror (errno)); - + if (verbose) - fprintf (stderr, + fprintf (stderr, _("Using temporary file `%s' to read preprocessor output\n"), cpp_temp_file); } @@ -321,7 +321,7 @@ open_input_stream (cmd) { cpp_pipe = popen (cmd, FOPEN_RT); if (cpp_pipe == NULL) - fatal (_("can't popen `%s': %s"), cmd, strerror (errno)); + fatal (_("can't popen `%s': %s"), cmd, strerror (errno)); if (verbose) fprintf (stderr, _("Using popen to read preprocessor output\n")); } @@ -472,7 +472,7 @@ read_rc_file (filename, preprocessor, pr } } - + free (cmd); rc_filename = xstrdup (filename); @@ -481,9 +481,10 @@ read_rc_file (filename, preprocessor, pr rcparse_set_language (language); yyin = cpp_pipe; yyparse (); + rcparse_discard_strings (); close_input_stream (); - + if (fontdirs != NULL) define_fontdirs (); @@ -506,7 +507,7 @@ close_input_stream () if (cpp_temp_file != NULL) { int errno_save = errno; - + unlink (cpp_temp_file); errno = errno_save; free (cpp_temp_file); @@ -1592,7 +1593,7 @@ write_rc_directory (e, rd, type, name, l && (re->id.u.id & 0xffff) == re->id.u.id) { fprintf (e, "LANGUAGE %lu, %lu\n", - re->id.u.id & ((1 << SUBLANG_SHIFT) - 1), + re->id.u.id & ((1 << SUBLANG_SHIFT) - 1), (re->id.u.id >> SUBLANG_SHIFT) & 0xff); *language = re->id.u.id; } @@ -1698,7 +1699,7 @@ write_rc_subdir (e, re, type, name, lang fprintf (e, "// Level %d: ", level); res_id_print (e, re->id, 1); fprintf (e, "\n"); - } + } write_rc_directory (e, re->u.dir, type, name, language, level + 1); } @@ -2166,7 +2167,7 @@ write_rc_dialog_control (e, control) fprintf (e, "%s", ci->name); else fprintf (e, "CONTROL"); - + if (control->text.named || control->text.u.id != 0) { fprintf (e, " "); diff -uprN binutils-2.12.90.0.7/binutils/resres.c binutils-2.12.90.0.9/binutils/resres.c --- binutils-2.12.90.0.7/binutils/resres.c Thu Jul 26 18:02:55 2001 +++ binutils-2.12.90.0.9/binutils/resres.c Thu May 23 15:10:10 2002 @@ -211,7 +211,7 @@ write_res_directory (rd, type, name, lan case 2: /* If we're at level 2, the key of this resource is the name - we are going to use in the rc printout. */ + we are going to use in the rc printout. */ name = &re->id; break; @@ -457,7 +457,7 @@ write_res_info (info) } /* read a resource identifier */ -void +void read_res_id (id) struct res_id *id; { diff -uprN binutils-2.12.90.0.7/binutils/size.c binutils-2.12.90.0.9/binutils/size.c --- binutils-2.12.90.0.7/binutils/size.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/binutils/size.c Sun May 26 09:57:12 2002 @@ -84,7 +84,7 @@ usage (stream, status) { fprintf (stream, _("Usage: %s [option(s)] [file(s)]\n"), program_name); fprintf (stream, _(" Displays the sizes of sections inside binary files\n")); - fprintf (stream, _(" If no input file(s) are specified, a.out is assumed\n")); + fprintf (stream, _(" If no input file(s) are specified, a.out is assumed\n")); fprintf (stream, _(" The options are:\n\ -A|-B --format={sysv|berkeley} Select output style (default is %s)\n\ -o|-d|-h --radix={8|10|16} Display numbers in octal, decimal or hex\n\ @@ -316,6 +316,7 @@ display_archive (file) bfd *file; { bfd *arfile = (bfd *) NULL; + bfd *last_arfile = (bfd *) NULL; for (;;) { @@ -333,8 +334,14 @@ display_archive (file) } display_bfd (arfile); - /* Don't close the archive elements; we need them for next_archive. */ + + if (last_arfile != NULL) + bfd_close (last_arfile); + last_arfile = arfile; } + + if (last_arfile != NULL) + bfd_close (last_arfile); } static void @@ -441,7 +448,7 @@ berkeley_sum (abfd, sec, ignore) bsssize += size; } -static void +static void print_berkeley_format (abfd) bfd *abfd; { diff -uprN binutils-2.12.90.0.7/binutils/srconv.c binutils-2.12.90.0.9/binutils/srconv.c --- binutils-2.12.90.0.7/binutils/srconv.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/binutils/srconv.c Sun May 26 09:57:12 2002 @@ -26,12 +26,12 @@ All debugging information is preserved */ -#include +#include "bfd.h" #include "bucomm.h" #include "sysroff.h" #include "coffgrok.h" -#include -#include +#include "libiberty.h" +#include "getopt.h" #include "coff/internal.h" #include "../bfd/libcoff.h" @@ -104,7 +104,7 @@ static int debug = 0; static int quick = 0; static int noprescan = 0; static struct coff_ofile *tree; -/* Obsolete ?? +/* Obsolete ?? static int absolute_p; */ @@ -923,7 +923,7 @@ walk_tree_type_1 (sfile, symbol, type, n } } -/* Obsolete ? +/* Obsolete ? static void dty_start () { @@ -1632,17 +1632,17 @@ wr_cs () 0x80, /* IT */ 0x21, /* RL */ 0x00, /* number of chars in variable length part */ - 0x80, /* hd */ - 0x00, /* hs */ - 0x80, /* un */ - 0x00, /* us */ - 0x80, /* sc */ - 0x00, /* ss */ - 0x80, /* er */ - 0x80, /* ed */ - 0x80, /* sh */ - 0x80, /* ob */ - 0x80, /* rl */ + 0x80, /* hd */ + 0x00, /* hs */ + 0x80, /* un */ + 0x00, /* us */ + 0x80, /* sc */ + 0x00, /* ss */ + 0x80, /* er */ + 0x80, /* ed */ + 0x80, /* sh */ + 0x80, /* ob */ + 0x80, /* rl */ 0x80, /* du */ 0x80, /* dps */ 0x80, /* dsy */ @@ -1886,7 +1886,7 @@ wr_unit_info (ptr) p2 = ftell (file); fseek (file, p1, SEEK_SET); wr_un (ptr, sfile, first, nsecs); - fseek (file, p2, SEEK_SET); + fseek (file, p2, SEEK_SET); wr_er (ptr, sfile, first); wr_ed (ptr, sfile, first); first = 0; diff -uprN binutils-2.12.90.0.7/binutils/stabs.c binutils-2.12.90.0.9/binutils/stabs.c --- binutils-2.12.90.0.7/binutils/stabs.c Mon Oct 1 15:25:22 2001 +++ binutils-2.12.90.0.9/binutils/stabs.c Sun May 26 09:57:12 2002 @@ -562,7 +562,7 @@ parse_stab (dhandle, handle, type, desc, f = info->so_string; - if (IS_ABSOLUTE_PATH (string)) + if (IS_ABSOLUTE_PATH (string)) info->so_string = xstrdup (string); else info->so_string = concat (info->so_string, string, @@ -1912,7 +1912,7 @@ parse_stab_sun_builtin_type (dhandle, pp } ++*pp; - /* The second number is always 0, so ignore it too. */ + /* The second number is always 0, so ignore it too. */ (void) parse_number (pp, (boolean *) NULL); if (**pp != ';') { @@ -1921,7 +1921,7 @@ parse_stab_sun_builtin_type (dhandle, pp } ++*pp; - /* The third number is the number of bits for this type. */ + /* The third number is the number of bits for this type. */ bits = parse_number (pp, (boolean *) NULL); /* The type *should* end with a semicolon. If it are embedded @@ -1974,7 +1974,7 @@ parse_stab_sun_floating_type (dhandle, p || details == NF_COMPLEX32) return debug_make_complex_type (dhandle, bytes); - return debug_make_float_type (dhandle, bytes); + return debug_make_float_type (dhandle, bytes); } /* Handle an enum type. */ @@ -2308,7 +2308,7 @@ parse_stab_struct_fields (dhandle, info, /* Look for the ':' that separates the field name from the field values. Data members are delimited by a single ':', while member functions are delimited by a pair of ':'s. When we hit the member - functions (if any), terminate scan loop and return. */ + functions (if any), terminate scan loop and return. */ p = strchr (p, ':'); if (p == NULL) @@ -2759,27 +2759,27 @@ parse_stab_members (dhandle, info, tagna /* Figure out from whence this virtual function came. It may belong to virtual function table of one of its baseclasses. */ - look_ahead_type = parse_stab_type (dhandle, info, - (const char *) NULL, - pp, - (debug_type **) NULL); - if (**pp == ':') - { - /* g++ version 1 overloaded methods. */ - context = DEBUG_TYPE_NULL; - } - else - { - context = look_ahead_type; - look_ahead_type = DEBUG_TYPE_NULL; - if (**pp != ';') - { - bad_stab (orig); - return false; - } - ++*pp; - } - } + look_ahead_type = parse_stab_type (dhandle, info, + (const char *) NULL, + pp, + (debug_type **) NULL); + if (**pp == ':') + { + /* g++ version 1 overloaded methods. */ + context = DEBUG_TYPE_NULL; + } + else + { + context = look_ahead_type; + look_ahead_type = DEBUG_TYPE_NULL; + if (**pp != ';') + { + bad_stab (orig); + return false; + } + ++*pp; + } + } break; case '?': @@ -3035,7 +3035,7 @@ parse_stab_tilde_field (dhandle, info, p orig = *pp; - /* If we are positioned at a ';', then skip it. */ + /* If we are positioned at a ';', then skip it. */ if (**pp == ';') ++*pp; @@ -3047,7 +3047,7 @@ parse_stab_tilde_field (dhandle, info, p if (**pp == '=' || **pp == '+' || **pp == '-') { /* Obsolete flags that used to indicate the presence of - constructors and/or destructors. */ + constructors and/or destructors. */ ++*pp; } @@ -3088,7 +3088,7 @@ parse_stab_tilde_field (dhandle, info, p *pp = p + 1; } - return true; + return true; } /* Read a definition of an array type. */ diff -uprN binutils-2.12.90.0.7/binutils/strings.c binutils-2.12.90.0.9/binutils/strings.c --- binutils-2.12.90.0.7/binutils/strings.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/binutils/strings.c Sun May 26 09:57:12 2002 @@ -61,7 +61,7 @@ #endif #include "bfd.h" #include -#include +#include "getopt.h" #include #include "bucomm.h" #include "libiberty.h" diff -uprN binutils-2.12.90.0.7/binutils/sysdump.c binutils-2.12.90.0.9/binutils/sysdump.c --- binutils-2.12.90.0.7/binutils/sysdump.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/binutils/sysdump.c Sun May 26 09:57:12 2002 @@ -30,8 +30,8 @@ #include "safe-ctype.h" #include -#include -#include +#include "libiberty.h" +#include "getopt.h" #include "sysroff.h" static int dump = 1; @@ -107,10 +107,10 @@ dh (ptr, size) { for (j = 0; j < span; j++) { - if (j + i < size) + if (j + i < size) printf ("%02x ", ptr[i + j]); - else - printf (" "); + else + printf (" "); } for (j = 0; j < span && j + i < size; j++) diff -uprN binutils-2.12.90.0.7/binutils/unwind-ia64.c binutils-2.12.90.0.9/binutils/unwind-ia64.c --- binutils-2.12.90.0.7/binutils/unwind-ia64.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/binutils/unwind-ia64.c Sun May 26 09:57:12 2002 @@ -475,7 +475,7 @@ typedef bfd_vma unw_word; * macros/constants before including this file: * * Types: - * unw_word Unsigned integer type with at least 64 bits + * unw_word Unsigned integer type with at least 64 bits * * Register names: * UNW_REG_BSP diff -uprN binutils-2.12.90.0.7/binutils/unwind-ia64.h binutils-2.12.90.0.9/binutils/unwind-ia64.h --- binutils-2.12.90.0.7/binutils/unwind-ia64.h Thu Mar 15 14:51:54 2001 +++ binutils-2.12.90.0.9/binutils/unwind-ia64.h Sun May 26 09:57:12 2002 @@ -1,5 +1,5 @@ /* unwind-ia64.h -- dump IA-64 unwind info. - Copyright 2000, 2001 Free Software Foundation, Inc. + Copyright 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by David Mosberger-Tang This file is part of GNU Binutils. @@ -18,8 +18,8 @@ You should have received a copy of the G along with this program; if not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include -#include +#include "elf/ia64.h" +#include "ansidecl.h" #define UNW_VER(x) ((x) >> 48) #define UNW_FLAG_MASK 0x0000ffff00000000 diff -uprN binutils-2.12.90.0.7/binutils/windres.c binutils-2.12.90.0.9/binutils/windres.c --- binutils-2.12.90.0.7/binutils/windres.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/binutils/windres.c Thu May 23 15:10:10 2002 @@ -443,11 +443,9 @@ define_resource (resources, cids, ids, d re->u.res = ((struct res_resource *) res_alloc (sizeof (struct res_resource))); + memset (re->u.res, 0, sizeof (struct res_resource)); re->u.res->type = RES_TYPE_UNINITIALIZED; - memset (&re->u.res->res_info, 0, sizeof (struct res_res_info)); - memset (&re->u.res->coff_info, 0, sizeof (struct res_coff_info)); - return re->u.res; } diff -uprN binutils-2.12.90.0.7/binutils/windres.h binutils-2.12.90.0.9/binutils/windres.h --- binutils-2.12.90.0.7/binutils/windres.h Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/binutils/windres.h Sun May 26 09:57:12 2002 @@ -19,7 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include "ansidecl.h" /* This is the header file for the windres program. It defines structures and declares functions used within the program. */ diff -uprN binutils-2.12.90.0.7/binutils/winduni.h binutils-2.12.90.0.9/binutils/winduni.h --- binutils-2.12.90.0.7/binutils/winduni.h Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/binutils/winduni.h Sun May 26 09:57:12 2002 @@ -1,5 +1,5 @@ /* winduni.h -- header file for unicode support for windres program. - Copyright 1997, 1998 Free Software Foundation, Inc. + Copyright 1997, 1998, 2002 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. This file is part of GNU Binutils. @@ -19,7 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include "ansidecl.h" /* This header file declares the types and functions we use for unicode support in windres. Our unicode support is very limited at diff -uprN binutils-2.12.90.0.7/binutils/wrstabs.c binutils-2.12.90.0.9/binutils/wrstabs.c --- binutils-2.12.90.0.7/binutils/wrstabs.c Mon Oct 1 15:25:22 2001 +++ binutils-2.12.90.0.9/binutils/wrstabs.c Sun May 26 09:57:12 2002 @@ -795,7 +795,7 @@ stab_bool_type (p, size) case 2: index = -22; break; - + default: case 4: index = -16; @@ -963,7 +963,7 @@ stab_modify_type (info, mod, size, cache } return true; -} +} /* Push a pointer type. */ diff -uprN binutils-2.12.90.0.7/binutils.spec binutils-2.12.90.0.9/binutils.spec --- binutils-2.12.90.0.7/binutils.spec Tue Apr 23 11:03:48 2002 +++ binutils-2.12.90.0.9/binutils.spec Sat May 25 17:50:54 2002 @@ -1,19 +1,19 @@ %define cross_compile 0 -%{?do_cross_compile:%define cross_compile 1} +%{?_with_crosscompile: %{expand: %%define cross_compile 1}} -# Define `COFF' as 1 if you want to add i386-coff instead of i386-pe. -%define COFF 0 -%{?ENABLE_COFF:%define COFF 1} -%define ALL_TARGETS 0 -%{?ENABLE_ALL_TARGETS:%define ALL_TARGETS 1} +# Define `coff' as 1 if you want to add i386-coff instead of i386-pe. +%define coff 0 +%{?_with_coff: %{expand: %%define coff 1}} +%define all_targets 0 +%{?_with_all: %{expand: %%define all_targets 1}} Summary: A GNU collection of binary utilities. Name: binutils -Version: 2.12.90.0.7 +Version: 2.12.90.0.9 Release: 1 Copyright: GPL Group: Development/Tools -URL: http://sourceware.cygnus.com/binutils +URL: http://sources.redhat.com/binutils Source: http://ftp.kernel.org/pub/linux/devel/binutils/binutils-%{version}.tar.gz Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root Prereq: /sbin/install-info @@ -38,7 +38,6 @@ binary files. Most programmers will wan %ifarch mips mipsel patch -p1 -b --suffix .isa < mips/binutils-mips-isa.patch -patch -p0 -b --suffix .visibility < mips/bfd-mips-visibility.patch find -name "*.rej" | grep rej && exit 1 %endif @@ -55,7 +54,7 @@ echo "MAKE=make -j $NRPROC" > makefile echo "include Makefile" >> makefile ADDITIONAL_TARGETS="" %ifos linux -%if %{ALL_TARGETS} +%if %{all_targets} ADDITIONAL_TARGETS="--enable-targets=alpha-linux,arm-linux,cris-linux,hppa-linux,i386-linux,ia64-linux,m68k-linux,mips-linux,mips64-linux,mips64el-linux,mipsel-linux,ppc-linux,s390-linux,s390x-linux,sh-linux,sparc-linux,sparc64-linux,i386-linuxaout" %else %ifarch %{ix86} @@ -66,7 +65,7 @@ ADDITIONAL_TARGETS="--enable-targets=spa %endif %endif %ifarch %{ix86} -%if %{COFF} +%if %{coff} ADDITIONAL_TARGETS="${ADDITIONAL_TARGETS},i386-coff" %else ADDITIONAL_TARGETS="${ADDITIONAL_TARGETS},i386-pe" @@ -81,13 +80,11 @@ CC=%{__cc}; export CC LD=%{__ld}; export LD NM=%{__nm}; export NM RANLIB=%{__ranlib}; export RANLIB +%configure --enable-shared $ADDITIONAL_TARGETS %if %{cross_compile} -%configure --enable-shared $ADDITIONAL_TARGETS \ - --build=%{_build_alias} make headers -C bfd CFLAGS=-O make tooldir=%{_prefix} all info CFLAGS_FOR_BUILD="-O -pipe" %else -%configure --enable-shared $ADDITIONAL_TARGETS make headers -C bfd make tooldir=%{_prefix} all info %endif diff -uprN binutils-2.12.90.0.7/binutils.spec.in binutils-2.12.90.0.9/binutils.spec.in --- binutils-2.12.90.0.7/binutils.spec.in Tue Apr 23 11:56:30 2002 +++ binutils-2.12.90.0.9/binutils.spec.in Thu May 23 15:10:09 2002 @@ -1,11 +1,11 @@ %define cross_compile 0 -%{?do_cross_compile:%define cross_compile 1} +%{?_with_crosscompile: %{expand: %%define cross_compile 1}} -# Define `COFF' as 1 if you want to add i386-coff instead of i386-pe. -%define COFF 0 -%{?ENABLE_COFF:%define COFF 1} -%define ALL_TARGETS 0 -%{?ENABLE_ALL_TARGETS:%define ALL_TARGETS 1} +# Define `coff' as 1 if you want to add i386-coff instead of i386-pe. +%define coff 0 +%{?_with_coff: %{expand: %%define coff 1}} +%define all_targets 0 +%{?_with_all: %{expand: %%define all_targets 1}} Summary: A GNU collection of binary utilities. Name: binutils @@ -13,7 +13,7 @@ Version: @VERSION@ Release: 1 Copyright: GPL Group: Development/Tools -URL: http://sourceware.cygnus.com/binutils +URL: http://sources.redhat.com/binutils Source: http://ftp.kernel.org/pub/linux/devel/binutils/binutils-%{version}.tar.gz Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root Prereq: /sbin/install-info @@ -38,7 +38,6 @@ binary files. Most programmers will wan %ifarch mips mipsel patch -p1 -b --suffix .isa < mips/binutils-mips-isa.patch -patch -p0 -b --suffix .visibility < mips/bfd-mips-visibility.patch find -name "*.rej" | grep rej && exit 1 %endif @@ -55,7 +54,7 @@ echo "MAKE=make -j $NRPROC" > makefile echo "include Makefile" >> makefile ADDITIONAL_TARGETS="" %ifos linux -%if %{ALL_TARGETS} +%if %{all_targets} ADDITIONAL_TARGETS="--enable-targets=alpha-linux,arm-linux,cris-linux,hppa-linux,i386-linux,ia64-linux,m68k-linux,mips-linux,mips64-linux,mips64el-linux,mipsel-linux,ppc-linux,s390-linux,s390x-linux,sh-linux,sparc-linux,sparc64-linux,i386-linuxaout" %else %ifarch %{ix86} @@ -66,7 +65,7 @@ ADDITIONAL_TARGETS="--enable-targets=spa %endif %endif %ifarch %{ix86} -%if %{COFF} +%if %{coff} ADDITIONAL_TARGETS="${ADDITIONAL_TARGETS},i386-coff" %else ADDITIONAL_TARGETS="${ADDITIONAL_TARGETS},i386-pe" @@ -81,13 +80,11 @@ CC=%{__cc}; export CC LD=%{__ld}; export LD NM=%{__nm}; export NM RANLIB=%{__ranlib}; export RANLIB +%configure --enable-shared $ADDITIONAL_TARGETS %if %{cross_compile} -%configure --enable-shared $ADDITIONAL_TARGETS \ - --build=%{_build_alias} make headers -C bfd CFLAGS=-O make tooldir=%{_prefix} all info CFLAGS_FOR_BUILD="-O -pipe" %else -%configure --enable-shared $ADDITIONAL_TARGETS make headers -C bfd make tooldir=%{_prefix} all info %endif diff -uprN binutils-2.12.90.0.7/config/ChangeLog binutils-2.12.90.0.9/config/ChangeLog --- binutils-2.12.90.0.7/config/ChangeLog Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/ChangeLog Thu May 23 15:10:10 2002 @@ -1,3 +1,43 @@ +2002-05-16 Rainer Orth + + * acinclude.m4: Allow for PWDCMD to override hardcoded pwd. + +2002-05-13 Nathanael Nerode + + * mh-apollo68: remove unused HDEFINES setting. + * mh-dgux: remove unused HDEFINES setting. + * mh-dgux386: remove unused HDEFINES setting, duplicate RANLIB=true. + +2002-04-29 Nathanael Nerode + + * config/mh-cxux: remove dead code + * config/mh-dgux386: remove dead code + * config/mh-hp300: remove dead code + * config/mh-hpux: remove dead code + * config/mh-hpux8: remove dead code + * config/mh-irix5: remove dead code + * config/mh-irix6: remove dead code + * config/mh-ncr3000: remove dead code + * config/mh-ncrsvr43: remove dead code + * config/mh-necv4: remove dead code + * config/mh-sco: remove dead code + * config/mh-solaris: remove dead code + * config/mh-sysv: remove dead code + * config/mh-sysv4: remove dead code + * config/mh-sysv5: remove dead code + * config/mh-irix4: remove, contains only dead code + + * config/mt-armpic: Delete. + * config/mt-elfalphapic: Delete. + * config/mt-i370pic: Delete. + * config/mt-ia64pic: Delete. + * config/mt-m68kpic: Delete. + * config/mt-papic: Delete. + * config/mt-ppcpic: Delete. + * config/mt-s390pic: Delete. + * config/mt-sparcpic: Delete. + * config/mt-x86pic: Delete. + 2002-04-19 Nathanael Nerode * mh-a68bsd: clean out dead code diff -uprN binutils-2.12.90.0.7/config/acinclude.m4 binutils-2.12.90.0.9/config/acinclude.m4 --- binutils-2.12.90.0.7/config/acinclude.m4 Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/acinclude.m4 Thu May 23 15:10:10 2002 @@ -206,7 +206,7 @@ dnl Look for the header file AC_CACHE_VAL(ac_cv_c_bfdh,[ for i in $dirlist; do if test -f "$i/bfd/bfd.h" ; then - ac_cv_c_bfdh=`(cd $i/bfd; pwd)` + ac_cv_c_bfdh=`(cd $i/bfd; ${PWDCMD-pwd})` break fi done @@ -224,7 +224,7 @@ AC_MSG_CHECKING(for the bfd library in t AC_CACHE_VAL(ac_cv_c_bfdlib,[ for i in $dirlist; do if test -f "$i/bfd/Makefile" ; then - ac_cv_c_bfdlib=`(cd $i/bfd; pwd)` + ac_cv_c_bfdlib=`(cd $i/bfd; ${PWDCMD-pwd})` fi done ]) @@ -247,7 +247,7 @@ dirlist=".. ../../ ../../../ ../../../.. AC_CACHE_VAL(ac_cv_c_liberty,[ for i in $dirlist; do if test -f "$i/libiberty/Makefile" ; then - ac_cv_c_liberty=`(cd $i/libiberty; pwd)` + ac_cv_c_liberty=`(cd $i/libiberty; ${PWDCMD-pwd})` fi done ]) @@ -268,7 +268,7 @@ dirlist=".. ../../ ../../../ ../../../.. AC_CACHE_VAL(ac_cv_c_opc,[ for i in $dirlist; do if test -f "$i/opcodes/Makefile" ; then - ac_cv_c_opc=`(cd $i/opcodes; pwd)` + ac_cv_c_opc=`(cd $i/opcodes; ${PWDCMD-pwd})` fi done ]) @@ -290,7 +290,7 @@ dirlist=".. ../../ ../../../ ../../../.. AC_CACHE_VAL(ac_cv_c_dejagnu,[ for i in $dirlist; do if test -f "$srcdir/$i/ecc/ecc/infra/testlib/current/include/dejagnu.h" ; then - ac_cv_c_dejagnu=`(cd $srcdir/$i/ecc/ecc/infra/testlib/current/include; pwd)` + ac_cv_c_dejagnu=`(cd $srcdir/$i/ecc/ecc/infra/testlib/current/include; ${PWDCMD-pwd})` fi done ]) @@ -303,7 +303,7 @@ fi AC_CACHE_VAL(ac_cv_c_dejagnulib,[ for i in $dirlist; do if test -f "$srcdir/$i/infra/testlib/current/lib/hostutil.exp" ; then - ac_cv_c_dejagnulib=`(cd $srcdir/$i/infra/testlib/current/lib; pwd)` + ac_cv_c_dejagnulib=`(cd $srcdir/$i/infra/testlib/current/lib; ${PWDCMD-pwd})` fi done ]) @@ -316,7 +316,7 @@ AC_MSG_CHECKING(for runtest in the sourc AC_CACHE_VAL(ac_cv_c_runtest,[ for i in $dirlist; do if test -f "$srcdir/$i/dejagnu/runtest" ; then - ac_cv_c_runtest=`(cd $srcdir/$i/dejagnu; pwd)` + ac_cv_c_runtest=`(cd $srcdir/$i/dejagnu; ${PWDCMD-pwd})` fi done ]) @@ -342,7 +342,7 @@ dnl Look for the header file AC_CACHE_VAL(ac_cv_c_intlh,[ for i in $dirlist; do if test -f "$i/intl/libintl.h" ; then - ac_cv_c_intlh=`(cd $i/intl; pwd)` + ac_cv_c_intlh=`(cd $i/intl; ${PWDCMD-pwd})` break fi done @@ -360,7 +360,7 @@ AC_MSG_CHECKING(for the libintl library AC_CACHE_VAL(ac_cv_c_intllib,[ for i in $dirlist; do if test -f "$i/intl/Makefile" ; then - ac_cv_c_intllib=`(cd $i/intl; pwd)` + ac_cv_c_intllib=`(cd $i/intl; ${PWDCMD-pwd})` fi done ]) @@ -388,7 +388,7 @@ AC_MSG_CHECKING(for the simulator header AC_CACHE_VAL(ac_cv_c_simh,[ for i in $dirlist; do if test -f "${srcdir}/$i/include/remote-sim.h" ; then - ac_cv_c_simh=`(cd ${srcdir}/$i/include; pwd)` + ac_cv_c_simh=`(cd ${srcdir}/$i/include; ${PWDCMD-pwd})` break fi done @@ -420,7 +420,7 @@ AC_MSG_CHECKING(for the simulator librar AC_CACHE_VAL(ac_cv_c_simlib,[ for i in $dirlist; do if test -f "$i/sim/$target_dir/Makefile" ; then - ac_cv_c_simlib=`(cd $i/sim/$target_dir; pwd)` + ac_cv_c_simlib=`(cd $i/sim/$target_dir; ${PWDCMD-pwd})` fi done ]) @@ -463,7 +463,7 @@ dirlist=".. ../../ ../../../ ../../../.. AC_CACHE_VAL(ac_cv_c_libib,[ for i in $dirlist; do if test -f "$i/libiberty/Makefile" ; then - ac_cv_c_libib=`(cd $i/libiberty/; pwd)` + ac_cv_c_libib=`(cd $i/libiberty/; ${PWDCMD-pwd})` fi done ]) @@ -483,7 +483,7 @@ dirlist=".. ../../ ../../../ ../../../.. AC_CACHE_VAL(ac_cv_c_devoh,[ for i in $dirlist; do if test -f "${srcdir}/$i/include/remote-sim.h" ; then - ac_cv_c_devoh=`(cd ${srcdir}/$i/include; pwd)` + ac_cv_c_devoh=`(cd ${srcdir}/$i/include; ${PWDCMD-pwd})` fi done ]) @@ -506,7 +506,7 @@ IDELIB= AC_CACHE_VAL(ac_cv_c_ideh,[ for i in $dirlist; do if test -f "${srcdir}/$i/libide/src/event.h" ; then - ac_cv_c_ideh=`(cd ${srcdir}/$i/libide/src; pwd)`; + ac_cv_c_ideh=`(cd ${srcdir}/$i/libide/src; ${PWDCMD-pwd})`; fi done ]) @@ -521,7 +521,7 @@ AC_MSG_CHECKING(for LIBIDE TCL headers i AC_CACHE_VAL(ac_cv_c_idetclh,[ for i in $dirlist; do if test -f "${srcdir}/$i/libidetcl/src/idetcl.h" ; then - ac_cv_c_idetclh=`(cd ${srcdir}/$i/libidetcl/src; pwd)`; + ac_cv_c_idetclh=`(cd ${srcdir}/$i/libidetcl/src; ${PWDCMD-pwd})`; fi done ]) @@ -536,7 +536,7 @@ AC_MSG_CHECKING(for IDE headers in the b AC_CACHE_VAL(ac_cv_c_ideh2,[ for i in $dirlist; do if test -f "$i/libide/src/Makefile" ; then - ac_cv_c_ideh2=`(cd $i/libide/src; pwd)`; + ac_cv_c_ideh2=`(cd $i/libide/src; ${PWDCMD-pwd})`; fi done ]) @@ -553,7 +553,7 @@ AC_CACHE_VAL(ac_cv_c_idelib,[ if test x"${ac_cv_c_idelib}" = x ; then for i in $dirlist; do if test -f "$i/libide/src/Makefile" ; then - ac_cv_c_idelib=`(cd $i/libide/src; pwd)` + ac_cv_c_idelib=`(cd $i/libide/src; ${PWDCMD-pwd})` break fi done @@ -571,7 +571,7 @@ AC_CACHE_VAL(ac_cv_c_idetcllib,[ if test x"${ac_cv_c_idetcllib}" = x ; then for i in $dirlist; do if test -f "$i/libidetcl/src/Makefile" ; then - ac_cv_c_idetcllib=`(cd $i/libidetcl/src; pwd)` + ac_cv_c_idetcllib=`(cd $i/libidetcl/src; ${PWDCMD-pwd})` break fi done @@ -597,7 +597,7 @@ dirlist=".. ../../ ../../../ ../../../.. AC_CACHE_VAL(ac_cv_c_iluh,[ for i in $dirlist; do if test -f "${srcdir}/$i/ilu/runtime/kernel/method.h" ; then - ac_cv_c_iluh=`(cd ${srcdir}/$i/ilu/runtime/kernel; pwd)` + ac_cv_c_iluh=`(cd ${srcdir}/$i/ilu/runtime/kernel; ${PWDCMD-pwd})` fi done ]) @@ -613,7 +613,7 @@ dirlist=".. ../../ ../../../ ../../../.. AC_CACHE_VAL(ac_cv_c_iluh5,[ for i in $dirlist; do if test -f "$i/ilu/runtime/kernel/iluconf.h" ; then - ac_cv_c_iluh5=`(cd $i/ilu/runtime/kernel; pwd)` + ac_cv_c_iluh5=`(cd $i/ilu/runtime/kernel; ${PWDCMD-pwd})` fi done ]) @@ -628,7 +628,7 @@ AC_MSG_CHECKING(for ILU C++ headers in t AC_CACHE_VAL(ac_cv_c_iluh2,[ for i in $dirlist; do if test -f "${srcdir}/$i/ilu/stubbers/cpp/resource.h" ; then - ac_cv_c_iluh2=`(cd ${srcdir}/$i/ilu/stubbers/cpp; pwd)` + ac_cv_c_iluh2=`(cd ${srcdir}/$i/ilu/stubbers/cpp; ${PWDCMD-pwd})` fi done ]) @@ -643,7 +643,7 @@ AC_MSG_CHECKING(for ILU C headers) AC_CACHE_VAL(ac_cv_c_iluh3,[ for i in $dirlist; do if test -f "${srcdir}/$i/ilu/stubbers/c/resource.h" ; then - ac_cv_c_iluh3=`(cd ${srcdir}/$i/ilu/stubbers/c ; pwd)` + ac_cv_c_iluh3=`(cd ${srcdir}/$i/ilu/stubbers/c ; ${PWDCMD-pwd})` fi done ]) @@ -658,7 +658,7 @@ AC_MSG_CHECKING(for ILU C runtime header AC_CACHE_VAL(ac_cv_c_iluh4,[ for i in $dirlist; do if test -f "${srcdir}/$i/ilu/runtime/c/ilucstub.h" ; then - ac_cv_c_iluh4=`(cd ${srcdir}/$i/ilu/runtime/c ; pwd)` + ac_cv_c_iluh4=`(cd ${srcdir}/$i/ilu/runtime/c ; ${PWDCMD-pwd})` fi done ]) @@ -672,7 +672,7 @@ fi AC_CACHE_VAL(ac_cv_c_ilupath,[ for i in $dirlist; do if test -f "$i/ilu/Makefile" ; then - ac_cv_c_ilupath=`(cd $i/ilu; pwd)` + ac_cv_c_ilupath=`(cd $i/ilu; ${PWDCMD-pwd})` break fi done @@ -682,7 +682,7 @@ ILUTOP=${ac_cv_c_ilupath} AC_MSG_CHECKING(for the ILU library in the build tree) AC_CACHE_VAL(ac_cv_c_ilulib,[ if test -f "$ac_cv_c_ilupath/runtime/kernel/Makefile" ; then - ac_cv_c_ilulib=`(cd $ac_cv_c_ilupath/runtime/kernel; pwd)` + ac_cv_c_ilulib=`(cd $ac_cv_c_ilupath/runtime/kernel; ${PWDCMD-pwd})` AC_MSG_RESULT(found ${ac_cv_c_ilulib}/libilu.a) else AC_MSG_RESULT(no) @@ -691,7 +691,7 @@ fi]) AC_MSG_CHECKING(for the ILU C++ bindings library in the build tree) AC_CACHE_VAL(ac_cv_c_ilulib2,[ if test -f "$ac_cv_c_ilupath/runtime/cpp/Makefile" ; then - ac_cv_c_ilulib2=`(cd $ac_cv_c_ilupath/runtime/cpp; pwd)` + ac_cv_c_ilulib2=`(cd $ac_cv_c_ilupath/runtime/cpp; ${PWDCMD-pwd})` AC_MSG_RESULT(found ${ac_cv_c_ilulib2}/libilu-c++.a) else AC_MSG_RESULT(no) @@ -700,7 +700,7 @@ fi]) AC_MSG_CHECKING(for the ILU C bindings library in the build tree) AC_CACHE_VAL(ac_cv_c_ilulib3,[ if test -f "$ac_cv_c_ilupath/runtime/c/Makefile" ; then - ac_cv_c_ilulib3=`(cd $ac_cv_c_ilupath/runtime/c; pwd)` + ac_cv_c_ilulib3=`(cd $ac_cv_c_ilupath/runtime/c; ${PWDCMD-pwd})` AC_MSG_RESULT(found ${ac_cv_c_ilulib3}/libilu-c.a) else AC_MSG_RESULT(no) @@ -709,7 +709,7 @@ fi]) AC_MSG_CHECKING(for the ILU Tk bindings library in the build tree) AC_CACHE_VAL(ac_cv_c_ilulib4,[ if test -f "$ac_cv_c_ilupath/runtime/mainloop/Makefile" ; then - ac_cv_c_ilulib4=`(cd $ac_cv_c_ilupath/runtime/mainloop; pwd)` + ac_cv_c_ilulib4=`(cd $ac_cv_c_ilupath/runtime/mainloop; ${PWDCMD-pwd})` AC_MSG_RESULT(found ${ac_cv_c_ilulib4}/libilu-tk.a) else AC_MSG_RESULT(no) @@ -858,9 +858,9 @@ AC_CACHE_VAL(ac_cv_c_tclh,[ dnl first check to see if --with-tclinclude was specified if test x"${with_tclinclude}" != x ; then if test -f ${with_tclinclude}/tcl.h ; then - ac_cv_c_tclh=`(cd ${with_tclinclude}; pwd)` + ac_cv_c_tclh=`(cd ${with_tclinclude}; ${PWDCMD-pwd})` elif test -f ${with_tclinclude}/generic/tcl.h ; then - ac_cv_c_tclh=`(cd ${with_tclinclude}/generic; pwd)` + ac_cv_c_tclh=`(cd ${with_tclinclude}/generic; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_tclinclude} directory doesn't contain headers]) fi @@ -870,7 +870,7 @@ dnl next check if it came with Tcl confi if test x"${ac_cv_c_tclconfig}" != x ; then for i in $dirlist; do if test -f $ac_cv_c_tclconfig/$i/generic/tcl.h ; then - ac_cv_c_tclh=`(cd $ac_cv_c_tclconfig/$i/generic; pwd)` + ac_cv_c_tclh=`(cd $ac_cv_c_tclconfig/$i/generic; ${PWDCMD-pwd})` break fi done @@ -891,7 +891,7 @@ if test x"${ac_cv_c_tclh}" = x ; then dnl might be multiple version of Tcl, and we want the most recent one. for i in `ls -dr $tclpath/tcl* 2>/dev/null ` ; do if test -f $i/generic/tcl.h ; then - ac_cv_c_tclh=`(cd $i/generic; pwd)` + ac_cv_c_tclh=`(cd $i/generic; ${PWDCMD-pwd})` break fi done @@ -950,7 +950,7 @@ if test x"${no_tcl}" = x ; then dnl First check to see if --with-tclconfig was specified. if test x"${with_tclconfig}" != x ; then if test -f "${with_tclconfig}/tclConfig.sh" ; then - ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)` + ac_cv_c_tclconfig=`(cd ${with_tclconfig}; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh]) fi @@ -963,11 +963,11 @@ if test x"${no_tcl}" = x ; then dnl cygwin's tkConfig.sh could be in either directory depending dnl on the cygwin port of tcl. if test -f $srcdir/$i/unix/tclConfig.sh ; then - ac_cv_c_tclconfig=`(cd $srcdir/$i/unix; pwd)` + ac_cv_c_tclconfig=`(cd $srcdir/$i/unix; ${PWDCMD-pwd})` break fi if test -f $srcdir/$i/win/tclConfig.sh ; then - ac_cv_c_tclconfig=`(cd $srcdir/$i/win; pwd)` + ac_cv_c_tclconfig=`(cd $srcdir/$i/win; ${PWDCMD-pwd})` break fi done @@ -989,11 +989,11 @@ if test x"${no_tcl}" = x ; then dnl cygwin's tclConfig.sh could be in either directory depending dnl on the cygwin port of tcl. if test -f $i/unix/tclConfig.sh ; then - ac_cv_c_tclconfig=`(cd $i/unix; pwd)` + ac_cv_c_tclconfig=`(cd $i/unix; ${PWDCMD-pwd})` break fi if test -f $i/win/tclConfig.sh ; then - ac_cv_c_tclconfig=`(cd $i/win; pwd)` + ac_cv_c_tclconfig=`(cd $i/win; ${PWDCMD-pwd})` break fi done @@ -1097,9 +1097,9 @@ AC_CACHE_VAL(ac_cv_c_tkh,[ dnl first check to see if --with-tkinclude was specified if test x"${with_tkinclude}" != x ; then if test -f ${with_tkinclude}/tk.h ; then - ac_cv_c_tkh=`(cd ${with_tkinclude}; pwd)` + ac_cv_c_tkh=`(cd ${with_tkinclude}; ${PWDCMD-pwd})` elif test -f ${with_tkinclude}/generic/tk.h ; then - ac_cv_c_tkh=`(cd ${with_tkinclude}/generic; pwd)` + ac_cv_c_tkh=`(cd ${with_tkinclude}/generic; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_tkinclude} directory doesn't contain headers]) fi @@ -1109,7 +1109,7 @@ dnl next check if it came with Tk config if test x"${ac_cv_c_tkconfig}" != x ; then for i in $dirlist; do if test -f $ac_cv_c_tkconfig/$i/generic/tk.h ; then - ac_cv_c_tkh=`(cd $ac_cv_c_tkconfig/$i/generic; pwd)` + ac_cv_c_tkh=`(cd $ac_cv_c_tkconfig/$i/generic; ${PWDCMD-pwd})` break fi done @@ -1130,7 +1130,7 @@ if test x"${ac_cv_c_tkh}" = x ; then dnl might be multiple version of Tk, and we want the most recent one. for i in `ls -dr $tkpath/tk* 2>/dev/null ` ; do if test -f $i/generic/tk.h ; then - ac_cv_c_tkh=`(cd $i/generic; pwd)` + ac_cv_c_tkh=`(cd $i/generic; ${PWDCMD-pwd})` break fi done @@ -1183,7 +1183,7 @@ if test x"${no_tk}" = x ; then dnl First check to see if --with-tkconfig was specified. if test x"${with_tkconfig}" != x ; then if test -f "${with_tkconfig}/tkConfig.sh" ; then - ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)` + ac_cv_c_tkconfig=`(cd ${with_tkconfig}; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh]) fi @@ -1196,11 +1196,11 @@ if test x"${no_tk}" = x ; then dnl cygwin's tkConfig.sh could be in either directory depending dnl on the cygwin port of tk. if test -f $srcdir/$i/unix/tkConfig.sh ; then - ac_cv_c_tkconfig=`(cd $srcdir/$i/unix; pwd)` + ac_cv_c_tkconfig=`(cd $srcdir/$i/unix; ${PWDCMD-pwd})` break fi if test -f $srcdir/$i/win/tkConfig.sh ; then - ac_cv_c_tkconfig=`(cd $srcdir/$i/unix; pwd)` + ac_cv_c_tkconfig=`(cd $srcdir/$i/unix; ${PWDCMD-pwd})` break fi done @@ -1222,11 +1222,11 @@ if test x"${no_tk}" = x ; then dnl cygwin's tkConfig.sh could be in either directory depending dnl on the cygwin port of tk. if test -f $i/unix/tkConfig.sh ; then - ac_cv_c_tkconfig=`(cd $i/unix; pwd)` + ac_cv_c_tkconfig=`(cd $i/unix; ${PWDCMD-pwd})` break fi if test -f $i/win/tkConfig.sh ; then - ac_cv_c_tkconfig=`(cd $i/win; pwd)` + ac_cv_c_tkconfig=`(cd $i/win; ${PWDCMD-pwd})` break fi done @@ -1302,9 +1302,9 @@ AC_CACHE_VAL(ac_cv_c_itclh,[ dnl first check to see if --with-itclinclude was specified if test x"${with_itclinclude}" != x ; then if test -f ${with_itclinclude}/itcl.h ; then - ac_cv_c_itclh=`(cd ${with_itclinclude}; pwd)` + ac_cv_c_itclh=`(cd ${with_itclinclude}; ${PWDCMD-pwd})` elif test -f ${with_itclinclude}/src/itcl.h ; then - ac_cv_c_itclh=`(cd ${with_itclinclude}/src; pwd)` + ac_cv_c_itclh=`(cd ${with_itclinclude}/src; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_itclinclude} directory doesn't contain headers]) fi @@ -1314,7 +1314,7 @@ dnl next check if it came with Itcl conf if test x"${ac_cv_c_itclconfig}" != x ; then for i in $dirlist; do if test -f $ac_cv_c_itclconfig/$i/src/itcl.h ; then - ac_cv_c_itclh=`(cd $ac_cv_c_itclconfig/$i/src; pwd)` + ac_cv_c_itclh=`(cd $ac_cv_c_itclconfig/$i/src; ${PWDCMD-pwd})` break fi done @@ -1335,7 +1335,7 @@ if test x"${ac_cv_c_itclh}" = x ; then dnl might be multiple version of Itcl, and we want the most recent one. for i in `ls -dr $itclpath/itcl* 2>/dev/null ` ; do if test -f $i/src/itcl.h ; then - ac_cv_c_itclh=`(cd $i/src; pwd)` + ac_cv_c_itclh=`(cd $i/src; ${PWDCMD-pwd})` break fi done @@ -1380,10 +1380,10 @@ if test x"${no_itcl}" = x ; then dnl First check to see if --with-itcllib was specified. if test x"${with_itcllib}" != x ; then if test -f "${with_itcllib}/libitcl$TCL_SHARED_LIB_SUFFIX" ; then - ac_cv_c_itcllib=`(cd ${with_itcllib}; pwd)`/libitcl$TCL_SHARED_LIB_SUFFIX + ac_cv_c_itcllib=`(cd ${with_itcllib}; ${PWDCMD-pwd})`/libitcl$TCL_SHARED_LIB_SUFFIX else if test -f "${with_itcllib}/libitcl$TCL_UNSHARED_LIB_SUFFIX"; then - ac_cv_c_itcllib=`(cd ${with_itcllib}; pwd)`/libitcl$TCL_UNSHARED_LIB_SUFFIX + ac_cv_c_itcllib=`(cd ${with_itcllib}; ${PWDCMD-pwd})`/libitcl$TCL_UNSHARED_LIB_SUFFIX fi fi fi @@ -1399,9 +1399,9 @@ if test x"${no_itcl}" = x ; then done dnl Itcl 7.5 and greater puts library in subdir. Look there first. if test -f "$itclpath/src/libitcl.$TCL_SHLIB_SUFFIX" ; then - ac_cv_c_itcllib=`(cd $itclpath/src; pwd)` + ac_cv_c_itcllib=`(cd $itclpath/src; ${PWDCMD-pwd})` elif test -f "$itclpath/src/libitcl.a"; then - ac_cv_c_itcllib=`(cd $itclpath/src; pwd)` + ac_cv_c_itcllib=`(cd $itclpath/src; ${PWDCMD-pwd})` fi fi dnl check in a few other private locations @@ -1415,10 +1415,10 @@ if test x"${no_itcl}" = x ; then for i in `ls -dr ${itclpath}/itcl* 2>/dev/null` ; do dnl Itcl 7.5 and greater puts library in subdir. Look there first. if test -f "$i/src/libitcl$TCL_SHLIB_SUFFIX" ; then - ac_cv_c_itcllib=`(cd $i/src; pwd)` + ac_cv_c_itcllib=`(cd $i/src; ${PWDCMD-pwd})` break elif test -f "$i/src/libitcl.a"; then - ac_cv_c_itcllib=`(cd $i/src; pwd)` + ac_cv_c_itcllib=`(cd $i/src; ${PWDCMD-pwd})` break fi done @@ -1430,9 +1430,9 @@ if test x"${no_itcl}" = x ; then ccpath=`which ${CC} | sed -e 's:/bin/.*::'`/lib dnl Itcl 7.5 and greater puts library in subdir. Look there first. if test -f "${ccpath}/libitcl$TCL_SHLIB_SUFFIX" ; then - ac_cv_c_itcllib=`(cd ${ccpath}; pwd)` + ac_cv_c_itcllib=`(cd ${ccpath}; ${PWDCMD-pwd})` elif test -f "${ccpath}/libitcl.a"; then - ac_cv_c_itcllib=`(cd ${ccpath}; pwd)` + ac_cv_c_itcllib=`(cd ${ccpath}; ${PWDCMD-pwd})` fi fi ]) @@ -1463,9 +1463,9 @@ AC_CACHE_VAL(ac_cv_c_itclsh,[ dnl first check to see if --with-itclinclude was specified if test x"${with_itclinclude}" != x ; then if test -f ${with_itclinclude}/itcl_sh ; then - ac_cv_c_itclsh=`(cd ${with_itclinclude}; pwd)` + ac_cv_c_itclsh=`(cd ${with_itclinclude}; ${PWDCMD-pwd})` elif test -f ${with_itclinclude}/src/itcl_sh ; then - ac_cv_c_itclsh=`(cd ${with_itclinclude}/src; pwd)` + ac_cv_c_itclsh=`(cd ${with_itclinclude}/src; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_itclinclude} directory doesn't contain itcl_sh]) fi @@ -1486,7 +1486,7 @@ if test x"${ac_cv_c_itclsh}" = x ; then dnl might be multiple version of Itcl, and we want the most recent one. for i in `ls -dr $itclpath/itcl* 2>/dev/null ` ; do if test -f $i/src/itcl_sh ; then - ac_cv_c_itclsh=`(cd $i/src; pwd)`/itcl_sh + ac_cv_c_itclsh=`(cd $i/src; ${PWDCMD-pwd})`/itcl_sh break fi done @@ -1525,9 +1525,9 @@ AC_CACHE_VAL(ac_cv_c_itclmkidx,[ dnl first check to see if --with-itclinclude was specified if test x"${with_itclinclude}" != x ; then if test -f ${with_itclinclude}/itcl_sh ; then - ac_cv_c_itclmkidx=`(cd ${with_itclinclude}; pwd)` + ac_cv_c_itclmkidx=`(cd ${with_itclinclude}; ${PWDCMD-pwd})` elif test -f ${with_itclinclude}/src/itcl_sh ; then - ac_cv_c_itclmkidx=`(cd ${with_itclinclude}/src; pwd)` + ac_cv_c_itclmkidx=`(cd ${with_itclinclude}/src; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_itclinclude} directory doesn't contain itcl_sh]) fi @@ -1548,7 +1548,7 @@ if test x"${ac_cv_c_itclmkidx}" = x ; th dnl might be multiple version of Itcl, and we want the most recent one. for i in `ls -dr $itclpath/itcl* 2>/dev/null ` ; do if test -f $i/library/itcl_mkindex.tcl ; then - ac_cv_c_itclmkidx=`(cd $i/library; pwd)`/itcl_mkindex.tcl + ac_cv_c_itclmkidx=`(cd $i/library; ${PWDCMD-pwd})`/itcl_mkindex.tcl break fi done @@ -1559,7 +1559,7 @@ if test x"${ac_cv_c_itclmkidx}" = x ; th dnl Itcl 7.5 and greater puts library in subdir. Look there first. for i in `ls -dr $ccpath/itcl* 2>/dev/null ` ; do if test -f $i/itcl_mkindex.tcl ; then - ac_cv_c_itclmkidx=`(cd $i; pwd)`/itcl_mkindex.tcl + ac_cv_c_itclmkidx=`(cd $i; ${PWDCMD-pwd})`/itcl_mkindex.tcl break fi done @@ -1595,9 +1595,9 @@ AC_CACHE_VAL(ac_cv_c_tixh,[ dnl first check to see if --with-tixinclude was specified if test x"${with_tixinclude}" != x ; then if test -f ${with_tixinclude}/tix.h ; then - ac_cv_c_tixh=`(cd ${with_tixinclude}; pwd)` + ac_cv_c_tixh=`(cd ${with_tixinclude}; ${PWDCMD-pwd})` elif test -f ${with_tixinclude}/generic/tix.h ; then - ac_cv_c_tixh=`(cd ${with_tixinclude}/generic; pwd)` + ac_cv_c_tixh=`(cd ${with_tixinclude}/generic; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_tixinclude} directory doesn't contain headers]) fi @@ -1607,7 +1607,7 @@ dnl next check if it came with Tix confi if test x"${ac_cv_c_tixconfig}" != x ; then for i in $dirlist; do if test -f $ac_cv_c_tixconfig/$i/generic/tix.h ; then - ac_cv_c_tixh=`(cd $ac_cv_c_tixconfig/$i/generic; pwd)` + ac_cv_c_tixh=`(cd $ac_cv_c_tixconfig/$i/generic; ${PWDCMD-pwd})` break fi done @@ -1628,7 +1628,7 @@ if test x"${ac_cv_c_tixh}" = x ; then dnl might be multiple version of Tix, and we want the most recent one. for i in `ls -dr $tixpath/tix* 2>/dev/null ` ; do if test -f $i/generic/tix.h ; then - ac_cv_c_tixh=`(cd $i/generic; pwd)` + ac_cv_c_tixh=`(cd $i/generic; ${PWDCMD-pwd})` break fi done @@ -1681,7 +1681,7 @@ if test x"${no_tix}" = x ; then # First check to see if --with-tixconfig was specified. if test x"${with_tixconfig}" != x ; then if test -f "${with_tixconfig}/tixConfig.sh" ; then - ac_cv_c_tixconfig=`(cd ${with_tixconfig}; pwd)` + ac_cv_c_tixconfig=`(cd ${with_tixconfig}; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_tixconfig} directory doesn't contain tixConfig.sh]) fi @@ -1697,7 +1697,7 @@ if test x"${no_tix}" = x ; then ../../../tix \ `ls -dr ../../../tix[[4]]* 2>/dev/null` ; do if test -f "$i/tixConfig.sh" ; then - ac_cv_c_tixconfig=`(cd $i; pwd)` + ac_cv_c_tixconfig=`(cd $i; ${PWDCMD-pwd})` break fi done @@ -1706,7 +1706,7 @@ if test x"${no_tix}" = x ; then if test x"${ac_cv_c_tixconfig}" = x ; then for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do if test -f "$i/tixConfig.sh" ; then - ac_cv_c_tkconfig=`(cd $i; pwd)` + ac_cv_c_tkconfig=`(cd $i; ${PWDCMD-pwd})` break fi done @@ -1717,7 +1717,7 @@ if test x"${no_tix}" = x ; then ${srcdir}/../tix \ `ls -dr ${srcdir}/../tix[[4-9]]* 2>/dev/null` ; do if test -f "$i/tixConfig.sh" ; then - ac_cv_c_tixconfig=`(cd $i; pwd)` + ac_cv_c_tixconfig=`(cd $i; ${PWDCMD-pwd})` break fi done @@ -1764,7 +1764,7 @@ if test x"${no_itcl}" = x ; then # First check to see if --with-itclconfig was specified. if test x"${with_itclconfig}" != x ; then if test -f "${with_itclconfig}/itclConfig.sh" ; then - ac_cv_c_itclconfig=`(cd ${with_itclconfig}; pwd)` + ac_cv_c_itclconfig=`(cd ${with_itclconfig}; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_itclconfig} directory doesn't contain itclConfig.sh]) fi @@ -1780,7 +1780,7 @@ if test x"${no_itcl}" = x ; then ../../../itcl/itcl \ `ls -dr ../../../itcl/itcl[[3]]* 2>/dev/null` ; do if test -f "$i/itclConfig.sh" ; then - ac_cv_c_itclconfig=`(cd $i; pwd)` + ac_cv_c_itclconfig=`(cd $i; ${PWDCMD-pwd})` break fi done @@ -1789,7 +1789,7 @@ if test x"${no_itcl}" = x ; then if test x"${ac_cv_c_itclconfig}" = x ; then for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do if test -f "$i/itclConfig.sh" ; then - ac_cv_c_itclconfig=`(cd $i; pwd)` + ac_cv_c_itclconfig=`(cd $i; ${PWDCMD-pwd})` break fi done @@ -1800,7 +1800,7 @@ if test x"${no_itcl}" = x ; then ${srcdir}/../itcl/itcl \ `ls -dr ${srcdir}/../itcl/itcl[[3]]* 2>/dev/null` ; do if test -f "$i/itcl/itclConfig.sh" ; then - ac_cv_c_itclconfig=`(cd $i; pwd)` + ac_cv_c_itclconfig=`(cd $i; ${PWDCMD-pwd})` break fi done @@ -1851,7 +1851,7 @@ if test x"${no_itk}" = x ; then # First check to see if --with-itkconfig was specified. if test x"${with_itkconfig}" != x ; then if test -f "${with_itkconfig}/itkConfig.sh" ; then - ac_cv_c_itkconfig=`(cd ${with_itkconfig}; pwd)` + ac_cv_c_itkconfig=`(cd ${with_itkconfig}; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_itkconfig} directory doesn't contain itkConfig.sh]) fi @@ -1867,7 +1867,7 @@ if test x"${no_itk}" = x ; then ../../../itcl/itk \ `ls -dr ../../../itcl/itk[[3]]* 2>/dev/null` ; do if test -f "$i/itkConfig.sh" ; then - ac_cv_c_itkconfig=`(cd $i; pwd)` + ac_cv_c_itkconfig=`(cd $i; ${PWDCMD-pwd})` break fi done @@ -1876,7 +1876,7 @@ if test x"${no_itk}" = x ; then if test x"${ac_cv_c_itkconfig}" = x ; then for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do if test -f "$i/itcl/itkConfig.sh" ; then - ac_cv_c_itkconfig=`(cd $i; pwd)` + ac_cv_c_itkconfig=`(cd $i; ${PWDCMD-pwd})` break fi done @@ -1887,7 +1887,7 @@ if test x"${no_itk}" = x ; then ${srcdir}/../itcl/itk \ `ls -dr ${srcdir}/../itcl/itk[[3]]* 2>/dev/null` ; do if test -f "$i/itkConfig.sh" ; then - ac_cv_c_itkconfig=`(cd $i; pwd)` + ac_cv_c_itkconfig=`(cd $i; ${PWDCMD-pwd})` break fi done @@ -1934,9 +1934,9 @@ AC_CACHE_VAL(ac_cv_c_libguih,[ dnl first check to see if --with-libguiinclude was specified if test x"${with_libguiinclude}" != x ; then if test -f ${with_libguiinclude}/guitcl.h ; then - ac_cv_c_libguih=`(cd ${with_libguiinclude}; pwd)` + ac_cv_c_libguih=`(cd ${with_libguiinclude}; ${PWDCMD-pwd})` elif test -f ${with_libguiinclude}/src/guitcl.h ; then - ac_cv_c_libguih=`(cd ${with_libguiinclude}/src; pwd)` + ac_cv_c_libguih=`(cd ${with_libguiinclude}/src; ${PWDCMD-pwd})` else AC_MSG_ERROR([${with_libguiinclude} directory doesn't contain headers]) fi @@ -1946,7 +1946,7 @@ dnl next check if it came with Libgui co if test x"${ac_cv_c_libguiconfig}" != x ; then for i in $dirlist; do if test -f $ac_cv_c_libguiconfig/$i/src/guitcl.h ; then - ac_cv_c_libguih=`(cd $ac_cv_c_libguiconfig/$i/src; pwd)` + ac_cv_c_libguih=`(cd $ac_cv_c_libguiconfig/$i/src; ${PWDCMD-pwd})` break fi done @@ -1967,7 +1967,7 @@ if test x"${ac_cv_c_libguih}" = x ; then dnl might be multiple version of Libgui, and we want the most recent one. for i in `ls -dr $libguipath/libgui* 2>/dev/null ` ; do if test -f $i/src/guitcl.h ; then - ac_cv_c_libguih=`(cd $i/src; pwd)` + ac_cv_c_libguih=`(cd $i/src; ${PWDCMD-pwd})` break fi done @@ -2004,7 +2004,7 @@ AC_CACHE_VAL(ac_cv_c_libguilib,[ if test x"${ac_cv_c_libguilib}" = x ; then for i in $dirlist; do if test -f "$i/libgui/src/Makefile" ; then - ac_cv_c_libguilib=`(cd $i/libgui/src; pwd)` + ac_cv_c_libguilib=`(cd $i/libgui/src; ${PWDCMD-pwd})` break fi done diff -uprN binutils-2.12.90.0.7/config/mh-apollo68 binutils-2.12.90.0.9/config/mh-apollo68 --- binutils-2.12.90.0.7/config/mh-apollo68 Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-apollo68 Thu May 23 15:10:10 2002 @@ -1,2 +1 @@ -HDEFINES = -DUSG RANLIB=true diff -uprN binutils-2.12.90.0.7/config/mh-cxux binutils-2.12.90.0.9/config/mh-cxux --- binutils-2.12.90.0.7/config/mh-cxux Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-cxux Thu May 23 15:10:10 2002 @@ -1,7 +1,5 @@ # Configuration for Harris CX/UX 7 (and maybe 6), based on sysv4 configuration. -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV -DSVR4 RANLIB = true # The l flag generates a warning from the SVR4 archiver, remove it. diff -uprN binutils-2.12.90.0.7/config/mh-dgux binutils-2.12.90.0.9/config/mh-dgux --- binutils-2.12.90.0.7/config/mh-dgux Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-dgux Thu May 23 15:10:10 2002 @@ -1,3 +1,2 @@ -HDEFINES=-DHOST_SYS=DGUX_SYS RANLIB=true diff -uprN binutils-2.12.90.0.7/config/mh-dgux386 binutils-2.12.90.0.9/config/mh-dgux386 --- binutils-2.12.90.0.7/config/mh-dgux386 Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-dgux386 Thu May 23 15:10:10 2002 @@ -1,10 +1,4 @@ -# from mh-dgux -HDEFINES=-DHOST_SYS=DGUX_SYS -RANLIB = true - # from mh-sysv4 -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV -DSVR4 RANLIB = true # The l flag generates a warning from the SVR4 archiver, remove it. diff -uprN binutils-2.12.90.0.7/config/mh-hp300 binutils-2.12.90.0.9/config/mh-hp300 --- binutils-2.12.90.0.7/config/mh-hp300 Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-hp300 Thu May 23 15:10:10 2002 @@ -1,5 +1,3 @@ -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV # If "ar" in $PATH is GNU ar, the symbol table may need rebuilding. # If it's HP/UX ar, this should be harmless. RANLIB = ar ts diff -uprN binutils-2.12.90.0.7/config/mh-hpux binutils-2.12.90.0.9/config/mh-hpux --- binutils-2.12.90.0.7/config/mh-hpux Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-hpux Thu May 23 15:10:10 2002 @@ -1,3 +1 @@ -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV RANLIB = true diff -uprN binutils-2.12.90.0.7/config/mh-hpux8 binutils-2.12.90.0.9/config/mh-hpux8 --- binutils-2.12.90.0.7/config/mh-hpux8 Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-hpux8 Thu May 23 15:10:10 2002 @@ -1,3 +1 @@ -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV RANLIB = true diff -uprN binutils-2.12.90.0.7/config/mh-irix4 binutils-2.12.90.0.9/config/mh-irix4 --- binutils-2.12.90.0.7/config/mh-irix4 Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-irix4 Wed Dec 31 16:00:00 1969 @@ -1,2 +0,0 @@ -# Makefile changes for SGI's running IRIX-4.x. -SYSV = -DSYSV diff -uprN binutils-2.12.90.0.7/config/mh-irix5 binutils-2.12.90.0.9/config/mh-irix5 --- binutils-2.12.90.0.7/config/mh-irix5 Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/config/mh-irix5 Thu May 23 15:10:10 2002 @@ -1,3 +1,2 @@ # Makefile changes for SGI's running IRIX-5.x. -SYSV = -DSYSV RANLIB = true diff -uprN binutils-2.12.90.0.7/config/mh-irix6 binutils-2.12.90.0.9/config/mh-irix6 --- binutils-2.12.90.0.7/config/mh-irix6 Thu Jul 27 17:57:28 2000 +++ binutils-2.12.90.0.9/config/mh-irix6 Thu May 23 15:10:10 2002 @@ -1,3 +1,2 @@ # Makefile changes for SGI's running IRIX-6.x. -SYSV = -DSYSV RANLIB = true diff -uprN binutils-2.12.90.0.7/config/mh-ncr3000 binutils-2.12.90.0.9/config/mh-ncr3000 --- binutils-2.12.90.0.7/config/mh-ncr3000 Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-ncr3000 Thu May 23 15:10:10 2002 @@ -1,7 +1,5 @@ # Host configuration file for an NCR 3000 (i486/SVR4) system. -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV -DSVR4 RANLIB = true # The l flag generates a warning from the SVR4 archiver, remove it. diff -uprN binutils-2.12.90.0.7/config/mh-ncrsvr43 binutils-2.12.90.0.9/config/mh-ncrsvr43 --- binutils-2.12.90.0.7/config/mh-ncrsvr43 Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-ncrsvr43 Thu May 23 15:10:10 2002 @@ -1,5 +1,3 @@ # Host configuration file for an NCR 3000 (i486/SVR43) system. -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV -DSVR4 RANLIB = true diff -uprN binutils-2.12.90.0.7/config/mh-necv4 binutils-2.12.90.0.9/config/mh-necv4 --- binutils-2.12.90.0.7/config/mh-necv4 Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-necv4 Thu May 23 15:10:10 2002 @@ -1,7 +1,5 @@ # Host Makefile fragment for NEC MIPS SVR4. -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV -DSVR4 RANLIB = true # NEC -lX11 needs some other libraries. diff -uprN binutils-2.12.90.0.7/config/mh-sco binutils-2.12.90.0.9/config/mh-sco --- binutils-2.12.90.0.7/config/mh-sco Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-sco Thu May 23 15:10:10 2002 @@ -1,5 +1,3 @@ -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV RANLIB = true # You may need this if you don't have bison. # BISON = yacc -Sm10400 diff -uprN binutils-2.12.90.0.7/config/mh-solaris binutils-2.12.90.0.9/config/mh-solaris --- binutils-2.12.90.0.7/config/mh-solaris Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/config/mh-solaris Thu May 23 15:10:10 2002 @@ -1,6 +1,5 @@ # Makefile changes for Suns running Solaris 2 -SYSV = -DSYSV RANLIB = true X11_EXTRA_LIBS = -lnsl -lsocket diff -uprN binutils-2.12.90.0.7/config/mh-sysv binutils-2.12.90.0.9/config/mh-sysv --- binutils-2.12.90.0.7/config/mh-sysv Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/config/mh-sysv Thu May 23 15:10:10 2002 @@ -1,3 +1 @@ -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV RANLIB = true diff -uprN binutils-2.12.90.0.7/config/mh-sysv4 binutils-2.12.90.0.9/config/mh-sysv4 --- binutils-2.12.90.0.7/config/mh-sysv4 Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/config/mh-sysv4 Thu May 23 15:10:10 2002 @@ -1,5 +1,3 @@ -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV -DSVR4 RANLIB = true # The l flag generates a warning from the SVR4 archiver, remove it. diff -uprN binutils-2.12.90.0.7/config/mh-sysv5 binutils-2.12.90.0.9/config/mh-sysv5 --- binutils-2.12.90.0.7/config/mh-sysv5 Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/config/mh-sysv5 Thu May 23 15:10:10 2002 @@ -1,5 +1,3 @@ -# Define SYSV as -DSYSV if you are using a System V operating system. -SYSV = -DSYSV -DSVR4 -DSVR5 RANLIB = true # The l flag generates a warning from the SVR4 archiver, remove it. diff -uprN binutils-2.12.90.0.7/config/mt-armpic binutils-2.12.90.0.9/config/mt-armpic --- binutils-2.12.90.0.7/config/mt-armpic Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/config/mt-armpic Wed Dec 31 16:00:00 1969 @@ -1 +0,0 @@ -PICFLAG_FOR_TARGET=-fPIC diff -uprN binutils-2.12.90.0.7/config/mt-elfalphapic binutils-2.12.90.0.9/config/mt-elfalphapic --- binutils-2.12.90.0.7/config/mt-elfalphapic Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/config/mt-elfalphapic Wed Dec 31 16:00:00 1969 @@ -1 +0,0 @@ -PICFLAG_FOR_TARGET=-fPIC diff -uprN binutils-2.12.90.0.7/config/mt-i370pic binutils-2.12.90.0.9/config/mt-i370pic --- binutils-2.12.90.0.7/config/mt-i370pic Fri Feb 25 13:39:23 2000 +++ binutils-2.12.90.0.9/config/mt-i370pic Wed Dec 31 16:00:00 1969 @@ -1 +0,0 @@ -PICFLAG_FOR_TARGET=-fPIC diff -uprN binutils-2.12.90.0.7/config/mt-ia64pic binutils-2.12.90.0.9/config/mt-ia64pic --- binutils-2.12.90.0.7/config/mt-ia64pic Thu Jul 27 17:57:30 2000 +++ binutils-2.12.90.0.9/config/mt-ia64pic Wed Dec 31 16:00:00 1969 @@ -1 +0,0 @@ -PICFLAG_FOR_TARGET=-fpic diff -uprN binutils-2.12.90.0.7/config/mt-m68kpic binutils-2.12.90.0.9/config/mt-m68kpic --- binutils-2.12.90.0.7/config/mt-m68kpic Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/config/mt-m68kpic Wed Dec 31 16:00:00 1969 @@ -1 +0,0 @@ -PICFLAG_FOR_TARGET=-fpic diff -uprN binutils-2.12.90.0.7/config/mt-papic binutils-2.12.90.0.9/config/mt-papic --- binutils-2.12.90.0.7/config/mt-papic Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/config/mt-papic Wed Dec 31 16:00:00 1969 @@ -1 +0,0 @@ -PICFLAG_FOR_TARGET=-fPIC diff -uprN binutils-2.12.90.0.7/config/mt-ppcpic binutils-2.12.90.0.9/config/mt-ppcpic --- binutils-2.12.90.0.7/config/mt-ppcpic Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/config/mt-ppcpic Wed Dec 31 16:00:00 1969 @@ -1 +0,0 @@ -PICFLAG_FOR_TARGET=-fPIC diff -uprN binutils-2.12.90.0.7/config/mt-s390pic binutils-2.12.90.0.9/config/mt-s390pic --- binutils-2.12.90.0.7/config/mt-s390pic Sat Feb 10 15:37:46 2001 +++ binutils-2.12.90.0.9/config/mt-s390pic Wed Dec 31 16:00:00 1969 @@ -1 +0,0 @@ -PICFLAG_FOR_TARGET=-fpic diff -uprN binutils-2.12.90.0.7/config/mt-sparcpic binutils-2.12.90.0.9/config/mt-sparcpic --- binutils-2.12.90.0.7/config/mt-sparcpic Thu Jul 27 17:57:29 2000 +++ binutils-2.12.90.0.9/config/mt-sparcpic Wed Dec 31 16:00:00 1969 @@ -1 +0,0 @@ -PICFLAG_FOR_TARGET=`case '${LIBCFLAGS} ${LIBCXXFLAGS}' in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac` diff -uprN binutils-2.12.90.0.7/config/mt-x86pic binutils-2.12.90.0.9/config/mt-x86pic --- binutils-2.12.90.0.7/config/mt-x86pic Thu Jun 3 11:01:56 1999 +++ binutils-2.12.90.0.9/config/mt-x86pic Wed Dec 31 16:00:00 1969 @@ -1 +0,0 @@ -PICFLAG_FOR_TARGET=-fpic diff -uprN binutils-2.12.90.0.7/config-ml.in binutils-2.12.90.0.9/config-ml.in --- binutils-2.12.90.0.7/config-ml.in Tue Aug 22 16:49:39 2000 +++ binutils-2.12.90.0.9/config-ml.in Thu May 23 15:10:09 2002 @@ -510,14 +510,16 @@ multidirs=`echo "$multidirs" | sed -e 's cat > Multi.tem <<\EOF +PWD=$${PWDCMD-pwd} + # FIXME: There should be an @-sign in front of the `if'. # Leave out until this is tested a bit more. multi-do: if [ -z "$(MULTIDIRS)" ]; then \ true; \ else \ - rootpre=`pwd`/; export rootpre; \ - srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \ + rootpre=`${PWD}`/; export rootpre; \ + srcrootpre=`cd $(srcdir); ${PWD}`/; export srcrootpre; \ lib=`echo $${rootpre} | sed -e 's,^.*/\([^/][^/]*\)/$$,\1,'`; \ compiler="$(CC)"; \ for i in `$${compiler} --print-multi-lib 2>/dev/null`; do \ @@ -552,7 +554,7 @@ multi-clean: if [ -z "$(MULTIDIRS)" ]; then \ true; \ else \ - lib=`pwd | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \ + lib=`${PWD} | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \ for dir in Makefile $(MULTIDIRS); do \ if [ -f ../$${dir}/$${lib}/Makefile ]; then \ if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) $(DO)); \ @@ -659,10 +661,10 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n if [ "${ml_verbose}" = --verbose ]; then echo "Running configure in multilib subdirs ${multidirs}" - echo "pwd: `pwd`" + echo "pwd: `${PWDCMD-pwd}`" fi - ml_origdir=`pwd` + ml_origdir=`${PWDCMD-pwd}` ml_libdir=`echo $ml_origdir | sed -e 's,^.*/,,'` # cd to top-level-build-dir/${with_target_subdir} cd .. @@ -671,7 +673,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n if [ "${ml_verbose}" = --verbose ]; then echo "Running configure in multilib subdir ${ml_dir}" - echo "pwd: `pwd`" + echo "pwd: `${PWDCMD-pwd}`" fi if [ -d ${ml_dir} ]; then true; else @@ -699,7 +701,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n case ${srcdir} in ".") - echo Building symlink tree in `pwd`/${ml_dir}/${ml_libdir} + echo Building symlink tree in `${PWDCMD-pwd}`/${ml_dir}/${ml_libdir} if [ "${with_target_subdir}" != "." ]; then ml_unsubdir="../" else diff -uprN binutils-2.12.90.0.7/config.guess binutils-2.12.90.0.9/config.guess --- binutils-2.12.90.0.7/config.guess Thu Mar 7 11:52:36 2002 +++ binutils-2.12.90.0.9/config.guess Thu May 23 15:10:09 2002 @@ -3,7 +3,7 @@ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002 Free Software Foundation, Inc. -timestamp='2002-02-19' +timestamp='2002-05-22' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -98,7 +98,7 @@ trap 'rm -f $dummy.c $dummy.o $dummy.rel set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int dummy(){}" > $dummy.c ; - for c in cc gcc c89 ; do + for c in cc gcc c89 c99 ; do ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; if test $? = 0 ; then CC_FOR_BUILD="$c"; break ; @@ -138,9 +138,11 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - UNAME_MACHINE_ARCH=`(uname -p) 2>/dev/null` || \ - UNAME_MACHINE_ARCH=unknown + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; @@ -427,6 +429,9 @@ EOF Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS) + echo powerpc-harris-powermax + exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; @@ -759,7 +764,7 @@ EOF echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux + echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu @@ -770,15 +775,15 @@ EOF #undef CPU #undef mips #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif - #endif + #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` rm -f $dummy.c @@ -957,7 +962,7 @@ EOF exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` @@ -1058,12 +1063,12 @@ EOF echo `uname -p`-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) - if test "${UNAME_MACHINE}" = "x86pc"; then + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 UNAME_MACHINE=pc - echo i386-${UNAME_MACHINE}-nto-qnx - else - echo `uname -p`-${UNAME_MACHINE}-nto-qnx fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx diff -uprN binutils-2.12.90.0.7/config.sub binutils-2.12.90.0.9/config.sub --- binutils-2.12.90.0.7/config.sub Thu Mar 7 11:52:36 2002 +++ binutils-2.12.90.0.9/config.sub Thu May 23 15:10:09 2002 @@ -3,7 +3,7 @@ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002 Free Software Foundation, Inc. -timestamp='2002-02-22' +timestamp='2002-05-22' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -243,7 +243,7 @@ case $basic_machine in | mips64vr4100 | mips64vr4100el | mips64vr4300 \ | mips64vr4300el | mips64vr5000 | mips64vr5000el \ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ - | mipsisa32 \ + | mipsisa32 | mipsisa64 \ | mn10200 | mn10300 \ | ns16k | ns32k \ | openrisc | or32 \ @@ -251,7 +251,7 @@ case $basic_machine in | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \ - | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic80 | tron \ | v850 | v850e \ @@ -285,7 +285,7 @@ case $basic_machine in | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armv*-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c54x-* \ @@ -310,7 +310,7 @@ case $basic_machine in | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | v850-* | v850e-* | vax-* \ @@ -1094,7 +1094,7 @@ case $os in | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova*) + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1413,7 +1413,7 @@ case $basic_machine in -ptx*) vendor=sequent ;; - -vxsim* | -vxworks*) + -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) diff -uprN binutils-2.12.90.0.7/configure binutils-2.12.90.0.9/configure --- binutils-2.12.90.0.7/configure Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/configure Thu May 23 15:10:09 2002 @@ -3,8 +3,8 @@ ### WARNING: this file contains embedded tabs. Do not run untabify on this file. # Configuration script -# Copyright (C) 1988, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1999, 2000, 2001 -# Free Software Foundation, Inc. +# Copyright (C) 1988, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1999, 2000, 2001, +# 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 @@ -89,7 +89,7 @@ subdirs= target_alias=NOTARGET target_makefile_frag= undefs=NOUNDEFS -version="$Revision: 1.14 $" +version="$Revision: 1.16 $" x11=default bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' @@ -152,13 +152,13 @@ NO_EDIT="This file was generated automat progname=$0 # if PWD already has a value, it is probably wrong. -if [ -n "$PWD" ]; then PWD=`pwd`; fi +if [ -n "$PWD" ]; then PWD=`${PWDCMD-pwd}`; fi case "${progname}" in /* | [A-Za-z]:[\\/]* ) ;; */*) ;; *) - PATH=$PATH:${PWD=`pwd`} ; export PATH + PATH=$PATH:${PWD=`${PWDCMD-pwd}`} ; export PATH ;; esac @@ -526,7 +526,7 @@ fi configsub=`echo ${progname} | sed 's/configure$/config.sub/'` moveifchange=`echo ${progname} | sed 's/configure$/move-if-change/'` ## the sed command below emulates the dirname command -topsrcdir=`cd \`echo ${progname} | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'\`; pwd` +topsrcdir=`cd \`echo ${progname} | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'\`; ${PWDCMD-pwd}` # this is a hack. sun4 must always be a valid host alias or this will fail. @@ -566,8 +566,8 @@ case "${srcdir}" in echo "Invalid source directory ${srcdir}" >&2 exit 1 fi - pwd=`pwd` - srcpwd=`cd ${srcdir} ; pwd` + pwd=`${PWDCMD-pwd}` + srcpwd=`cd ${srcdir} ; ${PWDCMD-pwd}` if [ "${pwd}" = "${srcpwd}" ] ; then srcdir=. fi @@ -579,7 +579,7 @@ case "${srcdir}" in ".") ;; *) if [ -f ${srcdir}/config.status ] ; then - echo '***' Cannot configure here in \"${PWD=`pwd`}\" when \"${srcdir}\" is currently configured. 1>&2 + echo '***' Cannot configure here in \"${PWD=`${PWDCMD-pwd}`}\" when \"${srcdir}\" is currently configured. 1>&2 exit 1 fi esac @@ -708,7 +708,7 @@ fi # some sanity checks on configure.in case "${srctrigger}" in "") - echo '***' srctrigger not set in ${PWD=`pwd`}/configure.in. 1>&2 + echo '***' srctrigger not set in ${PWD=`${PWDCMD-pwd}`}/configure.in. 1>&2 exit 1 ;; *) ;; @@ -778,8 +778,8 @@ esac if [ ! -r ${srcdir}/${srctrigger} ] ; then case "${srcdirdefaulted}" in - "") echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/${srcdir}" 1>&2 ;; - *) echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/. or ${PWD=`pwd`}/.." 1>&2 ;; + "") echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`${PWDCMD-pwd}`}/${srcdir}" 1>&2 ;; + *) echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`${PWDCMD-pwd}`}/. or ${PWD=`${PWDCMD-pwd}`}/.." 1>&2 ;; esac echo '***' \(At least ${srctrigger} is missing.\) 1>&2 @@ -1072,22 +1072,6 @@ export CXX export CFLAGS export CXXFLAGS -# FIXME: This should be in configure.in, not configure -case "$host" in - *go32*) - enable_gdbtk=no ;; - *msdosdjgpp*) - enable_gdbtk=no ;; -esac - -# FIXME: This should be in configure.in, not configure -# Determine whether gdb needs tk/tcl or not. -if [ "$enable_gdbtk" != "no" ]; then - GDB_TK="all-tcl all-tk all-itcl all-tix all-libgui" -else - GDB_TK="" -fi - all_build_modules= if test x"${build_alias}" != x"${host_alias}" then @@ -1124,7 +1108,7 @@ for subdir in . ${subdirs} ; do if mkdir ${subdir} ; then true else - echo '***' "${progname}: could not make ${PWD=`pwd`}/${subdir}" 1>&2 + echo '***' "${progname}: could not make ${PWD=`${PWDCMD-pwd}`}/${subdir}" 1>&2 exit 1 fi fi @@ -1223,7 +1207,7 @@ EOF sed -e "/^####/ r ${package_makefile_rules_frag}" ${srcdir}/${subdir}/${Makefile_in} > ${Makefile}.tem else echo '***' Expected package makefile rules fragment \"${package_makefile_rules_frag}\" 1>&2 - echo '***' is missing in ${PWD=`pwd`}. 1>&2 + echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2 cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem fi esac @@ -1259,7 +1243,7 @@ EOF sed -e "/^####/ r ${host_makefile_frag}" ${Makefile} > ${subdir}/Makefile.tem else echo '***' Expected host makefile fragment \"${host_makefile_frag}\" 1>&2 - echo '***' is missing in ${PWD=`pwd`}. 1>&2 + echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2 mv ${Makefile} ${subdir}/Makefile.tem fi esac @@ -1295,7 +1279,7 @@ EOF sed -e "/^####/ r ${package_makefile_frag}" ${Makefile} > ${subdir}/Makefile.tem else echo '***' Expected package makefile fragment \"${package_makefile_rules_frag}\" 1>&2 - echo '***' is missing in ${PWD=`pwd`}. 1>&2 + echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2 mv ${Makefile} ${subdir}/Makefile.tem fi esac @@ -1481,7 +1465,7 @@ EOF newusing=`echo "${using}" | sed 's/and/using/'` using=${newusing} - echo "Created \"${Makefile}\" in" ${PWD=`pwd`} ${using} + echo "Created \"${Makefile}\" in" ${PWD=`${PWDCMD-pwd}`} ${using} . ${tmpfile}.pos @@ -1547,14 +1531,14 @@ if [ -z "${norecursion}" ] && [ -n "${co if mkdir ./${bld_dir} ; then true else - echo '***' "${progname}: could not make ${PWD=`pwd`}/${bld_dir}" 1>&2 + echo '***' "${progname}: could not make ${PWD=`${PWDCMD-pwd}`}/${bld_dir}" 1>&2 exit 1 fi fi ;; esac - POPDIR=${PWD=`pwd`} + POPDIR=${PWD=`${PWDCMD-pwd}`} cd ${bld_dir} ### figure out what to do with srcdir @@ -1602,7 +1586,7 @@ if [ -z "${norecursion}" ] && [ -n "${co ${srcdiroption} ${diroptions} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} ${withoptions} ${withoutoptions} ${enableoptions} ${disableoptions} ${floating_pointoption} ${cache_file_option} ${removing} ${other_options} ${redirect} ; then true else - echo Configure in `pwd` failed, exiting. 1>&2 + echo Configure in `${PWDCMD-pwd}` failed, exiting. 1>&2 exit 1 fi fi diff -uprN binutils-2.12.90.0.7/configure.in binutils-2.12.90.0.9/configure.in --- binutils-2.12.90.0.7/configure.in Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/configure.in Thu May 23 15:10:09 2002 @@ -42,11 +42,7 @@ # these libraries are used by various programs built for the host environment # -host_libs="intl mmalloc libiberty opcodes bfd readline gash db tcl tk tcl8.1 tk8.1 tclX itcl tix libgui zlib" - -if [ "${enable_gdbgui}" = "yes" ] ; then - host_libs="${host_libs} libgui" -fi +host_libs="intl mmalloc libiberty opcodes bfd readline db tcl tk tcl8.1 tk8.1 tclX itcl tix libgui zlib" libstdcxx_version="target-libstdc++-v3" # Don't use libstdc++-v3's flags to configure/build itself. @@ -55,7 +51,7 @@ libstdcxx_flags='`case $$dir in libstdc+ # these tools are built for the host environment # Note, the powerpc-eabi build depends on sim occurring before gdb in order to # know that we are building the simulator. -host_tools="texinfo byacc flex bison binutils ld gas gcc cgen sid sim gdb make patch prms send-pr gprof gdbtest tgas etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool ispell grep diff rcs cvssrc fileutils shellutils time textutils wdiff find emacs emacs19 uudecode hello tar gzip indent recode release sed utils guile perl apache inet gawk findutils snavigator libtool gettext zip fastjar" +host_tools="texinfo byacc flex bison binutils ld gas gcc cgen sid sim gdb make patch prms send-pr gprof gdbtest tgas etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool ispell grep diff rcs cvssrc fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl apache inet gawk findutils snavigator libtool gettext zip fastjar" # libgcj represents the runtime libraries only used by gcj. libgcj="target-libffi \ @@ -97,7 +93,7 @@ target_tools="target-examples target-gro # # This must be a single line because of the way it is searched by grep in # the code below. -native_only="autoconf automake libtool cvssrc emacs emacs19 fileutils find gawk gettext grep gzip hello indent ispell m4 rcs recode sed shellutils tar textutils gash uudecode wdiff gprof target-groff guile perl apache inet time ash bash bzip2 prms snavigator gnuserv target-gperf" +native_only="autoconf automake libtool cvssrc fileutils find gawk gettext grep gzip hello indent ispell m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl apache inet time ash bash bzip2 prms snavigator gnuserv target-gperf" # directories to be built in a cross environment only # @@ -124,16 +120,16 @@ appdirs="" # Work in distributions that contain no compiler tools, like Autoconf. tentative_cc="" -if [ -d ${srcdir}/config ]; then +if test -d ${srcdir}/config ; then case "${host}" in m68k-hp-hpux*) # Avoid "too much defining" errors from HPUX compiler. tentative_cc="cc -Wp,-H256000" - host_makefile_frag="${host_makefile_frag} config/mh-hp300" + host_makefile_frag="config/mh-hp300" ;; m68k-apollo-sysv*) tentative_cc="cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DUSG" - host_makefile_frag="${host_makefile_frag} config/mh-apollo68" + host_makefile_frag="config/mh-apollo68" ;; m68k-apollo-bsd*) #None of the Apollo compilers can compile gas or binutils. The preprocessor @@ -143,47 +139,46 @@ case "${host}" in # or whatever), but I'm not sure leaving CC as cc is any better... #CC=cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DNO_STDARG tentative_cc=gcc - host_makefile_frag="${host_makefile_frag} config/mh-a68bsd" + host_makefile_frag="config/mh-a68bsd" ;; m88k-dg-dgux*) tentative_cc="gcc -Wall -ansi -D__using_DGUX" - host_makefile_frag="${host_makefile_frag} config/mh-dgux" + host_makefile_frag="config/mh-dgux" ;; m88k-harris-cxux*) # Under CX/UX, we want to tell the compiler to use ANSI mode. tentative_cc="cc -Xa" - host_makefile_frag="${host_makefile_frag} config/mh-cxux" + host_makefile_frag="config/mh-cxux" ;; m88k-motorola-sysv*) - host_makefile_frag="${host_makefile_frag} config/mh-delta88" + host_makefile_frag="config/mh-delta88" ;; mips*-dec-ultrix*) tentative_cc="cc -Wf,-XNg1000" - host_makefile_frag="${host_makefile_frag} config/mh-decstation" + host_makefile_frag="config/mh-decstation" ;; mips*-nec-sysv4*) # The C compiler on NEC MIPS SVR4 needs bigger tables. tentative_cc="cc -ZXNd=5000 -ZXNg=1000" - host_makefile_frag="${host_makefile_frag} config/mh-necv4" + host_makefile_frag="config/mh-necv4" ;; mips*-sgi-irix6*) - host_makefile_frag="${host_makefile_frag} config/mh-irix6" + host_makefile_frag="config/mh-irix6" ;; mips*-sgi-irix5*) - host_makefile_frag="${host_makefile_frag} config/mh-irix5" + host_makefile_frag="config/mh-irix5" ;; mips*-sgi-irix4*) # Tell compiler to use K&R C. We can't compile under the SGI Ansi # environment. Also bump switch table size so that cp-parse will # compile. Bump string length limit so linker builds. tentative_cc="cc -cckr -Wf,-XNg1500 -Wf,-XNk1000 -Wf,-XNh2000 -Wf,-XNl8192" - host_makefile_frag="${host_makefile_frag} config/mh-irix4" ;; mips*-sgi-irix3*) - host_makefile_frag="${host_makefile_frag} config/mh-sysv" + host_makefile_frag="config/mh-sysv" ;; mips*-*-sysv4*) - host_makefile_frag="${host_makefile_frag} config/mh-sysv4" + host_makefile_frag="config/mh-sysv4" ;; mips*-*-sysv*) # This is for a MIPS running RISC/os 4.52C. @@ -199,24 +194,24 @@ case "${host}" in # This is not part of CFLAGS because perhaps not all C compilers have this # option. tentative_cc="cc -systype sysv" - host_makefile_frag="${host_makefile_frag} config/mh-riscos" + host_makefile_frag="config/mh-riscos" ;; i370-ibm-opened*) tentative_cc="c89" - host_makefile_frag="${host_makefile_frag} config/mh-openedition" + host_makefile_frag="config/mh-openedition" ;; i[3456]86-*-sysv5*) - host_makefile_frag="${host_makefile_frag} config/mh-sysv5" + host_makefile_frag="config/mh-sysv5" ;; i[3456]86-*-dgux*) tentative_cc="gcc -Wall -ansi -D__using_DGUX" - host_makefile_frag="${host_makefile_frag} config/mh-dgux386" + host_makefile_frag="config/mh-dgux386" ;; i[3456]86-ncr-sysv4.3*) # The MetaWare compiler will generate a copyright message unless you # turn it off by adding the -Hnocopyr flag. tentative_cc="cc -Hnocopyr" - host_makefile_frag="${host_makefile_frag} config/mh-ncrsvr43" + host_makefile_frag="config/mh-ncrsvr43" ;; i[3456]86-ncr-sysv4*) # for an NCR 3000 (i486/SVR4) system. @@ -225,50 +220,47 @@ case "${host}" in # you run it, but it chokes and dies on a whole bunch of GNU source # files. Default to using the AT&T compiler installed in /usr/ccs/ATT/cc. tentative_cc="/usr/ccs/ATT/cc" - host_makefile_frag="${host_makefile_frag} config/mh-ncr3000" + host_makefile_frag="config/mh-ncr3000" ;; i[3456]86-*-sco3.2v5*) - host_makefile_frag="${host_makefile_frag} config/mh-sysv" + host_makefile_frag="config/mh-sysv" ;; i[3456]86-*-sco*) # The native C compiler botches some simple uses of const. Unfortunately, # it doesn't defined anything like "__sco__" for us to test for in ansidecl.h. tentative_cc="cc -Dconst=" - host_makefile_frag="${host_makefile_frag} config/mh-sco" + host_makefile_frag="config/mh-sco" ;; i[3456]86-*-udk*) - host_makefile_frag="${host_makefile_frag} config/mh-sysv5" + host_makefile_frag="config/mh-sysv5" ;; i[3456]86-*-isc*) - host_makefile_frag="${host_makefile_frag} config/mh-sysv" + host_makefile_frag="config/mh-sysv" ;; i[3456]86-*-solaris2*) - host_makefile_frag="${host_makefile_frag} config/mh-sysv4" + host_makefile_frag="config/mh-sysv4" ;; i[3456]86-*-aix*) - host_makefile_frag="${host_makefile_frag} config/mh-aix386" + host_makefile_frag="config/mh-aix386" ;; i[3456]86-*-msdosdjgpp*) - host_makefile_frag="${host_makefile_frag} config/mh-djgpp" + host_makefile_frag="config/mh-djgpp" ;; *-cygwin*) - host_makefile_frag="${host_makefile_frag} config/mh-cygwin" + host_makefile_frag="config/mh-cygwin" ;; *-mingw32*) - host_makefile_frag="${host_makefile_frag} config/mh-mingw32" + host_makefile_frag="config/mh-mingw32" ;; *-interix*) - host_makefile_frag="${host_makefile_frag} config/mh-interix" - ;; - *-windows*) - host_makefile_frag="${host_makefile_frag} config/mh-windows" + host_makefile_frag="config/mh-interix" ;; vax-*-ultrix2*) # The old BSD pcc isn't up to compiling parts of gdb so use gcc tentative_cc=gcc ;; *-*-solaris2*) - host_makefile_frag="${host_makefile_frag} config/mh-solaris" + host_makefile_frag="config/mh-solaris" ;; m68k-sun-sunos*) # Sun's C compiler needs the -J flag to be able to compile cp-parse.c @@ -277,30 +269,30 @@ case "${host}" in ;; *-hp-hpux[78]*) tentative_cc="cc -Wp,-H256000" - host_makefile_frag="${host_makefile_frag} config/mh-hpux8" + host_makefile_frag="config/mh-hpux8" ;; *-hp-hpux*) tentative_cc="cc -Wp,-H256000" - host_makefile_frag="${host_makefile_frag} config/mh-hpux" + host_makefile_frag="config/mh-hpux" ;; *-*-hiux*) tentative_cc="cc -Wp,-H256000" - host_makefile_frag="${host_makefile_frag} config/mh-hpux" + host_makefile_frag="config/mh-hpux" ;; rs6000-*-lynxos*) # /bin/cc is less than useful for our purposes. Always use GCC tentative_cc="/usr/cygnus/progressive/bin/gcc" - host_makefile_frag="${host_makefile_frag} config/mh-lynxrs6k" + host_makefile_frag="config/mh-lynxrs6k" ;; *-*-lynxos*) # /bin/cc is less than useful for our purposes. Always use GCC tentative_cc="/bin/gcc" ;; *-*-sysv4*) - host_makefile_frag="${host_makefile_frag} config/mh-sysv4" + host_makefile_frag="config/mh-sysv4" ;; *-*-sysv*) - host_makefile_frag="${host_makefile_frag} config/mh-sysv" + host_makefile_frag="config/mh-sysv" ;; esac fi @@ -308,7 +300,7 @@ fi # If we aren't going to be using gcc, see if we can extract a definition # of CC from the fragment. # Actually, use the 'pre-extracted' version above. -if [ -z "${CC}" ] && [ "${build}" = "${host}" ]; then +if test -z "${CC}" && test "${build}" = "${host}" ; then IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" found= for dir in $PATH; do @@ -319,14 +311,14 @@ if [ -z "${CC}" ] && [ "${build}" = "${h fi done IFS="$save_ifs" - if [ -z "${found}" ] && [ -n "${tentative_cc}" ] ; then + if test -z "${found}" && test -n "${tentative_cc}" ; then CC=$tentative_cc fi fi # We default to --with-shared on platforms where -fpic is meaningless. # Well, we don't yet, but we will. -if false && [ "${host}" = "${target}" ] && [ x${enable_shared} = x ]; then +if false && test "${host}" = "${target}" && test x${enable_shared} = x ; then case "${target}" in alpha*-dec-osf*) enable_shared=yes ;; alpha*-*-linux*) enable_shared=yes ;; @@ -350,51 +342,8 @@ case "${enable_shared}" in *) shared=yes ;; esac -if [ x${shared} = xyes ]; then - case "${host}" in - alpha*-*-linux*) - host_makefile_frag="${host_makefile_frag} config/mh-elfalphapic" - ;; - arm*-*-*) - host_makefile_frag="${host_makefile_frag} config/mh-armpic" - ;; - parisc*-*-* | hppa*-*-*) - host_makefile_frag="${host_makefile_frag} config/mh-papic" - ;; - i[3456]86-*-cygwin*) - # We don't want -fPIC on Cygwin. - ;; - i[3456]86-*-*) - host_makefile_frag="${host_makefile_frag} config/mh-x86pic" - ;; - i370-*-*) - host_makefile_frag="${host_makefile_frag} config/mh-i370pic" - ;; - ia64-*-*) - host_makefile_frag="${host_makefile_frag} config/mh-ia64pic" - ;; - sparc64-*-*) - host_makefile_frag="${host_makefile_frag} config/mh-sparcpic" - ;; - powerpc*-*-aix*) - # We don't want -fPIC on AIX. - ;; - powerpc*-*-*) - host_makefile_frag="${host_makefile_frag} config/mh-ppcpic" - ;; - s390-* | s390x-*) - host_makefile_frag="${host_makefile_frag} config/mh-s390pic" - ;; - *-*-*) - if test -f ${srcdir}/config/mh-${host_cpu}pic; then - host_makefile_frag="${host_makefile_frag} config/mh-${host_cpu}pic" - fi - ;; - esac -fi - rm -f mh-frag -if [ -n "${host_makefile_frag}" ] ; then +if test -n "${host_makefile_frag}" ; then for f in ${host_makefile_frag} do cat ${srcdir}/$f >> mh-frag @@ -464,7 +413,7 @@ case ${with_x} in yes | "") # the default value for this tree is that X11 is available ;; no) - skipdirs="${skipdirs} tk libgui gash" + skipdirs="${skipdirs} tk libgui" ;; *) echo "*** bad value \"${with_x}\" for -with-x flag; ignored" 1>&2 @@ -478,7 +427,7 @@ esac is_cross_compiler= -if [ x"${host}" = x"${target}" ] ; then +if test x"${host}" = x"${target}" ; then # when doing a native toolchain, don't build the targets # that are in the 'cross only' list skipdirs="${skipdirs} ${cross_only}" @@ -494,21 +443,21 @@ fi # can reliably find it. target_subdir=${target_alias} -if [ ! -d ${target_subdir} ] ; then +if test ! -d ${target_subdir} ; then if mkdir ${target_subdir} ; then true else - echo "'*** could not make ${PWD=`pwd`}/${target_subdir}" 1>&2 + echo "'*** could not make ${PWD=`${PWDCMD-pwd}`}/${target_subdir}" 1>&2 exit 1 fi fi build_subdir=${build_alias} -if [ x"${build_alias}" != x"${host}" ] ; then - if [ ! -d ${build_subdir} ] ; then +if test x"${build_alias}" != x"${host}" ; then + if test ! -d ${build_subdir} ; then if mkdir ${build_subdir} ; then true else - echo "'*** could not make ${PWD=`pwd`}/${build_subdir}" 1>&2 + echo "'*** could not make ${PWD=`${PWDCMD-pwd}`}/${build_subdir}" 1>&2 exit 1 fi fi @@ -518,8 +467,8 @@ copy_dirs= # Handle --with-headers=XXX. The contents of the named directory are # copied to $(tooldir)/sys-include. -if [ x"${with_headers}" != x ]; then - if [ x${is_cross_compiler} = xno ]; then +if test x"${with_headers}" != x ; then + if test x${is_cross_compiler} = xno ; then echo 1>&2 '***' --with-headers is only supported when cross compiling exit 1 fi @@ -532,8 +481,8 @@ fi # Handle --with-libs=XXX. Multiple directories are permitted. The # contents are copied to $(tooldir)/lib. -if [ x"${with_libs}" != x ]; then - if [ x${is_cross_compiler} = xno ]; then +if test x"${with_libs}" != x ; then + if test x${is_cross_compiler} = xno ; then echo 1>&2 '***' --with-libs is only supported when cross compiling exit 1 fi @@ -550,21 +499,21 @@ fi # If both --with-headers and --with-libs are specified, default to # --without-newlib. -if [ x"${with_headers}" != x ] && [ x"${with_libs}" != x ]; then - if [ x"${with_newlib}" = x ]; then +if test x"${with_headers}" != x && test x"${with_libs}" != x ; then + if test x"${with_newlib}" = x ; then with_newlib=no fi fi # Recognize --with-newlib/--without-newlib. -if [ x${with_newlib} = xno ]; then +if test x${with_newlib} = xno ; then skipdirs="${skipdirs} target-newlib" -elif [ x${with_newlib} = xyes ]; then +elif test x${with_newlib} = xyes ; then skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'` fi # Default to using --with-stabs for certain targets. -if [ x${with_stabs} = x ]; then +if test x${with_stabs} = x ; then case "${target}" in mips*-*-irix6*) ;; @@ -578,15 +527,15 @@ fi # Handle ${copy_dirs} set fnord ${copy_dirs} shift -while [ $# != 0 ]; do - if [ -f $2/COPIED ] && [ x"`cat $2/COPIED`" = x"$1" ]; then +while test $# != 0 ; do + if test -f $2/COPIED && test x"`cat $2/COPIED`" = x"$1" ; then : else echo Copying $1 to $2 # Use the install script to create the directory and all required # parent directories. - if [ -d $2 ]; then + if test -d $2 ; then : else echo >config.temp @@ -694,15 +643,21 @@ case "${target}" in ;; *-*-rtems*) noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" + case ${target} in + h8300*-*-* | h8500-*-*) + noconfigdirs="$noconfigdirs target-libf2c" + ;; + *) ;; + esac ;; *-*-vxworks*) noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}" ;; alpha*-dec-osf*) - # ld works, but does not support shared libraries. emacs doesn't - # work. newlib is not 64 bit ready. I'm not sure about fileutils. + # ld works, but does not support shared libraries. + # newlib is not 64 bit ready. I'm not sure about fileutils. # gas doesn't generate exception information. - noconfigdirs="$noconfigdirs gas ld emacs fileutils target-newlib target-libgloss" + noconfigdirs="$noconfigdirs gas ld fileutils target-newlib target-libgloss" ;; alpha*-*-*vms*) noconfigdirs="$noconfigdirs gdb ld target-newlib target-libgloss ${libgcj}" @@ -793,7 +748,7 @@ case "${target}" in ;; fr30-*-elf*) noconfigdirs="$noconfigdirs ${libgcj}" - if [ x${is_cross_compiler} != xno ] ; then + if test x${is_cross_compiler} != xno ; then target_configdirs="${target_configdirs} target-bsp target-libstub target-cygmon" fi ;; @@ -817,13 +772,6 @@ case "${target}" in # Do configure ld/binutils/gas for this case. ;; hppa*-*-*) - # HP's C compiler doesn't handle Emacs correctly (but on BSD and Mach - # cc is gcc, and on any system a user should be able to link cc to - # whatever they want. FIXME, emacs emacs19). - case "${CC}" in - "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;; - *) ;; - esac # According to Alexandre Oliva , libjava won't # build on HP-UX 10.20. noconfigdirs="$noconfigdirs ld shellutils ${libgcj}" @@ -838,13 +786,33 @@ case "${target}" in ;; i[3456]86-*-coff | i[3456]86-*-elf) noconfigdirs="$noconfigdirs ${libgcj}" - if [ x${is_cross_compiler} != xno ] ; then + if test x${is_cross_compiler} != xno ; then target_configdirs="${target_configdirs} target-libstub target-cygmon" fi ;; i[34567]86-*-freebsd*) noconfigdirs="$noconfigdirs target-newlib target-libgloss" ;; + s390*-*-linux*) + # The libffi port is not yet in the GCC tree + noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}" + # linux has rx in libc + skipdirs="$skipdirs target-librx" + ;; + i[3456]86-*-linux*) + # This section makes it possible to build newlib natively on linux. + # If we are using a cross compiler then don't configure newlib. + if test x${is_cross_compiler} != xno ; then + noconfigdirs="$noconfigdirs target-newlib" + fi + noconfigdirs="$noconfigdirs target-libgloss" + # If we are not using a cross compiler, do configure newlib. + # Note however, that newlib will only be configured in this situation + # if the --with-newlib option has been given, because otherwise + # 'target-newlib' will appear in skipdirs. + # linux has rx in libc + skipdirs="$skipdirs target-librx" + ;; *-*-linux*) noconfigdirs="$noconfigdirs target-newlib target-libgloss" # linux has rx in libc @@ -889,13 +857,7 @@ case "${target}" in noconfigdirs="$noconfigdirs target-libgloss" ;; i[3456]86-*-sysv4*) - # The SYSV4 C compiler doesn't handle Emacs correctly - case "${CC}" in - "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;; - *) ;; - esac - # but that's okay since emacs doesn't work anyway - noconfigdirs="$noconfigdirs emacs emacs19 target-libgloss ${libgcj}" + noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" ;; i[3456]86-*-beos*) noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss ${libgcj}" @@ -905,13 +867,13 @@ case "${target}" in ;; m68k-*-elf*) noconfigdirs="$noconfigdirs ${libgcj}" - if [ x${is_cross_compiler} != xno ] ; then + if test x${is_cross_compiler} != xno ; then target_configdirs="${target_configdirs} target-bsp target-cygmon" fi ;; m68k-*-coff*) noconfigdirs="$noconfigdirs ${libgcj}" - if [ x${is_cross_compiler} != xno ] ; then + if test x${is_cross_compiler} != xno ; then target_configdirs="${target_configdirs} target-bsp target-cygmon" fi ;; @@ -925,13 +887,13 @@ case "${target}" in ;; mn10200-*-*) noconfigdirs="$noconfigdirs ${libgcj}" - if [ x${is_cross_compiler} != xno ] ; then + if test x${is_cross_compiler} != xno ; then target_configdirs="${target_configdirs} target-libstub target-cygmon" fi ;; mn10300-*-*) noconfigdirs="$noconfigdirs ${libgcj}" - if [ x${is_cross_compiler} != xno ] ; then + if test x${is_cross_compiler} != xno ; then target_configdirs="${target_configdirs} target-bsp target-libstub target-cygmon" fi ;; @@ -955,7 +917,7 @@ case "${target}" in ;; powerpc-*-eabi) noconfigdirs="$noconfigdirs ${libgcj}" - if [ x${is_cross_compiler} != xno ] ; then + if test x${is_cross_compiler} != xno ; then target_configdirs="${target_configdirs} target-bsp target-libstub target-cygmon" fi ;; @@ -975,17 +937,15 @@ case "${target}" in ;; mips*-*-irix5*) # The GNU linker does not support shared libraries. - # emacs is emacs 18, which does not work on Irix 5 (emacs19 does work) - noconfigdirs="$noconfigdirs ld gprof emacs target-libgloss ${libgcj}" + noconfigdirs="$noconfigdirs ld gprof target-libgloss ${libgcj}" ;; mips*-*-irix6*) # The GNU assembler does not support IRIX 6. - # emacs is emacs 18, which does not work on Irix 5 (emacs19 does work) # Linking libjava exceeds command-line length limits on at least # IRIX 6.2, but not on IRIX 6.5. # Also, boehm-gc won't build on IRIX 6.5, according to Jeffrey Oldham # - noconfigdirs="$noconfigdirs gas gprof emacs target-libgloss ${libgcj}" + noconfigdirs="$noconfigdirs gas gprof target-libgloss ${libgcj}" ;; mips*-dec-bsd*) noconfigdirs="$noconfigdirs gprof target-libgloss ${libgcj}" @@ -1019,30 +979,32 @@ case "${target}" in noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" ;; sparc-*-elf*) - if [ x${is_cross_compiler} != xno ] ; then + if test x${is_cross_compiler} != xno ; then target_configdirs="${target_configdirs} target-libstub target-cygmon" fi + noconfigdirs="$noconfigdirs ${libgcj}" ;; sparc64-*-elf*) - if [ x${is_cross_compiler} != xno ] ; then + if test x${is_cross_compiler} != xno ; then target_configdirs="${target_configdirs} target-libstub target-cygmon" fi + noconfigdirs="$noconfigdirs ${libgcj}" ;; sparclite-*-*) - if [ x${is_cross_compiler} != xno ] ; then + if test x${is_cross_compiler} != xno ; then target_configdirs="${target_configdirs} target-bsp target-libstub target-cygmon" fi noconfigdirs="$noconfigdirs ${libgcj}" ;; sparc-*-sunos4*) noconfigdirs="$noconfigdirs ${libgcj}" - if [ x${is_cross_compiler} != xno ] ; then + if test x${is_cross_compiler} != xno ; then noconfigdirs="$noconfigdirs gdb gdbtest target-newlib target-libgloss" else use_gnu_ld=no fi ;; - sparc-*-solaris*) + sparc-*-solaris* | sparc64-*-solaris* | sparcv9-*-solaris*) ;; v810-*-*) noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld ${libstdcxx_version} opcodes target-libgloss ${libgcj}" @@ -1084,13 +1046,13 @@ case "${noconfigdirs}" in esac # Make sure we don't let GNU ld be added if we didn't want it. -if [ x$with_gnu_ld = xno ]; then +if test x$with_gnu_ld = xno ; then use_gnu_ld=no noconfigdirs="$noconfigdirs ld" fi # Make sure we don't let GNU as be added if we didn't want it. -if [ x$with_gnu_as = xno ]; then +if test x$with_gnu_as = xno ; then use_gnu_as=no noconfigdirs="$noconfigdirs gas" fi @@ -1189,10 +1151,10 @@ done notsupp="" for dir in . $skipdirs $noconfigdirs ; do dirname=`echo $dir | sed -e s/target-//g` - if [ $dir != . ] && echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then + if test $dir != . && echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then configdirs=`echo " ${configdirs} " | sed -e "s/ ${dir} / /"` - if [ -r $srcdir/$dirname/configure ] \ - || [ -r $srcdir/$dirname/configure.in ]; then + if test -r $srcdir/$dirname/configure \ + || test -r $srcdir/$dirname/configure.in ; then if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then true else @@ -1200,10 +1162,10 @@ for dir in . $skipdirs $noconfigdirs ; d fi fi fi - if [ $dir != . ] && echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then + if test $dir != . && echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then target_configdirs=`echo " ${target_configdirs} " | sed -e "s/ ${dir} / /"` - if [ -r $srcdir/$dirname/configure ] \ - || [ -r $srcdir/$dirname/configure.in ]; then + if test -r $srcdir/$dirname/configure \ + || test -r $srcdir/$dirname/configure.in ; then if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then true else @@ -1215,17 +1177,17 @@ done # Sometimes the tools are distributed with libiberty but with no other # libraries. In that case, we don't want to build target-libiberty. -if [ -n "${target_configdirs}" ]; then +if test -n "${target_configdirs}" ; then others= for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do - if [ "$i" != "libiberty" ]; then - if [ -r $srcdir/$i/configure ] || [ -r $srcdir/$i/configure.in ]; then + if test "$i" != "libiberty" ; then + if test -r $srcdir/$i/configure || test -r $srcdir/$i/configure.in ; then others=yes; break; fi fi done - if [ -z "${others}" ]; then + if test -z "${others}" ; then target_configdirs= fi fi @@ -1233,12 +1195,12 @@ fi # Deconfigure all subdirectories, in case we are changing the # configuration from one where a subdirectory is supported to one where it # is not. -if [ -z "${norecursion}" ] && [ -n "${configdirs}" ]; then +if test -z "${norecursion}" && test -n "${configdirs}" ; then for i in `echo ${configdirs} | sed -e s/target-//g` ; do rm -f $i/Makefile done fi -if [ -z "${norecursion}" ] && [ -n "${target_configdirs}" ]; then +if test -z "${norecursion}" && test -n "${target_configdirs}" ; then for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do rm -f ${target_subdir}/$i/Makefile done @@ -1268,14 +1230,14 @@ done # FSF releases, it's important to let people know when their machine isn't # supported by the one or two programs in a package. -if [ -n "${notsupp}" ] && [ -z "${norecursion}" ]; then +if test -n "${notsupp}" && test -z "${norecursion}" ; then # If $appdirs is non-empty, at least one of those directories must still # be configured, or we error out. (E.g., if the gas release supports a # specified target in some subdirs but not the gas subdir, we shouldn't # pretend that all is well.) - if [ -n "$appdirs" ]; then + if test -n "$appdirs" ; then for dir in $appdirs ; do - if [ -r $dir/Makefile.in ]; then + if test -r $dir/Makefile.in ; then if echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then appdirs="" break @@ -1286,7 +1248,7 @@ if [ -n "${notsupp}" ] && [ -z "${norecu fi fi done - if [ -n "$appdirs" ]; then + if test -n "$appdirs" ; then echo "*** This configuration is not supported by this package." 1>&2 exit 1 fi @@ -1311,15 +1273,15 @@ fi # want to do that, then you should use the --without-gnu-as and # --without-gnu-ld options for the configure script. -if [ x${use_gnu_as} = x ] ; then - if [ x${with_gnu_as} != xno ] && echo " ${configdirs} " | grep " ${gasdir} " > /dev/null 2>&1 && [ -d ${srcdir}/${gasdir} ] ; then +if test x${use_gnu_as} = x ; then + if test x${with_gnu_as} != xno && echo " ${configdirs} " | grep " ${gasdir} " > /dev/null 2>&1 && test -d ${srcdir}/${gasdir} ; then with_gnu_as=yes withoptions="$withoptions --with-gnu-as" fi fi -if [ x${use_gnu_ld} = x ] ; then - if [ x${with_gnu_ld} != xno ] && echo " ${configdirs} " | grep " ld " > /dev/null 2>&1 && [ -d ${srcdir}/ld ] ; then +if test x${use_gnu_ld} = x ; then + if test x${with_gnu_ld} != xno && echo " ${configdirs} " | grep " ld " > /dev/null 2>&1 && test -d ${srcdir}/ld ; then with_gnu_ld=yes withoptions="$withoptions --with-gnu-ld" fi @@ -1328,41 +1290,13 @@ fi # If using newlib, add --with-newlib to the withoptions so that gcc/configure # can detect this case. -if [ x${with_newlib} != xno ] && echo " ${target_configdirs} " | grep " target-newlib " > /dev/null 2>&1 && [ -d ${srcdir}/newlib ] ; then +if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " target-newlib " > /dev/null 2>&1 && test -d ${srcdir}/newlib ; then with_newlib=yes withoptions="$withoptions --with-newlib" fi -if [ x${shared} = xyes ]; then - case "${target}" in - hppa* | parisc*) - target_makefile_frag="${target_makefile_frag} config/mt-papic" - ;; - i[3456]86-*) - target_makefile_frag="${target_makefile_frag} config/mt-x86pic" - ;; - ia64-*) - target_makefile_frag="${target_makefile_frag} config/mt-ia64pic" - ;; - powerpc*-*-aix*) - # We don't want -fPIC on AIX. - ;; - powerpc*-*) - target_makefile_frag="${target_makefile_frag} config/mt-ppcpic" - ;; - alpha*-*-linux*) - target_makefile_frag="${target_makefile_frag} config/mt-elfalphapic" - ;; - *) - if test -f ${srcdir}/config/mt-${target_cpu}pic; then - target_makefile_frag="${target_makefile_frag} config/mt-${target_cpu}pic" - fi - ;; - esac -fi - rm -f mt-frag -if [ -n "${target_makefile_frag}" ] ; then +if test -n "${target_makefile_frag}" ; then for f in ${target_makefile_frag} do cat ${srcdir}/$f >> mt-frag @@ -1370,39 +1304,57 @@ if [ -n "${target_makefile_frag}" ] ; th target_makefile_frag=mt-frag fi +case "$host" in + *msdosdjgpp*) + enable_gdbtk=no ;; +esac +# Determine whether gdb needs tk/tcl or not. +case "$enable_gdbtk" in + no) + GDB_TK="" ;; + *) + GDB_TK="all-tcl all-tk all-itcl all-tix all-libgui" ;; +esac + # post-target: # Make sure that the compiler is able to generate an executable. If it # can't, we are probably in trouble. We don't care whether we can run the # executable--we might be using a cross compiler--we only care whether it # can be created. At this point the main configure script has set CC. +we_are_ok=no echo "int main () { return 0; }" > conftest.c ${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c -if [ $? = 0 ] && [ -s conftest -o -s conftest.exe ]; then - : -else - echo 1>&2 "*** The command '${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c' failed." - echo 1>&2 "*** You must set the environment variable CC to a working compiler." - rm -f conftest* - exit 1 -fi +if test $? = 0 ; then + if test -s conftest || test -s conftest.exe ; then + we_are_ok=yes + fi +fi +case $we_are_ok in + no) + echo 1>&2 "*** The command '${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c' failed." + echo 1>&2 "*** You must set the environment variable CC to a working compiler." + rm -f conftest* + exit 1 + ;; +esac rm -f conftest* # The Solaris /usr/ucb/cc compiler does not appear to work. case "${host}" in sparc-sun-solaris2*) CCBASE="`echo ${CC-cc} | sed 's/ .*$//'`" - if [ "`type $CCBASE | sed 's/^[^/]*//'`" = "/usr/ucb/cc" ] ; then + if test "`type $CCBASE | sed 's/^[^/]*//'`" = "/usr/ucb/cc" ; then could_use= - [ -d /opt/SUNWspro/bin ] && could_use="/opt/SUNWspro/bin" - if [ -d /opt/cygnus/bin ] ; then - if [ "$could_use" = "" ] ; then + test -d /opt/SUNWspro/bin && could_use="/opt/SUNWspro/bin" + if test -d /opt/cygnus/bin ; then + if test "$could_use" = "" ; then could_use="/opt/cygnus/bin" else could_use="$could_use or /opt/cygnus/bin" fi fi - if [ "$could_use" = "" ] ; then + if test "$could_use" = "" ; then echo "Warning: compilation may fail because you're using" echo "/usr/ucb/cc. You should change your PATH or CC " echo "variable and rerun configure." @@ -1416,36 +1368,9 @@ case "${host}" in ;; esac -# If we're building libgcj and we're using the Solaris 2.8 linker, -# then we check for a known problem. -if test "x${libgcj}" = x && test "${with_gnu_ld}" != yes \ - && test "${is_cross_compiler}" = no; then - - case "${host}" in - sparc-*-solaris2.8) - if test "$libdir" = '${exec_prefix}/lib';then - if test "$exec_prefix" = '$(prefix)'; then - tlibdir="$prefix/lib" - else - tlibdir="$exec_prefix/lib" - fi - else - tlibdir="$libdir" - fi - if test -f $tlibdir/libgcj.la; then - echo "*** You've already installed libgcj in $tlibdir." 1>&2 - echo " This causes problems when rebuilding libgcj with the Solaris 2.8 linker." 1>&2 - echo " Either disable the libgcj build, or remove the" 1>&2 - echo " already-installed libgcj files." 1>&2 - exit 1 - fi - ;; - esac -fi - # If --enable-shared was set, we must set LD_LIBRARY_PATH so that the # binutils tools will find libbfd.so. -if [ "${shared}" = "yes" ]; then +if test "${shared}" = "yes" ; then sed -e 's/^SET_LIB_PATH[ ]*=.*$/SET_LIB_PATH = $(REALLY_SET_LIB_PATH)/' \ Makefile > Makefile.tem rm -f Makefile @@ -1461,12 +1386,12 @@ if [ "${shared}" = "yes" ]; then esac fi -# Record target_configdirs and the configure arguments for target and -# build configuration in Makefile. -target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'` -targargs=`echo "${arguments}" | \ +# Base args. Strip norecursion, cache-file, srcdir, host, build, target. +# These are the ones we might not want to pass down to subconfigures. +baseargs=`echo "${arguments}" | \ sed -e 's/--no[^ ]*//' \ -e 's/--cache[a-z-]*=[^ ]*//' \ + -e 's/--sr[a-z-]*=[^ ]*//' \ -e 's/--ho[a-z-]*=[^ ]*//' \ -e 's/--bu[a-z-]*=[^ ]*//' \ -e 's/--ta[a-z-]*=[^ ]*//'` @@ -1474,25 +1399,30 @@ targargs=`echo "${arguments}" | \ # For the build-side libraries, we just need to pretend we're native, # and not use the same cache file. Multilibs are neither needed nor # desired. -buildargs="--cache-file=../config.cache --build=${build_alias} --host=${build_alias} ${targargs}" +buildargs="--cache-file=../config.cache --build=${build_alias} --host=${build_alias} ${baseargs}" + +# Record target_configdirs and the configure arguments for target and +# build configuration in Makefile. +target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'` +targargs=${baseargs} # Passing a --with-cross-host argument lets the target libraries know # whether they are being built with a cross-compiler or being built # native. However, it would be better to use other mechanisms to make the # sorts of decisions they want to make on this basis. Please consider # this option to be deprecated. FIXME. -if [ x${is_cross_compiler} = xyes ]; then +if test x${is_cross_compiler} = xyes ; then targargs="--with-cross-host=${host_alias} ${targargs}" fi # Default to --enable-multilib. -if [ x${enable_multilib} = x ]; then +if test x${enable_multilib} = x ; then targargs="--enable-multilib ${targargs}" fi # Pass --with-newlib if appropriate. Note that target_configdirs has # changed from the earlier setting of with_newlib. -if [ x${with_newlib} != xno ] && echo " ${target_configdirs} " | grep " newlib " > /dev/null 2>&1 && [ -d ${srcdir}/newlib ] ; then +if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " newlib " > /dev/null 2>&1 && test -d ${srcdir}/newlib ; then targargs="--with-newlib ${targargs}" fi @@ -1565,11 +1495,10 @@ case " $skipdirs " in fi case "${target}-${is_cross_compiler}" in - i[3456]86-pc-linux*-no) + i[3456]86-*-linux*-no) # Here host == target, so we don't need to build gcc, # so we don't want to discard standard headers. FLAGS_FOR_TARGET=`echo " $FLAGS_FOR_TARGET " | sed -e 's/ -nostdinc / /'` - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$$r/$(TARGET_SUBDIR)/newlib/' ;; *) # If we're building newlib, use its generic headers last, but search diff -uprN binutils-2.12.90.0.7/gas/ChangeLog binutils-2.12.90.0.9/gas/ChangeLog --- binutils-2.12.90.0.7/gas/ChangeLog Mon Apr 22 19:56:51 2002 +++ binutils-2.12.90.0.9/gas/ChangeLog Sun May 26 09:57:12 2002 @@ -1,3 +1,424 @@ +2002-05-25 Alan Modra + + * Makefile.am (OBJS): Depend on ansidecl.h and fopen-same.h. + * Makefile.in: Regenerate. + * dep-in.sed: Reorder to match OBJS in Makefile.am. + * configure.in (ALL_OBJ_DEPS): Add symcat.h when need_bfd. + * configure: Regenerate. + * as.h: Use #include "" instead of <> for local header files. + * flonum-konst.c: Likewise. + * flonum-mult.c: Likewise. + * gasp.c: Likewise. + * listing.c: Likewise. + * config/tc-ia64.h: Likewise. + * config/tc-v850.h: Likewise. + +2002-05-24 TAMURA Kent + + * configure.in: Add a target for i386-netbsdpe. + * configure: Regenerate. + +2002-05-23 Jakub Jelinek + + * config/obj-elf.c (elf_common): Renamed from obj_elf_common. + (obj_elf_common): Call elf_common. + (obj_elf_tls_common): New function. + (elf_pseudo_tab): Support .tls_common. + (special_sections): Add .tdata and .tbss. + (obj_elf_change_section): Set SEC_THREAD_LOCAL for SHF_TLS + sections. + (obj_elf_parse_section_letters): Support T in section flags (SHF_TLS). + (obj_elf_parse_section_letters): Include T in error message. + * config/tc-ppc.c (ppc_section_letter): Likewise. + * config/tc-alpha.c (alpha_elf_section_letter): Likewise. + (tc_gen_reloc): Handle SEC_THREAD_LOCAL the same way as + SEC_MERGE. + * config/tc-sparc.c (md_apply_fix3): Likewise. + * config/tc-i386.c (tc_i386_fix_adjustable): Add TLS relocs. + Define them if not BFD_ASSEMBLER. + (lex_got): Support @TLSGD, @TLSLDM, @GOTTPOFF, @TPOFF, @DTPOFF + and @NTPOFF. + (md_apply_fix3): Add TLS relocs. + * config/tc-ia64.c (enum reloc_func): Add FUNC_DTP_MODULE, + FUNC_DTP_RELATIVE, FUNC_TP_RELATIVE, FUNC_LT_DTP_MODULE, + FUNC_LT_DTP_RELATIVE, FUNC_LT_TP_RELATIVE. + (pseudo_func): Support @dtpmod(), @dtprel() and @tprel(). + (ia64_elf_section_letter): Include T in error message. + (md_begin): Support TLS operators. + (md_operand): Likewise. + (ia64_gen_real_reloc_type): Support TLS relocs. + * testsuite/gas/i386/tlspic.s: New file. + * testsuite/gas/i386/tlsd.s: New file. + * testsuite/gas/i386/tlsnopic.s: New file. + * testsuite/gas/i386/tlsd.d: New file. + * testsuite/gas/i386/tlsnopic.d: New file. + * testsuite/gas/i386/tlspic.d: New file. + * testsuite/gas/i386/i386.exp: Add tlsd, tlsnopic and tlspic tests. + * testsuite/gas/ia64/tls.s: New file. + * testsuite/gas/ia64/tls.d: New file. + * testsuite/gas/ia64/ia64.exp: Add tls test. + * write.c (adjust_reloc_syms): Don't change symbols in + SEC_THREAD_LOCAL sections to STT_SECTION + addend. + +2002-05-23 Nick Clifton + + * config/tc-arm.c (md_apply_fix3): For the Thumb BLX reloc + round the relocation up rather than down. + +2002-05-23 Nick Clifton + + * config/obj-coff.c (obj_coff_section): Silently ignore an 'a' + flag. + * doc/as.texinfo: Document that the COFF version of .section + ignores the 'a' flag. + +2002-05-23 Alan Modra + + * config/tc-alpha.c (assemble_tokens): Protect use of + ALPHA_RELOC_TABLE with #ifdef RELOC_OP_P. + + * write.c (size_seg): Check adjustment to last frag. + (SUB_SEGMENT_ALIGN): If HANDLE_ALIGN defined, pad out last frag to + section alignment. + * config/obj-coff.c (SUB_SEGMENT_ALIGN): Likewise. + * config/obj-ieee.c (SUB_SEGMENT_ALIGN): Likewise. + (write_object_file): Invoke md_do_align if available, and use + frag_align_code on text sections. + * config/obj-vms.h (SUB_SEGMENT_ALIGN): Now two args. + * config/tc-m88k.h (SUB_SEGMENT_ALIGN): Likewise. + * config/tc-ppc.h (SUB_SEGMENT_ALIGN): Likewise. + * config/tc-sh.h (SUB_SEGMENT_ALIGN): Likewise. + * config/tc-i386.h (SUB_SEGMENT_ALIGN): Likewise. Define for + BFD_ASSEMBLER too. + +2002-05-22 H.J. Lu + + * dwarf2dbg.c (dwarf2_directive_loc): Call listing_source_file + for source file. + +2002-05-22 Nick Clifton + + * config/tc-arm.c (arm_s_section): Enable for COFF builds as well + as ELF builds. + +2002-05-22 H.J. Lu + + * dwarf2dbg.c (dwarf2_emit_insn): Emit only one line symbol + for one .loc for compiler. + +2002-05-22 Thiemo Seufer + + * config/tc-mips.c (macro): Relax warning, it's toot strict for + embedded-PIC. + +2002-05-22 Thiemo Seufer + + * config/tc-mips.c (macro2): Add 64 bit drol, dror macros. + Optimize the rotate by zero case. + +2002-05-21 Nick Clifton + + * configure.in: Remove accidental enabling of bfd_gas=yes for + sh-coff targets. + * configure: Regenerate. + +2002-05-18 Kazu Hirata + + * app.c: Fix formatting. + * as.c: Likewise. + * ehopt.c: Likewise. + * expr.c: Likewise. + * input-file.c: Likewise. + * listing.c: Likewise. + * macro.h: Likewise. + * stabs.c: Likewise. + * symbols.c: Likewise. + +2002-05-17 Alan Modra + + * doc/internals.texi (md_apply_fix3): Expand. + (TC_FORCE_RELOCATION, TC_FORCE_RELOCATION_ABS, + TC_FORCE_RELOCATION_LOCAL, TC_FORCE_RELOCATION_SUB_SAME, + TC_FORCE_RELOCATION_SUB_ABS, TC_FORCE_RELOCATION_SUB_LOCAL, + TC_FIX_ADJUSTABLE): Document. + * symbols.c (S_FORCE_RELOC): New function. + * symbols.h (S_FORCE_RELOC): Declare. s/CONST/const/. + * config/obj-aout.h (S_FORCE_RELOC): Define. + * config/obj-bout.h (S_FORCE_RELOC): Define. + * config/obj-coff.h (S_FORCE_RELOC): Define. Formatting fixes. + * config/obj-ieee.h (S_FORCE_RELOC): Define. Formatting fixes. + * config/obj-vms.h (S_FORCE_RELOC): Define. + * expr.c (clean_up_expression ): Use S_FORCE_RELOC + instead of SEG_NORMAL. Allow diff != 0. + (expr ): Use S_FORCE_RELOC instead of SEG_NORMAL. + * read.c (pseudo_set): Likewise. + * write.c (TC_FORCE_RELOCATION_ABS): Define. + (TC_FORCE_RELOCATION_LOCAL): Define, replaces.. + (TC_RELOC_RTSYM_LOC_FIXUP): ..this. Remove. + (TC_FORCE_RELOCATION_SUB_SAME): Define, replaces.. + (TC_FORCE_RELOCATION_SECTION): ..this. Remove. + (TC_FORCE_RELOCATION_SUB_ABS): Define. + (TC_FORCE_RELOCATION_SUB_LOCAL): Define. + (RELOC_ENUM): Define. + (fix_new_internal): Use RELOC_ENUM. + (fix_new): Likewise. + (fix_new_exp): Likewise. + (adjust_reloc_syms): Split out code setting used_in_reloc to.. + (mark_reloc_syms): ..here. New function. Use S_FORCE_RELOC. + (write_object_file): Call mark_reloc_syms. + (write_relocs): Formatting. Avoid symbol loops in + RELOC_EXPANSION_POSSIBLE case too. Report bfd_reloc_outofrange + errors, and error number in other cases. + (fixup_segment): Rewrite. + * config/tc-alpha.h (TC_FORCE_RELOCATION_LOCAL): Define, replaces.. + (TC_RELOC_RTSYM_LOC_FIXUP): Delete. + * config/tc-arm.h: Likewise. + * config/tc-cris.h: Likewise. + * config/tc-i386.h: Likewise. + * config/tc-i960.h: Likewise. + * config/tc-ia64.h: Likewise. + * config/tc-m68k.h: Likewise. + * config/tc-ppc.h: Likewise. + * config/tc-s390.h: Likewise. + * config/tc-sh.h: Likewise. + * config/tc-sh64.h: Likewise. + * config/tc-sparc.h: Likewise. + * config/tc-hppa.h (TC_FORCE_RELOCATION_SUB_SAME): Define, replaces.. + (TC_FORCE_RELOCATION_SECTION): Delete. + * config/tc-i386.c (tc_i386_force_relocation): Remove. + (BFD_RELOC_8, BFD_RELOC_16): Define for non BFD_ASSEMBLER. + (md_apply_fix3): Formatting. Hack for bfd_install_relocation when + fx_pcrel, not when fx_addsy. + * config/tc-i386.h (TC_FORCE_RELOCATION): Define using code moved + from tc_i386_force_relocation. + (TC_FIX_ADJUSTABLE): Remove redundant tc_fix_adjustable condition. + * config/tc-s390.h (TC_FIX_ADJUSTABLE): Likewise. + * config/tc-sh.h (TC_FIX_ADJUSTABLE): Likewise. + * config/tc-i960.c (reloc_callj): Remove declaration. Return false. + * config/tc-i960.h (TC_FORCE_RELOCATION_SUB): Define. + (TC_FORCE_RELOCATION_ABS): Define. + * config/tc-ppc.c (md_apply_fix3): Rename arg to match comments. + Don't undo adjustments done by write.c:fixup_segment. + * config/tc-ppc.h (TC_FIX_ADJUSTABLE): Instead arrange for them + to not occur in the first place. + (TC_FORCE_RELOCATION_SECTION): Delete. + * config/tc-s390.c (md_apply_fix3): Use TC_FORCE_RELOCATION_LOCAL + instead of TC_RELOC_RTSYM_LOC_FIXUP. + * config/tc-sh.c (sh_fix_adjustable): Likewise. + * config/tc-sh.h (obj_fix_adjustable): Delete, instead.. + (tc_fix_adjustable): Define. + +2002-05-17 Alan Modra + + * config/obj-generic.c: Delete file. + * config/obj-generic.h: Likewise. + +2002-05-16 Marek Michalkiewicz + + * config/tc-avr.c (mcu_types): Update for new devices. + +2002-05-15 Thiemo Seufer + + * config/tc-mips.c (macro): Warn about wrong la/dla use. + +2002-05-15 Thiemo Seufer + + * config/tc_mips.c (s_cpsetup): Fix completely bogus code which had + worked sometimes by accident. Fix copy&paste comment. + +2002-05-15 Thiemo Seufer + + * config/tc-mips.c (md_begin): Fix .reginfo and .MIPS.option section + alignment for NewABI. Let n32 use .reginfo. Remove useless casts. + (mips_elf_final_processing): Let n32 use .reginfo. + +2002-05-15 Thiemo Seufer + + * config/tc-mips.c (append_insn): Fix too small range of variable. + +2002-05-14 Nick Clifton + + * config/tc-arm.c (arm_cleanup): Remove redundant call to + listing_prev_line(). + +2002-05-13 Nick Clifton + + * config/tc-arm.c (md_assemble): Remove redundant call to + listing_prev(). + + * dwarf2dbg.c (dwarf2_emit_insn): Do not reset + loc_directive_seen. + + * stabs.c (s_stab_generic): Fix grammatical error in warning + message. + +2002-05-13 Alan Modra + + * write.c (subsegs_finish): Don't specially align last subseg. + +2002-05-11 Nick Clifton + + * stabs.c (s_stab_generic): Warn about a description field that is + too big. + + * config/obj-coff.c: Fix compile time warnings when compiling + without BFD_ASSEMBLER defined. + Fix formatting. + + * config/tc-sh.c (md_pcrel_from): Define for use with sh-hms + target. + (md_pcrel_from_section): Use md_pcrel_from(). + +2002-05-11 Bruno Haible + + * dwarf2dbg.c (dwarf2_emit_insn): Use the 'current' struct filled + by dwarf2_directive_loc, instead of calling dwarf2_where. + +2002-05-11 Kazu Hirata + + * config/obj-coff.h: Fix formatting. + * config/tc-mcore.c: Likewise. + * config/tc-mn10300.c: Likewise. + * config/tc-openrisc.c: Likewise. + * config/tc-or32.c: Likewise. + * config/tc-pdp11.c: Likewise. + * config/tc-ppc.c: Likewise. + * config/tc-ppc.h: Likewise. + * config/tc-sh64.c: Likewise. + * config/tc-sh.c: Likewise. + * config/tc-tic54x.c: Likewise. + * config/tc-xstormy16.c: Likewise. + * config/tc-xstormy16.h: Likewise. + +2002-05-09 Kazu Hirata + + * config/obj-coff.c: Fix formatting. + * config/obj-elf.c: Likewise. + * config/tc-alpha.c: Likewise. + * config/tc-arm.c: Likewise. + * config/tc-d10v.c: Likewise. + * config/tc-d30v.c: Likewise. + * config/tc-h8300.c: Likewise. + * config/tc-hppa.c: Likewise. + +2002-05-09 Alan Modra + + * config/tc-i386.c (md_estimate_size_before_relax) Don't lose + reloc when no_cond_jump_promotion. + +2002-05-08 Jim Wilson + + * config/tc-i960.c (md_estimate_size_before_relax): Return size of + current variable part of frag. + +2002-05-08 Kazu Hirata + + * config/tc-mmix.c: Fix formatting. + * config/tc-mmix.h: Likewise. + +2002-05-08 Alan Modra + + * configure: Regenerate. + +2002-05-07 Kazu Hirata + + * config/tc-m68k.c: Fix formatting. + +2002-05-07 Federico G. Schwindt + + * Makefile.am: Honour DESTDIR. + * Makefile.in: Regenerate. + +2002-05-06 Kazu Hirata + + * config/tc-ia64.c: Fix formatting. + * config/tc-ia64.h: Likewise. + +2002-05-04 Kazu Hirata + + * config/tc-mips.c: Fix formatting. + * config/tc-s390.c: Likewise. + * config/tc-s390.h: Likewise. + +2002-05-03 Alexandre Oliva + + * config/tc-s390.c (md_gather_operands): Emit dwarf2 line-number + information for instructions. + +2002-05-02 Kazu Hirata + + * as.h: Fix formatting. + * cgen.c: Likewise. + * cgen.h: Likewise. + * dwarf2dbg.c: Likewise. + * frags.h: Likewise. + * gasp.c: Likewise. + * macro.c: Likewise. + * read.c: Likewise. + * stabs.c: Likewise. + * symbols.c: Likewise. + +2002-05-02 Alan Modra + + * app.c (mri_pseudo): Only declare for TC_M68K. + + * config/tc-ppc.c (mapping): Map sectoff to BFD_RELOC_16_BASEREL. + (ppc_elf_validate_fix): Replace BFD_RELOC_32_BASEREL with + BFD_RELOC_16_BASEREL. + (md_assemble): Likewise. + (md_apply_fix3): Likewise. + +2002-05-02 Nick Clifton + + * config/tc-arm.c (thumb_add_sub): Do not convert a subtract of + zero into an add of zero - it is not the same. + +2002-05-01 Arati Dikey + + * tc-sh.c (get_specific): Generate warning if the same + destination register is used in parallel instructions. + +2002-05-01 Andrew Macleod + + * config/tc-i386.c (extra_symbol_chars): Add '[' to the list. + +2002-05-01 Alan Modra + + * write.c (cvt_frag_to_fill): Set fr_offset to zero on .org + backwards to prevent cascading errors. + +2002-04-30 Mark Mitchell + + * configure.in: Add support for powerpc-*-windiss. + * configure: Regenerated. + +2002-04-28 Alan Modra + + * config/tc-s390.c (md_parse_option): Formatting. + + * config/tc-i386.c: Formatting fixes, add missing space in error + message. + +2002-04-24 Christian Groessler + + * config/tc-z8k.c (build_bytes): Add support for new cases: + CLASS_IGNORE and ARG_NIM4. + (md_assemble): Prevent destruction of input_line_pointer if + get_operands returns failure. + +2002-04-24 Chris G. Demetriou + + * config/tc-mips.c (macro_build): Do _not_ allow MIPS-3D + instructions to be generated by macros. + +2002-04-24 Andreas Schwab + + * config/tc-i386.c (output_jump, output_disp) + (md_estimate_size_before_relax): Don't set fx_pcrel_adjust any + more. + (md_apply_fix3): Remember addend value for rela relocations. + (tc_gen_reloc): Correctly compute pc-relative relocation addend. + 2002-04-22 Chris Demetriou * config/tc-mips.c (macro_build): Add close-parenthesis missing @@ -18,7 +439,7 @@ * config/tc-s390.c (tc_s390_fix_adjustable): Prevent adjustments to symbols in merge sections. -2002-04-16 Alan Modra +2002-04-16 Alan Modra * as.c (main): Don't reference _bfd_chunksize. diff -uprN binutils-2.12.90.0.7/gas/Makefile.am binutils-2.12.90.0.9/gas/Makefile.am --- binutils-2.12.90.0.7/gas/Makefile.am Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/gas/Makefile.am Sun May 26 09:57:12 2002 @@ -494,7 +494,8 @@ as_new_DEPENDENCIES = $(TARG_CPU_O) $(OB # Stuff that every object file depends upon. If anything is removed # from this list, remove it from dep-in.sed as well. -$(OBJS): $(INCDIR)/bin-bugs.h $(INCDIR)/libiberty.h $(INCDIR)/progress.h \ +$(OBJS): $(INCDIR)/bin-bugs.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ + $(INCDIR)/progress.h $(INCDIR)/fopen-same.h \ $(OBJ_FORMAT_H) $(TARG_CPU_H) $(TARG_ENV_H) \ as.h asintl.h bignum.h bit_fix.h config.h emul.h expr.h flonum.h \ frags.h hash.h listing.h obj.h read.h symbols.h tc.h write.h @@ -668,21 +669,21 @@ CLEANFILES = dep.sed DEPTC DEPTCA DEPOBJ install-exec-local: install-exec-bindir @install_tooldir@ install-exec-bindir: $(noinst_PROGRAMS) - $(mkinstalldirs) $(bindir) + $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(noinst_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done install-exec-tooldir: install-exec-bindir $(noinst_PROGRAMS) - $(mkinstalldirs) $(tooldir)/bin + $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin n=`echo as | sed '$(transform)'`; \ if [ "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/as$(EXEEXT)" ]; then \ - rm -f $(tooldir)/bin/as$(EXEEXT); \ - ln $(bindir)/$$n$(EXEEXT) $(tooldir)/bin/as$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) as-new$(EXEEXT) $(tooldir)/bin/as$(EXEEXT); \ + rm -f $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT) >/dev/null 2>/dev/null \ + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) as-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ else \ true ; \ fi diff -uprN binutils-2.12.90.0.7/gas/Makefile.in binutils-2.12.90.0.9/gas/Makefile.in --- binutils-2.12.90.0.7/gas/Makefile.in Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/gas/Makefile.in Sun May 26 09:57:12 2002 @@ -2712,7 +2712,8 @@ $(OBJS): @ALL_OBJ_DEPS@ # Stuff that every object file depends upon. If anything is removed # from this list, remove it from dep-in.sed as well. -$(OBJS): $(INCDIR)/bin-bugs.h $(INCDIR)/libiberty.h $(INCDIR)/progress.h \ +$(OBJS): $(INCDIR)/bin-bugs.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ + $(INCDIR)/progress.h $(INCDIR)/fopen-same.h \ $(OBJ_FORMAT_H) $(TARG_CPU_H) $(TARG_ENV_H) \ as.h asintl.h bignum.h bit_fix.h config.h emul.h expr.h flonum.h \ frags.h hash.h listing.h obj.h read.h symbols.h tc.h write.h @@ -2851,21 +2852,21 @@ cgen.o: cgen.c cgen.h cgen-desc.h subseg install-exec-local: install-exec-bindir @install_tooldir@ install-exec-bindir: $(noinst_PROGRAMS) - $(mkinstalldirs) $(bindir) + $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(noinst_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done install-exec-tooldir: install-exec-bindir $(noinst_PROGRAMS) - $(mkinstalldirs) $(tooldir)/bin + $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin n=`echo as | sed '$(transform)'`; \ if [ "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/as$(EXEEXT)" ]; then \ - rm -f $(tooldir)/bin/as$(EXEEXT); \ - ln $(bindir)/$$n$(EXEEXT) $(tooldir)/bin/as$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) as-new$(EXEEXT) $(tooldir)/bin/as$(EXEEXT); \ + rm -f $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT) >/dev/null 2>/dev/null \ + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) as-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/as$(EXEEXT); \ else \ true ; \ fi diff -uprN binutils-2.12.90.0.7/gas/app.c binutils-2.12.90.0.9/gas/app.c --- binutils-2.12.90.0.7/gas/app.c Mon Oct 15 21:27:23 2001 +++ binutils-2.12.90.0.9/gas/app.c Thu May 23 15:10:10 2002 @@ -40,13 +40,13 @@ flag_m68k_mri, because the two flags will be affected by the .mri pseudo-op at different times. */ static int scrub_m68k_mri; -#else -#define scrub_m68k_mri 0 -#endif /* The pseudo-op which switches in and out of MRI mode. See the comment in do_scrub_chars. */ static const char mri_pseudo[] = ".mri 0"; +#else +#define scrub_m68k_mri 0 +#endif #if defined TC_ARM && defined OBJ_ELF /* The pseudo-op for which we need to special-case `@' characters. @@ -424,13 +424,13 @@ do_scrub_chars (get, tostart, tolen) I don't want to make such a significant change to the assembler's memory usage. */ -#define PUT(pch) \ - do \ - { \ - *to++ = (pch); \ - if (to >= toend) \ - goto tofull; \ - } \ +#define PUT(pch) \ + do \ + { \ + *to++ = (pch); \ + if (to >= toend) \ + goto tofull; \ + } \ while (0) if (saved_input != NULL) diff -uprN binutils-2.12.90.0.7/gas/as.c binutils-2.12.90.0.9/gas/as.c --- binutils-2.12.90.0.7/gas/as.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/gas/as.c Thu May 23 15:10:10 2002 @@ -500,8 +500,8 @@ parse_args (pargc, pargv) break; case OPTION_TARGET_HELP: - md_show_usage (stdout); - exit (EXIT_SUCCESS); + md_show_usage (stdout); + exit (EXIT_SUCCESS); case OPTION_HELP: show_usage (stdout); diff -uprN binutils-2.12.90.0.7/gas/as.h binutils-2.12.90.0.9/gas/as.h --- binutils-2.12.90.0.7/gas/as.h Mon Oct 1 15:25:22 2001 +++ binutils-2.12.90.0.9/gas/as.h Sun May 26 09:57:12 2002 @@ -1,6 +1,6 @@ /* as.h - global header file Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001 + 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -91,7 +91,7 @@ extern void *alloca (); #include #endif -#include +#include "getopt.h" /* The first getopt value for machine-independent long options. 150 isn't special; it's just an arbitrary non-ASCII char value. */ #define OPTION_STD_BASE 150 @@ -168,7 +168,7 @@ extern char **environ; /* Hack to make "gcc -Wall" not complain about obstack macros. */ #if !defined (memcpy) && !defined (bcopy) -#define bcopy(src,dest,size) memcpy(dest,src,size) +#define bcopy(src,dest,size) memcpy (dest, src, size) #endif /* Make Saber happier on obstack.h. */ diff -uprN binutils-2.12.90.0.7/gas/cgen.c binutils-2.12.90.0.9/gas/cgen.c --- binutils-2.12.90.0.7/gas/cgen.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/gas/cgen.c Thu May 23 15:10:10 2002 @@ -105,8 +105,8 @@ queue_fixup (opindex, opinfo, expP) to keep track of how many fixup chains have been stored and which elements of the array they are in. - The algorithms used are the same as in the old scheme. Other than the - "array-ness" of the whole thing, the functionality is identical to the + The algorithms used are the same as in the old scheme. Other than the + "array-ness" of the whole thing, the functionality is identical to the old scheme. gas_cgen_initialize_saved_fixups_array(): @@ -173,7 +173,7 @@ gas_cgen_restore_fixups (i) } num_fixups = stored_fixups[i].num_fixups_in_chain; - memcpy (fixups,stored_fixups[i].fixup_chain, + memcpy (fixups, stored_fixups[i].fixup_chain, (sizeof (stored_fixups[i].fixup_chain[0])) * num_fixups); stored_fixups[i].num_fixups_in_chain = 0; } diff -uprN binutils-2.12.90.0.7/gas/cgen.h binutils-2.12.90.0.9/gas/cgen.h --- binutils-2.12.90.0.7/gas/cgen.h Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/gas/cgen.h Thu May 23 15:10:10 2002 @@ -53,7 +53,7 @@ extern const char * gas_cgen_parse_opera /* Call this from md_assemble to initialize the assembler callback. */ extern void gas_cgen_init_parse PARAMS ((void)); -/* Routines and macros for saving fixup chains. */ +/* Routines and macros for saving fixup chains. */ extern void gas_cgen_save_fixups PARAMS ((int)); extern void gas_cgen_restore_fixups PARAMS ((int)); extern void gas_cgen_swap_fixups PARAMS ((int)); diff -uprN binutils-2.12.90.0.7/gas/config/obj-coff.c binutils-2.12.90.0.9/gas/config/obj-coff.c --- binutils-2.12.90.0.7/gas/config/obj-coff.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/gas/config/obj-coff.c Thu May 23 15:10:10 2002 @@ -568,7 +568,7 @@ obj_coff_loc (ignore) if (listing) { - lineno += coff_line_base - 1; + lineno += coff_line_base - 1; listing_source_line (lineno); } } @@ -716,7 +716,7 @@ obj_coff_endef (ignore) name = S_GET_NAME (def_symbol_in_progress); if (name[0] == '.' && name[2] == 'f' && name[3] == '\0') - { + { switch (name[1]) { case 'b': @@ -842,16 +842,16 @@ obj_coff_endef (ignore) || S_GET_SEGMENT (def_symbol_in_progress) == absolute_section || ! symbol_constant_p (def_symbol_in_progress) || (symbolP = symbol_find_base (S_GET_NAME (def_symbol_in_progress), - DO_NOT_STRIP)) == NULL + DO_NOT_STRIP)) == NULL || SF_GET_TAG (def_symbol_in_progress) != SF_GET_TAG (symbolP)) { /* If it already is at the end of the symbol list, do nothing */ if (def_symbol_in_progress != symbol_lastP) - { + { symbol_remove (def_symbol_in_progress, &symbol_rootP, &symbol_lastP); symbol_append (def_symbol_in_progress, symbol_lastP, &symbol_rootP, &symbol_lastP); - } + } } else { @@ -1397,23 +1397,24 @@ coff_frob_file_after_relocs () bfd_map_over_sections (stdoutput, coff_adjust_section_syms, (char*) 0); } -/* - * implement the .section pseudo op: - * .section name {, "flags"} - * ^ ^ - * | +--- optional flags: 'b' for bss - * | 'i' for info - * +-- section name 'l' for lib - * 'n' for noload - * 'o' for over - * 'w' for data - * 'd' (apparently m88k for data) - * 'x' for text - * 'r' for read-only data - * 's' for shared data (PE) - * But if the argument is not a quoted string, treat it as a - * subsegment number. - */ +/* Implement the .section pseudo op: + .section name {, "flags"} + ^ ^ + | +--- optional flags: 'b' for bss + | 'i' for info + +-- section name 'l' for lib + 'n' for noload + 'o' for over + 'w' for data + 'd' (apparently m88k for data) + 'x' for text + 'r' for read-only data + 's' for shared data (PE) + But if the argument is not a quoted string, treat it as a + subsegment number. + + Note the 'a' flag is silently ignored. This allows the same + .section directive to be parsed in both ELF and COFF formats. */ void obj_coff_section (ignore) @@ -1466,6 +1467,7 @@ obj_coff_section (ignore) case 'n': flags &=~ SEC_LOAD; flags |= SEC_NEVER_LOAD; break; case 'd': flags |= SEC_DATA | SEC_LOAD; /* fall through */ case 'w': flags &=~ SEC_READONLY; break; + case 'a': break; /* For compatability with ELF. */ case 'x': flags |= SEC_CODE | SEC_LOAD; break; case 'r': flags |= SEC_READONLY; break; case 's': flags |= SEC_SHARED; break; @@ -1504,13 +1506,13 @@ obj_coff_section (ignore) sections so adjust_reloc_syms in write.c will correctly handle relocs which refer to non-local symbols in these sections. */ if (strncmp (name, ".gnu.linkonce", sizeof (".gnu.linkonce") - 1) == 0) - flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD; + flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD; #endif if (! bfd_set_section_flags (stdoutput, sec, flags)) - as_warn (_("error setting flags for \"%s\": %s"), - bfd_section_name (stdoutput, sec), - bfd_errmsg (bfd_get_error ())); + as_warn (_("error setting flags for \"%s\": %s"), + bfd_section_name (stdoutput, sec), + bfd_errmsg (bfd_get_error ())); } else if (flags != SEC_NO_FLAGS) { @@ -1564,7 +1566,7 @@ coff_frob_section (sec) fragp = seg_info (sec)->frchainP->frch_root; last = seg_info (sec)->frchainP->frch_last; while (fragp->fr_next != last) - fragp = fragp->fr_next; + fragp = fragp->fr_next; last->fr_address = size; fragp->fr_offset += new_size - size; } @@ -1713,9 +1715,9 @@ const short seg_N_TYPE[] = int function_lineoff = -1; /* Offset in line#s where the last function started (the odd entry for line #0) */ -/* structure used to keep the filenames which +/* Structure used to keep the filenames which are too long around so that we can stick them - into the string table */ + into the string table. */ struct filename_list { char *filename; @@ -1729,39 +1731,38 @@ static symbolS *last_line_symbol; /* Add 4 to the real value to get the index and compensate the negatives. This vector is used by S_GET_SEGMENT to turn a coff - section number into a segment number -*/ -static symbolS *previous_file_symbol; -void c_symbol_merge (); -static int line_base; + section number into a segment number. */ -symbolS *c_section_symbol (); bfd *abfd; +static symbolS *previous_file_symbol; +static int line_base; -static void fixup_segment PARAMS ((segment_info_type *segP, - segT this_segment_type)); - -static void fixup_mdeps PARAMS ((fragS *, - object_headers *, - segT)); - -static void fill_section PARAMS ((bfd * abfd, - object_headers *, - unsigned long *)); - -static int c_line_new PARAMS ((symbolS * symbol, long paddr, - int line_number, - fragS * frag)); - -static void w_symbols PARAMS ((bfd * abfd, char *where, - symbolS * symbol_rootP)); - -static void adjust_stab_section PARAMS ((bfd *abfd, segT seg)); - +void c_symbol_merge PARAMS ((symbolS *, symbolS *)); +symbolS *c_section_symbol PARAMS ((char *, int)); +void obj_coff_section PARAMS ((int)); +void do_relocs_for PARAMS ((bfd *, object_headers *, unsigned long *)); +char * symbol_to_chars PARAMS ((bfd *, char *, symbolS *)); +void w_strings PARAMS ((char *)); + +static void fixup_segment PARAMS ((segment_info_type *, segT)); +static void fixup_mdeps PARAMS ((fragS *, object_headers *, segT)); +static void fill_section PARAMS ((bfd *, object_headers *, unsigned long *)); +static int c_line_new PARAMS ((symbolS *, long, int, fragS *)); +static void w_symbols PARAMS ((bfd *, char *, symbolS *)); +static void adjust_stab_section PARAMS ((bfd *, segT)); static void obj_coff_lcomm PARAMS ((int)); static void obj_coff_text PARAMS ((int)); static void obj_coff_data PARAMS ((int)); -void obj_coff_section PARAMS ((int)); +static unsigned int count_entries_in_chain PARAMS ((unsigned int)); +static void coff_header_append PARAMS ((bfd *, object_headers *)); +static unsigned int yank_symbols PARAMS ((void)); +static unsigned int glue_symbols PARAMS ((symbolS **, symbolS **)); +static unsigned int tie_tags PARAMS ((void)); +static void crawl_symbols PARAMS ((object_headers *, bfd *)); +static void do_linenos_for PARAMS ((bfd *, object_headers *, unsigned long *)); +static void remove_subsegs PARAMS ((void)); + + /* When not using BFD_ASSEMBLER, we permit up to 40 sections. @@ -1800,6 +1801,8 @@ static const segT seg_info_off_by_4[] = #define SEG_INFO_FROM_SECTION_NUMBER(x) (seg_info_off_by_4[(x)+4]) +static relax_addressT relax_align PARAMS ((relax_addressT, long)); + static relax_addressT relax_align (address, alignment) relax_addressT address; @@ -1820,8 +1823,11 @@ s_get_segment (x) return SEG_INFO_FROM_SECTION_NUMBER (x->sy_symbol.ost_entry.n_scnum); } -/* calculate the size of the frag chain and fill in the section header - to contain all of it, also fill in the addr of the sections */ +static unsigned int size_section PARAMS ((bfd *, unsigned int)); + +/* Calculate the size of the frag chain and fill in the section header + to contain all of it, also fill in the addr of the sections. */ + static unsigned int size_section (abfd, idx) bfd *abfd ATTRIBUTE_UNUSED; @@ -1830,6 +1836,7 @@ size_section (abfd, idx) unsigned int size = 0; fragS *frag = segment_info[idx].frchainP->frch_root; + while (frag) { size = frag->fr_address; @@ -1882,7 +1889,7 @@ count_entries_in_chain (idx) unsigned int nrelocs; fixS *fixup_ptr; - /* Count the relocations */ + /* Count the relocations. */ fixup_ptr = segment_info[idx].fix_root; nrelocs = 0; while (fixup_ptr != (fixS *) NULL) @@ -1908,7 +1915,8 @@ count_entries_in_chain (idx) static int compare_external_relocs PARAMS ((const PTR, const PTR)); -/* AUX's ld expects relocations to be sorted */ +/* AUX's ld expects relocations to be sorted. */ + static int compare_external_relocs (x, y) const PTR x; @@ -1923,7 +1931,8 @@ compare_external_relocs (x, y) #endif -/* output all the relocations for a section */ +/* Output all the relocations for a section. */ + void do_relocs_for (abfd, h, file_cursor) bfd * abfd; @@ -1961,13 +1970,12 @@ do_relocs_for (abfd, h, file_cursor) { struct internal_reloc intr; - /* Only output some of the relocations */ + /* Only output some of the relocations. */ if (fix_ptr->fx_done == 0 && TC_COUNT_RELOC (fix_ptr)) { #ifdef TC_RELOC_MANGLE TC_RELOC_MANGLE (&segment_info[idx], fix_ptr, &intr, base); - #else symbolS *dot; symbolS *symbol_ptr = fix_ptr->fx_addsy; @@ -2012,36 +2020,26 @@ do_relocs_for (abfd, h, file_cursor) as_bad (_("bad relocation: symbol `%s' not in symbol table"), S_GET_NAME (symbol_ptr)); } + dot = segment_info[S_GET_SEGMENT (symbol_ptr)].dot; if (dot) - { - intr.r_symndx = dot->sy_number; - } + intr.r_symndx = dot->sy_number; else - { - intr.r_symndx = symbol_ptr->sy_number; - } - + intr.r_symndx = symbol_ptr->sy_number; } else - { - intr.r_symndx = -1; - } + intr.r_symndx = -1; #endif - (void) bfd_coff_swap_reloc_out (abfd, &intr, ext_ptr); ext_ptr++; - #if defined(TC_A29K) - /* The 29k has a special kludge for the high 16 bit reloc. Two relocations are emited, R_IHIHALF, and R_IHCONST. The second one doesn't contain a symbol, but uses the value for offset. */ - if (intr.r_type == R_IHIHALF) { - /* now emit the second bit */ + /* Now emit the second bit. */ intr.r_type = R_IHCONST; intr.r_symndx = fix_ptr->fx_addnumber; (void) bfd_coff_swap_reloc_out (abfd, &intr, ext_ptr); @@ -2066,14 +2064,12 @@ do_relocs_for (abfd, h, file_cursor) fix_ptr = fix_ptr->fx_next; } - #ifdef TE_AUX - /* Sort the reloc table */ + /* Sort the reloc table. */ qsort ((PTR) external_reloc_vec, nrelocs, sizeof (struct external_reloc), compare_external_relocs); #endif - - /* Write out the reloc table */ + /* Write out the reloc table. */ bfd_bwrite ((PTR) external_reloc_vec, (bfd_size_type) external_reloc_size, abfd); free (external_reloc_vec); @@ -2085,25 +2081,25 @@ do_relocs_for (abfd, h, file_cursor) } else { - /* No relocs */ + /* No relocs. */ segment_info[idx].scnhdr.s_relptr = 0; } } } - /* Set relocation_size field in file headers */ + + /* Set relocation_size field in file headers. */ H_SET_RELOCATION_SIZE (h, *file_cursor - reloc_start, 0); } -/* run through a frag chain and write out the data to go with it, fill - in the scnhdrs with the info on the file postions -*/ +/* Run through a frag chain and write out the data to go with it, fill + in the scnhdrs with the info on the file postions. */ + static void fill_section (abfd, h, file_cursor) bfd * abfd; object_headers *h ATTRIBUTE_UNUSED; unsigned long *file_cursor; { - unsigned int i; unsigned int paddr = 0; @@ -2229,7 +2225,7 @@ fill_section (abfd, h, file_cursor) } } -/* Coff file generation & utilities */ +/* Coff file generation & utilities. */ static void coff_header_append (abfd, h) @@ -2279,7 +2275,6 @@ coff_header_append (abfd, h) string_size += strlen (segment_info[i].name) + 1; } #endif - size = bfd_coff_swap_scnhdr_out (abfd, &(segment_info[i].scnhdr), buffer); @@ -2300,13 +2295,11 @@ symbol_to_chars (abfd, where, symbolP) unsigned int i; valueT val; - /* Turn any symbols with register attributes into abs symbols */ + /* Turn any symbols with register attributes into abs symbols. */ if (S_GET_SEGMENT (symbolP) == reg_section) - { - S_SET_SEGMENT (symbolP, absolute_section); - } - /* At the same time, relocate all symbols to their output value */ + S_SET_SEGMENT (symbolP, absolute_section); + /* At the same time, relocate all symbols to their output value. */ #ifndef TE_PE val = (segment_info[S_GET_SEGMENT (symbolP)].scnhdr.s_paddr + S_GET_VALUE (symbolP)); @@ -2329,25 +2322,25 @@ symbol_to_chars (abfd, where, symbolP) S_GET_STORAGE_CLASS (symbolP), i, numaux, where); } - return where; + return where; } void coff_obj_symbol_new_hook (symbolP) symbolS *symbolP; { - char underscore = 0; /* Symbol has leading _ */ + char underscore = 0; /* Symbol has leading _ */ - /* Effective symbol */ + /* Effective symbol. */ /* Store the pointer in the offset. */ S_SET_ZEROES (symbolP, 0L); S_SET_DATA_TYPE (symbolP, T_NULL); S_SET_STORAGE_CLASS (symbolP, 0); S_SET_NUMBER_AUXILIARY (symbolP, 0); - /* Additional information */ + /* Additional information. */ symbolP->sy_symbol.ost_flags = 0; - /* Auxiliary entries */ + /* Auxiliary entries. */ memset ((char *) &symbolP->sy_symbol.ost_auxent[0], 0, AUXESZ); if (S_IS_STRING (symbolP)) @@ -2356,9 +2349,7 @@ coff_obj_symbol_new_hook (symbolP) SF_SET_LOCAL (symbolP); } -/* - * Handle .ln directives. - */ +/* Handle .ln directives. */ static void obj_coff_ln (appline) @@ -2368,10 +2359,11 @@ obj_coff_ln (appline) if (! appline && def_symbol_in_progress != NULL) { + /* Wrong context. */ as_warn (_(".ln pseudo-op inside .def/.endef: ignored.")); demand_empty_rest_of_line (); return; - } /* wrong context */ + } l = get_absolute_expression (); c_line_new (0, frag_now_fix (), l, frag_now); @@ -2395,19 +2387,14 @@ obj_coff_ln (appline) demand_empty_rest_of_line (); } -/* - * def() - * - * Handle .def directives. - * - * One might ask : why can't we symbol_new if the symbol does not - * already exist and fill it with debug information. Because of - * the C_EFCN special symbol. It would clobber the value of the - * function symbol before we have a chance to notice that it is - * a C_EFCN. And a second reason is that the code is more clear this - * way. (at least I think it is :-). - * - */ +/* Handle .def directives. + + One might ask : why can't we symbol_new if the symbol does not + already exist and fill it with debug information. Because of + the C_EFCN special symbol. It would clobber the value of the + function symbol before we have a chance to notice that it is + a C_EFCN. And a second reason is that the code is more clear this + way. (at least I think it is :-). */ #define SKIP_SEMI_COLON() while (*input_line_pointer++ != ';') #define SKIP_WHITESPACES() while (*input_line_pointer == ' ' || \ @@ -2418,9 +2405,9 @@ static void obj_coff_def (what) int what ATTRIBUTE_UNUSED; { - char name_end; /* Char after the end of name */ - char *symbol_name; /* Name of the debug symbol */ - char *symbol_name_copy; /* Temporary copy of the name */ + char name_end; /* Char after the end of name. */ + char *symbol_name; /* Name of the debug symbol. */ + char *symbol_name_copy; /* Temporary copy of the name. */ unsigned int symbol_name_length; if (def_symbol_in_progress != NULL) @@ -2428,7 +2415,7 @@ obj_coff_def (what) as_warn (_(".def pseudo-op used inside of .def/.endef: ignored.")); demand_empty_rest_of_line (); return; - } /* if not inside .def/.endef */ + } SKIP_WHITESPACES (); @@ -2444,7 +2431,7 @@ obj_coff_def (what) symbol_name_copy = tc_canonicalize_symbol_name (symbol_name_copy); #endif - /* Initialize the new symbol */ + /* Initialize the new symbol. */ #ifdef STRIP_UNDERSCORE S_SET_NAME (def_symbol_in_progress, (*symbol_name_copy == '_' ? symbol_name_copy + 1 @@ -2480,7 +2467,7 @@ obj_coff_endef (ignore) as_warn (_(".endef pseudo-op used outside of .def/.endef: ignored.")); demand_empty_rest_of_line (); return; - } /* if not inside .def/.endef */ + } /* Set the section number according to storage class. */ switch (S_GET_STORAGE_CLASS (def_symbol_in_progress)) @@ -2489,7 +2476,8 @@ obj_coff_endef (ignore) case C_ENTAG: case C_UNTAG: SF_SET_TAG (def_symbol_in_progress); - /* intentional fallthrough */ + /* Intentional fallthrough. */ + case C_FILE: case C_TPDEF: SF_SET_DEBUG (def_symbol_in_progress); @@ -2497,20 +2485,23 @@ obj_coff_endef (ignore) break; case C_EFCN: - SF_SET_LOCAL (def_symbol_in_progress); /* Do not emit this symbol. */ - /* intentional fallthrough */ + /* Do not emit this symbol. */ + SF_SET_LOCAL (def_symbol_in_progress); + /* Intentional fallthrough. */ + case C_BLOCK: - SF_SET_PROCESS (def_symbol_in_progress); /* Will need processing before writing */ - /* intentional fallthrough */ + /* Will need processing before writing. */ + SF_SET_PROCESS (def_symbol_in_progress); + /* Intentional fallthrough. */ + case C_FCN: S_SET_SEGMENT (def_symbol_in_progress, SEG_E0); if (strcmp (S_GET_NAME (def_symbol_in_progress), ".bf") == 0) { /* .bf */ if (function_lineoff < 0) - { - fprintf (stderr, _("`.bf' symbol without preceding function\n")); - } /* missing function symbol */ + fprintf (stderr, _("`.bf' symbol without preceding function\n")); + SA_GET_SYM_LNNOPTR (last_line_symbol) = function_lineoff; SF_SET_PROCESS (last_line_symbol); @@ -2518,6 +2509,7 @@ obj_coff_endef (ignore) SF_SET_PROCESS (def_symbol_in_progress); function_lineoff = -1; } + /* Value is always set to . */ def_symbol_in_progress->sy_frag = frag_now; S_SET_VALUE (def_symbol_in_progress, (valueT) frag_now_fix ()); @@ -2546,7 +2538,7 @@ obj_coff_endef (ignore) #endif case C_STAT: case C_LABEL: - /* Valid but set somewhere else (s_comm, s_lcomm, colon) */ + /* Valid but set somewhere else (s_comm, s_lcomm, colon). */ break; case C_USTATIC: @@ -2554,7 +2546,7 @@ obj_coff_endef (ignore) case C_ULABEL: as_warn (_("unexpected storage class %d"), S_GET_STORAGE_CLASS (def_symbol_in_progress)); break; - } /* switch on storage class */ + } /* Now that we have built a debug symbol, try to find if we should merge with an existing symbol or not. If a symbol is C_EFCN or @@ -2609,16 +2601,16 @@ obj_coff_endef (ignore) /* For functions, and tags, and static symbols, the symbol *must* be where the debug symbol appears. Move the existing symbol to the current place. */ - /* If it already is at the end of the symbol list, do nothing */ + /* If it already is at the end of the symbol list, do nothing. */ if (def_symbol_in_progress != symbol_lastP) { symbol_remove (def_symbol_in_progress, &symbol_rootP, &symbol_lastP); symbol_append (def_symbol_in_progress, symbol_lastP, &symbol_rootP, &symbol_lastP); - } /* if not already in place */ - } /* if function */ - } /* normal or mergable */ + } + } + } if (SF_GET_TAG (def_symbol_in_progress)) { @@ -2644,8 +2636,8 @@ obj_coff_endef (ignore) /* That is, if this is the first time we've seen the function... */ symbol_table_insert (def_symbol_in_progress); - } /* definition follows debug */ - } /* Create the line number entry pointing to the function being defined */ + } + } def_symbol_in_progress = NULL; demand_empty_rest_of_line (); @@ -2662,7 +2654,7 @@ obj_coff_dim (ignore) as_warn (_(".dim pseudo-op used outside of .def/.endef: ignored.")); demand_empty_rest_of_line (); return; - } /* if not inside .def/.endef */ + } S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); @@ -2680,7 +2672,8 @@ obj_coff_dim (ignore) default: as_warn (_("badly formed .dim directive ignored")); - /* intentional fallthrough */ + /* Intentional fallthrough. */ + case '\n': case ';': dim_index = DIMNUM; @@ -2715,17 +2708,13 @@ obj_coff_line (ignore) #if 0 /* XXX Can we ever have line numbers going backwards? */ if (this_base > line_base) #endif - { - line_base = this_base; - } + line_base = this_base; #ifndef NO_LISTING { extern int listing; if (listing) - { - listing_source_line ((unsigned int) line_base); - } + listing_source_line ((unsigned int) line_base); } #endif } @@ -2745,7 +2734,7 @@ obj_coff_size (ignore) as_warn (_(".size pseudo-op used outside of .def/.endef ignored.")); demand_empty_rest_of_line (); return; - } /* if not inside .def/.endef */ + } S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); SA_SET_SYM_SIZE (def_symbol_in_progress, get_absolute_expression ()); @@ -2761,7 +2750,7 @@ obj_coff_scl (ignore) as_warn (_(".scl pseudo-op used outside of .def/.endef ignored.")); demand_empty_rest_of_line (); return; - } /* if not inside .def/.endef */ + } S_SET_STORAGE_CLASS (def_symbol_in_progress, get_absolute_expression ()); demand_empty_rest_of_line (); @@ -2793,9 +2782,7 @@ obj_coff_tag (ignore) SA_SET_SYM_TAGNDX (def_symbol_in_progress, (long) tag_find_or_make (symbol_name)); if (SA_GET_SYM_TAGNDX (def_symbol_in_progress) == 0L) - { - as_warn (_("tag not found for .tag %s"), symbol_name); - } /* not defined */ + as_warn (_("tag not found for .tag %s"), symbol_name); SF_SET_TAGGED (def_symbol_in_progress); *input_line_pointer = name_end; @@ -2812,15 +2799,13 @@ obj_coff_type (ignore) as_warn (_(".type pseudo-op used outside of .def/.endef ignored.")); demand_empty_rest_of_line (); return; - } /* if not inside .def/.endef */ + } S_SET_DATA_TYPE (def_symbol_in_progress, get_absolute_expression ()); if (ISFCN (S_GET_DATA_TYPE (def_symbol_in_progress)) && S_GET_STORAGE_CLASS (def_symbol_in_progress) != C_TPDEF) - { - SF_SET_FUNCTION (def_symbol_in_progress); - } /* is a function */ + SF_SET_FUNCTION (def_symbol_in_progress); demand_empty_rest_of_line (); } @@ -2834,7 +2819,7 @@ obj_coff_val (ignore) as_warn (_(".val pseudo-op used outside of .def/.endef ignored.")); demand_empty_rest_of_line (); return; - } /* if not inside .def/.endef */ + } if (is_name_beginner (*input_line_pointer)) { @@ -2849,7 +2834,7 @@ obj_coff_val (ignore) { def_symbol_in_progress->sy_frag = frag_now; S_SET_VALUE (def_symbol_in_progress, (valueT) frag_now_fix ()); - /* If the .val is != from the .def (e.g. statics) */ + /* If the .val is != from the .def (e.g. statics). */ } else if (strcmp (S_GET_NAME (def_symbol_in_progress), symbol_name)) { @@ -2918,13 +2903,13 @@ coff_obj_read_begin_hook () } /* This function runs through the symbol table and puts all the - externals onto another chain */ + externals onto another chain. */ /* The chain of globals. */ symbolS *symbol_globalP; symbolS *symbol_global_lastP; -/* The chain of externals */ +/* The chain of externals. */ symbolS *symbol_externP; symbolS *symbol_extern_lastP; @@ -2961,7 +2946,7 @@ yank_symbols () if (!SF_GET_DEBUG (symbolP)) { - /* Debug symbols do not need all this rubbish */ + /* Debug symbols do not need all this rubbish. */ symbolS *real_symbolP; /* L* and C_EFCN symbols never merge. */ @@ -2980,20 +2965,18 @@ yank_symbols () list.) Because some pointers refer to the real symbol whereas no pointers refer to the debug symbol. */ c_symbol_merge (symbolP, real_symbolP); - /* Replace the current symbol by the real one */ + /* Replace the current symbol by the real one. */ /* The symbols will never be the last or the first because : 1st symbol is .file and 3 last symbols are - .text, .data, .bss */ + .text, .data, .bss. */ symbol_remove (real_symbolP, &symbol_rootP, &symbol_lastP); symbol_insert (real_symbolP, symbolP, &symbol_rootP, &symbol_lastP); symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); symbolP = real_symbolP; - } /* if not local but dup'd */ + } if (flag_readonly_data_in_text && (S_GET_SEGMENT (symbolP) == SEG_E1)) - { - S_SET_SEGMENT (symbolP, SEG_E0); - } /* push data into text */ + S_SET_SEGMENT (symbolP, SEG_E0); resolve_symbol_value (symbolP); @@ -3003,17 +2986,15 @@ yank_symbols () { S_SET_EXTERNAL (symbolP); } + else if (S_GET_SEGMENT (symbolP) == SEG_E0) - { - S_SET_STORAGE_CLASS (symbolP, C_LABEL); - } + S_SET_STORAGE_CLASS (symbolP, C_LABEL); + else - { - S_SET_STORAGE_CLASS (symbolP, C_STAT); - } + S_SET_STORAGE_CLASS (symbolP, C_STAT); } - /* Mainly to speed up if not -g */ + /* Mainly to speed up if not -g. */ if (SF_GET_PROCESS (symbolP)) { /* Handle the nested blocks auxiliary info. */ @@ -3022,8 +3003,10 @@ yank_symbols () if (!strcmp (S_GET_NAME (symbolP), ".bb")) stack_push (block_stack, (char *) &symbolP); else - { /* .eb */ - register symbolS *begin_symbolP; + { + /* .eb */ + symbolS *begin_symbolP; + begin_symbolP = *(symbolS **) stack_pop (block_stack); if (begin_symbolP == (symbolS *) 0) as_warn (_("mismatched .eb")); @@ -3041,13 +3024,11 @@ yank_symbols () last_functionP = symbolP; if (S_GET_NUMBER_AUXILIARY (symbolP) < 1) - { - S_SET_NUMBER_AUXILIARY (symbolP, 1); - } /* make it at least 1 */ + S_SET_NUMBER_AUXILIARY (symbolP, 1); /* Clobber possible stale .dim information. */ #if 0 - /* Iffed out by steve - this fries the lnnoptr info too */ + /* Iffed out by steve - this fries the lnnoptr info too. */ bzero (symbolP->sy_symbol.ost_auxent[0].x_sym.x_fcnary.x_ary.x_dimen, sizeof (symbolP->sy_symbol.ost_auxent[0].x_sym.x_fcnary.x_ary.x_dimen)); #endif @@ -3078,19 +3059,19 @@ yank_symbols () else if (SF_GET_TAG (symbolP)) { /* First descriptor of a structure must point to - the first slot after the structure description. */ + the first slot after the structure description. */ last_tagP = symbolP; } else if (S_GET_STORAGE_CLASS (symbolP) == C_EOS) { - /* +2 take in account the current symbol */ + /* +2 take in account the current symbol. */ SA_SET_SYM_ENDNDX (last_tagP, symbol_number + 2); } else if (S_GET_STORAGE_CLASS (symbolP) == C_FILE) { /* If the filename was too long to fit in the - auxent, put it in the string table */ + auxent, put it in the string table. */ if (SA_GET_FILE_FNAME_ZEROS (symbolP) == 0 && SA_GET_FILE_FNAME_OFFSET (symbolP) != 0) { @@ -3102,8 +3083,8 @@ yank_symbols () { S_SET_VALUE (symbolP, last_file_symno); last_file_symno = symbol_number; - } /* no one points at the first .file symbol */ - } /* if debug or tag or eos or file */ + } + } #ifdef tc_frob_coff_symbol tc_frob_coff_symbol (symbolP); @@ -3122,8 +3103,8 @@ yank_symbols () if (SF_GET_LOCAL (symbolP)) { - /* remove C_EFCN and LOCAL (L...) symbols */ - /* next pointer remains valid */ + /* Remove C_EFCN and LOCAL (L...) symbols. */ + /* Next pointer remains valid. */ symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); } @@ -3143,7 +3124,7 @@ yank_symbols () #endif || S_GET_STORAGE_CLASS (symbolP) == C_WEAKEXT)) { - /* if external, Remove from the list */ + /* If external, Remove from the list. */ symbolS *hold = symbol_previous (symbolP); symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); @@ -3165,7 +3146,6 @@ yank_symbols () /* The O'Reilly COFF book says that defined global symbols come at the end of the symbol table, just before undefined global symbols. */ - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); symbol_clear_list_pointers (symbolP); symbol_append (symbolP, symbol_global_lastP, &symbol_globalP, @@ -3182,14 +3162,14 @@ yank_symbols () else { symbolP->sy_name_offset = 0; - } /* fix "long" names */ + } symbolP->sy_number = symbol_number; symbol_number += 1 + S_GET_NUMBER_AUXILIARY (symbolP); - } /* if local symbol */ - } /* traverse the symbol list */ - return symbol_number; + } + } + return symbol_number; } static unsigned int @@ -3203,11 +3183,11 @@ glue_symbols (head, tail) { symbolS *tmp = *head; - /* append */ + /* Append. */ symbol_remove (tmp, head, tail); symbol_append (tmp, symbol_lastP, &symbol_rootP, &symbol_lastP); - /* and process */ + /* Process. */ if (SF_GET_STRING (tmp)) { tmp->sy_name_offset = string_byte_count; @@ -3215,12 +3195,13 @@ glue_symbols (head, tail) } else { + /* Fix "long" names. */ tmp->sy_name_offset = 0; - } /* fix "long" names */ + } tmp->sy_number = symbol_number; symbol_number += 1 + S_GET_NUMBER_AUXILIARY (tmp); - } /* append the entire extern chain */ + } return symbol_number; } @@ -3248,6 +3229,7 @@ tie_tags () return symbol_number; } + static void crawl_symbols (h, abfd) object_headers *h; @@ -3255,40 +3237,35 @@ crawl_symbols (h, abfd) { unsigned int i; - /* Initialize the stack used to keep track of the matching .bb .be */ + /* Initialize the stack used to keep track of the matching .bb .be. */ block_stack = stack_init (512, sizeof (symbolS *)); /* The symbol list should be ordered according to the following sequence - * order : - * . .file symbol - * . debug entries for functions - * . fake symbols for the sections, including .text .data and .bss - * . defined symbols - * . undefined symbols - * But this is not mandatory. The only important point is to put the - * undefined symbols at the end of the list. - */ + order : + . .file symbol + . debug entries for functions + . fake symbols for the sections, including .text .data and .bss + . defined symbols + . undefined symbols + But this is not mandatory. The only important point is to put the + undefined symbols at the end of the list. */ /* Is there a .file symbol ? If not insert one at the beginning. */ if (symbol_rootP == NULL || S_GET_STORAGE_CLASS (symbol_rootP) != C_FILE) - { - c_dot_file_symbol ("fake"); - } + c_dot_file_symbol ("fake"); - /* - * Build up static symbols for the sections, they are filled in later - */ + /* Build up static symbols for the sections, they are filled in later. */ for (i = SEG_E0; i < SEG_LAST; i++) if (segment_info[i].scnhdr.s_name[0]) - segment_info[i].dot = c_section_symbol (segment_info[i].name, + segment_info[i].dot = c_section_symbol ((char *) segment_info[i].name, i - SEG_E0 + 1); - /* Take all the externals out and put them into another chain */ + /* Take all the externals out and put them into another chain. */ H_SET_SYMBOL_TABLE_SIZE (h, yank_symbols ()); - /* Take the externals and glue them onto the end.*/ + /* Take the externals and glue them onto the end. */ H_SET_SYMBOL_TABLE_SIZE (h, (H_GET_SYMBOL_COUNT (h) + glue_symbols (&symbol_globalP, @@ -3303,9 +3280,7 @@ crawl_symbols (h, abfd) know (symbol_extern_lastP == NULL); } -/* - * Find strings by crawling along symbol table chain. - */ +/* Find strings by crawling along symbol table chain. */ void w_strings (where) @@ -3314,7 +3289,7 @@ w_strings (where) symbolS *symbolP; struct filename_list *filename_list_scan = filename_list_head; - /* Gotta do md_ byte-ordering stuff for string_byte_count first - KWK */ + /* Gotta do md_ byte-ordering stuff for string_byte_count first - KWK. */ md_number_to_chars (where, (valueT) string_byte_count, 4); where += 4; @@ -3386,7 +3361,7 @@ do_linenos_for (abfd, h, file_cursor) struct external_lineno *dst = buffer; /* Run through the table we've built and turn it into its external - form, take this chance to remove duplicates */ + form, take this chance to remove duplicates. */ for (line_ptr = s->lineno_list_head; line_ptr != (struct lineno_list *) NULL; @@ -3401,13 +3376,10 @@ do_linenos_for (abfd, h, file_cursor) ((symbolS *) line_ptr->line.l_addr.l_symndx)->sy_number; } else - { - line_ptr->line.l_addr.l_paddr += ((struct frag *) (line_ptr->frag))->fr_address; - } + line_ptr->line.l_addr.l_paddr += ((struct frag *) (line_ptr->frag))->fr_address; (void) bfd_coff_swap_lineno_out (abfd, &(line_ptr->line), dst); dst++; - } s->scnhdr.s_lnnoptr = *file_cursor; @@ -3418,12 +3390,13 @@ do_linenos_for (abfd, h, file_cursor) *file_cursor += s->scnhdr.s_nlnno * LINESZ; } } + H_SET_LINENO_SIZE (h, *file_cursor - start); } /* Now we run through the list of frag chains in a segment and make all the subsegment frags appear at the end of the - list, as if the seg 0 was extra long */ + list, as if the seg 0 was extra long. */ static void remove_subsegs () @@ -3448,6 +3421,20 @@ remove_subsegs () unsigned long machine; int coff_flags; + +#ifndef SUB_SEGMENT_ALIGN +#ifdef HANDLE_ALIGN +/* The last subsegment gets an aligment corresponding to the alignment + of the section. This allows proper nop-filling at the end of + code-bearing sections. */ +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ + (!(FRCHAIN)->frch_next || (FRCHAIN)->frch_next->frch_seg != (SEG) \ + ? get_recorded_alignment (SEG) : 0) +#else +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 1 +#endif +#endif + extern void write_object_file () { @@ -3471,28 +3458,27 @@ write_object_file () string_byte_count = 4; + /* Run through all the sub-segments and align them up. Also + close any open frags. We tack a .fill onto the end of the + frag chain so that any .align's size can be worked by looking + at the next frag. */ for (frchain_ptr = frchain_root; frchain_ptr != (struct frchain *) NULL; frchain_ptr = frchain_ptr->frch_next) { - /* Run through all the sub-segments and align them up. Also - close any open frags. We tack a .fill onto the end of the - frag chain so that any .align's size can be worked by looking - at the next frag. */ + int alignment; subseg_set (frchain_ptr->frch_seg, frchain_ptr->frch_subseg); -#ifndef SUB_SEGMENT_ALIGN -#define SUB_SEGMENT_ALIGN(SEG) 1 -#endif + alignment = SUB_SEGMENT_ALIGN (now_seg, frchain_ptr) + #ifdef md_do_align - md_do_align (SUB_SEGMENT_ALIGN (now_seg), (char *) NULL, 0, 0, - alignment_done); + md_do_align (alignment, (char *) NULL, 0, 0, alignment_done); #endif if (subseg_text_p (now_seg)) - frag_align_code (SUB_SEGMENT_ALIGN (now_seg), 0); + frag_align_code (alignment, 0); else - frag_align (SUB_SEGMENT_ALIGN (now_seg), 0, 0); + frag_align (alignment, 0, 0); #ifdef md_do_align alignment_done: @@ -3506,9 +3492,7 @@ write_object_file () remove_subsegs (); for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - relax_segment (segment_info[i].frchainP->frch_root, i); - } + relax_segment (segment_info[i].frchainP->frch_root, i); /* Relaxation has completed. Freeze all syms. */ finalize_syms = 1; @@ -3562,7 +3546,7 @@ write_object_file () H_SET_BSS_SIZE (&headers, size); } - /* Turn the gas native symbol table shape into a coff symbol table */ + /* Turn the gas native symbol table shape into a coff symbol table. */ crawl_symbols (&headers, abfd); if (string_byte_count == 4) @@ -3596,8 +3580,7 @@ write_object_file () bfd_seek (abfd, (file_ptr) file_cursor, 0); - /* Plant the data */ - + /* Plant the data. */ fill_section (abfd, &headers, &file_cursor); do_relocs_for (abfd, &headers, &file_cursor); @@ -3692,28 +3675,26 @@ obj_coff_add_segment (name) return (segT) i; } -/* - * implement the .section pseudo op: - * .section name {, "flags"} - * ^ ^ - * | +--- optional flags: 'b' for bss - * | 'i' for info - * +-- section name 'l' for lib - * 'n' for noload - * 'o' for over - * 'w' for data - * 'd' (apparently m88k for data) - * 'x' for text - * 'r' for read-only data - * But if the argument is not a quoted string, treat it as a - * subsegment number. - */ +/* Implement the .section pseudo op: + .section name {, "flags"} + ^ ^ + | +--- optional flags: 'b' for bss + | 'i' for info + +-- section name 'l' for lib + 'n' for noload + 'o' for over + 'w' for data + 'd' (apparently m88k for data) + 'x' for text + 'r' for read-only data + But if the argument is not a quoted string, treat it as a + subsegment number. */ void obj_coff_section (ignore) int ignore ATTRIBUTE_UNUSED; { - /* Strip out the section name */ + /* Strip out the section name. */ char *section_name, *name; char c; unsigned int exp; @@ -3810,11 +3791,12 @@ static void obj_coff_ident (ignore) int ignore ATTRIBUTE_UNUSED; { - segT current_seg = now_seg; /* save current seg */ + segT current_seg = now_seg; /* Save current seg. */ subsegT current_subseg = now_subseg; - subseg_new (".comment", 0); /* .comment seg */ - stringer (1); /* read string */ - subseg_set (current_seg, current_subseg); /* restore current seg */ + + subseg_new (".comment", 0); /* .comment seg. */ + stringer (1); /* Read string. */ + subseg_set (current_seg, current_subseg); /* Restore current seg. */ } void @@ -3826,20 +3808,16 @@ c_symbol_merge (debug, normal) S_SET_STORAGE_CLASS (normal, S_GET_STORAGE_CLASS (debug)); if (S_GET_NUMBER_AUXILIARY (debug) > S_GET_NUMBER_AUXILIARY (normal)) - { - S_SET_NUMBER_AUXILIARY (normal, S_GET_NUMBER_AUXILIARY (debug)); - } /* take the most we have */ + S_SET_NUMBER_AUXILIARY (normal, S_GET_NUMBER_AUXILIARY (debug)); if (S_GET_NUMBER_AUXILIARY (debug) > 0) - { - memcpy ((char *) &normal->sy_symbol.ost_auxent[0], - (char *) &debug->sy_symbol.ost_auxent[0], - (unsigned int) (S_GET_NUMBER_AUXILIARY (debug) * AUXESZ)); - } /* Move all the auxiliary information */ + memcpy ((char *) &normal->sy_symbol.ost_auxent[0], + (char *) &debug->sy_symbol.ost_auxent[0], + (unsigned int) (S_GET_NUMBER_AUXILIARY (debug) * AUXESZ)); /* Move the debug flags. */ SF_SET_DEBUG_FIELD (normal, SF_GET_DEBUG_FIELD (debug)); -} /* c_symbol_merge() */ +} static int c_line_new (symbol, paddr, line_number, frag) @@ -3868,13 +3846,10 @@ c_line_new (symbol, paddr, line_number, new_line->next = (struct lineno_list *) NULL; if (s->lineno_list_head == (struct lineno_list *) NULL) - { - s->lineno_list_head = new_line; - } + s->lineno_list_head = new_line; else - { - s->lineno_list_tail->next = new_line; - } + s->lineno_list_tail->next = new_line; + s->lineno_list_tail = new_line; return LINESZ * s->scnhdr.s_nlnno++; } @@ -3898,7 +3873,7 @@ c_dot_file_symbol (filename) /* Filename is too long to fit into an auxent, we stick it into the string table instead. We keep a linked list of the filenames we find so we can emit - them later.*/ + them later. */ struct filename_list *f = ((struct filename_list *) xmalloc (sizeof (struct filename_list))); @@ -3922,29 +3897,23 @@ c_dot_file_symbol (filename) { extern int listing; if (listing) - { - listing_source_file (filename); - } - + listing_source_file (filename); } - #endif SF_SET_DEBUG (symbolP); S_SET_VALUE (symbolP, (valueT) previous_file_symbol); previous_file_symbol = symbolP; - /* Make sure that the symbol is first on the symbol chain */ + /* Make sure that the symbol is first on the symbol chain. */ if (symbol_rootP != symbolP) { symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); symbol_insert (symbolP, symbol_rootP, &symbol_rootP, &symbol_lastP); } -} /* c_dot_file_symbol() */ +} -/* - * Build a 'section static' symbol. - */ +/* Build a 'section static' symbol. */ symbolS * c_section_symbol (name, idx) @@ -4004,7 +3973,7 @@ c_section_symbol (name, idx) #endif /* TE_PE */ return symbolP; -} /* c_section_symbol() */ +} static void w_symbols (abfd, where, symbol_rootP) @@ -4015,7 +3984,7 @@ w_symbols (abfd, where, symbol_rootP) symbolS *symbolP; unsigned int i; - /* First fill in those values we have only just worked out */ + /* First fill in those values we have only just worked out. */ for (i = SEG_E0; i < SEG_LAST; i++) { symbolP = segment_info[i].dot; @@ -4027,23 +3996,19 @@ w_symbols (abfd, where, symbol_rootP) } } - /* - * Emit all symbols left in the symbol chain. - */ + /* Emit all symbols left in the symbol chain. */ for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) { /* Used to save the offset of the name. It is used to point - to the string in memory but must be a file offset. */ - register char *temp; + to the string in memory but must be a file offset. */ + char *temp; /* We can't fix the lnnoptr field in yank_symbols with the other adjustments, because we have to wait until we know where they go in the file. */ if (SF_GET_ADJ_LNNOPTR (symbolP)) - { - SA_GET_SYM_LNNOPTR (symbolP) += - segment_info[S_GET_SEGMENT (symbolP)].scnhdr.s_lnnoptr; - } + SA_GET_SYM_LNNOPTR (symbolP) += + segment_info[S_GET_SEGMENT (symbolP)].scnhdr.s_lnnoptr; tc_coff_symbol_emit_hook (symbolP); @@ -4061,8 +4026,7 @@ w_symbols (abfd, where, symbol_rootP) where = symbol_to_chars (abfd, where, symbolP); S_SET_NAME (symbolP, temp); } - -} /* w_symbols() */ +} static void obj_coff_lcomm (ignore) @@ -4112,7 +4076,7 @@ obj_coff_lcomm (ignore) if (! need_pass_2) { char *p; - segT current_seg = now_seg; /* save current seg */ + segT current_seg = now_seg; /* Save current seg. */ subsegT current_subseg = now_subseg; subseg_set (SEG_E2, 1); @@ -4120,7 +4084,7 @@ obj_coff_lcomm (ignore) p = frag_var(rs_org, 1, 1, (relax_substateT)0, symbolP, (offsetT) temp, (char *) 0); *p = 0; - subseg_set (current_seg, current_subseg); /* restore current seg */ + subseg_set (current_seg, current_subseg); /* Restore current seg. */ S_SET_SEGMENT (symbolP, SEG_E2); S_SET_STORAGE_CLASS (symbolP, C_STAT); } @@ -4139,6 +4103,7 @@ fixup_mdeps (frags, h, this_segment) segT this_segment; { subseg_change (this_segment, 0); + while (frags) { switch (frags->fr_type) @@ -4177,16 +4142,16 @@ fixup_segment (segP, this_segment_type) segment_info_type * segP; segT this_segment_type; { - register fixS * fixP; - register symbolS *add_symbolP; - register symbolS *sub_symbolP; + fixS * fixP; + symbolS *add_symbolP; + symbolS *sub_symbolP; long add_number; - register int size; - register char *place; - register long where; - register char pcrel; - register fragS *fragP; - register segT add_symbol_segment = absolute_section; + int size; + char *place; + long where; + char pcrel; + fragS *fragP; + segT add_symbol_segment = absolute_section; for (fixP = segP->fix_root; fixP; fixP = fixP->fx_next) { @@ -4274,9 +4239,7 @@ fixup_segment (segP, this_segment_type) } if (add_symbolP) - { - add_symbol_segment = S_GET_SEGMENT (add_symbolP); - } /* if there is an addend */ + add_symbol_segment = S_GET_SEGMENT (add_symbolP); if (sub_symbolP) { @@ -4307,7 +4270,7 @@ fixup_segment (segP, this_segment_type) } /* not absolute */ /* if sub_symbol is in the same segment that add_symbol - and add_symbol is either in DATA, TEXT, BSS or ABSOLUTE */ + and add_symbol is either in DATA, TEXT, BSS or ABSOLUTE. */ } else if (S_GET_SEGMENT (sub_symbolP) == add_symbol_segment && SEG_NORMAL (add_symbol_segment)) @@ -4319,10 +4282,8 @@ fixup_segment (segP, this_segment_type) /* Makes no sense to use the difference of 2 arbitrary symbols as the target of a call instruction. */ if (fixP->fx_tcbit) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("callj to difference of 2 symbols")); - } + as_bad_where (fixP->fx_file, fixP->fx_line, + _("callj to difference of 2 symbols")); #endif /* TC_I960 */ add_number += S_GET_VALUE (add_symbolP) - S_GET_VALUE (sub_symbolP); @@ -4345,9 +4306,8 @@ fixup_segment (segP, this_segment_type) know (!(S_IS_EXTERNAL (sub_symbolP) && (S_GET_SEGMENT (sub_symbolP) == absolute_section))); if ((S_GET_SEGMENT (sub_symbolP) == absolute_section)) - { - add_number -= S_GET_VALUE (sub_symbolP); - } + add_number -= S_GET_VALUE (sub_symbolP); + #ifdef DIFF_EXPR_OK else if (S_GET_SEGMENT (sub_symbolP) == this_segment_type #if 0 /* Okay for 68k, at least... */ @@ -4371,25 +4331,22 @@ fixup_segment (segP, this_segment_type) segment_name (S_GET_SEGMENT (sub_symbolP)), S_GET_NAME (sub_symbolP), (long) (fragP->fr_address + where)); - } /* if absolute */ + } } - } /* if sub_symbolP */ + } if (add_symbolP) { if (add_symbol_segment == this_segment_type && pcrel) { - /* - * This fixup was made when the symbol's segment was - * SEG_UNKNOWN, but it is now in the local segment. - * So we know how to do the address without relocation. - */ + /* This fixup was made when the symbol's segment was + SEG_UNKNOWN, but it is now in the local segment. + So we know how to do the address without relocation. */ #ifdef TC_I960 /* reloc_callj() may replace a 'call' with a 'calls' or a 'bal', - * in which cases it modifies *fixP as appropriate. In the case - * of a 'calls', no further work is required, and *fixP has been - * set up to make the rest of the code below a no-op. - */ + in which cases it modifies *fixP as appropriate. In the case + of a 'calls', no further work is required, and *fixP has been + set up to make the rest of the code below a no-op. */ reloc_callj (fixP); #endif /* TC_I960 */ @@ -4423,7 +4380,8 @@ fixup_segment (segP, this_segment_type) { case absolute_section: #ifdef TC_I960 - reloc_callj (fixP); /* See comment about reloc_callj() above*/ + /* See comment about reloc_callj() above. */ + reloc_callj (fixP); #endif /* TC_I960 */ add_number += S_GET_VALUE (add_symbolP); add_symbolP = NULL; @@ -4451,16 +4409,15 @@ fixup_segment (segP, this_segment_type) if ((int) fixP->fx_bit_fixP == 13) { /* This is a COBR instruction. They have only a - * 13-bit displacement and are only to be used - * for local branches: flag as error, don't generate - * relocation. - */ + 13-bit displacement and are only to be used + for local branches: flag as error, don't generate + relocation. */ as_bad_where (fixP->fx_file, fixP->fx_line, _("can't use COBR format with external label")); fixP->fx_addsy = NULL; fixP->fx_done = 1; continue; - } /* COBR */ + } #endif /* TC_I960 */ #if ((defined (TC_I386) || defined (TE_LYNX) || defined (TE_AUX)) && !defined(TE_PE)) || defined (COFF_COMMON_ADDEND) /* 386 COFF uses a peculiar format in which the @@ -4476,9 +4433,9 @@ fixup_segment (segP, this_segment_type) #endif break; - } /* switch on symbol seg */ - } /* if not in local seg */ - } /* if there was a + symbol */ + } + } + } if (pcrel) { @@ -4488,9 +4445,7 @@ fixup_segment (segP, this_segment_type) add_number -= md_pcrel_from (fixP); #endif if (add_symbolP == 0) - { - fixP->fx_addsy = &abs_symbol; - } /* if there's an add_symbol */ + fixP->fx_addsy = &abs_symbol; #if defined (TC_I386) || defined (TE_LYNX) || defined (TC_I960) || defined (TC_M68K) /* On the 386 we must adjust by the segment vaddr as well. Ian Taylor. @@ -4510,7 +4465,7 @@ fixup_segment (segP, this_segment_type) add_number -= segP->scnhdr.s_vaddr; #endif - } /* if pcrel */ + } md_apply_fix3 (fixP, (valueT *) & add_number, this_segment_type); @@ -4549,9 +4504,9 @@ fixup_segment (segP, this_segment_type) (long) add_number, (unsigned long) (fragP->fr_address + where)); #endif - } /* not a bit fix */ - } /* For each fixS in this segment. */ -} /* fixup_segment() */ + } + } +} #endif diff -uprN binutils-2.12.90.0.7/gas/config/obj-coff.h binutils-2.12.90.0.9/gas/config/obj-coff.h --- binutils-2.12.90.0.7/gas/config/obj-coff.h Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/obj-coff.h Thu May 23 15:10:10 2002 @@ -294,9 +294,9 @@ extern void SA_SET_SYM_ENDNDX PARAMS ((s #define SA_SET_SCN_NLINNO(s,v) (SYM_AUXENT (s)->x_scn.x_nlinno=(v)) /* Internal use only definitions. SF_ stands for symbol flags. - + These values can be assigned to sy_symbol.ost_flags field of a symbolS. - + You'll break i960 if you shift the SYSPROC bits anywhere else. for more on the balname/callname hack, see tc-i960.h. b.out is done differently. */ @@ -582,9 +582,9 @@ typedef struct #define SA_SET_SCN_NLINNO(s,v) (SYM_AUXENT (s)->x_scn.x_nlinno=(v)) /* Internal use only definitions. SF_ stands for symbol flags. - + These values can be assigned to sy_symbol.ost_flags field of a symbolS. - + You'll break i960 if you shift the SYSPROC bits anywhere else. for more on the balname/callname hack, see tc-i960.h. b.out is done differently. */ diff -uprN binutils-2.12.90.0.7/gas/config/obj-elf.c binutils-2.12.90.0.9/gas/config/obj-elf.c --- binutils-2.12.90.0.7/gas/config/obj-elf.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/obj-elf.c Thu May 23 15:10:10 2002 @@ -1,6 +1,6 @@ /* ELF object file format - Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. + Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, + 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -61,6 +61,7 @@ static void adjust_stab_sections PARAMS static void build_group_lists PARAMS ((bfd *, asection *, PTR)); static int elf_separate_stab_sections PARAMS ((void)); static void elf_init_stab_section PARAMS ((segT)); +static symbolS *elf_common PARAMS ((int)); #ifdef NEED_ECOFF_DEBUG static boolean elf_get_extr PARAMS ((asymbol *, EXTR *)); @@ -84,6 +85,7 @@ static int obj_elf_section_type PARAMS ( static void obj_elf_symver PARAMS ((int)); static void obj_elf_subsection PARAMS ((int)); static void obj_elf_popsection PARAMS ((int)); +static void obj_elf_tls_common PARAMS ((int)); static const pseudo_typeS elf_pseudo_table[] = { @@ -130,6 +132,8 @@ static const pseudo_typeS elf_pseudo_tab {"data", obj_elf_data, 0}, {"text", obj_elf_text, 0}, + {"tls_common", obj_elf_tls_common, 0}, + /* End sentinel. */ {NULL, NULL, 0}, }; @@ -280,8 +284,8 @@ elf_file_symbol (s) #endif } -void -obj_elf_common (is_common) +static symbolS * +elf_common (is_common) int is_common; { char *name; @@ -294,7 +298,7 @@ obj_elf_common (is_common) if (flag_mri && is_common) { s_mri_common (0); - return; + return NULL; } name = input_line_pointer; @@ -307,14 +311,14 @@ obj_elf_common (is_common) { as_bad (_("expected comma after symbol-name")); ignore_rest_of_line (); - return; + return NULL; } input_line_pointer++; /* skip ',' */ if ((temp = get_absolute_expression ()) < 0) { as_bad (_(".COMMon length (%d.) <0! Ignored."), temp); ignore_rest_of_line (); - return; + return NULL; } size = temp; *p = 0; @@ -324,7 +328,7 @@ obj_elf_common (is_common) { as_bad (_("symbol `%s' is already defined"), S_GET_NAME (symbolP)); ignore_rest_of_line (); - return; + return NULL; } if (S_GET_VALUE (symbolP) != 0) { @@ -374,7 +378,7 @@ obj_elf_common (is_common) { as_bad (_("common alignment not a power of 2")); ignore_rest_of_line (); - return; + return NULL; } } else @@ -426,7 +430,7 @@ obj_elf_common (is_common) symbol_get_bfdsym (symbolP)->flags |= BSF_OBJECT; demand_empty_rest_of_line (); - return; + return symbolP; { bad_common_segment: @@ -439,10 +443,27 @@ obj_elf_common (is_common) *p = c; input_line_pointer = p; ignore_rest_of_line (); - return; + return NULL; } } +void +obj_elf_common (is_common) + int is_common; +{ + elf_common (is_common); +} + +static void +obj_elf_tls_common (ignore) + int ignore ATTRIBUTE_UNUSED; +{ + symbolS *symbolP = elf_common (0); + + if (symbolP) + symbol_get_bfdsym (symbolP)->flags |= BSF_THREAD_LOCAL; +} + static void obj_elf_local (ignore) int ignore ATTRIBUTE_UNUSED; @@ -594,6 +615,8 @@ static struct special_section const spec { ".note", SHT_NOTE, 0 }, { ".rodata", SHT_PROGBITS, SHF_ALLOC }, { ".rodata1", SHT_PROGBITS, SHF_ALLOC }, + { ".tbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_TLS }, + { ".tdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_TLS }, { ".text", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR }, #if 0 /* FIXME: The current gcc, as of 2002-03-03, will emit @@ -608,13 +631,13 @@ static struct special_section const spec .section .init_array */ - { ".init_array",SHT_INIT_ARRAY, SHF_ALLOC + SHF_WRITE }, + { ".init_array",SHT_INIT_ARRAY, SHF_ALLOC + SHF_WRITE }, { ".fini_array",SHT_FINI_ARRAY, SHF_ALLOC + SHF_WRITE }, - { ".preinit_array",SHT_PREINIT_ARRAY, SHF_ALLOC + SHF_WRITE }, + { ".preinit_array",SHT_PREINIT_ARRAY, SHF_ALLOC + SHF_WRITE }, #else - { ".init_array",SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, + { ".init_array",SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, { ".fini_array",SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, - { ".preinit_array",SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, + { ".preinit_array",SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, #endif #ifdef ELF_TC_SPECIAL_SECTIONS @@ -717,7 +740,8 @@ obj_elf_change_section (name, type, attr | (((attr & SHF_ALLOC) && type != SHT_NOBITS) ? SEC_LOAD : 0) | ((attr & SHF_EXECINSTR) ? SEC_CODE : 0) | ((attr & SHF_MERGE) ? SEC_MERGE : 0) - | ((attr & SHF_STRINGS) ? SEC_STRINGS : 0)); + | ((attr & SHF_STRINGS) ? SEC_STRINGS : 0) + | ((attr & SHF_TLS) ? SEC_THREAD_LOCAL : 0)); #ifdef md_elf_section_flags flags = md_elf_section_flags (flags, attr, type); #endif @@ -749,7 +773,8 @@ obj_elf_change_section (name, type, attr saw the first time. */ if ((old_sec->flags ^ flags) & (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE - | SEC_EXCLUDE | SEC_SORT_ENTRIES | SEC_MERGE | SEC_STRINGS)) + | SEC_EXCLUDE | SEC_SORT_ENTRIES | SEC_MERGE | SEC_STRINGS + | SEC_THREAD_LOCAL)) as_warn (_("ignoring changed section attributes for %s"), name); else if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize) as_warn (_("ignoring changed section entity size for %s"), name); @@ -792,6 +817,9 @@ obj_elf_parse_section_letters (str, len) case 'G': attr |= SHF_GROUP; break; + case 'T': + attr |= SHF_TLS; + break; /* Compatibility. */ case 'm': if (*(str - 1) == 'a') @@ -806,7 +834,7 @@ obj_elf_parse_section_letters (str, len) } default: { - char *bad_msg = _("unrecognized .section attribute: want a,w,x,M,S,G"); + char *bad_msg = _("unrecognized .section attribute: want a,w,x,M,S,G,T"); #ifdef md_elf_section_letter int md_attr = md_elf_section_letter (*str, &bad_msg); if (md_attr >= 0) diff -uprN binutils-2.12.90.0.7/gas/config/obj-generic.c binutils-2.12.90.0.9/gas/config/obj-generic.c --- binutils-2.12.90.0.7/gas/config/obj-generic.c Thu Jun 3 11:02:01 1999 +++ binutils-2.12.90.0.9/gas/config/obj-generic.c Wed Dec 31 16:00:00 1969 @@ -1,41 +0,0 @@ -/* This file is obj-generic.c and is intended to be a template for - object format specific source files. - - Copyright (C) 1987-1992 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Chars that can be used to separate mant from exp in floating point nums */ -char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant */ -/* As in 0f12.456 */ -/* or 0d1.2345e12 */ -char FLT_CHARS[] = "rRsSfFdDxXpP"; - -/* These chars start a comment anywhere in a source file (except inside - another comment */ -const char comment_chars[] = "#"; - -/* - * Local Variables: - * comment-column: 0 - * fill-column: 131 - * End: - */ - -/* end of obj-generic.c */ diff -uprN binutils-2.12.90.0.7/gas/config/obj-generic.h binutils-2.12.90.0.9/gas/config/obj-generic.h --- binutils-2.12.90.0.7/gas/config/obj-generic.h Fri Mar 9 11:16:48 2001 +++ binutils-2.12.90.0.9/gas/config/obj-generic.h Wed Dec 31 16:00:00 1969 @@ -1,79 +0,0 @@ -/* This file is obj-generic.h - Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 2000 - Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -/* - * This file is obj-generic.h and is intended to be a template for - * object format specific header files. - */ - -/* define an obj specific macro off which target cpu back ends may key. */ -#define OBJ_GENERIC 1 - -/* include whatever target cpu is appropriate. */ -#include "targ-cpu.h" - -/* - * SYMBOLS - */ - -/* - * If your object format needs to reorder symbols, define this. When - * defined, symbols are kept on a doubly linked list and functions are - * made available for push, insert, append, and delete. If not defined, - * symbols are kept on a singly linked list, only the append and clear - * facilities are available, and they are macros. - */ - -/* #define SYMBOLS_NEED_PACKPOINTERS */ - -/* */ -typedef struct - { - void *nothing; - } - -obj_symbol_type; /* should be the format's symbol structure */ - -typedef void *object_headers; - -/* symbols have names */ -#define S_GET_NAME(s) ("foo") /* get the name of a symbolP */ -#define S_SET_NAME(s,v) ; -/* symbols have segments */ -#define S_GET_SEGMENT(s) (SEG_UNKNOWN) -#define S_SET_SEGMENT(s,v) ; -/* symbols may be external */ -#define S_IS_EXTERNAL(s) (0) -#define S_SET_EXTERNAL(s) ; - -/* symbols may or may not be defined */ -#define S_IS_DEFINED(s) (0) - -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (0) /* your magic number */ - -#define OBJ_EMIT_LINENO(a,b,c) /* must be *something*. This no-op's it out. */ - -/* - * Local Variables: - * comment-column: 0 - * fill-column: 131 - * End: - */ diff -uprN binutils-2.12.90.0.7/gas/config/obj-ieee.c binutils-2.12.90.0.9/gas/config/obj-ieee.c --- binutils-2.12.90.0.7/gas/config/obj-ieee.c Thu Jul 26 18:02:55 2001 +++ binutils-2.12.90.0.9/gas/config/obj-ieee.c Thu May 23 15:10:10 2002 @@ -493,6 +493,20 @@ obj_symbol_new_hook (symbolP) } #if 1 + +#ifndef SUB_SEGMENT_ALIGN +#ifdef HANDLE_ALIGN +/* The last subsegment gets an aligment corresponding to the alignment + of the section. This allows proper nop-filling at the end of + code-bearing sections. */ +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ + (!(FRCHAIN)->frch_next || (FRCHAIN)->frch_next->frch_seg != (SEG) \ + ? get_recorded_alignment (SEG) : 0) +#else +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 2 +#endif +#endif + extern void write_object_file () { @@ -512,20 +526,33 @@ write_object_file () subseg_set (1, 0); subseg_set (2, 0); subseg_set (3, 0); + + /* Run through all the sub-segments and align them up. Also + close any open frags. We tack a .fill onto the end of the + frag chain so that any .align's size can be worked by looking + at the next frag. */ for (frchain_ptr = frchain_root; frchain_ptr != (struct frchain *) NULL; frchain_ptr = frchain_ptr->frch_next) { - /* Run through all the sub-segments and align them up. Also - close any open frags. We tack a .fill onto the end of the - frag chain so that any .align's size can be worked by looking - at the next frag. */ + int alignment; subseg_set (frchain_ptr->frch_seg, frchain_ptr->frch_subseg); -#ifndef SUB_SEGMENT_ALIGN -#define SUB_SEGMENT_ALIGN(SEG) 2 + + alignment = SUB_SEGMENT_ALIGN (now_seg, frchain_ptr) + +#ifdef md_do_align + md_do_align (alignment, (char *) NULL, 0, 0, alignment_done); #endif - frag_align (SUB_SEGMENT_ALIGN (now_seg), 0, 0); + if (subseg_text_p (now_seg)) + frag_align_code (alignment, 0); + else + frag_align (alignment, 0, 0); + +#ifdef md_do_align + alignment_done: +#endif + frag_wane (frag_now); frag_now->fr_fix = 0; know (frag_now->fr_next == NULL); diff -uprN binutils-2.12.90.0.7/gas/config/obj-vms.h binutils-2.12.90.0.9/gas/config/obj-vms.h --- binutils-2.12.90.0.7/gas/config/obj-vms.h Fri Mar 9 11:16:49 2001 +++ binutils-2.12.90.0.9/gas/config/obj-vms.h Thu May 23 15:10:10 2002 @@ -1,6 +1,6 @@ /* VMS object file format - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000 - Free Software Foundation, Inc. + Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000, + 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -33,8 +33,8 @@ Software Foundation, 59 Temple Place - S * Doing the alignment here (on initialized data) can * mess up the calculation of global data PSECT sizes. */ -#define SUB_SEGMENT_ALIGN(SEG) \ - (((SEG) == data_section) ? 0 : LONGWORD_ALIGNMENT) +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ + (((SEG) == data_section) ? 0 : LONGWORD_ALIGNMENT) /* This flag is used to remember whether we are in the const or the data section. By and large they are identical, but we set a no-write diff -uprN binutils-2.12.90.0.7/gas/config/tc-alpha.c binutils-2.12.90.0.9/gas/config/tc-alpha.c --- binutils-2.12.90.0.7/gas/config/tc-alpha.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/tc-alpha.c Thu May 23 15:10:10 2002 @@ -1,6 +1,6 @@ /* tc-alpha.c - Processor-specific code for the DEC Alpha AXP CPU. - Copyright 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. + Copyright 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, + 2001, 2002 Free Software Foundation, Inc. Contributed by Carnegie Mellon University, 1993. Written by Alessandro Forin, based on earlier gas-1.38 target CPU files. Modified by Ken Raeburn for gas-2.x and ECOFF support. @@ -1556,7 +1556,8 @@ tc_gen_reloc (sec, fixp) * of thing, and as a result we need to fake it out here. */ if ((S_IS_EXTERN (fixp->fx_addsy) || S_IS_WEAK (fixp->fx_addsy) - || (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_MERGE)) + || (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_MERGE) + || (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_THREAD_LOCAL)) && !S_IS_COMMON (fixp->fx_addsy)) reloc->addend -= symbol_get_bfdsym (fixp->fx_addsy)->value; #endif @@ -1894,7 +1895,7 @@ tokenize_arguments (str, tok, ntok) goto err; ++input_line_pointer; - SKIP_WHITESPACE (); + SKIP_WHITESPACE (); p = input_line_pointer; c = get_symbol_end (); @@ -1917,7 +1918,7 @@ tokenize_arguments (str, tok, ntok) } *input_line_pointer = c; - SKIP_WHITESPACE (); + SKIP_WHITESPACE (); if (*input_line_pointer != '!') { if (r->require_seq) @@ -2377,7 +2378,7 @@ assemble_insn (opcode, tok, ntok, insn, abort (); /* There is one special case for which an insn receives two - relocations, and thus the user-supplied reloc does not + relocations, and thus the user-supplied reloc does not override the operand reloc. */ if (operand->default_reloc == BFD_RELOC_ALPHA_HINT) { @@ -2648,13 +2649,16 @@ assemble_tokens (opname, tok, ntok, loca int cpumatch = 1; bfd_reloc_code_real_type reloc = BFD_RELOC_UNUSED; +#ifdef RELOC_OP_P /* If a user-specified relocation is present, this is not a macro. */ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) { reloc = ALPHA_RELOC_TABLE (tok[ntok - 1].X_op)->reloc; ntok--; } - else if (local_macros_on) + else +#endif + if (local_macros_on) { macro = ((const struct alpha_macro *) hash_find (alpha_macro_hash, opname)); @@ -5464,7 +5468,7 @@ alpha_elf_section_letter (letter, ptr_ms if (letter == 's') return SHF_ALPHA_GPREL; - *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S in string"); + *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S,G,T in string"); return 0; } diff -uprN binutils-2.12.90.0.7/gas/config/tc-arm.c binutils-2.12.90.0.9/gas/config/tc-arm.c --- binutils-2.12.90.0.7/gas/config/tc-arm.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/gas/config/tc-arm.c Thu May 23 15:10:10 2002 @@ -521,7 +521,7 @@ struct vfp_reg unsigned long regno; }; -static const struct vfp_reg vfp_regs[] = +static const struct vfp_reg vfp_regs[] = { {"fpsid", 0x00000000}, {"FPSID", 0x00000000}, @@ -842,7 +842,7 @@ static void do_mav_binops_3a PARAMS ((ch static void do_mav_binops_3b PARAMS ((char *)); static void do_mav_binops_3c PARAMS ((char *)); static void do_mav_binops_3d PARAMS ((char *)); -static void do_mav_triple PARAMS ((char *, int, enum arm_reg_type, +static void do_mav_triple PARAMS ((char *, int, enum arm_reg_type, enum arm_reg_type, enum arm_reg_type)); static void do_mav_triple_4a PARAMS ((char *)); @@ -855,7 +855,7 @@ static void do_mav_triple_5e PARAMS ((ch static void do_mav_triple_5f PARAMS ((char *)); static void do_mav_triple_5g PARAMS ((char *)); static void do_mav_triple_5h PARAMS ((char *)); -static void do_mav_quad PARAMS ((char *, int, enum arm_reg_type, +static void do_mav_quad PARAMS ((char *, int, enum arm_reg_type, enum arm_reg_type, enum arm_reg_type, enum arm_reg_type)); @@ -1106,7 +1106,7 @@ static const struct asm_opcode insns[] = {"strh", 0xe00000b0, 3, ARM_EXT_V4, do_ldstv4}, /* ARM Architecture 4T. */ - /* Note: bx (and blx) are required on V5, even if the processor does + /* Note: bx (and blx) are required on V5, even if the processor does not support Thumb. */ {"bx", 0xe12fff10, 2, ARM_EXT_V4T | ARM_EXT_V5, do_bx}, @@ -2063,8 +2063,8 @@ static void s_thumb_func PARAMS ((int)); static void s_thumb_set PARAMS ((int)); static void arm_s_text PARAMS ((int)); static void arm_s_data PARAMS ((int)); -#ifdef OBJ_ELF static void arm_s_section PARAMS ((int)); +#ifdef OBJ_ELF static void s_arm_elf_cons PARAMS ((int)); #endif @@ -2088,11 +2088,11 @@ const pseudo_typeS md_pseudo_table[] = /* Allow for the effect of section changes. */ { "text", arm_s_text, 0 }, { "data", arm_s_data, 0 }, -#ifdef OBJ_ELF { "section", arm_s_section, 0 }, { "section.s", arm_s_section, 0 }, { "sect", arm_s_section, 0 }, { "sect.s", arm_s_section, 0 }, +#ifdef OBJ_ELF { "word", s_arm_elf_cons, 4 }, { "long", s_arm_elf_cons, 4 }, { "file", dwarf2_directive_file, 0 }, @@ -2165,14 +2165,14 @@ add_to_lit_pool () break; if (literals[lit_count].exp.X_op == inst.reloc.exp.X_op - && inst.reloc.exp.X_op == O_symbol - && (literals[lit_count].exp.X_add_number + && inst.reloc.exp.X_op == O_symbol + && (literals[lit_count].exp.X_add_number == inst.reloc.exp.X_add_number) - && (literals[lit_count].exp.X_add_symbol + && (literals[lit_count].exp.X_add_symbol == inst.reloc.exp.X_add_symbol) - && (literals[lit_count].exp.X_op_symbol + && (literals[lit_count].exp.X_op_symbol == inst.reloc.exp.X_op_symbol)) - break; + break; lit_count++; } @@ -2227,7 +2227,7 @@ symbol_locate (symbolP, name, segment, v S_SET_SEGMENT (symbolP, segment); S_SET_VALUE (symbolP, valu); - symbol_clear_list_pointers(symbolP); + symbol_clear_list_pointers (symbolP); symbol_set_frag (symbolP, frag); @@ -2585,16 +2585,19 @@ arm_s_data (ignore) #endif } -#ifdef OBJ_ELF static void arm_s_section (ignore) int ignore; { s_ltorg (0); +#ifdef OBJ_ELF obj_elf_section (ignore); -} #endif +#ifdef OBJ_COFF + obj_coff_section (ignore); +#endif +} static void opcode_select (width) @@ -2624,9 +2627,9 @@ opcode_select (width) thumb_mode = 0; if (!need_pass_2) - frag_align (2, 0, 0); + frag_align (2, 0, 0); - record_alignment (now_seg, 1); + record_alignment (now_seg, 1); } break; @@ -3450,13 +3453,13 @@ ld_mode_required_here (string) } else /* [Rn] */ { - skip_whitespace (str); + skip_whitespace (str); - if (* str == '!') - { - str ++; - inst.instruction |= WRITE_BACK; - } + if (* str == '!') + { + str ++; + inst.instruction |= WRITE_BACK; + } inst.instruction |= INDEX_UP | HWOFFSET_IMM; pre_inc = 1; @@ -4027,10 +4030,10 @@ do_blx (str) { /* This must be is BLX , no condition allowed. */ if (inst.instruction != COND_ALWAYS) - { - inst.error = BAD_COND; + { + inst.error = BAD_COND; return; - } + } inst.instruction = 0xfafffffe; @@ -4088,7 +4091,7 @@ do_t_blx (str) BKPT <16 bit unsigned immediate> Instruction is not conditional. The bit pattern given in insns[] has the COND_ALWAYS condition, - and it is an error if the caller tried to override that. */ + and it is an error if the caller tried to override that. */ static void do_bkpt (str) @@ -4331,7 +4334,7 @@ do_ldrd (str) || (rn = ld_mode_required_here (& str)) == FAIL) { if (!inst.error) - inst.error = BAD_ARGS; + inst.error = BAD_ARGS; return; } @@ -4514,7 +4517,7 @@ my_get_expression (ep, str) return 0; } -/* We handle all bad expressions here, so that we can report the faulty +/* We handle all bad expressions here, so that we can report the faulty instruction in the error message. */ void md_operand (expr) @@ -5543,7 +5546,7 @@ do_ldstv4 (str) end_of_line (str); return; } - + value = validate_immediate (~ inst.reloc.exp.X_add_number); if (value != FAIL) @@ -6729,7 +6732,7 @@ vfp_psr_parse (str) /* Mark it. */ *--p = 0; - for (vreg = vfp_regs + 0; + for (vreg = vfp_regs + 0; vreg < vfp_regs + sizeof (vfp_regs) / sizeof (struct vfp_reg); vreg++) { @@ -6960,7 +6963,7 @@ vfp_sp_reg_list (str, pos) /* Sanity check -- should have raised a parse error above. */ if (count == 0 || count > 32) - abort(); + abort (); /* Final test -- the registers must be consecutive. */ while (count--) @@ -7073,7 +7076,7 @@ vfp_dp_reg_list (str) /* Sanity check -- should have raised a parse error above. */ if (count == 0 || count > 16) - abort(); + abort (); /* Final test -- the registers must be consecutive. */ while (count--) @@ -7090,7 +7093,7 @@ vfp_dp_reg_list (str) } static void -vfp_sp_ldstm(str, ldstm_type) +vfp_sp_ldstm (str, ldstm_type) char *str; enum vfp_ldstm_type ldstm_type; { @@ -7127,7 +7130,7 @@ vfp_sp_ldstm(str, ldstm_type) } static void -vfp_dp_ldstm(str, ldstm_type) +vfp_dp_ldstm (str, ldstm_type) char *str; enum vfp_ldstm_type ldstm_type; { @@ -7433,11 +7436,11 @@ thumb_add_sub (str, subtract) int offset = inst.reloc.exp.X_add_number; if (subtract) - offset = -offset; + offset = - offset; if (offset < 0) { - offset = -offset; + offset = - offset; subtract = 1; /* Quick check, in case offset is MIN_INT. */ @@ -7447,7 +7450,9 @@ thumb_add_sub (str, subtract) return; } } - else + /* Note - you cannot convert a subtract of 0 into an + add of 0 because the carry flag is set differently. */ + else if (offset > 0) subtract = 0; if (Rd == REG_SP) @@ -7927,11 +7932,11 @@ mav_reg_required_here (str, shift, regty /* Restore the start point. */ *str = start; - + /* In the few cases where we might be able to accept something else this error can be overridden. */ inst.error = _(all_reg_maps[regtype].expected); - + return FAIL; } @@ -8179,7 +8184,7 @@ do_mav_quad_6b (str) REG_TYPE_MVFX); } -/* cfmvsc32 DSPSC,MVFX[15:0]. */ +/* cfmvsc32 DSPSC,MVFX[15:0]. */ static void do_mav_dspsc_1 (str) char * str; @@ -9093,7 +9098,7 @@ create_register_alias (newname, p) *p = c; return 0; } - + static void set_constant_flonums () { @@ -9934,6 +9939,7 @@ md_apply_fix3 (fixP, valP, seg) value = fixP->fx_offset; #endif value += diff; + if ((value & ~0x3fffff) && ((value & ~0x3fffff) != ~0x3fffff)) as_bad_where (fixP->fx_file, fixP->fx_line, _("branch with link out of range")); @@ -9941,14 +9947,11 @@ md_apply_fix3 (fixP, valP, seg) newval = (newval & 0xf800) | ((value & 0x7fffff) >> 12); newval2 = (newval2 & 0xf800) | ((value & 0xfff) >> 1); if (fixP->fx_r_type == BFD_RELOC_THUMB_PCREL_BLX) - /* Remove bit zero of the adjusted offset. Bit zero can only be - set if the upper insn is at a half-word boundary, since the - destination address, an ARM instruction, must always be on a - word boundary. The semantics of the BLX (1) instruction, however, - are that bit zero in the offset must always be zero, and the - corresponding bit one in the target address will be set from bit - one of the source address. */ - newval2 &= ~1; + /* For a BLX instruction, make sure that the relocation is rounded up + to a word boundary. This follows the semantics of the instruction + which specifies that bit 1 of the target address will come from bit + 1 of the base address. */ + newval2 = (newval2 + 1) & ~ 1; md_number_to_chars (buf, newval, THUMB_SIZE); md_number_to_chars (buf + THUMB_SIZE, newval2, THUMB_SIZE); } @@ -10397,7 +10400,6 @@ md_assemble (str) #if 0 arm_align (2, 0); #endif - listing_prev_line (); /* Defined in listing.h. */ /* Align the previous label if needed. */ if (last_label_seen != NULL) @@ -10485,7 +10487,7 @@ md_assemble (str) /* md_parse_option Invocation line includes a switch not recognized by the base assembler. - See if it's a processor-specific option. + See if it's a processor-specific option. This routine is somewhat complicated by the need for backwards compatibility (since older releases of gcc can't be changed). @@ -10503,7 +10505,7 @@ md_assemble (str) -mthumb Start in Thumb mode -mthumb-interwork Code supports ARM/Thumb interworking - For now we will also provide support for + For now we will also provide support for -mapcs-32 32-bit Program counter -mapcs-26 26-bit Program counter @@ -10579,7 +10581,7 @@ struct arm_option_table char *deprecated; /* If non-null, print this message. */ }; -struct arm_option_table arm_opts[] = +struct arm_option_table arm_opts[] = { {"k", N_("generate PIC code"), &pic_code, 1, NULL}, {"mthumb", N_("assemble Thumb code"), &thumb_mode, 1, NULL}, @@ -10787,7 +10789,7 @@ static struct arm_cpu_option_table arm_c {"ep9312", ARM_ARCH_V4T | ARM_CEXT_MAVERICK, FPU_NONE}, {NULL, 0, 0} }; - + struct arm_arch_option_table { char *name; @@ -11044,7 +11046,7 @@ md_parse_option (c, arg) #endif case 'a': - /* Listing option. Just ignore these, we don't support additional + /* Listing option. Just ignore these, we don't support additional ones. */ return 0; @@ -11071,10 +11073,10 @@ md_parse_option (c, arg) for (lopt = arm_long_opts; lopt->option != NULL; lopt++) { - /* These options are expected to have an argument. */ + /* These options are expected to have an argument. */ if (c == lopt->option[0] && arg != NULL - && strncmp (arg, lopt->option + 1, + && strncmp (arg, lopt->option + 1, strlen (lopt->option + 1)) == 0) { #if WARN_DEPRECATED @@ -11214,7 +11216,6 @@ arm_cleanup () /* Put it at the end of text section. */ subseg_set (text_section, 0); s_ltorg (0); - listing_prev_line (); } void @@ -11246,7 +11247,7 @@ arm_frob_label (sym) lsl r3, r3, #2 ldr r2, [r3, r2] mov pc, r2 - + .Lbbb: .word .Lxxx .Lccc: .word .Lyyy ..etc... @@ -11256,7 +11257,7 @@ arm_frob_label (sym) The second instruction converts a table index into a byte offset. The third instruction gets the jump address out of the table. The fourth instruction performs the jump. - + If the address stored at .Laaa is that of a symbol which has the Thumb_Func bit set, then the linker will arrange for this address to have the bottom bit set, which in turn would mean that the @@ -11305,7 +11306,7 @@ arm_adjust_symtab () as_bad (_("%s: unexpected function type: %d"), S_GET_NAME (sym), S_GET_STORAGE_CLASS (sym)); } - else switch (S_GET_STORAGE_CLASS (sym)) + else switch (S_GET_STORAGE_CLASS (sym)) { case C_EXT: S_SET_STORAGE_CLASS (sym, C_THUMBEXT); @@ -11607,17 +11608,17 @@ arm_handle_align (fragP) int bytes, fix, noop_size; char * p; const char * noop; - + if (fragP->fr_type != rs_align_code) return; bytes = fragP->fr_next->fr_address - fragP->fr_address - fragP->fr_fix; p = fragP->fr_literal + fragP->fr_fix; fix = 0; - + if (bytes > MAX_MEM_FOR_RS_ALIGN_CODE) bytes &= MAX_MEM_FOR_RS_ALIGN_CODE; - + if (fragP->tc_frag_data) { if (target_big_endian) @@ -11634,7 +11635,7 @@ arm_handle_align (fragP) noop = arm_noop; noop_size = sizeof (arm_noop); } - + if (bytes & (noop_size - 1)) { fix = bytes & (noop_size - 1); @@ -11650,7 +11651,7 @@ arm_handle_align (fragP) bytes -= noop_size; fix += noop_size; } - + fragP->fr_fix += fix; fragP->fr_var = noop_size; } @@ -11669,7 +11670,7 @@ arm_frag_align_code (n, max) to support alignments greater than 32 bytes. */ if (max > MAX_MEM_FOR_RS_ALIGN_CODE) as_fatal (_("alignments greater than 32 bytes not supported in .text sections.")); - + p = frag_var (rs_align_code, MAX_MEM_FOR_RS_ALIGN_CODE, 1, diff -uprN binutils-2.12.90.0.7/gas/config/tc-avr.c binutils-2.12.90.0.9/gas/config/tc-avr.c --- binutils-2.12.90.0.7/gas/config/tc-avr.c Wed Nov 21 15:35:32 2001 +++ binutils-2.12.90.0.9/gas/config/tc-avr.c Thu May 23 15:10:10 2002 @@ -75,8 +75,9 @@ static struct mcu_type_s mcu_types[] = {"at90s2313", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s2323", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s2333", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 4433 */ - {"attiny22" , AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s2343", AVR_ISA_2xxx, bfd_mach_avr2}, + {"attiny22", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 2343 */ + {"attiny26", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s4433", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s4414", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 8515 */ {"at90s4434", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 8535 */ @@ -86,18 +87,20 @@ static struct mcu_type_s mcu_types[] = {"atmega603", AVR_ISA_M603, bfd_mach_avr3}, /* XXX -> m103 */ {"atmega103", AVR_ISA_M103, bfd_mach_avr3}, {"at43usb320",AVR_ISA_M103, bfd_mach_avr3}, + {"at43usb355",AVR_ISA_M603, bfd_mach_avr3}, {"at76c711", AVR_ISA_M603, bfd_mach_avr3}, {"atmega8", AVR_ISA_M8, bfd_mach_avr4}, {"atmega83", AVR_ISA_M8, bfd_mach_avr4}, /* XXX -> m163 */ {"atmega85", AVR_ISA_M8, bfd_mach_avr4}, /* XXX -> m8 */ + {"atmega8515",AVR_ISA_M8, bfd_mach_avr4}, {"atmega16", AVR_ISA_M323, bfd_mach_avr5}, {"atmega161", AVR_ISA_M161, bfd_mach_avr5}, + {"atmega162", AVR_ISA_M323, bfd_mach_avr5}, {"atmega163", AVR_ISA_M161, bfd_mach_avr5}, {"atmega32", AVR_ISA_M323, bfd_mach_avr5}, {"atmega323", AVR_ISA_M323, bfd_mach_avr5}, {"atmega64", AVR_ISA_M323, bfd_mach_avr5}, {"atmega128", AVR_ISA_M128, bfd_mach_avr5}, - {"at43usb355",AVR_ISA_94K, bfd_mach_avr5}, {"at94k", AVR_ISA_94K, bfd_mach_avr5}, {NULL, 0, 0} }; diff -uprN binutils-2.12.90.0.7/gas/config/tc-d10v.c binutils-2.12.90.0.9/gas/config/tc-d10v.c --- binutils-2.12.90.0.7/gas/config/tc-d10v.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/gas/config/tc-d10v.c Thu May 23 15:10:10 2002 @@ -99,9 +99,9 @@ static int parallel_ok PARAMS ((struct d struct d10v_opcode *opcode2, unsigned long insn2, packing_type exec_type)); -static void check_resource_conflict PARAMS ((struct d10v_opcode *opcode1, - unsigned long insn1, - struct d10v_opcode *opcode2, +static void check_resource_conflict PARAMS ((struct d10v_opcode *opcode1, + unsigned long insn1, + struct d10v_opcode *opcode2, unsigned long insn2)); static symbolS * find_symbol_matching_register PARAMS ((expressionS *)); @@ -670,8 +670,8 @@ build_insn (opcode, opers, insn) insn = insn | (number << shift); } - /* kludge: for DIVS, we need to put the operands in twice on the second - pass, format is changed to LONG_R to force the second set of operands + /* kludge: for DIVS, we need to put the operands in twice on the second + pass, format is changed to LONG_R to force the second set of operands to not be shifted over 15. */ if ((opcode->opcode == OPCODE_DIVS) && (format == LONG_L)) insn = build_insn (opcode, opers, insn); @@ -728,8 +728,8 @@ write_1_short (opcode, insn, fx) if (opcode->exec_type & PARONLY) as_fatal (_("Instruction must be executed in parallel with another instruction.")); - /* The other container needs to be NOP. - According to 4.3.1: for FM=00, sub-instructions performed only by IU + /* The other container needs to be NOP. + According to 4.3.1: for FM=00, sub-instructions performed only by IU cannot be encoded in L-container. */ if (opcode->unit == IU) insn |= FM00 | (NOP << 15); /* Right container. */ @@ -944,7 +944,7 @@ parallel_ok (op1, insn1, op2, insn2, exe /* If this is auto parallization, and either instruction is a branch, don't parallel. */ if (exec_type == PACK_UNSPEC - && (op1->exec_type & (ALONE | BRANCH) + && (op1->exec_type & (ALONE | BRANCH) || op2->exec_type & (ALONE | BRANCH))) return 0; @@ -963,8 +963,8 @@ parallel_ok (op1, insn1, op2, insn2, exe and the second reads the PSW (which includes C, F0, and F1), then they cannot operate safely in parallel. */ - /* The bitmasks (mod and used) look like this (bit 31 = MSB). - r0-r15 0-15 + /* The bitmasks (mod and used) look like this (bit 31 = MSB). + r0-r15 0-15 a0-a1 16-17 cr (not psw) 18 psw 19 @@ -1051,7 +1051,7 @@ parallel_ok (op1, insn1, op2, insn2, exe /* Determine if there are any resource conflicts among two manually parallelized instructions. Some of this was lifted from parallel_ok. */ -static void +static void check_resource_conflict (op1, insn1, op2, insn2) struct d10v_opcode *op1, *op2; unsigned long insn1, insn2; @@ -1127,35 +1127,35 @@ check_resource_conflict (op1, insn1, op2 if (flags & (OPERAND_ACC0 | OPERAND_ACC1)) regno += 16; else if (flags & OPERAND_CONTROL) /* mvtc or mvfc */ - { + { if (regno == 0) regno = 19; else - regno = 18; + regno = 18; } else if (flags & OPERAND_FFLAG) regno = 22; else if (flags & OPERAND_CFLAG) regno = 21; - - if ( flags & OPERAND_DEST ) + + if ( flags & OPERAND_DEST ) { mod[j] |= 1 << regno; if (flags & OPERAND_EVEN) mod[j] |= 1 << (regno + 1); } - else - { - used[j] |= 1 << regno ; - if (flags & OPERAND_EVEN) - used[j] |= 1 << (regno + 1); - - /* Auto inc/dec also modifies the register. */ - if (op->operands[i+1] != 0 - && (d10v_operands[op->operands[i+1]].flags - & (OPERAND_PLUS | OPERAND_MINUS)) != 0) - mod[j] |= 1 << regno; - } + else + { + used[j] |= 1 << regno ; + if (flags & OPERAND_EVEN) + used[j] |= 1 << (regno + 1); + + /* Auto inc/dec also modifies the register. */ + if (op->operands[i+1] != 0 + && (d10v_operands[op->operands[i+1]].flags + & (OPERAND_PLUS | OPERAND_MINUS)) != 0) + mod[j] |= 1 << regno; + } } else if (flags & OPERAND_ATMINUS) { @@ -1294,7 +1294,7 @@ md_assemble (str) d10v_cleanup (); if (prev_opcode - && (0 == write_2_short (prev_opcode, prev_insn, opcode, insn, extype, + && (0 == write_2_short (prev_opcode, prev_insn, opcode, insn, extype, fixups))) { /* No instructions saved. */ @@ -1520,7 +1520,7 @@ find_opcode (opcode, myops) } match = 0; - + /* Now search the opcode table table for one with operands that matches what we've got. */ while (!match) @@ -1562,19 +1562,19 @@ find_opcode (opcode, myops) break; } - /* Unfortunatly, for the indirect operand in instructions such - as ``ldb r1, @(c,r14)'' this function can be passed - X_op == O_register (because 'c' is a valid register name). - However we cannot just ignore the case when X_op == O_register - but flags & OPERAND_REG is null, so we check to see if a symbol - of the same name as the register exists. If the symbol does - exist, then the parser was unable to distinguish the two cases + /* Unfortunatly, for the indirect operand in instructions such + as ``ldb r1, @(c,r14)'' this function can be passed + X_op == O_register (because 'c' is a valid register name). + However we cannot just ignore the case when X_op == O_register + but flags & OPERAND_REG is null, so we check to see if a symbol + of the same name as the register exists. If the symbol does + exist, then the parser was unable to distinguish the two cases and we fix things here. (Ref: PR14826) */ if (!(flags & OPERAND_REG) && (X_op == O_register)) { symbolS * sym; - + sym = find_symbol_matching_register (& myops[i]); if (sym != NULL) @@ -1672,9 +1672,9 @@ tc_gen_reloc (seg, fixp) if (fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT || fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY) reloc->address = fixp->fx_offset; - + reloc->addend = fixp->fx_addnumber; - + return reloc; } @@ -1769,13 +1769,13 @@ md_apply_fix3 (fixP, valP, seg) XXX - Do we have to worry about branches to a symbol + offset ? */ if (fixP->fx_addsy != NULL && S_IS_EXTERN (fixP->fx_addsy) ) - { - segT fseg = S_GET_SEGMENT (fixP->fx_addsy); - segment_info_type *segf = seg_info(fseg); + { + segT fseg = S_GET_SEGMENT (fixP->fx_addsy); + segment_info_type *segf = seg_info(fseg); if ( segf && segf->sym != fixP->fx_addsy) value = 0; - } + } /* Drop through. */ case BFD_RELOC_D10V_18: /* Instruction addresses are always right-shifted by 2. */ @@ -1789,9 +1789,9 @@ md_apply_fix3 (fixP, valP, seg) rep = (struct d10v_opcode *) hash_find (d10v_hash, "rep"); repi = (struct d10v_opcode *) hash_find (d10v_hash, "repi"); if ((insn & FM11) == FM11 - && ((repi != NULL + && ((repi != NULL && (insn & repi->mask) == (unsigned) repi->opcode) - || (rep != NULL + || (rep != NULL && (insn & rep->mask) == (unsigned) rep->opcode)) && value < 4) as_fatal diff -uprN binutils-2.12.90.0.7/gas/config/tc-d30v.c binutils-2.12.90.0.9/gas/config/tc-d30v.c --- binutils-2.12.90.0.7/gas/config/tc-d30v.c Fri Nov 16 14:05:52 2001 +++ binutils-2.12.90.0.9/gas/config/tc-d30v.c Thu May 23 15:10:10 2002 @@ -1,5 +1,5 @@ /* tc-d30v.c -- Assembler code for the Mitsubishi D30V - Copyright 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -246,7 +246,7 @@ check_range (num, bits, flags) if (bits == 32) { if (sizeof (unsigned long) * CHAR_BIT == 32) - return 0; + return 0; /* We don't record signed or unsigned for 32-bit quantities. Allow either. */ @@ -1211,7 +1211,7 @@ parallel_ok (op1, insn1, op2, insn2, exe return 0; } else - if ((mod_reg[0][j] & (mod_reg[1][j] | used_reg[1][j])) != 0) + if ((mod_reg[0][j] & (mod_reg[1][j] | used_reg[1][j])) != 0) return 0; } diff -uprN binutils-2.12.90.0.7/gas/config/tc-h8300.c binutils-2.12.90.0.9/gas/config/tc-h8300.c --- binutils-2.12.90.0.7/gas/config/tc-h8300.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/gas/config/tc-h8300.c Thu May 23 15:10:10 2002 @@ -1,6 +1,6 @@ /* tc-h8300.c -- Assemble code for the Hitachi H8/300 - Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001 - Free Software Foundation, Inc. + Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, + 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -1491,7 +1491,7 @@ md_section_align (seg, size) valueT size; { return ((size + (1 << section_alignment[(int) seg]) - 1) - & (-1 << section_alignment[(int) seg])); + & (-1 << section_alignment[(int) seg])); } #endif diff -uprN binutils-2.12.90.0.7/gas/config/tc-hppa.c binutils-2.12.90.0.9/gas/config/tc-hppa.c --- binutils-2.12.90.0.7/gas/config/tc-hppa.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/tc-hppa.c Thu May 23 15:10:10 2002 @@ -1289,10 +1289,10 @@ pa_undefine_label () { if (1 #ifdef OBJ_SOM - && current_space == label_chain->lss_space && label_chain->lss_label + && current_space == label_chain->lss_space && label_chain->lss_label #endif #ifdef OBJ_ELF - && now_seg == label_chain->lss_segment && label_chain->lss_label + && now_seg == label_chain->lss_segment && label_chain->lss_label #endif ) { @@ -2334,16 +2334,16 @@ pa_ip (str) args++; switch (*args) { - /* Handle FP compare conditions. */ - case 'f': - cond = pa_parse_fp_cmp_cond (&s); - INSERT_FIELD_AND_CONTINUE (opcode, cond, 0); + /* Handle FP compare conditions. */ + case 'f': + cond = pa_parse_fp_cmp_cond (&s); + INSERT_FIELD_AND_CONTINUE (opcode, cond, 0); /* Handle an add condition. */ case 'A': case 'a': - cmpltr = 0; - flag = 0; + cmpltr = 0; + flag = 0; if (*s == ',') { s++; @@ -4240,8 +4240,8 @@ tc_gen_reloc (section, fixp) case R_N0SEL: case R_N1SEL: /* There is no symbol or addend associated with these fixups. */ - relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol); + relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); + *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol); relocs[i]->addend = 0; break; @@ -4249,8 +4249,8 @@ tc_gen_reloc (section, fixp) case R_ENTRY: case R_EXIT: /* There is no symbol associated with these fixups. */ - relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); - *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol); + relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); + *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol); relocs[i]->addend = fixp->fx_offset; break; @@ -5227,7 +5227,7 @@ pa_get_absolute_expression (insn, strp) input_line_pointer = *strp; s = *strp; while (*s != ',' && *s != ' ' && *s != '\t') - s++; + s++; c = *s; *s = 0; diff -uprN binutils-2.12.90.0.7/gas/config/tc-i386.c binutils-2.12.90.0.9/gas/config/tc-i386.c --- binutils-2.12.90.0.7/gas/config/tc-i386.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/gas/config/tc-i386.c Thu May 23 15:10:10 2002 @@ -182,9 +182,9 @@ typedef struct _i386_insn i386_insn; /* List of chars besides those in app.c:symbol_chars that can start an operand. Used to prevent the scrubber eating vital white-space. */ #ifdef LEX_AT -const char extra_symbol_chars[] = "*%-(@"; +const char extra_symbol_chars[] = "*%-(@["; #else -const char extra_symbol_chars[] = "*%-("; +const char extra_symbol_chars[] = "*%-(["; #endif #if (defined (TE_I386AIX) \ @@ -1219,6 +1219,12 @@ tc_i386_fix_adjustable (fixP) if (fixP->fx_r_type == BFD_RELOC_386_GOTOFF || fixP->fx_r_type == BFD_RELOC_386_PLT32 || fixP->fx_r_type == BFD_RELOC_386_GOT32 + || fixP->fx_r_type == BFD_RELOC_386_TLS_GD + || fixP->fx_r_type == BFD_RELOC_386_TLS_LDM + || fixP->fx_r_type == BFD_RELOC_386_TLS_LDO_32 + || fixP->fx_r_type == BFD_RELOC_386_TLS_IE_32 + || fixP->fx_r_type == BFD_RELOC_386_TLS_LE_32 + || fixP->fx_r_type == BFD_RELOC_386_TLS_LE || fixP->fx_r_type == BFD_RELOC_X86_64_PLT32 || fixP->fx_r_type == BFD_RELOC_X86_64_GOT32 || fixP->fx_r_type == BFD_RELOC_X86_64_GOTPCREL @@ -1236,6 +1242,12 @@ tc_i386_fix_adjustable (fixP) #define BFD_RELOC_386_PLT32 0 #define BFD_RELOC_386_GOT32 0 #define BFD_RELOC_386_GOTOFF 0 +#define BFD_RELOC_386_TLS_GD 0 +#define BFD_RELOC_386_TLS_LDM 0 +#define BFD_RELOC_386_TLS_LDO_32 0 +#define BFD_RELOC_386_TLS_IE_32 0 +#define BFD_RELOC_386_TLS_LE_32 0 +#define BFD_RELOC_386_TLS_LE 0 #define BFD_RELOC_X86_64_PLT32 0 #define BFD_RELOC_X86_64_GOT32 0 #define BFD_RELOC_X86_64_GOTPCREL 0 @@ -2208,15 +2220,15 @@ process_suffix () /* For movzx and movsx, need to check the register type. */ if (intel_syntax - && (i.tm.base_opcode == 0xfb6 || i.tm.base_opcode == 0xfbe)) - if (i.suffix && i.suffix == BYTE_MNEM_SUFFIX) - { - unsigned int prefix = DATA_PREFIX_OPCODE; + && (i.tm.base_opcode == 0xfb6 || i.tm.base_opcode == 0xfbe) + && i.suffix == BYTE_MNEM_SUFFIX) + { + unsigned int prefix = DATA_PREFIX_OPCODE; - if ((i.op[1].regs->reg_type & Reg16) != 0) - if (!add_prefix (prefix)) - return 0; - } + if ((i.op[1].regs->reg_type & Reg16) != 0) + if (!add_prefix (prefix)) + return 0; + } if (i.suffix && i.suffix != BYTE_MNEM_SUFFIX) { @@ -2228,6 +2240,7 @@ process_suffix () else i.tm.base_opcode |= 1; } + /* Now select between word & dword operations via the operand size prefix, except for instructions that will ignore this prefix anyway. */ @@ -2309,7 +2322,7 @@ check_byte_reg () if (flag_code == CODE_64BIT && (i.tm.operand_types[op] & InOutPortReg) == 0) { - as_bad (_("Incorrect register `%%%s' used with`%c' suffix"), + as_bad (_("Incorrect register `%%%s' used with `%c' suffix"), i.op[op].regs->reg_name, i.suffix); return 0; @@ -2368,7 +2381,7 @@ check_long_reg () lowering is more complicated. */ if (flag_code == CODE_64BIT) { - as_bad (_("Incorrect register `%%%s' used with`%c' suffix"), + as_bad (_("Incorrect register `%%%s' used with `%c' suffix"), i.op[op].regs->reg_name, i.suffix); return 0; @@ -2385,7 +2398,7 @@ check_long_reg () else if ((i.types[op] & Reg64) != 0 && (i.tm.operand_types[op] & (Reg32 | Acc)) != 0) { - as_bad (_("Incorrect register `%%%s' used with`%c' suffix"), + as_bad (_("Incorrect register `%%%s' used with `%c' suffix"), i.op[op].regs->reg_name, i.suffix); return 0; @@ -2417,7 +2430,7 @@ check_qword_reg () { /* Prohibit these changes in the 64bit mode, since the lowering is more complicated. */ - as_bad (_("Incorrect register `%%%s' used with`%c' suffix"), + as_bad (_("Incorrect register `%%%s' used with `%c' suffix"), i.op[op].regs->reg_name, i.suffix); return 0; @@ -2450,7 +2463,7 @@ check_word_reg () lowering is more complicated. */ if (flag_code == CODE_64BIT) { - as_bad (_("Incorrect register `%%%s' used with`%c' suffix"), + as_bad (_("Incorrect register `%%%s' used with `%c' suffix"), i.op[op].regs->reg_name, i.suffix); return 0; @@ -2980,7 +2993,6 @@ output_jump () { char *p; int size; - fixS *fixP; if (i.tm.opcode_modifier & JumpByte) { @@ -3031,9 +3043,8 @@ output_jump () p = frag_more (1 + size); *p++ = i.tm.base_opcode; - fixP = fix_new_exp (frag_now, p - frag_now->fr_literal, size, - i.op[0].disps, 1, reloc (size, 1, 1, i.reloc[0])); - fixP->fx_pcrel_adjust = size; + fix_new_exp (frag_now, p - frag_now->fr_literal, size, + i.op[0].disps, 1, reloc (size, 1, 1, i.reloc[0])); } static void @@ -3226,7 +3237,6 @@ output_disp () int size = 4; int sign = 0; int pcrel = (i.flags[n] & Operand_PCrel) != 0; - fixS *fixP; /* The PC relative address is computed relative to the instruction boundary, so in case immediate @@ -3266,11 +3276,9 @@ output_disp () } p = frag_more (size); - fixP = fix_new_exp (frag_now, p - frag_now->fr_literal, size, - i.op[n].disps, pcrel, - reloc (size, pcrel, sign, i.reloc[n])); - if (pcrel) - fixP->fx_pcrel_adjust = size; + fix_new_exp (frag_now, p - frag_now->fr_literal, size, + i.op[n].disps, pcrel, + reloc (size, pcrel, sign, i.reloc[n])); } } } @@ -3375,10 +3383,16 @@ lex_got (reloc, adjust) const char *str; const RELOC_ENUM rel[NUM_FLAG_CODE]; } gotrel[] = { - { "PLT", { BFD_RELOC_386_PLT32, 0, BFD_RELOC_X86_64_PLT32 } }, - { "GOTOFF", { BFD_RELOC_386_GOTOFF, 0, 0 } }, - { "GOTPCREL", { 0, 0, BFD_RELOC_X86_64_GOTPCREL } }, - { "GOT", { BFD_RELOC_386_GOT32, 0, BFD_RELOC_X86_64_GOT32 } } + { "PLT", { BFD_RELOC_386_PLT32, 0, BFD_RELOC_X86_64_PLT32 } }, + { "GOTOFF", { BFD_RELOC_386_GOTOFF, 0, 0 } }, + { "GOTPCREL", { 0, 0, BFD_RELOC_X86_64_GOTPCREL } }, + { "TLSGD", { BFD_RELOC_386_TLS_GD, 0, 0 } }, + { "TLSLDM", { BFD_RELOC_386_TLS_LDM, 0, 0 } }, + { "GOTTPOFF", { BFD_RELOC_386_TLS_IE_32, 0, 0 } }, + { "TPOFF", { BFD_RELOC_386_TLS_LE_32, 0, 0 } }, + { "NTPOFF", { BFD_RELOC_386_TLS_LE, 0, 0 } }, + { "DTPOFF", { BFD_RELOC_386_TLS_LDO_32, 0, 0 } }, + { "GOT", { BFD_RELOC_386_GOT32, 0, BFD_RELOC_X86_64_GOT32 } } }; char *cp; unsigned int j; @@ -4215,7 +4229,6 @@ md_estimate_size_before_relax (fragP, se RELOC_ENUM reloc_type; unsigned char *opcode; int old_fr_fix; - fixS *fixP; if (fragP->fr_var != NO_RELOC) reloc_type = fragP->fr_var; @@ -4233,18 +4246,15 @@ md_estimate_size_before_relax (fragP, se /* Make jmp (0xeb) a (d)word displacement jump. */ opcode[0] = 0xe9; fragP->fr_fix += size; - fixP = fix_new (fragP, old_fr_fix, size, - fragP->fr_symbol, - fragP->fr_offset, 1, - reloc_type); - fixP->fx_pcrel_adjust = size; + fix_new (fragP, old_fr_fix, size, + fragP->fr_symbol, + fragP->fr_offset, 1, + reloc_type); break; case COND_JUMP86: - if (no_cond_jump_promotion) - goto relax_guess; - - if (size == 2) + if (size == 2 + && (!no_cond_jump_promotion || fragP->fr_var != NO_RELOC)) { /* Negate the condition, and branch past an unconditional jump. */ @@ -4255,18 +4265,24 @@ md_estimate_size_before_relax (fragP, se /* We added two extra opcode bytes, and have a two byte offset. */ fragP->fr_fix += 2 + 2; - fixP = fix_new (fragP, old_fr_fix + 2, 2, - fragP->fr_symbol, - fragP->fr_offset, 1, - reloc_type); - fixP->fx_pcrel_adjust = size; + fix_new (fragP, old_fr_fix + 2, 2, + fragP->fr_symbol, + fragP->fr_offset, 1, + reloc_type); break; } /* Fall through. */ case COND_JUMP: - if (no_cond_jump_promotion) - goto relax_guess; + if (no_cond_jump_promotion && fragP->fr_var == NO_RELOC) + { + fragP->fr_fix += 1; + fix_new (fragP, old_fr_fix, 1, + fragP->fr_symbol, + fragP->fr_offset, 1, + BFD_RELOC_8_PCREL); + break; + } /* This changes the byte-displacement jump 0x7N to the (d)word-displacement jump 0x0f,0x8N. */ @@ -4274,11 +4290,10 @@ md_estimate_size_before_relax (fragP, se opcode[0] = TWO_BYTE_OPCODE_ESCAPE; /* We've added an opcode byte. */ fragP->fr_fix += 1 + size; - fixP = fix_new (fragP, old_fr_fix + 1, size, - fragP->fr_symbol, - fragP->fr_offset, 1, - reloc_type); - fixP->fx_pcrel_adjust = size; + fix_new (fragP, old_fr_fix + 1, size, + fragP->fr_symbol, + fragP->fr_offset, 1, + reloc_type); break; default: @@ -4289,7 +4304,6 @@ md_estimate_size_before_relax (fragP, se return fragP->fr_fix - old_fr_fix; } - relax_guess: /* Guess size depending on current relax state. Initially the relax state will correspond to a short jump and we return 1, because the variable part of the frag (the branch offset) is one byte @@ -4581,6 +4595,12 @@ md_apply_fix3 (fixP, valP, seg) value -= 1; break; case BFD_RELOC_386_GOT32: + case BFD_RELOC_386_TLS_GD: + case BFD_RELOC_386_TLS_LDM: + case BFD_RELOC_386_TLS_LDO_32: + case BFD_RELOC_386_TLS_IE_32: + case BFD_RELOC_386_TLS_LE_32: + case BFD_RELOC_386_TLS_LE: case BFD_RELOC_X86_64_GOT32: value = 0; /* Fully resolved at runtime. No addend. */ break; @@ -4607,6 +4627,8 @@ md_apply_fix3 (fixP, valP, seg) else if (use_rela_relocations) { fixP->fx_no_overflow = 1; + /* Remember value for tc_gen_reloc. */ + fixP->fx_addnumber = value; value = 0; } #endif @@ -5047,6 +5069,12 @@ tc_gen_reloc (section, fixp) case BFD_RELOC_386_GOT32: case BFD_RELOC_386_GOTOFF: case BFD_RELOC_386_GOTPC: + case BFD_RELOC_386_TLS_GD: + case BFD_RELOC_386_TLS_LDM: + case BFD_RELOC_386_TLS_LDO_32: + case BFD_RELOC_386_TLS_IE_32: + case BFD_RELOC_386_TLS_LE_32: + case BFD_RELOC_386_TLS_LE: case BFD_RELOC_X86_64_32S: case BFD_RELOC_RVA: case BFD_RELOC_VTABLE_ENTRY: @@ -5120,9 +5148,23 @@ tc_gen_reloc (section, fixp) /* Use the rela in 64bit mode. */ else { - rel->addend = fixp->fx_offset; - if (fixp->fx_pcrel) - rel->addend -= fixp->fx_pcrel_adjust; + if (!fixp->fx_pcrel) + rel->addend = fixp->fx_offset; + else + switch (code) + { + case BFD_RELOC_X86_64_PLT32: + case BFD_RELOC_X86_64_GOT32: + case BFD_RELOC_X86_64_GOTPCREL: + rel->addend = fixp->fx_offset - fixp->fx_size; + break; + default: + rel->addend = (section->vma + - fixp->fx_size + + fixp->fx_addnumber + + md_pcrel_from (fixp)); + break; + } } rel->howto = bfd_reloc_type_lookup (stdoutput, code); diff -uprN binutils-2.12.90.0.7/gas/config/tc-i386.h binutils-2.12.90.0.9/gas/config/tc-i386.h --- binutils-2.12.90.0.7/gas/config/tc-i386.h Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/gas/config/tc-i386.h Thu May 23 15:10:10 2002 @@ -116,6 +116,8 @@ extern const char *i386_target_format PA extern void i386_elf_emit_arch_note PARAMS ((void)); #endif +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 0 + #else /* ! BFD_ASSEMBLER */ /* COFF STUFF */ @@ -131,7 +133,7 @@ extern int tc_coff_sizemachdep PARAMS (( #ifdef TE_GO32 /* DJGPP now expects some sections to be 2**4 aligned. */ -#define SUB_SEGMENT_ALIGN(SEG) \ +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ ((strcmp (obj_segment_name (SEG), ".text") == 0 \ || strcmp (obj_segment_name (SEG), ".data") == 0 \ || strcmp (obj_segment_name (SEG), ".bss") == 0 \ @@ -141,7 +143,7 @@ extern int tc_coff_sizemachdep PARAMS (( ? 4 \ : 2) #else -#define SUB_SEGMENT_ALIGN(SEG) 2 +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 2 #endif #define TC_RVA_RELOC 7 diff -uprN binutils-2.12.90.0.7/gas/config/tc-i960.c binutils-2.12.90.0.9/gas/config/tc-i960.c --- binutils-2.12.90.0.7/gas/config/tc-i960.c Fri Nov 16 14:05:52 2001 +++ binutils-2.12.90.0.9/gas/config/tc-i960.c Thu May 23 15:10:10 2002 @@ -1085,7 +1085,8 @@ md_estimate_size_before_relax (fragP, se relax_cobr (fragP); return 4; } - return 0; + + return md_relax_table[fragP->fr_subtype].rlx_length; } /* md_estimate_size_before_relax() */ #if defined(OBJ_AOUT) | defined(OBJ_BOUT) diff -uprN binutils-2.12.90.0.7/gas/config/tc-ia64.c binutils-2.12.90.0.9/gas/config/tc-ia64.c --- binutils-2.12.90.0.7/gas/config/tc-ia64.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/gas/config/tc-ia64.c Thu May 23 15:10:10 2002 @@ -77,6 +77,8 @@ enum special_section enum reloc_func { + FUNC_DTP_MODULE, + FUNC_DTP_RELATIVE, FUNC_FPTR_RELATIVE, FUNC_GP_RELATIVE, FUNC_LT_RELATIVE, @@ -84,8 +86,12 @@ enum reloc_func FUNC_PLT_RELATIVE, FUNC_SEC_RELATIVE, FUNC_SEG_RELATIVE, + FUNC_TP_RELATIVE, FUNC_LTV_RELATIVE, FUNC_LT_FPTR_RELATIVE, + FUNC_LT_DTP_MODULE, + FUNC_LT_DTP_RELATIVE, + FUNC_LT_TP_RELATIVE, FUNC_IPLT_RELOC, }; @@ -476,6 +482,8 @@ static struct pseudo_func[] = { /* reloc pseudo functions (these must come first!): */ + { "dtpmod", PSEUDO_FUNC_RELOC, { 0 } }, + { "dtprel", PSEUDO_FUNC_RELOC, { 0 } }, { "fptr", PSEUDO_FUNC_RELOC, { 0 } }, { "gprel", PSEUDO_FUNC_RELOC, { 0 } }, { "ltoff", PSEUDO_FUNC_RELOC, { 0 } }, @@ -483,8 +491,12 @@ pseudo_func[] = { "pltoff", PSEUDO_FUNC_RELOC, { 0 } }, { "secrel", PSEUDO_FUNC_RELOC, { 0 } }, { "segrel", PSEUDO_FUNC_RELOC, { 0 } }, + { "tprel", PSEUDO_FUNC_RELOC, { 0 } }, { "ltv", PSEUDO_FUNC_RELOC, { 0 } }, { "", 0, { 0 } }, /* placeholder for FUNC_LT_FPTR_RELATIVE */ + { "", 0, { 0 } }, /* placeholder for FUNC_LT_DTP_MODULE */ + { "", 0, { 0 } }, /* placeholder for FUNC_LT_DTP_RELATIVE */ + { "", 0, { 0 } }, /* placeholder for FUNC_LT_TP_RELATIVE */ { "iplt", PSEUDO_FUNC_RELOC, { 0 } }, /* mbtype4 constants: */ @@ -880,7 +892,7 @@ static void free_saved_prologue_counts P /* Build the unwind section name by appending the (possibly stripped) text section NAME to the unwind PREFIX. The resulting string pointer is assigned to RESULT. The string is allocated on the - stack, so this must be a macro... */ + stack, so this must be a macro... */ #define make_unw_section_name(special, text_name, result) \ { \ const char *_prefix = special_section_name[special]; \ @@ -943,7 +955,7 @@ ia64_elf_section_letter (letter, ptr_msg if (letter == 's') return SHF_IA_64_SHORT; - *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S in string"); + *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S,G,T in string"); return 0; } @@ -961,11 +973,11 @@ ia64_elf_section_flags (flags, attr, typ int ia64_elf_section_type (str, len) - const char *str; - size_t len; + const char *str; + size_t len; { #define STREQ(s) ((len == sizeof (s) - 1) && (strncmp (str, s, sizeof (s) - 1) == 0)) - + if (STREQ (ELF_STRING_ia64_unwind_info)) return SHT_PROGBITS; @@ -980,10 +992,10 @@ ia64_elf_section_type (str, len) if (STREQ ("init_array")) return SHT_INIT_ARRAY; - + if (STREQ ("fini_array")) return SHT_FINI_ARRAY; - + return -1; #undef STREQ } @@ -2821,12 +2833,12 @@ setup_unwind_header (int size, unsigned if (x != 0) extra = md.pointer_size - x; - /* Add 8 for the header + a pointer for the + /* Add 8 for the header + a pointer for the personality offset. */ *mem = xmalloc (size + extra + 8 + md.pointer_size); /* Clear the padding area and personality. */ - memset (*mem + 8 + size, 0 , extra + md.pointer_size); + memset (*mem + 8 + size, 0, extra + md.pointer_size); /* Initialize the header area. */ if (unwind.personality_routine) @@ -3288,7 +3300,7 @@ generate_unwind_image (text_name) /* Add the personality address to the image. */ if (unwind.personality_routine != 0) { - exp.X_op = O_symbol; + exp.X_op = O_symbol; exp.X_add_symbol = unwind.personality_routine; exp.X_add_number = 0; @@ -3299,7 +3311,7 @@ generate_unwind_image (text_name) else reloc = BFD_RELOC_IA64_LTOFF_FPTR32MSB; } - else + else { if (md.flags & EF_IA_64_ABI64) reloc = BFD_RELOC_IA64_LTOFF_FPTR64LSB; @@ -3308,7 +3320,7 @@ generate_unwind_image (text_name) } fix_new_exp (frag_now, frag_now_fix () - md.pointer_size, - md.pointer_size, & exp, 0, reloc); + md.pointer_size, &exp, 0, reloc); unwind.personality_routine = 0; } } @@ -3771,7 +3783,7 @@ save_prologue_count (lbl, count) lpc->prologue_count = count; else { - label_prologue_count * new_lpc = xmalloc (sizeof (* new_lpc)); + label_prologue_count *new_lpc = xmalloc (sizeof (* new_lpc)); new_lpc->next = unwind.saved_prologue_counts; new_lpc->label_number = lbl; @@ -3783,8 +3795,8 @@ save_prologue_count (lbl, count) static void free_saved_prologue_counts () { - label_prologue_count * lpc = unwind.saved_prologue_counts; - label_prologue_count * next; + label_prologue_count *lpc = unwind.saved_prologue_counts; + label_prologue_count *next; while (lpc != NULL) { @@ -4020,7 +4032,7 @@ dot_endp (dummy) lets GNU ld support programs with multiple segments containing unwind info (as might be the case for certain embedded applications). - + (c) An error is issued if there would be a name clash. */ text_name = segment_name (saved_seg); @@ -4060,7 +4072,7 @@ dot_endp (dummy) where = frag_now_fix () - (3 * md.pointer_size); bytes_per_address = bfd_arch_bits_per_address (stdoutput) / 8; - /* Issue the values of a) Proc Begin, b) Proc End, c) Unwind Record. */ + /* Issue the values of a) Proc Begin, b) Proc End, c) Unwind Record. */ e.X_op = O_pseudo_fixup; e.X_op_symbol = pseudo_func[FUNC_SEG_RELATIVE].u.sym; e.X_add_number = 0; @@ -5137,7 +5149,7 @@ operand_match (idesc, index, e) case IA64_OPND_R3_2: if (e->X_op == O_register && e->X_add_number >= REG_GR) - { + { if (e->X_add_number < REG_GR + 4) return OPERAND_MATCH; else if (e->X_add_number < REG_GR + 128) @@ -5807,7 +5819,7 @@ errata_nop_necessary_p (slot, insn_unit) && strncmp (idesc->name, "ptr", 3) != 0 && strncmp (idesc->name, "ptc", 3) != 0 && strncmp (idesc->name, "probe", 5) != 0) - return 0; + return 0; } if (prev_group->g_reg_set_conditionally[regno]) return 1; @@ -6199,12 +6211,12 @@ emit_one_bundle () continue; /* try next slot */ } - { - bfd_vma addr; + { + bfd_vma addr; - addr = frag_now->fr_address + frag_now_fix () - 16 + i; - dwarf2_gen_line_info (addr, &md.slot[curr].debug_line); - } + addr = frag_now->fr_address + frag_now_fix () - 16 + i; + dwarf2_gen_line_info (addr, &md.slot[curr].debug_line); + } if (errata_nop_necessary_p (md.slot + curr, insn_unit)) as_warn (_("Additional NOP may be necessary to workaround Itanium processor A/B step errata")); @@ -6494,6 +6506,14 @@ md_begin () bfd_set_section_alignment (stdoutput, text_section, 4); target_big_endian = TARGET_BYTES_BIG_ENDIAN; + pseudo_func[FUNC_DTP_MODULE].u.sym = + symbol_new (".", undefined_section, FUNC_DTP_MODULE, + &zero_address_frag); + + pseudo_func[FUNC_DTP_RELATIVE].u.sym = + symbol_new (".", undefined_section, FUNC_DTP_RELATIVE, + &zero_address_frag); + pseudo_func[FUNC_FPTR_RELATIVE].u.sym = symbol_new (".", undefined_section, FUNC_FPTR_RELATIVE, &zero_address_frag); @@ -6522,6 +6542,10 @@ md_begin () symbol_new (".", undefined_section, FUNC_SEG_RELATIVE, &zero_address_frag); + pseudo_func[FUNC_TP_RELATIVE].u.sym = + symbol_new (".", undefined_section, FUNC_TP_RELATIVE, + &zero_address_frag); + pseudo_func[FUNC_LTV_RELATIVE].u.sym = symbol_new (".", undefined_section, FUNC_LTV_RELATIVE, &zero_address_frag); @@ -6530,6 +6554,18 @@ md_begin () symbol_new (".", undefined_section, FUNC_LT_FPTR_RELATIVE, &zero_address_frag); + pseudo_func[FUNC_LT_DTP_MODULE].u.sym = + symbol_new (".", undefined_section, FUNC_LT_DTP_MODULE, + &zero_address_frag); + + pseudo_func[FUNC_LT_DTP_RELATIVE].u.sym = + symbol_new (".", undefined_section, FUNC_LT_DTP_RELATIVE, + &zero_address_frag); + + pseudo_func[FUNC_LT_TP_RELATIVE].u.sym = + symbol_new (".", undefined_section, FUNC_LT_TP_RELATIVE, + &zero_address_frag); + pseudo_func[FUNC_IPLT_RELOC].u.sym = symbol_new (".", undefined_section, FUNC_IPLT_RELOC, &zero_address_frag); @@ -7459,7 +7495,7 @@ dep->name, idesc->name, (rsrc_write?"wri } else { - for (i = idesc->num_outputs;i < NELEMS (idesc->operands); i++) + for (i = idesc->num_outputs; i < NELEMS (idesc->operands); i++) if (idesc->operands[i] == IA64_OPND_B1 || idesc->operands[i] == IA64_OPND_B2) { @@ -7981,7 +8017,7 @@ dep->name, idesc->name, (rsrc_write?"wri && idesc->operands[0] == IA64_OPND_PR) { mask = CURR_SLOT.opnd[2].X_add_number; - if (mask & ((valueT) 1<<16)) + if (mask & ((valueT) 1 << 16)) for (i = 16; i < 63; i++) { specs[count] = tmpl; @@ -8472,13 +8508,13 @@ dep->name, idesc->name, (rsrc_write?"wri specs[count++] = tmpl; } else if (note == 7) - { - valueT mask = 0; - if (idesc->operands[2] == IA64_OPND_IMM17) - mask = CURR_SLOT.opnd[2].X_add_number; - if (mask & ((valueT) 1 << 63)) + { + valueT mask = 0; + if (idesc->operands[2] == IA64_OPND_IMM17) + mask = CURR_SLOT.opnd[2].X_add_number; + if (mask & ((valueT) 1 << 63)) specs[count++] = tmpl; - } + } else if (note == 11) { if ((idesc->operands[0] == IA64_OPND_P1 @@ -8500,8 +8536,8 @@ dep->name, idesc->name, (rsrc_write?"wri { if (rsrc_write) { - int p1 = CURR_SLOT.opnd[0].X_add_number - REG_P; - int p2 = CURR_SLOT.opnd[1].X_add_number - REG_P; + int p1 = CURR_SLOT.opnd[0].X_add_number - REG_P; + int p2 = CURR_SLOT.opnd[1].X_add_number - REG_P; int or_andcm = strstr (idesc->name, "or.andcm") != NULL; int and_orcm = strstr (idesc->name, "and.orcm") != NULL; @@ -8509,7 +8545,7 @@ dep->name, idesc->name, (rsrc_write?"wri && (idesc->operands[0] == IA64_OPND_P1 || idesc->operands[0] == IA64_OPND_P2)) { - specs[count] = tmpl; + specs[count] = tmpl; specs[count++].cmp_type = (or_andcm ? CMP_OR : (and_orcm ? CMP_AND : CMP_NONE)); } @@ -8517,7 +8553,7 @@ dep->name, idesc->name, (rsrc_write?"wri && (idesc->operands[1] == IA64_OPND_P1 || idesc->operands[1] == IA64_OPND_P2)) { - specs[count] = tmpl; + specs[count] = tmpl; specs[count++].cmp_type = (or_andcm ? CMP_AND : (and_orcm ? CMP_OR : CMP_NONE)); } @@ -8756,8 +8792,8 @@ add_qp_mutex (mask) static int has_suffix_p (name, suffix) - const char *name; - const char *suffix; + const char *name; + const char *suffix; { size_t namelen = strlen (name); size_t sufflen = strlen (suffix); @@ -9826,11 +9862,22 @@ md_operand (e) as_bad ("Not a symbolic expression"); goto err; } - if (S_GET_VALUE (e->X_op_symbol) == FUNC_FPTR_RELATIVE - && i == FUNC_LT_RELATIVE) - i = FUNC_LT_FPTR_RELATIVE; - else + if (i != FUNC_LT_RELATIVE) + { + as_bad ("Illegal combination of relocation functions"); + goto err; + } + switch (S_GET_VALUE (e->X_op_symbol)) { + case FUNC_FPTR_RELATIVE: + i = FUNC_LT_FPTR_RELATIVE; break; + case FUNC_DTP_MODULE: + i = FUNC_LT_DTP_MODULE; break; + case FUNC_DTP_RELATIVE: + i = FUNC_LT_DTP_RELATIVE; break; + case FUNC_TP_RELATIVE: + i = FUNC_LT_TP_RELATIVE; break; + default: as_bad ("Illegal combination of relocation functions"); goto err; } @@ -9986,26 +10033,27 @@ ia64_cons_fix_new (f, where, nbytes, exp break; case 8: - /* In 32-bit mode, data8 could mean function descriptors too. */ + /* In 32-bit mode, data8 could mean function descriptors too. */ if (exp->X_op == O_pseudo_fixup - && exp->X_op_symbol - && S_GET_VALUE (exp->X_op_symbol) == FUNC_IPLT_RELOC - && !(md.flags & EF_IA_64_ABI64)) - { - if (target_big_endian) - code = BFD_RELOC_IA64_IPLTMSB; - else - code = BFD_RELOC_IA64_IPLTLSB; - exp->X_op = O_symbol; - break; - } - else { - if (target_big_endian) - code = BFD_RELOC_IA64_DIR64MSB; - else - code = BFD_RELOC_IA64_DIR64LSB; - break; - } + && exp->X_op_symbol + && S_GET_VALUE (exp->X_op_symbol) == FUNC_IPLT_RELOC + && !(md.flags & EF_IA_64_ABI64)) + { + if (target_big_endian) + code = BFD_RELOC_IA64_IPLTMSB; + else + code = BFD_RELOC_IA64_IPLTLSB; + exp->X_op = O_symbol; + break; + } + else + { + if (target_big_endian) + code = BFD_RELOC_IA64_DIR64MSB; + else + code = BFD_RELOC_IA64_DIR64LSB; + break; + } case 16: if (exp->X_op == O_pseudo_fixup @@ -10162,8 +10210,66 @@ ia64_gen_real_reloc_type (sym, r_type) } break; - case FUNC_IPLT_RELOC: - break; + case FUNC_TP_RELATIVE: + switch (r_type) + { + case BFD_RELOC_IA64_IMM14: + new = BFD_RELOC_IA64_TPREL14; break; + case BFD_RELOC_IA64_IMM22: + new = BFD_RELOC_IA64_TPREL22; break; + case BFD_RELOC_IA64_IMM64: + new = BFD_RELOC_IA64_TPREL64I; break; + default: + break; + } + break; + + case FUNC_LT_TP_RELATIVE: + switch (r_type) + { + case BFD_RELOC_IA64_IMM22: + new = BFD_RELOC_IA64_LTOFF_TPREL22; break; + default: + break; + } + break; + + case FUNC_LT_DTP_MODULE: + switch (r_type) + { + case BFD_RELOC_IA64_IMM22: + new = BFD_RELOC_IA64_LTOFF_DTPMOD22; break; + default: + break; + } + break; + + case FUNC_DTP_RELATIVE: + switch (r_type) + { + case BFD_RELOC_IA64_IMM14: + new = BFD_RELOC_IA64_DTPREL14; break; + case BFD_RELOC_IA64_IMM22: + new = BFD_RELOC_IA64_DTPREL22; break; + case BFD_RELOC_IA64_IMM64: + new = BFD_RELOC_IA64_DTPREL64I; break; + default: + break; + } + break; + + case FUNC_LT_DTP_RELATIVE: + switch (r_type) + { + case BFD_RELOC_IA64_IMM22: + new = BFD_RELOC_IA64_LTOFF_DTPREL22; break; + default: + break; + } + break; + + case FUNC_IPLT_RELOC: + break; default: abort (); @@ -10267,11 +10373,11 @@ fix_insn (fix, odesc, value) void md_apply_fix3 (fix, valP, seg) fixS *fix; - valueT * valP; + valueT *valP; segT seg ATTRIBUTE_UNUSED; { char *fixpos; - valueT value = * valP; + valueT value = *valP; int adjust = 0; fixpos = fix->fx_frag->fr_literal + fix->fx_where; diff -uprN binutils-2.12.90.0.7/gas/config/tc-ia64.h binutils-2.12.90.0.9/gas/config/tc-ia64.h --- binutils-2.12.90.0.7/gas/config/tc-ia64.h Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/tc-ia64.h Sun May 26 09:57:12 2002 @@ -19,8 +19,8 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include -#include +#include "opcode/ia64.h" +#include "elf/ia64.h" #define TC_IA64 @@ -249,7 +249,7 @@ typedef struct unwind_record } record; } unwind_record; -/* This expression evaluates to false if the relocation is for a local +/* This expression evaluates to false if the relocation is for a local object for which we still want to do the relocation at runtime. True if we are willing to perform this relocation while building the .o file. This is only used for pcrel relocations. */ diff -uprN binutils-2.12.90.0.7/gas/config/tc-m68k.c binutils-2.12.90.0.9/gas/config/tc-m68k.c --- binutils-2.12.90.0.7/gas/config/tc-m68k.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/tc-m68k.c Thu May 23 15:10:10 2002 @@ -1,6 +1,6 @@ /* tc-m68k.c -- Assemble for the m68k family Copyright 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -258,12 +258,12 @@ insop (w, opcode) { int z; for (z = the_ins.numo; z > opcode->m_codenum; --z) - the_ins.opcode[z]=the_ins.opcode[z-1]; - for (z = 0;z < the_ins.nrel; z++) - the_ins.reloc[z].n+=2; + the_ins.opcode[z] = the_ins.opcode[z - 1]; + for (z = 0; z < the_ins.nrel; z++) + the_ins.reloc[z].n += 2; for (z = 0; z < the_ins.nfrag; z++) the_ins.fragb[z].fragoff++; - the_ins.opcode[opcode->m_codenum]=w; + the_ins.opcode[opcode->m_codenum] = w; the_ins.numo++; } @@ -306,10 +306,10 @@ add_frag (add, off, type) offsetT off; int type; { - the_ins.fragb[the_ins.nfrag].fragoff=the_ins.numo; - the_ins.fragb[the_ins.nfrag].fadd=add; - the_ins.fragb[the_ins.nfrag].foff=off; - the_ins.fragb[the_ins.nfrag++].fragty=type; + the_ins.fragb[the_ins.nfrag].fragoff = the_ins.numo; + the_ins.fragb[the_ins.nfrag].fadd = add; + the_ins.fragb[the_ins.nfrag].foff = off; + the_ins.fragb[the_ins.nfrag++].fragty = type; } #define isvar(ex) \ @@ -1224,7 +1224,7 @@ m68k_ip (instring) default: losing++; } - break; + break; case 'n': switch (opP->mode) @@ -1234,7 +1234,7 @@ m68k_ip (instring) default: losing++; } - break; + break; case 'o': switch (opP->mode) @@ -1246,7 +1246,7 @@ m68k_ip (instring) default: losing++; } - break; + break; case 'p': switch (opP->mode) @@ -1259,12 +1259,12 @@ m68k_ip (instring) break; case DISP: if (opP->reg == PC || opP->reg == ZPC) - losing++; + losing++; break; default: losing++; } - break; + break; case 'q': switch (opP->mode) @@ -1276,13 +1276,13 @@ m68k_ip (instring) break; case DISP: if (opP->reg == PC || opP->reg == ZPC) - losing++; + losing++; break; default: losing++; break; } - break; + break; case 'v': switch (opP->mode) @@ -1295,7 +1295,7 @@ m68k_ip (instring) break; case DISP: if (opP->reg == PC || opP->reg == ZPC) - losing++; + losing++; break; default: losing++; @@ -2275,13 +2275,13 @@ m68k_ip (instring) the frag obstack to make all the bytes contiguous. */ frag_grow (14); - nextword += baseo & 0xff; - addword (nextword); - add_frag (adds (&opP->disp), offs (&opP->disp), - TAB (PCINDEX, SZ_UNDEF)); + nextword += baseo & 0xff; + addword (nextword); + add_frag (adds (&opP->disp), offs (&opP->disp), + TAB (PCINDEX, SZ_UNDEF)); break; - } + } } } else @@ -5322,7 +5322,7 @@ opt_list_symbols (arg, on) if (on) listing |= LISTING_SYMBOLS; else - listing &=~ LISTING_SYMBOLS; + listing &= ~LISTING_SYMBOLS; } /* Handle the MRI REG pseudo-op. */ @@ -5707,14 +5707,14 @@ parse_mri_control_operand (pcc, leftstar /* We must make sure we don't misinterpret AND/OR at the end of labels! if d0 #FOOAND and d1 #BAROR then ^^^ ^^ */ - if ( ( s == input_line_pointer - || *(s-1) == ' ' - || *(s-1) == '\t') - && ( ( strncasecmp (s, "AND", 3) == 0 - && (s[3] == '.' || ! is_part_of_name (s[3]))) - || ( strncasecmp (s, "OR", 2) == 0 - && (s[2] == '.' || ! is_part_of_name (s[2]))))) - break; + if ((s == input_line_pointer + || *(s-1) == ' ' + || *(s-1) == '\t') + && ((strncasecmp (s, "AND", 3) == 0 + && (s[3] == '.' || ! is_part_of_name (s[3]))) + || (strncasecmp (s, "OR", 2) == 0 + && (s[2] == '.' || ! is_part_of_name (s[2]))))) + break; } *rightstart = input_line_pointer; @@ -5867,7 +5867,9 @@ build_mri_control_operand (qual, cc, lef temp = leftstop; leftstop = rightstop; rightstop = temp; - } else { + } + else + { cc = swap_mri_condition (cc); } } @@ -6625,12 +6627,12 @@ s_mri_while (qual) This is important when assembling: while d0 12(a0,d0*2) do while d0 #CONST*20 do */ - while ( ! ( is_end_of_line[(unsigned char) *s] - || ( flag_mri - && *s == '*' - && ( s == input_line_pointer - || *(s-1) == ' ' - || *(s-1) == '\t')))) + while (! (is_end_of_line[(unsigned char) *s] + || (flag_mri + && *s == '*' + && (s == input_line_pointer + || *(s-1) == ' ' + || *(s-1) == '\t')))) s++; --s; while (*s == ' ' || *s == '\t') @@ -6778,7 +6780,7 @@ md_parse_option (c, arg) case 'A': if (*arg == 'm') - arg++; + arg++; /* intentional fall-through */ case 'm': @@ -6919,7 +6921,7 @@ md_show_usage (stream) const char *default_cpu = TARGET_CPU; int default_arch, i; - /* Get the canonical name for the default target CPU. */ + /* Get the canonical name for the default target CPU. */ if (*default_cpu == 'm') default_cpu++; for (i = 0; i < n_archs; i++) @@ -7137,13 +7139,14 @@ tc_coff_sizemachdep (frag) #endif #endif #ifdef OBJ_ELF -void m68k_elf_final_processing() +void +m68k_elf_final_processing () { - /* Set file-specific flags if this is a cpu32 processor */ - if (cpu_of_arch (current_architecture) & cpu32) - elf_elfheader (stdoutput)->e_flags |= EF_CPU32; - else if ((cpu_of_arch (current_architecture) & m68000up) - && !(cpu_of_arch (current_architecture) & m68020up)) - elf_elfheader (stdoutput)->e_flags |= EF_M68000; + /* Set file-specific flags if this is a cpu32 processor */ + if (cpu_of_arch (current_architecture) & cpu32) + elf_elfheader (stdoutput)->e_flags |= EF_CPU32; + else if ((cpu_of_arch (current_architecture) & m68000up) + && !(cpu_of_arch (current_architecture) & m68020up)) + elf_elfheader (stdoutput)->e_flags |= EF_M68000; } #endif diff -uprN binutils-2.12.90.0.7/gas/config/tc-m88k.h binutils-2.12.90.0.9/gas/config/tc-m88k.h --- binutils-2.12.90.0.7/gas/config/tc-m88k.h Fri Mar 9 11:17:03 2001 +++ binutils-2.12.90.0.9/gas/config/tc-m88k.h Thu May 23 15:10:10 2002 @@ -1,8 +1,8 @@ /* m88k.h -- Assembler for the Motorola 88000 Contributed by Devon Bowen of Buffalo University and Torbjorn Granlund of the Swedish Institute of Computer Science. - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000 - Free Software Foundation, Inc. + Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000, + 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -98,7 +98,7 @@ struct reloc_info_m88k #ifndef max #define max(a,b) (((a) > (b)) ? (a) : (b)) #endif -#define SUB_SEGMENT_ALIGN(SEG) max (section_alignment[(int) (SEG)], 4) +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) max (section_alignment[(int) (SEG)], 4) /* Fill in rs_align_code fragments. */ extern void m88k_handle_align PARAMS ((fragS *)); diff -uprN binutils-2.12.90.0.7/gas/config/tc-mcore.c binutils-2.12.90.0.9/gas/config/tc-mcore.c --- binutils-2.12.90.0.7/gas/config/tc-mcore.c Fri Nov 16 14:05:52 2001 +++ binutils-2.12.90.0.9/gas/config/tc-mcore.c Thu May 23 15:10:10 2002 @@ -1,5 +1,5 @@ /* tc-mcore.c -- Assemble code for M*Core - Copyright 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -124,9 +124,9 @@ const relax_typeS md_relax_table[] = { { 0, 0, C32_LEN, 0 }, /* UNDEF_WORD_DISP */ /* UNCD_JUMP */ - { 0, 0, 0, 0 }, /* UNDEF_DISP */ - { 2048, -2046, U12_LEN, C(UNCD_JUMP, DISP32) }, /* DISP12 */ - { 0, 0, U32_LEN, 0 }, /* DISP32 */ + { 0, 0, 0, 0 }, /* UNDEF_DISP */ + { 2048, -2046, U12_LEN, C(UNCD_JUMP, DISP32) }, /* DISP12 */ + { 0, 0, U32_LEN, 0 }, /* DISP32 */ { 0, 0, U32_LEN, 0 } /* UNDEF_WORD_DISP */ }; diff -uprN binutils-2.12.90.0.7/gas/config/tc-mips.c binutils-2.12.90.0.9/gas/config/tc-mips.c --- binutils-2.12.90.0.7/gas/config/tc-mips.c Mon Apr 22 19:56:51 2002 +++ binutils-2.12.90.0.9/gas/config/tc-mips.c Thu May 23 15:10:10 2002 @@ -1,5 +1,5 @@ /* tc-mips.c -- assemble code for a MIPS chip. - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by the OSF and Ralph Campbell. Written by Keith Knowles and Ralph Campbell, working independently. @@ -1379,12 +1379,12 @@ md_begin () if (strcmp (TARGET_OS, "elf") != 0) flags |= SEC_ALLOC | SEC_LOAD; - if (! HAVE_NEWABI) + if (file_mips_abi != N64_ABI) { sec = subseg_new (".reginfo", (subsegT) 0); - (void) bfd_set_section_flags (stdoutput, sec, flags); - (void) bfd_set_section_alignment (stdoutput, sec, 2); + bfd_set_section_flags (stdoutput, sec, flags); + bfd_set_section_alignment (stdoutput, sec, HAVE_NEWABI ? 3 : 2); #ifdef OBJ_ELF mips_regmask_frag = frag_more (sizeof (Elf32_External_RegInfo)); @@ -1395,8 +1395,8 @@ md_begin () /* The 64-bit ABI uses a .MIPS.options section rather than .reginfo section. */ sec = subseg_new (".MIPS.options", (subsegT) 0); - (void) bfd_set_section_flags (stdoutput, sec, flags); - (void) bfd_set_section_alignment (stdoutput, sec, 3); + bfd_set_section_flags (stdoutput, sec, flags); + bfd_set_section_alignment (stdoutput, sec, 3); #ifdef OBJ_ELF /* Set up the option header. */ @@ -2037,7 +2037,7 @@ append_insn (place, ip, address_expr, re { if (address_expr->X_op == O_constant) { - unsigned long tmp; + valueT tmp; switch (*reloc_type) { @@ -2121,21 +2121,21 @@ append_insn (place, ip, address_expr, re 4 octets for 64bit assembly. */ if (HAVE_64BIT_GPRS && (*reloc_type == BFD_RELOC_16 - || *reloc_type == BFD_RELOC_32 - || *reloc_type == BFD_RELOC_MIPS_JMP - || *reloc_type == BFD_RELOC_HI16_S - || *reloc_type == BFD_RELOC_LO16 - || *reloc_type == BFD_RELOC_GPREL16 - || *reloc_type == BFD_RELOC_MIPS_LITERAL - || *reloc_type == BFD_RELOC_GPREL32 - || *reloc_type == BFD_RELOC_64 - || *reloc_type == BFD_RELOC_CTOR - || *reloc_type == BFD_RELOC_MIPS_SUB - || *reloc_type == BFD_RELOC_MIPS_HIGHEST - || *reloc_type == BFD_RELOC_MIPS_HIGHER - || *reloc_type == BFD_RELOC_MIPS_SCN_DISP - || *reloc_type == BFD_RELOC_MIPS_REL16 - || *reloc_type == BFD_RELOC_MIPS_RELGOT)) + || *reloc_type == BFD_RELOC_32 + || *reloc_type == BFD_RELOC_MIPS_JMP + || *reloc_type == BFD_RELOC_HI16_S + || *reloc_type == BFD_RELOC_LO16 + || *reloc_type == BFD_RELOC_GPREL16 + || *reloc_type == BFD_RELOC_MIPS_LITERAL + || *reloc_type == BFD_RELOC_GPREL32 + || *reloc_type == BFD_RELOC_64 + || *reloc_type == BFD_RELOC_CTOR + || *reloc_type == BFD_RELOC_MIPS_SUB + || *reloc_type == BFD_RELOC_MIPS_HIGHEST + || *reloc_type == BFD_RELOC_MIPS_HIGHER + || *reloc_type == BFD_RELOC_MIPS_SCN_DISP + || *reloc_type == BFD_RELOC_MIPS_REL16 + || *reloc_type == BFD_RELOC_MIPS_RELGOT)) fixp[0]->fx_no_overflow = 1; if (unmatched_hi) @@ -2182,7 +2182,7 @@ append_insn (place, ip, address_expr, re || *reloc_type == BFD_RELOC_MIPS_SCN_DISP || *reloc_type == BFD_RELOC_MIPS_REL16 || *reloc_type == BFD_RELOC_MIPS_RELGOT)) - fixp[1]->fx_no_overflow = 1; + fixp[1]->fx_no_overflow = 1; if (reloc_type[2] != BFD_RELOC_UNUSED) { @@ -2214,7 +2214,7 @@ append_insn (place, ip, address_expr, re || *reloc_type == BFD_RELOC_MIPS_SCN_DISP || *reloc_type == BFD_RELOC_MIPS_REL16 || *reloc_type == BFD_RELOC_MIPS_RELGOT)) - fixp[2]->fx_no_overflow = 1; + fixp[2]->fx_no_overflow = 1; } } } @@ -2913,12 +2913,11 @@ macro_build (place, counter, ep, name, f /* Search until we get a match for NAME. */ while (1) { + /* It is assumed here that macros will never generate + MIPS-3D instructions. */ if (strcmp (fmt, insn.insn_mo->args) == 0 && insn.insn_mo->pinfo != INSN_MACRO - && OPCODE_IS_MEMBER (insn.insn_mo, - (mips_opts.isa - | (mips_opts.ase_mips3d ? INSN_MIPS3D : 0)), - mips_arch) + && OPCODE_IS_MEMBER (insn.insn_mo, mips_opts.isa, mips_arch) && (mips_arch != CPU_R4650 || (insn.insn_mo->pinfo & FP_D) == 0)) break; @@ -4605,6 +4604,12 @@ macro (ip) /* Load the address of a symbol into a register. If breg is not zero, we then add a base register to it. */ + if (dbl && HAVE_32BIT_GPRS) + as_warn (_("dla used to load 32-bit register")); + + if (! dbl && HAVE_64BIT_OBJECTS) + as_warn (_("la used to load 64-bit address")); + if (treg == breg) { tempreg = AT; @@ -4705,57 +4710,57 @@ macro (ip) /* We don't do GP optimization for now because RELAX_ENCODE can't hold the data for such large chunks. */ - if (used_at == 0) - { - macro_build (p, &icnt, &offset_expr, "lui", "t,u", - tempreg, (int) BFD_RELOC_MIPS_HIGHEST); - macro_build (p, &icnt, &offset_expr, "lui", "t,u", - AT, (int) BFD_RELOC_HI16_S); - macro_build (p, &icnt, &offset_expr, "daddiu", "t,r,j", - tempreg, tempreg, (int) BFD_RELOC_MIPS_HIGHER); - macro_build (p, &icnt, &offset_expr, "daddiu", "t,r,j", - AT, AT, (int) BFD_RELOC_LO16); - macro_build (p, &icnt, (expressionS *) NULL, "dsll32", - "d,w,<", tempreg, tempreg, 0); - macro_build (p, &icnt, (expressionS *) NULL, "dadd", "d,v,t", - tempreg, tempreg, AT); - used_at = 1; - } - else - { - macro_build (p, &icnt, &offset_expr, "lui", "t,u", - tempreg, (int) BFD_RELOC_MIPS_HIGHEST); - macro_build (p, &icnt, &offset_expr, "daddiu", "t,r,j", - tempreg, tempreg, (int) BFD_RELOC_MIPS_HIGHER); - macro_build (p, &icnt, (expressionS *) NULL, "dsll", "d,w,<", - tempreg, tempreg, 16); - macro_build (p, &icnt, &offset_expr, "daddiu", "t,r,j", - tempreg, tempreg, (int) BFD_RELOC_HI16_S); - macro_build (p, &icnt, (expressionS *) NULL, "dsll", "d,w,<", - tempreg, tempreg, 16); - macro_build (p, &icnt, &offset_expr, "daddiu", "t,r,j", - tempreg, tempreg, (int) BFD_RELOC_LO16); - } - } - else - { - if ((valueT) offset_expr.X_add_number <= MAX_GPREL_OFFSET - && ! nopic_need_relax (offset_expr.X_add_symbol, 1)) - { - frag_grow (20); - macro_build ((char *) NULL, &icnt, &offset_expr, "addiu", - "t,r,j", tempreg, GP, (int) BFD_RELOC_GPREL16); - p = frag_var (rs_machine_dependent, 8, 0, - RELAX_ENCODE (4, 8, 0, 4, 0, - mips_opts.warn_about_macros), - offset_expr.X_add_symbol, 0, NULL); - } - macro_build_lui (p, &icnt, &offset_expr, tempreg); - if (p != NULL) - p += 4; - macro_build (p, &icnt, &offset_expr, "addiu", - "t,r,j", tempreg, tempreg, (int) BFD_RELOC_LO16); - } + if (used_at == 0) + { + macro_build (p, &icnt, &offset_expr, "lui", "t,u", + tempreg, (int) BFD_RELOC_MIPS_HIGHEST); + macro_build (p, &icnt, &offset_expr, "lui", "t,u", + AT, (int) BFD_RELOC_HI16_S); + macro_build (p, &icnt, &offset_expr, "daddiu", "t,r,j", + tempreg, tempreg, (int) BFD_RELOC_MIPS_HIGHER); + macro_build (p, &icnt, &offset_expr, "daddiu", "t,r,j", + AT, AT, (int) BFD_RELOC_LO16); + macro_build (p, &icnt, (expressionS *) NULL, "dsll32", + "d,w,<", tempreg, tempreg, 0); + macro_build (p, &icnt, (expressionS *) NULL, "dadd", "d,v,t", + tempreg, tempreg, AT); + used_at = 1; + } + else + { + macro_build (p, &icnt, &offset_expr, "lui", "t,u", + tempreg, (int) BFD_RELOC_MIPS_HIGHEST); + macro_build (p, &icnt, &offset_expr, "daddiu", "t,r,j", + tempreg, tempreg, (int) BFD_RELOC_MIPS_HIGHER); + macro_build (p, &icnt, (expressionS *) NULL, "dsll", "d,w,<", + tempreg, tempreg, 16); + macro_build (p, &icnt, &offset_expr, "daddiu", "t,r,j", + tempreg, tempreg, (int) BFD_RELOC_HI16_S); + macro_build (p, &icnt, (expressionS *) NULL, "dsll", "d,w,<", + tempreg, tempreg, 16); + macro_build (p, &icnt, &offset_expr, "daddiu", "t,r,j", + tempreg, tempreg, (int) BFD_RELOC_LO16); + } + } + else + { + if ((valueT) offset_expr.X_add_number <= MAX_GPREL_OFFSET + && ! nopic_need_relax (offset_expr.X_add_symbol, 1)) + { + frag_grow (20); + macro_build ((char *) NULL, &icnt, &offset_expr, "addiu", + "t,r,j", tempreg, GP, (int) BFD_RELOC_GPREL16); + p = frag_var (rs_machine_dependent, 8, 0, + RELAX_ENCODE (4, 8, 0, 4, 0, + mips_opts.warn_about_macros), + offset_expr.X_add_symbol, 0, NULL); + } + macro_build_lui (p, &icnt, &offset_expr, tempreg); + if (p != NULL) + p += 4; + macro_build (p, &icnt, &offset_expr, "addiu", + "t,r,j", tempreg, tempreg, (int) BFD_RELOC_LO16); + } } else if (mips_pic == SVR4_PIC && ! mips_big_got) { @@ -5292,7 +5297,7 @@ macro (ip) } if (mips_opts.noreorder) macro_build ((char *) NULL, &icnt, (expressionS *) NULL, - "nop", ""); + "nop", ""); expr1.X_add_number = mips_cprestore_offset; macro_build ((char *) NULL, &icnt, &expr1, HAVE_32BIT_ADDRESSES ? "lw" : "ld", "t,o(b)", @@ -6681,6 +6686,17 @@ macro2 (ip) --mips_opts.noreorder; break; + case M_DROL: + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsubu", + "d,v,t", AT, 0, treg); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsrlv", + "d,t,s", AT, sreg, AT); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsllv", + "d,t,s", dreg, sreg, treg); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or", + "d,v,t", dreg, dreg, AT); + break; + case M_ROL: macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "subu", "d,v,t", AT, 0, treg); @@ -6692,15 +6708,55 @@ macro2 (ip) "d,v,t", dreg, dreg, AT); break; + case M_DROL_I: + { + unsigned int rot; + char *l, *r; + + if (imm_expr.X_op != O_constant) + as_bad (_("rotate count too large")); + rot = imm_expr.X_add_number & 0x3f; + if (! rot) + break; + l = (rot < 0x20) ? "dsll" : "dsll32"; + r = ((0x40 - rot) < 0x20) ? "dsrl" : "dsrl32"; + rot &= 0x1f; + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, l, + "d,w,<", AT, sreg, rot); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, r, + "d,w,<", dreg, sreg, (0x20 - rot) & 0x1f); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or", + "d,v,t", dreg, dreg, AT); + } + break; + case M_ROL_I: - if (imm_expr.X_op != O_constant) - as_bad (_("rotate count too large")); - macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "sll", "d,w,<", - AT, sreg, (int) (imm_expr.X_add_number & 0x1f)); - macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "srl", "d,w,<", - dreg, sreg, (int) ((0 - imm_expr.X_add_number) & 0x1f)); - macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or", "d,v,t", - dreg, dreg, AT); + { + unsigned int rot; + + if (imm_expr.X_op != O_constant) + as_bad (_("rotate count too large")); + rot = imm_expr.X_add_number & 0x1f; + if (! rot) + break; + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "sll", + "d,w,<", AT, sreg, rot); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "srl", + "d,w,<", dreg, sreg, (0x20 - rot) & 0x1f); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or", + "d,v,t", dreg, dreg, AT); + } + break; + + case M_DROR: + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsubu", + "d,v,t", AT, 0, treg); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsllv", + "d,t,s", AT, sreg, AT); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsrlv", + "d,t,s", dreg, sreg, treg); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or", + "d,v,t", dreg, dreg, AT); break; case M_ROR: @@ -6714,15 +6770,44 @@ macro2 (ip) "d,v,t", dreg, dreg, AT); break; + case M_DROR_I: + { + unsigned int rot; + char *l, *r; + + if (imm_expr.X_op != O_constant) + as_bad (_("rotate count too large")); + rot = imm_expr.X_add_number & 0x3f; + if (! rot) + break; + r = (rot < 0x20) ? "dsrl" : "dsrl32"; + l = ((0x40 - rot) < 0x20) ? "dsll" : "dsll32"; + rot &= 0x1f; + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, r, + "d,w,<", AT, sreg, rot); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, l, + "d,w,<", dreg, sreg, (0x20 - rot) & 0x1f); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or", + "d,v,t", dreg, dreg, AT); + } + break; + case M_ROR_I: - if (imm_expr.X_op != O_constant) - as_bad (_("rotate count too large")); - macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "srl", "d,w,<", - AT, sreg, (int) (imm_expr.X_add_number & 0x1f)); - macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "sll", "d,w,<", - dreg, sreg, (int) ((0 - imm_expr.X_add_number) & 0x1f)); - macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or", "d,v,t", - dreg, dreg, AT); + { + unsigned int rot; + + if (imm_expr.X_op != O_constant) + as_bad (_("rotate count too large")); + rot = imm_expr.X_add_number & 0x1f; + if (! rot) + break; + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "srl", + "d,w,<", AT, sreg, rot); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "sll", + "d,w,<", dreg, sreg, (0x20 - rot) & 0x1f); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or", + "d,v,t", dreg, dreg, AT); + } break; case M_S_DOB: @@ -7374,8 +7459,8 @@ mips16_macro (ip) xreg, yreg); expr1.X_add_number = 2; macro_build ((char *) NULL, &icnt, &expr1, "bnez", "x,p", yreg); - macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "break", - "6", 7); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "break", + "6", 7); --mips_opts.noreorder; macro_build ((char *) NULL, &icnt, (expressionS *) NULL, s2, "x", zreg); break; @@ -7530,7 +7615,7 @@ mips16_macro (ip) case M_ABS: expr1.X_add_number = 0; - macro_build ((char *) NULL, &icnt, &expr1, "slti", "x,8", yreg); + macro_build ((char *) NULL, &icnt, &expr1, "slti", "x,8", yreg); if (xreg != yreg) move_register (&icnt, xreg, yreg); expr1.X_add_number = 2; @@ -7702,7 +7787,7 @@ mips_ip (str, ip) if (OPCODE_IS_MEMBER (insn, (mips_opts.isa - | (mips_opts.ase_mips3d ? INSN_MIPS3D : 0)), + | (mips_opts.ase_mips3d ? INSN_MIPS3D : 0)), mips_arch)) ok = true; else @@ -7883,14 +7968,14 @@ mips_ip (str, ip) s = expr_end; continue; - case 'C': /* Coprocessor code */ + case 'C': /* Coprocessor code */ my_getExpression (&imm_expr, s); check_absolute_expr (ip, &imm_expr); - if ((unsigned long) imm_expr.X_add_number >= (1<<25)) + if ((unsigned long) imm_expr.X_add_number >= (1 << 25)) { as_warn (_("Coproccesor code > 25 bits (%ld)"), (long) imm_expr.X_add_number); - imm_expr.X_add_number &= ((1<<25) - 1); + imm_expr.X_add_number &= ((1 << 25) - 1); } ip->insn_opcode |= imm_expr.X_add_number; imm_expr.X_op = O_absent; @@ -8405,9 +8490,9 @@ mips_ip (str, ip) (imm_expr.X_add_number >> 16) & 0xffff; #ifdef OBJ_ELF else if (c == S_EX_HIGHEST) - *imm_reloc = BFD_RELOC_MIPS_HIGHEST; + *imm_reloc = BFD_RELOC_MIPS_HIGHEST; else if (c == S_EX_HIGHER) - *imm_reloc = BFD_RELOC_MIPS_HIGHER; + *imm_reloc = BFD_RELOC_MIPS_HIGHER; else if (c == S_EX_GP_REL) { /* This occurs in NewABI only. */ @@ -8543,7 +8628,7 @@ mips_ip (str, ip) } #ifdef OBJ_ELF else if (c == S_EX_HIGHEST) - *imm_reloc = BFD_RELOC_MIPS_HIGHEST; + *imm_reloc = BFD_RELOC_MIPS_HIGHEST; else if (c == S_EX_GP_REL) { /* This occurs in NewABI only. */ @@ -9416,18 +9501,18 @@ my_getSmallParser (str, len, nestlevel) && (e = b + strcspn (b, ") \t")) && e - b > 1 && e - b < 4) { - if ((e - b == 3 - && ((b[1] == 'f' && b[2] == 'p') - || (b[1] == 's' && b[2] == 'p') - || (b[1] == 'g' && b[2] == 'p') - || (b[1] == 'a' && b[2] == 't') - || (ISDIGIT (b[1]) - && ISDIGIT (b[2])))) - || (ISDIGIT (b[1]))) - { - *len = strcspn (*str, ")") + 1; - return S_EX_REGISTER; - } + if ((e - b == 3 + && ((b[1] == 'f' && b[2] == 'p') + || (b[1] == 's' && b[2] == 'p') + || (b[1] == 'g' && b[2] == 'p') + || (b[1] == 'a' && b[2] == 't') + || (ISDIGIT (b[1]) + && ISDIGIT (b[2])))) + || (ISDIGIT (b[1]))) + { + *len = strcspn (*str, ")") + 1; + return S_EX_REGISTER; + } } } /* Check for percent_op (in parentheses). */ @@ -9478,7 +9563,7 @@ my_getPercentOp (str, len, nestlevel) while (i < (sizeof (percent_op) / sizeof (struct percent_op_match))) { if (strncmp (*str, percent_op[i].str, strlen (percent_op[i].str))) - i++; + i++; else { int type = percent_op[i].type; @@ -9572,7 +9657,7 @@ my_getSmallExpression (ep, str) } else { - as_fatal(_("internal error")); + as_fatal (_("internal error")); } if (nestlevel <= 0) @@ -9907,27 +9992,27 @@ md_parse_option (c, arg) } } else - cpu = ci->cpu; + cpu = ci->cpu; } switch (c) { case OPTION_MTUNE: if (mips_tune != CPU_UNKNOWN && mips_tune != cpu) - as_warn(_("A different -mtune= was already specified, is now " - "-mtune=%s"), arg); + as_warn (_("A different -mtune= was already specified, is now " + "-mtune=%s"), arg); mips_tune = cpu; break; case OPTION_MARCH: if (mips_arch != CPU_UNKNOWN && mips_arch != cpu) - as_warn(_("A different -march= was already specified, is now " - "-march=%s"), arg); + as_warn (_("A different -march= was already specified, is now " + "-march=%s"), arg); mips_arch = cpu; break; case OPTION_MCPU: if (mips_cpu != CPU_UNKNOWN && mips_cpu != cpu) - as_warn(_("A different -mcpu= was already specified, is now " - "-mcpu=%s"), arg); + as_warn (_("A different -mcpu= was already specified, is now " + "-mcpu=%s"), arg); mips_cpu = cpu; } } @@ -9936,8 +10021,8 @@ md_parse_option (c, arg) case OPTION_M4650: if ((mips_arch != CPU_UNKNOWN && mips_arch != CPU_R4650) || (mips_tune != CPU_UNKNOWN && mips_tune != CPU_R4650)) - as_warn(_("A different -march= or -mtune= was already specified, " - "is now -m4650")); + as_warn (_("A different -march= or -mtune= was already specified, " + "is now -m4650")); mips_arch = CPU_R4650; mips_tune = CPU_R4650; break; @@ -9948,8 +10033,8 @@ md_parse_option (c, arg) case OPTION_M4010: if ((mips_arch != CPU_UNKNOWN && mips_arch != CPU_R4010) || (mips_tune != CPU_UNKNOWN && mips_tune != CPU_R4010)) - as_warn(_("A different -march= or -mtune= was already specified, " - "is now -m4010")); + as_warn (_("A different -march= or -mtune= was already specified, " + "is now -m4010")); mips_arch = CPU_R4010; mips_tune = CPU_R4010; break; @@ -9960,8 +10045,8 @@ md_parse_option (c, arg) case OPTION_M4100: if ((mips_arch != CPU_UNKNOWN && mips_arch != CPU_VR4100) || (mips_tune != CPU_UNKNOWN && mips_tune != CPU_VR4100)) - as_warn(_("A different -march= or -mtune= was already specified, " - "is now -m4100")); + as_warn (_("A different -march= or -mtune= was already specified, " + "is now -m4100")); mips_arch = CPU_VR4100; mips_tune = CPU_VR4100; break; @@ -9972,8 +10057,8 @@ md_parse_option (c, arg) case OPTION_M3900: if ((mips_arch != CPU_UNKNOWN && mips_arch != CPU_R3900) || (mips_tune != CPU_UNKNOWN && mips_tune != CPU_R3900)) - as_warn(_("A different -march= or -mtune= was already specified, " - "is now -m3900")); + as_warn (_("A different -march= or -mtune= was already specified, " + "is now -m3900")); mips_arch = CPU_R3900; mips_tune = CPU_R3900; break; @@ -10489,7 +10574,7 @@ mips_need_elf_addend_fixup (fixP) void md_apply_fix3 (fixP, valP, seg) fixS *fixP; - valueT * valP; + valueT *valP; segT seg ATTRIBUTE_UNUSED; { bfd_byte *buf; @@ -10516,7 +10601,7 @@ md_apply_fix3 (fixP, valP, seg) || fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY); - value = * valP; + value = *valP; /* If we aren't adjusting this fixup to be against the section symbol, we need to adjust the value. */ @@ -11332,45 +11417,45 @@ s_mipsset (x) say, misuse can cause serious problems. */ isa = atoi (name + 4); switch (isa) - { - case 0: - mips_opts.gp32 = file_mips_gp32; - mips_opts.fp32 = file_mips_fp32; - mips_opts.abi = file_mips_abi; - break; - case 1: - case 2: - case 32: - mips_opts.gp32 = 1; - mips_opts.fp32 = 1; - break; - case 3: - case 4: - case 5: - case 64: - /* Loosen ABI register width restriction. */ - if (mips_opts.abi == O32_ABI) - mips_opts.abi = NO_ABI; - mips_opts.gp32 = 0; - mips_opts.fp32 = 0; - break; - default: - as_bad (_("unknown ISA level %s"), name + 4); - break; - } + { + case 0: + mips_opts.gp32 = file_mips_gp32; + mips_opts.fp32 = file_mips_fp32; + mips_opts.abi = file_mips_abi; + break; + case 1: + case 2: + case 32: + mips_opts.gp32 = 1; + mips_opts.fp32 = 1; + break; + case 3: + case 4: + case 5: + case 64: + /* Loosen ABI register width restriction. */ + if (mips_opts.abi == O32_ABI) + mips_opts.abi = NO_ABI; + mips_opts.gp32 = 0; + mips_opts.fp32 = 0; + break; + default: + as_bad (_("unknown ISA level %s"), name + 4); + break; + } switch (isa) - { - case 0: mips_opts.isa = file_mips_isa; break; - case 1: mips_opts.isa = ISA_MIPS1; break; - case 2: mips_opts.isa = ISA_MIPS2; break; - case 3: mips_opts.isa = ISA_MIPS3; break; - case 4: mips_opts.isa = ISA_MIPS4; break; - case 5: mips_opts.isa = ISA_MIPS5; break; - case 32: mips_opts.isa = ISA_MIPS32; break; - case 64: mips_opts.isa = ISA_MIPS64; break; - default: as_bad (_("unknown ISA level %s"), name + 4); break; - } + { + case 0: mips_opts.isa = file_mips_isa; break; + case 1: mips_opts.isa = ISA_MIPS1; break; + case 2: mips_opts.isa = ISA_MIPS2; break; + case 3: mips_opts.isa = ISA_MIPS3; break; + case 4: mips_opts.isa = ISA_MIPS4; break; + case 5: mips_opts.isa = ISA_MIPS5; break; + case 32: mips_opts.isa = ISA_MIPS32; break; + case 64: mips_opts.isa = ISA_MIPS64; break; + default: as_bad (_("unknown ISA level %s"), name + 4); break; + } } else if (strcmp (name, "autoextend") == 0) mips_opts.noautoextend = 0; @@ -11511,7 +11596,7 @@ s_cpsetup (ignore) int icnt = 0; char *sym; - /* If we are not generating SVR4 PIC code, .cpload is ignored. + /* If we are not generating SVR4 PIC code, .cpsetup is ignored. We also need NewABI support. */ if (mips_pic != SVR4_PIC || ! HAVE_NEWABI) { @@ -11568,18 +11653,15 @@ s_cpsetup (ignore) macro_build ((char *) NULL, &icnt, &ex_sym, "lui", "t,u", mips_gp_register, (int) BFD_RELOC_GPREL16); - fix_new (frag_now, (char *) prev_insn_fixp - 4 - frag_now->fr_literal, 0, - NULL, 0, 0, BFD_RELOC_MIPS_SUB); - fix_new (frag_now, (char *) prev_insn_fixp - 4 - frag_now->fr_literal, 0, - NULL, 0, 0, BFD_RELOC_HI16_S); + fix_new (frag_now, prev_insn_where, 0, NULL, 0, 0, BFD_RELOC_MIPS_SUB); + fix_new (frag_now, prev_insn_where, 0, NULL, 0, 0, BFD_RELOC_HI16_S); macro_build ((char *) NULL, &icnt, &ex_sym, "addiu", "t,r,j", mips_gp_register, mips_gp_register, (int) BFD_RELOC_GPREL16); - fix_new (frag_now, (char *) prev_insn_fixp - 4 - frag_now->fr_literal, 0, - NULL, 0, 0, BFD_RELOC_MIPS_SUB); - fix_new (frag_now, (char *) prev_insn_fixp - 4 - frag_now->fr_literal, 0, - NULL, 0, 0, BFD_RELOC_LO16); - macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "daddu", - "d,v,t", mips_gp_register, mips_gp_register, reg1); + fix_new (frag_now, prev_insn_where, 0, NULL, 0, 0, BFD_RELOC_MIPS_SUB); + fix_new (frag_now, prev_insn_where, 0, NULL, 0, 0, BFD_RELOC_LO16); + macro_build ((char *) NULL, &icnt, (expressionS *) NULL, + HAVE_64BIT_ADDRESSES ? "daddu" : "addu", "d,v,t", + mips_gp_register, mips_gp_register, reg1); demand_empty_rest_of_line (); } @@ -11834,7 +11916,7 @@ s_mips_weakext (ignore) if (exp.X_op != O_symbol) { as_bad ("bad .weakext directive"); - ignore_rest_of_line(); + ignore_rest_of_line (); return; } symbol_set_value_expression (symbolP, &exp); @@ -12764,7 +12846,7 @@ void mips_elf_final_processing () { /* Write out the register information. */ - if (! HAVE_NEWABI) + if (file_mips_abi != N64_ABI) { Elf32_RegInfo s; @@ -12803,7 +12885,7 @@ mips_elf_final_processing () if (mips_pic != NO_PIC) elf_elfheader (stdoutput)->e_flags |= EF_MIPS_PIC; - /* Set MIPS ELF flags for ASEs. */ + /* Set MIPS ELF flags for ASEs. */ #if 0 /* XXX FIXME */ if (file_ase_mips3d) elf_elfheader (stdoutput)->e_flags |= ???; diff -uprN binutils-2.12.90.0.7/gas/config/tc-mmix.c binutils-2.12.90.0.9/gas/config/tc-mmix.c --- binutils-2.12.90.0.7/gas/config/tc-mmix.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/gas/config/tc-mmix.c Thu May 23 15:10:10 2002 @@ -262,28 +262,28 @@ struct obstack mmix_sym_obstack; #define GETA_0F (65536 * 4 - 8) #define GETA_0B (-65536 * 4 - 4) -#define GETA_MAX_LEN 4*4 +#define GETA_MAX_LEN 4 * 4 #define GETA_3F 0 #define GETA_3B 0 #define BCC_0F GETA_0F #define BCC_0B GETA_0B -#define BCC_MAX_LEN 6*4 +#define BCC_MAX_LEN 6 * 4 #define BCC_5F GETA_3F #define BCC_5B GETA_3B #define PUSHJ_0F GETA_0F #define PUSHJ_0B GETA_0B -#define PUSHJ_MAX_LEN 5*4 +#define PUSHJ_MAX_LEN 5 * 4 #define PUSHJ_4F GETA_3F #define PUSHJ_4B GETA_3B #define JMP_0F (65536 * 256 * 4 - 8) #define JMP_0B (-65536 * 256 * 4 - 4) -#define JMP_MAX_LEN 5*4 +#define JMP_MAX_LEN 5 * 4 #define JMP_4F 0 #define JMP_4B 0 @@ -413,7 +413,7 @@ mmix_fill_nops (opcodep, n) int i; for (i = 0; i < n; i++) - md_number_to_chars (opcodep + i*4, SWYM_INSN_BYTE << 24, 4); + md_number_to_chars (opcodep + i * 4, SWYM_INSN_BYTE << 24, 4); } /* See macro md_parse_name in tc-mmix.h. */ @@ -461,7 +461,7 @@ get_operands (max_operands, s, exp) return 0; } - /* Begin operand parsing at the current scan point. */ + /* Begin operand parsing at the current scan point. */ input_line_pointer = p; expression (&exp[numexp]); @@ -491,7 +491,7 @@ get_operands (max_operands, s, exp) input_line_pointer--; } - /* Mark the end of the valid operands with an illegal expression. */ + /* Mark the end of the valid operands with an illegal expression. */ exp[numexp].X_op = O_illegal; return (numexp); @@ -712,7 +712,7 @@ static void mmix_discard_rest_of_line () { while (*input_line_pointer - && (! is_end_of_line [(unsigned char) *input_line_pointer] + && (! is_end_of_line[(unsigned char) *input_line_pointer] || TC_EOL_IN_INSN (input_line_pointer))) input_line_pointer++; } @@ -746,7 +746,7 @@ mmix_md_begin () /* This will break the day the "lex" thingy changes. For now, it's the only way to make ':' part of a name, and a name beginner. */ - lex_type [':'] = (LEX_NAME | LEX_BEGIN_NAME); + lex_type[':'] = (LEX_NAME | LEX_BEGIN_NAME); mmix_opcode_hash = hash_new (); @@ -1081,7 +1081,7 @@ md_assemble (str) } if (expand_op) - frag_var (rs_machine_dependent, 4*4, 0, + frag_var (rs_machine_dependent, 4 * 4, 0, ENCODE_RELAX (STATE_JMP, STATE_UNDF), exp[0].X_add_symbol, exp[0].X_add_number, @@ -1281,7 +1281,7 @@ md_assemble (str) /* SYNCD: "X,$Y,$Z|Z". */ /* FALLTHROUGH. */ case mmix_operands_regs: - /* Three registers, $X,$Y,$Z. */ + /* Three registers, $X,$Y,$Z. */ /* FALLTHROUGH. */ case mmix_operands_regs_z: /* Operands "$X,$Y,$Z|Z", number of arguments checked above. */ @@ -1486,27 +1486,27 @@ md_assemble (str) case mmix_operands_sync: a_single_24_bit_number_operand: - if (n_operands != 1 - || exp[0].X_op == O_register - || (exp[0].X_op == O_constant - && (exp[0].X_add_number > 0xffffff || exp[0].X_add_number < 0))) - { - as_bad (_("invalid operands to opcode %s: `%s'"), - instruction->name, operands); - return; - } + if (n_operands != 1 + || exp[0].X_op == O_register + || (exp[0].X_op == O_constant + && (exp[0].X_add_number > 0xffffff || exp[0].X_add_number < 0))) + { + as_bad (_("invalid operands to opcode %s: `%s'"), + instruction->name, operands); + return; + } - if (exp[0].X_op == O_constant) - { - opcodep[1] = (exp[0].X_add_number >> 16) & 255; - opcodep[2] = (exp[0].X_add_number >> 8) & 255; - opcodep[3] = exp[0].X_add_number & 255; - } - else - /* FIXME: This doesn't bring us unsignedness checking. */ - fix_new_exp (opc_fragP, opcodep - opc_fragP->fr_literal + 1, - 3, exp + 0, 0, BFD_RELOC_24); - break; + if (exp[0].X_op == O_constant) + { + opcodep[1] = (exp[0].X_add_number >> 16) & 255; + opcodep[2] = (exp[0].X_add_number >> 8) & 255; + opcodep[3] = exp[0].X_add_number & 255; + } + else + /* FIXME: This doesn't bring us unsignedness checking. */ + fix_new_exp (opc_fragP, opcodep - opc_fragP->fr_literal + 1, + 3, exp + 0, 0, BFD_RELOC_24); + break; case mmix_operands_neg: /* Operands "$X,Y,$Z|Z"; NEG or NEGU. Y is optional, 0 is default. */ @@ -1560,7 +1560,7 @@ md_assemble (str) break; case mmix_operands_regaddr: - /* A GETA/branch-type. */ + /* A GETA/branch-type. */ break; case mmix_operands_get: @@ -1638,7 +1638,7 @@ md_assemble (str) break; } - /* "0,$Z"; UNSAVE. */ + /* "0,$Z"; UNSAVE. */ if (n_operands != 2 || exp[0].X_op != O_constant || exp[0].X_add_number != 0 @@ -1878,7 +1878,7 @@ md_assemble (str) int mmix_assemble_return_nonzero (str) - char *str; + char *str; { int last_error_count = had_errors (); char *s2 = str; @@ -2025,7 +2025,7 @@ s_greg (unused) register. */ c = get_symbol_end (); - if (! is_end_of_line [(unsigned char) c]) + if (! is_end_of_line[(unsigned char) c]) input_line_pointer++; if (*p) @@ -2259,7 +2259,7 @@ md_atof (type, litP, sizeP) for (i = 0; i < prec; i++) { md_number_to_chars (litP, (valueT) words[i], 2); - litP += 2; + litP += 2; } return NULL; } @@ -2272,7 +2272,7 @@ md_convert_frag (abfd, sec, fragP) segT sec ATTRIBUTE_UNUSED; fragS *fragP; { - /* Pointer to first byte in variable-sized part of the frag. */ + /* Pointer to first byte in variable-sized part of the frag. */ char *var_partp; /* Pointer to first opcode byte in frag. */ @@ -2310,48 +2310,48 @@ md_convert_frag (abfd, sec, fragP) opcode_address = fragP->fr_address + fragP->fr_fix - 4; switch (fragP->fr_subtype) - { - case ENCODE_RELAX (STATE_GETA, STATE_ZERO): - case ENCODE_RELAX (STATE_BCC, STATE_ZERO): - case ENCODE_RELAX (STATE_PUSHJ, STATE_ZERO): - mmix_set_geta_branch_offset (opcodep, target_address - opcode_address); - if (linkrelax) - { - tmpfixP - = fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset, 1, - BFD_RELOC_MMIX_ADDR19); - COPY_FR_WHERE_TO_FX (fragP, tmpfixP); - } - var_part_size = 0; - break; - - case ENCODE_RELAX (STATE_JMP, STATE_ZERO): - mmix_set_jmp_offset (opcodep, target_address - opcode_address); - if (linkrelax) - { - tmpfixP - = fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset, 1, - BFD_RELOC_MMIX_ADDR27); - COPY_FR_WHERE_TO_FX (fragP, tmpfixP); - } - var_part_size = 0; - break; + { + case ENCODE_RELAX (STATE_GETA, STATE_ZERO): + case ENCODE_RELAX (STATE_BCC, STATE_ZERO): + case ENCODE_RELAX (STATE_PUSHJ, STATE_ZERO): + mmix_set_geta_branch_offset (opcodep, target_address - opcode_address); + if (linkrelax) + { + tmpfixP + = fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, + fragP->fr_symbol, fragP->fr_offset, 1, + BFD_RELOC_MMIX_ADDR19); + COPY_FR_WHERE_TO_FX (fragP, tmpfixP); + } + var_part_size = 0; + break; - case STATE_GREG_DEF: - if (fragP->tc_frag_data == NULL) - { - tmpfixP - = fix_new (fragP, var_partp - fragP->fr_literal, 8, - fragP->fr_symbol, fragP->fr_offset, 0, BFD_RELOC_64); - COPY_FR_WHERE_TO_FX (fragP, tmpfixP); - mmix_gregs[n_of_cooked_gregs++] = tmpfixP; - var_part_size = 8; - } - else + case ENCODE_RELAX (STATE_JMP, STATE_ZERO): + mmix_set_jmp_offset (opcodep, target_address - opcode_address); + if (linkrelax) + { + tmpfixP + = fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, + fragP->fr_symbol, fragP->fr_offset, 1, + BFD_RELOC_MMIX_ADDR27); + COPY_FR_WHERE_TO_FX (fragP, tmpfixP); + } var_part_size = 0; - break; + break; + + case STATE_GREG_DEF: + if (fragP->tc_frag_data == NULL) + { + tmpfixP + = fix_new (fragP, var_partp - fragP->fr_literal, 8, + fragP->fr_symbol, fragP->fr_offset, 0, BFD_RELOC_64); + COPY_FR_WHERE_TO_FX (fragP, tmpfixP); + mmix_gregs[n_of_cooked_gregs++] = tmpfixP; + var_part_size = 8; + } + else + var_part_size = 0; + break; #define HANDLE_MAX_RELOC(state, reloc) \ case ENCODE_RELAX (state, STATE_MAX): \ @@ -2366,15 +2366,15 @@ md_convert_frag (abfd, sec, fragP) COPY_FR_WHERE_TO_FX (fragP, tmpfixP); \ break - HANDLE_MAX_RELOC (STATE_GETA, BFD_RELOC_MMIX_GETA); - HANDLE_MAX_RELOC (STATE_BCC, BFD_RELOC_MMIX_CBRANCH); - HANDLE_MAX_RELOC (STATE_PUSHJ, BFD_RELOC_MMIX_PUSHJ); - HANDLE_MAX_RELOC (STATE_JMP, BFD_RELOC_MMIX_JMP); - - default: - BAD_CASE (fragP->fr_subtype); - break; - } + HANDLE_MAX_RELOC (STATE_GETA, BFD_RELOC_MMIX_GETA); + HANDLE_MAX_RELOC (STATE_BCC, BFD_RELOC_MMIX_CBRANCH); + HANDLE_MAX_RELOC (STATE_PUSHJ, BFD_RELOC_MMIX_PUSHJ); + HANDLE_MAX_RELOC (STATE_JMP, BFD_RELOC_MMIX_JMP); + + default: + BAD_CASE (fragP->fr_subtype); + break; + } fragP->fr_fix += var_part_size; fragP->fr_var = 0; @@ -2727,7 +2727,7 @@ tc_gen_reloc (section, fixP) struct mmix_symbol_gregs *gregs; struct mmix_symbol_greg_fixes *fix; - if (S_IS_DEFINED (addsy) + if (S_IS_DEFINED (addsy) && !bfd_is_com_section (addsec) && !S_IS_WEAK (addsy)) { @@ -2830,7 +2830,7 @@ tc_gen_reloc (section, fixP) buf[0] = val; return NULL; } - /* FALLTHROUGH. */ + /* FALLTHROUGH. */ /* The others are supposed to be handled by md_apply_fix3. FIXME: ... which isn't called when -linkrelax. Move over @@ -2904,7 +2904,7 @@ mmix_handle_mmixal () /* Don't handle empty lines here. */ while (1) { - if (*s0 == 0 || is_end_of_line [(unsigned int) *s0]) + if (*s0 == 0 || is_end_of_line[(unsigned int) *s0]) return; if (! ISSPACE (*s0)) @@ -2935,7 +2935,7 @@ mmix_handle_mmixal () /* For errors emitted here, the book-keeping is off by one; the caller is about to bump the counters. Adjust the error messages. */ - if (is_end_of_line [(unsigned int) *s]) + if (is_end_of_line[(unsigned int) *s]) { char *name; unsigned int line; @@ -2962,7 +2962,7 @@ mmix_handle_mmixal () } s0 = input_line_pointer; - /* Skip over label. */ + /* Skip over label. */ while (*s0 && is_part_of_name (*s0)) s0++; @@ -2988,10 +2988,10 @@ mmix_handle_mmixal () pending_label[len_0 - 1] = 0; } - while (*s0 && ISSPACE (*s0) && ! is_end_of_line [(unsigned int) *s0]) + while (*s0 && ISSPACE (*s0) && ! is_end_of_line[(unsigned int) *s0]) s0++; - if (pending_label != NULL && is_end_of_line [(unsigned int) *s0]) + if (pending_label != NULL && is_end_of_line[(unsigned int) *s0]) /* Whoops, this was actually a lone label on a line. Like :-ended labels, we don't attach such labels to the next instruction or pseudo. */ @@ -3011,7 +3011,7 @@ mmix_handle_mmixal () while (*s) { c = *s++; - if (is_end_of_line [(unsigned int) c]) + if (is_end_of_line[(unsigned int) c]) break; if (c == MAGIC_FB_BACKWARD_CHAR || c == MAGIC_FB_FORWARD_CHAR) as_bad (_("invalid characters in input")); @@ -3048,7 +3048,7 @@ mmix_handle_mmixal () /* FIXME: Test-case for semi-colon in string. */ while (*s && *s != '"' - && (! is_end_of_line [(unsigned int) *s] || *s == ';')) + && (! is_end_of_line[(unsigned int) *s] || *s == ';')) s++; if (*s == '"') @@ -3241,7 +3241,7 @@ mmix_fb_label (expP) int mmix_force_relocation (fixP) - fixS * fixP; + fixS *fixP; { if (fixP->fx_r_type == BFD_RELOC_MMIX_LOCAL || fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT @@ -3414,8 +3414,8 @@ mmix_md_end () { symbolS *symbolP; char locsymbol[sizeof (":") - 1 - + sizeof (MMIX_LOC_SECTION_START_SYMBOL_PREFIX) - 1 - + sizeof (".data")]; + + sizeof (MMIX_LOC_SECTION_START_SYMBOL_PREFIX) - 1 + + sizeof (".data")]; sprintf (locsymbol, ":%s%s", MMIX_LOC_SECTION_START_SYMBOL_PREFIX, ".data"); @@ -3758,7 +3758,7 @@ mmix_parse_predefined_name (name, expP) return 0; for (i = 0; - i < sizeof (predefined_abs_syms)/sizeof (predefined_abs_syms[0]); + i < sizeof (predefined_abs_syms) / sizeof (predefined_abs_syms[0]); i++) if (strcmp (canon_name, predefined_abs_syms[i].name) == 0) { @@ -3855,7 +3855,7 @@ s_loc (ignore) symbolS *sym; offsetT off; - /* Must not have a BSPEC in progress. */ + /* Must not have a BSPEC in progress. */ if (doing_bspec) { as_bad (_("directive LOC from within a BSPEC/ESPEC pair is not supported")); @@ -4129,7 +4129,7 @@ mmix_cons (nbytes) SKIP_WHITESPACE (); - if (is_end_of_line [(unsigned int) *input_line_pointer]) + if (is_end_of_line[(unsigned int) *input_line_pointer]) { /* Default to zero if the expression was absent. */ diff -uprN binutils-2.12.90.0.7/gas/config/tc-mmix.h binutils-2.12.90.0.9/gas/config/tc-mmix.h --- binutils-2.12.90.0.7/gas/config/tc-mmix.h Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/gas/config/tc-mmix.h Thu May 23 15:10:10 2002 @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with GAS; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + 02111-1307, USA. */ #define TC_MMIX @@ -92,24 +92,25 @@ extern void mmix_fb_label PARAMS ((expre /* Since integer_constant is local to expr.c, we have to make this a macro. FIXME: Do it cleaner. */ #define md_operand(exp) \ - do { \ - if (input_line_pointer[0] == '#') \ + do \ { \ - input_line_pointer++; \ - integer_constant (16, (exp)); \ + if (input_line_pointer[0] == '#') \ + { \ + input_line_pointer++; \ + integer_constant (16, (exp)); \ + } \ + else if (input_line_pointer[0] == '&' \ + && input_line_pointer[1] != '&') \ + as_bad (_("`&' serial number operator is not supported")); \ + else \ + mmix_fb_label (exp); \ } \ - else if (input_line_pointer[0] == '&' \ - && input_line_pointer[1] != '&') \ - as_bad (_("`&' serial number operator is not supported")); \ - else \ - mmix_fb_label (exp); \ - } while (0) - + while (0) /* Gas dislikes the 2ADD, 8ADD etc. insns, so we have to assemble them in the error-recovery loop. Hopefully there are no significant differences. Also, space on a line isn't gracefully handled. */ -extern int mmix_assemble_return_nonzero PARAMS ((char *)); +extern int mmix_assemble_return_nonzero PARAMS ((char *)); #define tc_unrecognized_line(c) \ ((c) == ' ' \ || (((c) == '1' || (c) == '2' || (c) == '4' || (c) == '8') \ @@ -146,22 +147,24 @@ extern void mmix_adjust_symtab PARAMS (( We must avoid doing that for expression symbols or section symbols, though. */ extern int mmix_globalize_symbols; -#define tc_frob_symbol(sym, punt) \ - do { \ - if (S_GET_SEGMENT (sym) == reg_section \ - || (symp) == section_symbol (absolute_section)) \ - (punt) = 1; \ - \ - if (mmix_globalize_symbols \ - && ! symbol_section_p (sym) \ - && symp != section_symbol (absolute_section) \ - && (! S_IS_LOCAL (sym) \ - || S_GET_SEGMENT (sym) == reg_section) \ - && (S_GET_SEGMENT (sym) != reg_section \ - || (S_GET_NAME (sym)[0] != '$' \ - && S_GET_VALUE (sym) < 256))) \ - S_SET_EXTERNAL (sym); \ - } while (0) +#define tc_frob_symbol(sym, punt) \ + do \ + { \ + if (S_GET_SEGMENT (sym) == reg_section \ + || (symp) == section_symbol (absolute_section)) \ + (punt) = 1; \ + \ + if (mmix_globalize_symbols \ + && ! symbol_section_p (sym) \ + && symp != section_symbol (absolute_section) \ + && (! S_IS_LOCAL (sym) \ + || S_GET_SEGMENT (sym) == reg_section) \ + && (S_GET_SEGMENT (sym) != reg_section \ + || (S_GET_NAME (sym)[0] != '$' \ + && S_GET_VALUE (sym) < 256))) \ + S_SET_EXTERNAL (sym); \ + } \ + while (0) /* When relaxing, we need to emit various relocs we otherwise wouldn't. */ #define TC_FORCE_RELOCATION(fix) mmix_force_relocation (fix) diff -uprN binutils-2.12.90.0.7/gas/config/tc-mn10300.c binutils-2.12.90.0.9/gas/config/tc-mn10300.c --- binutils-2.12.90.0.7/gas/config/tc-mn10300.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/tc-mn10300.c Thu May 23 15:10:10 2002 @@ -1806,7 +1806,7 @@ tc_gen_reloc (seg, fixp) reloc->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_8_PCREL); return reloc; - + case BFD_RELOC_16: reloc->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_16_PCREL); @@ -1846,7 +1846,7 @@ tc_gen_reloc (seg, fixp) case BFD_RELOC_8: md_number_to_chars (fixpos, reloc->addend, 1); break; - + case BFD_RELOC_16: md_number_to_chars (fixpos, reloc->addend, 2); break; diff -uprN binutils-2.12.90.0.7/gas/config/tc-openrisc.c binutils-2.12.90.0.9/gas/config/tc-openrisc.c --- binutils-2.12.90.0.7/gas/config/tc-openrisc.c Mon Oct 1 15:25:22 2001 +++ binutils-2.12.90.0.9/gas/config/tc-openrisc.c Thu May 23 15:10:10 2002 @@ -1,5 +1,5 @@ /* tc-openrisc.c -- Assembler for the OpenRISC family. - Copyright (C) 2001 Free Software Foundation. + Copyright (C) 2001, 2002 Free Software Foundation. Contributed by Johan Rydberg, jrydberg@opencores.org This file is part of GAS, the GNU Assembler. @@ -370,12 +370,12 @@ md_cgen_lookup_reloc (insn, operand, fix switch (operand->type) { - case OPENRISC_OPERAND_ABS_26: - fixP->fx_pcrel = 0; + case OPENRISC_OPERAND_ABS_26: + fixP->fx_pcrel = 0; type = BFD_RELOC_OPENRISC_ABS_26; goto emit; - case OPENRISC_OPERAND_DISP_26: - fixP->fx_pcrel = 1; + case OPENRISC_OPERAND_DISP_26: + fixP->fx_pcrel = 1; type = BFD_RELOC_OPENRISC_REL_26; goto emit; @@ -493,7 +493,7 @@ openrisc_fix_adjustable (fixP) /* We need the symbol name for the VTABLE entries */ if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY) - return 0; + return 0; return 1; } diff -uprN binutils-2.12.90.0.7/gas/config/tc-or32.c binutils-2.12.90.0.9/gas/config/tc-or32.c --- binutils-2.12.90.0.7/gas/config/tc-or32.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/gas/config/tc-or32.c Thu May 23 15:10:10 2002 @@ -28,7 +28,7 @@ #include "opcode/or32.h" #ifdef BFD_ASSEMBLER -#include "elf/or32.h" +#include "elf/or32.h" #endif #define DEBUG 0 @@ -64,7 +64,7 @@ const pseudo_typeS md_pseudo_table[] = { {"align", s_align_bytes, 4 }, {"space", s_space, 0 }, - {"cputype", s_ignore, 0 }, + {"cputype", s_ignore, 0 }, {"reg", s_lsym, 0 }, /* Register equate, same as equ. */ {"sect", s_ignore, 0 }, /* Creation of coff sections. */ {"proc", s_ignore, 0 }, /* Start of a function. */ @@ -122,9 +122,9 @@ static char * parse_operand PARAMS ((cha #endif /* Set bits in machine opcode according to insn->encoding - description and passed operand. */ + description and passed operand. */ -static void +static void encode (insn, opcode, param_val, param_ch) const struct machine_opcode *insn; unsigned long *opcode; @@ -152,7 +152,7 @@ encode (insn, opcode, param_val, param_c for (enc = insn->encoding; *enc != '\0';) { - if ((*enc == '0') && (*(enc + 1) == 'x')) + if ((*enc == '0') && (*(enc + 1) == 'x')) { int tmp = strtol (enc, NULL, 16); @@ -160,25 +160,25 @@ encode (insn, opcode, param_val, param_c *opcode |= tmp << opc_pos; enc += 3; } - else if ((*enc == '0') || (*enc == '-')) + else if ((*enc == '0') || (*enc == '-')) { opc_pos--; enc++; } - else if (*enc == '1') + else if (*enc == '1') { opc_pos--; *opcode |= 1 << opc_pos; enc++; } - else if (*enc == param_ch) + else if (*enc == param_ch) { opc_pos--; param_pos--; *opcode |= ((param_val >> param_pos) & 0x1) << opc_pos; enc++; } - else if (ISALPHA (*enc)) + else if (ISALPHA (*enc)) { opc_pos--; enc++; @@ -186,7 +186,7 @@ encode (insn, opcode, param_val, param_c else enc++; } - + #if DEBUG printf (" opcode=%.8lx\n", *opcode); #endif @@ -318,14 +318,14 @@ parse_operand (s, operandp, opt) if ((*s == '(') && (*(s+1) == 'r')) s++; - if ((*s == 'r') && ISDIGIT (*(s + 1))) + if ((*s == 'r') && ISDIGIT (*(s + 1))) { operandp->X_add_number = strtol (s + 1, NULL, 10); operandp->X_op = O_register; for (; (*s != ',') && (*s != '\0');) - s++; + s++; input_line_pointer = save; - return s; + return s; } expression (operandp); @@ -340,10 +340,10 @@ parse_operand (s, operandp, opt) operandp->X_op = O_constant; } } - + new = input_line_pointer; input_line_pointer = save; - + #if DEBUG printf (" %s=parse_operand(%s): operandp->X_op = %u\n", new, s, operandp->X_op); #endif @@ -396,11 +396,11 @@ parse_operand (s, operandp, opt) operandp->X_op = O_constant; } } - + new = input_line_pointer; input_line_pointer = save; - - if ((operandp->X_op == O_symbol) && (*s != '_')) + + if ((operandp->X_op == O_symbol) && (*s != '_')) { #if DEBUG printf ("symbol: '%s'\n", save); @@ -410,7 +410,7 @@ parse_operand (s, operandp, opt) if ((*s == REGISTER_PREFIX) && (*(s + 1) == 'r')) /* Register prefix. */ s++; - if ((*s == 'r') && ISDIGIT (*(s + 1))) + if ((*s == 'r') && ISDIGIT (*(s + 1))) { operandp->X_add_number = strtol (s + 1, NULL, 10); operandp->X_op = O_register; @@ -483,7 +483,7 @@ machine_ip (str) /* Build the opcode, checking as we go to make sure that the operands match. - + If an operand matches, we modify the_insn or opcode appropriately, and do a "continue". If an operand fails to match, we "break". */ if (insn->args[0] != '\0') @@ -509,7 +509,7 @@ machine_ip (str) /* We are truly done. */ the_insn.opcode = opcode; if (check_invalid_opcode (opcode)) - as_bad (_("instruction not allowed: %s"), str); + as_bad (_("instruction not allowed: %s"), str); return; } as_bad (_("too many operands: %s"), s); @@ -525,7 +525,7 @@ machine_ip (str) #if DEBUG printf (" ',' case: operand->X_add_number = %d, *args = %s, *s = %s\n", operand->X_add_number, args, s); -#endif +#endif continue; } break; @@ -533,7 +533,7 @@ machine_ip (str) case '(': /* Must match a (. */ s = parse_operand (s, operand, args[1] == 'I'); continue; - + case ')': /* Must match a ). */ continue; @@ -542,7 +542,7 @@ machine_ip (str) if (operand->X_op != O_register) break; /* Only registers. */ - + know (operand->X_add_symbol == 0); know (operand->X_op_symbol == 0); regno = operand->X_add_number; @@ -555,7 +555,7 @@ machine_ip (str) default: /* if (! ISALPHA (*args)) break; */ /* Only immediate values. */ - + if (mask_or_shift) { #if DEBUG @@ -564,23 +564,23 @@ machine_ip (str) reloc = mask_or_shift; } mask_or_shift = 0; - - if (strncasecmp (args, "LO(", 3) == 0) + + if (strncasecmp (args, "LO(", 3) == 0) { #if DEBUG printf ("reloc_const\n"); #endif reloc = BFD_RELOC_LO16; } - else if (strncasecmp (args, "HI(", 3) == 0) + else if (strncasecmp (args, "HI(", 3) == 0) { #if DEBUG printf ("reloc_consth\n"); #endif reloc = BFD_RELOC_HI16; } - - if (*s == '(') + + if (*s == '(') { operand->X_op = O_constant; #if 0 @@ -611,7 +611,7 @@ machine_ip (str) the_insn.pcrel = 0; encode (insn, &opcode, operand->X_add_number, *args); /* the_insn.reloc = BFD_RELOC_NONE; */ - continue; + continue; } if (reloc == BFD_RELOC_NONE) @@ -625,7 +625,7 @@ machine_ip (str) printf (" BFD_RELOC_NONE=%d\n", BFD_RELOC_NONE); #endif the_insn.exp = *operand; - + /* the_insn.reloc_offset = 1; */ the_insn.pcrel = 1; /* Assume PC-relative jump. */ @@ -637,7 +637,7 @@ machine_ip (str) encode (insn, &opcode, operand->X_add_number, *args); continue; } - + /* Types or values of args don't match. */ as_bad (_("invalid operands")); return; @@ -698,11 +698,11 @@ machine_ip (str) /* Build the opcode, checking as we go to make sure that the operands match. - + If an operand matches, we modify the_insn or opcode appropriately, and do a "continue". If an operand fails to match, we "break". */ if (insn->args[0] != '\0') - /* Prime the pump. */ + /* Prime the pump. */ s = parse_operand (s, operand, insn->args[0] == 'I' || strcmp (insn->name, "l.nop") == 0); @@ -724,7 +724,7 @@ machine_ip (str) /* We are truly done. */ the_insn.opcode = opcode; if (check_invalid_opcode (opcode)) - as_bad (_("instruction not allowed: %s"), str); + as_bad (_("instruction not allowed: %s"), str); return; } as_bad (_("too many operands: %s"), s); @@ -740,7 +740,7 @@ machine_ip (str) #if DEBUG printf (" ',' case: operand->X_add_number = %d, *args = %s, *s = %s\n", operand->X_add_number, args, s); -#endif +#endif continue; } break; @@ -748,7 +748,7 @@ machine_ip (str) case '(': /* Must match a (. */ s = parse_operand (s, operand, args[1] == 'I'); continue; - + case ')': /* Must match a ). */ continue; @@ -757,7 +757,7 @@ machine_ip (str) if (operand->X_op != O_register) break; /* Only registers. */ - + know (operand->X_add_symbol == 0); know (operand->X_op_symbol == 0); regno = operand->X_add_number; @@ -770,7 +770,7 @@ machine_ip (str) default: /* if (! ISALPHA (*args)) break; */ /* Only immediate values. */ - + if (mask_or_shift) { #if DEBUG @@ -779,23 +779,23 @@ machine_ip (str) reloc = mask_or_shift; } mask_or_shift = 0; - - if (strncasecmp (args, "LO(", 3) == 0) + + if (strncasecmp (args, "LO(", 3) == 0) { #if DEBUG printf ("reloc_const\n"); #endif reloc = RELOC_CONST; } - else if (strncasecmp (args, "HI(", 3) == 0) + else if (strncasecmp (args, "HI(", 3) == 0) { #if DEBUG printf ("reloc_consth\n"); #endif reloc = RELOC_CONSTH; } - - if (*s == '(') + + if (*s == '(') { operand->X_op = O_constant; #if 0 @@ -827,7 +827,7 @@ machine_ip (str) the_insn.pcrel = 0; encode (insn, &opcode, operand->X_add_number, *args); /* the_insn.reloc = NO_RELOC; */ - continue; + continue; } if (reloc == NO_RELOC) @@ -839,7 +839,7 @@ machine_ip (str) printf (" NO_RELOC=%d\n", NO_RELOC); #endif the_insn.exp = *operand; - + /* the_insn.reloc_offset = 1; */ the_insn.pcrel = 1; /* Assume PC-relative jump. */ @@ -851,7 +851,7 @@ machine_ip (str) encode (insn, &opcode, operand->X_add_number, *args); continue; } - + /* Types or values of args don't match. */ as_bad (_("invalid operands")); return; @@ -1250,7 +1250,7 @@ md_convert_frag (headers, seg, fragP) fragS * fragP ATTRIBUTE_UNUSED; { as_fatal ("or32_convert_frag\n"); -} +} #endif /* Should never be called for or32. */ @@ -1296,7 +1296,7 @@ tc_aout_fix_to_chars (where, fixP, segme #if DEBUG printf ("tc_aout_fix_to_chars\n"); -#endif +#endif know (fixP->fx_r_type < BFD_RELOC_NONE); know (fixP->fx_addsy != NULL); @@ -1404,8 +1404,8 @@ tc_aout_pre_write_hook () #if DEBUG printf ("In tc_aout_pre_write_hook()\n"); #endif -} -*/ +} +*/ #endif /* Default the values of symbols known that should be "predefined". We @@ -1425,8 +1425,8 @@ md_undefined_symbol (name) #endif /* Register name. */ - if (name[0] == 'r' || name[0] == 'R' || name[0] == 'a' || name[0] == 'b') - { + if (name[0] == 'r' || name[0] == 'R' || name[0] == 'a' || name[0] == 'b') + { long maxreg; /* Parse the number, make sure it has no extra zeroes or @@ -1489,7 +1489,7 @@ md_operand (expressionP) long lab; char *name; symbolS *sym; - + /* This is a local label. */ ++input_line_pointer; lab = (long) get_absolute_expression (); @@ -1541,7 +1541,7 @@ md_operand (expressionP) type = 'x'; fieldlimit = 4; } - else + else return; if (ISDIGIT (*s)) @@ -1570,7 +1570,7 @@ md_operand (expressionP) SKIP_WHITESPACE (); input_line_pointer = s; - expressionP->X_op = O_constant; + expressionP->X_op = O_constant; expressionP->X_unsigned = 1; expressionP->X_add_number = ((floatbuf[fieldnum * 2] << LITTLENUM_NUMBER_OF_BITS) diff -uprN binutils-2.12.90.0.7/gas/config/tc-pdp11.c binutils-2.12.90.0.9/gas/config/tc-pdp11.c --- binutils-2.12.90.0.7/gas/config/tc-pdp11.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/tc-pdp11.c Thu May 23 15:10:10 2002 @@ -368,7 +368,7 @@ parse_expression (char *str, struct pdp1 #if 0 /* FIXME: what follows is broken badly. You can't deal with differences in radix conventions this way, because of symbolic constants, constant - expressions made up of pieces of differing radix, etc. The only + expressions made up of pieces of differing radix, etc. The only choices are to change ../expr.c to know about pdp11 conventions, or to accept the fact that gas will use consistent conventions that differ from those of traditional pdp11 assemblers. For now, I've @@ -446,7 +446,7 @@ parse_op_no_deferred (char *str, struct operand->error = "Error in expression"; break; } - /* it's a floating literal... */ + /* it's a floating literal... */ know (operand->reloc.exp.X_add_number < 0); flonum_gen2vax ('f', &generic_floating_point_number, literal_float); operand->word = literal_float[0]; @@ -579,7 +579,7 @@ parse_op (char *str, struct pdp11_code * operand->error = "Float AC not legal as integer operand"; return str; } - + return parse_op_noreg (str, operand); } diff -uprN binutils-2.12.90.0.7/gas/config/tc-ppc.c binutils-2.12.90.0.9/gas/config/tc-ppc.c --- binutils-2.12.90.0.7/gas/config/tc-ppc.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/gas/config/tc-ppc.c Thu May 23 15:10:10 2002 @@ -921,7 +921,7 @@ md_parse_option (c, arg) /* -mbooke64 means enable 64-bit BookE support. */ else if (strcmp (arg, "booke64") == 0) { - ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | + ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_BOOKE64 | PPC_OPCODE_64; ppc_size = PPC_OPCODE_64; } @@ -1378,7 +1378,7 @@ ppc_elf_suffix (str_p, exp_p) MAP ("plt@h", (int) BFD_RELOC_HI16_PLTOFF), MAP ("plt@ha", (int) BFD_RELOC_HI16_S_PLTOFF), MAP ("sdarel", (int) BFD_RELOC_GPREL16), - MAP ("sectoff", (int) BFD_RELOC_32_BASEREL), + MAP ("sectoff", (int) BFD_RELOC_16_BASEREL), MAP ("sectoff@l", (int) BFD_RELOC_LO16_BASEREL), MAP ("sectoff@h", (int) BFD_RELOC_HI16_BASEREL), MAP ("sectoff@ha", (int) BFD_RELOC_HI16_S_BASEREL), @@ -1687,7 +1687,7 @@ ppc_elf_validate_fix (fixp, seg) && fixp->fx_r_type != BFD_RELOC_HI16_GOTOFF && fixp->fx_r_type != BFD_RELOC_LO16_GOTOFF && fixp->fx_r_type != BFD_RELOC_HI16_S_GOTOFF - && fixp->fx_r_type != BFD_RELOC_32_BASEREL + && fixp->fx_r_type != BFD_RELOC_16_BASEREL && fixp->fx_r_type != BFD_RELOC_LO16_BASEREL && fixp->fx_r_type != BFD_RELOC_HI16_BASEREL && fixp->fx_r_type != BFD_RELOC_HI16_S_BASEREL @@ -2240,7 +2240,7 @@ md_assemble (str) case BFD_RELOC_LO16_PLTOFF: reloc = BFD_RELOC_PPC64_PLT16_LO_DS; break; - case BFD_RELOC_32_BASEREL: + case BFD_RELOC_16_BASEREL: reloc = BFD_RELOC_PPC64_SECTOFF_DS; break; case BFD_RELOC_LO16_BASEREL: @@ -2485,7 +2485,7 @@ ppc_section_letter (letter, ptr_msg) if (letter == 'e') return SHF_EXCLUDE; - *ptr_msg = _("Bad .section directive: want a,e,w,x,M,S in string"); + *ptr_msg = _("Bad .section directive: want a,e,w,x,M,S,G,T in string"); return 0; } @@ -3214,7 +3214,7 @@ ppc_function (ignore) /* The .bf pseudo-op. This is just like a COFF C_FCN symbol named ".bf". If the pseudo op .bi was seen before .bf, patch the .bi sym with the correct line number */ - + static symbolS *saved_bi_sym = 0; static void @@ -3235,12 +3235,12 @@ ppc_bf (ignore) SA_SET_SYM_LNNO (sym, coff_line_base); /* Line number for bi. */ - if (saved_bi_sym) + if (saved_bi_sym) { S_SET_VALUE (saved_bi_sym, coff_n_line_nos); saved_bi_sym = 0; } - + symbol_get_tc (sym)->output = 1; @@ -3307,7 +3307,7 @@ ppc_biei (ei) symbol_get_tc (sym)->output = 1; /* Save bi. */ - if (ei) + if (ei) saved_bi_sym = 0; else saved_bi_sym = sym; @@ -5284,7 +5284,6 @@ md_apply_fix3 (fixP, valP, seg) case BFD_RELOC_RVA: case BFD_RELOC_32_PCREL: - case BFD_RELOC_32_BASEREL: case BFD_RELOC_PPC_EMB_NADDR32: md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, value, 4); @@ -5309,6 +5308,7 @@ md_apply_fix3 (fixP, valP, seg) case BFD_RELOC_LO16_GOTOFF: case BFD_RELOC_HI16_GOTOFF: case BFD_RELOC_HI16_S_GOTOFF: + case BFD_RELOC_16_BASEREL: case BFD_RELOC_LO16_BASEREL: case BFD_RELOC_HI16_BASEREL: case BFD_RELOC_HI16_S_BASEREL: diff -uprN binutils-2.12.90.0.7/gas/config/tc-ppc.h binutils-2.12.90.0.9/gas/config/tc-ppc.h --- binutils-2.12.90.0.7/gas/config/tc-ppc.h Fri Nov 16 14:05:52 2001 +++ binutils-2.12.90.0.9/gas/config/tc-ppc.h Thu May 23 15:10:10 2002 @@ -1,5 +1,5 @@ /* tc-ppc.h -- Header file for tc-ppc.c. - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. @@ -198,7 +198,7 @@ extern void ppc_adjust_symtab PARAMS ((v /* Niclas Andersson says this is needed. */ extern int ppc_subseg_align PARAMS ((void)); -#define SUB_SEGMENT_ALIGN(SEG) ppc_subseg_align() +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) ppc_subseg_align () /* We also need to copy, in particular, the class of the symbol, over what obj-coff would otherwise have copied. */ @@ -245,7 +245,7 @@ extern int ppc_section_flags PARAMS ((in #define md_elf_section_flags(FLAGS, ATTR, TYPE) ppc_section_flags (FLAGS, ATTR, TYPE) #if BFD_DEFAULT_TARGET_SIZE == 64 -/* Extra sections for 64-bit ELF PPC. */ +/* Extra sections for 64-bit ELF PPC. */ #define ELF_TC_SPECIAL_SECTIONS \ { ".toc", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE}, \ { ".tocbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE}, diff -uprN binutils-2.12.90.0.7/gas/config/tc-s390.c binutils-2.12.90.0.9/gas/config/tc-s390.c --- binutils-2.12.90.0.7/gas/config/tc-s390.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/gas/config/tc-s390.c Thu May 23 15:10:10 2002 @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with GAS; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + 02111-1307, USA. */ #include #include "as.h" @@ -82,7 +82,7 @@ static void s390_literals PARAMS ((int)) const pseudo_typeS md_pseudo_table[] = { { "align", s_align_bytes, 0 }, - /* Pseudo-ops which must be defined. */ + /* Pseudo-ops which must be defined. */ { "bss", s390_bss, 0 }, { "insn", s390_insn, 0 }, /* Pseudo-ops which must be overridden. */ @@ -121,7 +121,7 @@ struct pd_reg sp has the value 15 lit has the value 12 - The table is sorted. Suitable for searching by a binary search. */ + The table is sorted. Suitable for searching by a binary search. */ static const struct pd_reg pre_defined_registers[] = { @@ -388,9 +388,9 @@ md_parse_option (c, arg) case 'A': if (arg != NULL && strcmp (arg, "esa") == 0) - current_architecture = S390_OPCODE_ESA; + current_architecture = S390_OPCODE_ESA; else if (arg != NULL && strcmp (arg, "esame") == 0) - current_architecture = S390_OPCODE_ESAME; + current_architecture = S390_OPCODE_ESAME; else as_bad ("invalid architecture -A%s", arg); current_arch_mask = 1 << current_architecture; @@ -560,7 +560,7 @@ s390_insert_operand (insn, operand, val, { addressT min, max; - max = (((addressT) 1 << (operand->bits - 1))<<1) - 1; + max = (((addressT) 1 << (operand->bits - 1)) << 1) - 1; min = (offsetT) 0; uval = (addressT) val; /* Length x in an instructions has real length x+1. */ @@ -591,7 +591,7 @@ s390_insert_operand (insn, operand, val, /* Insert fragments of the operand byte for byte. */ offset = operand->shift + operand->bits; uval <<= (-offset) & 7; - insn += (offset - 1)/8; + insn += (offset - 1) / 8; while (uval != 0) { *insn-- |= uval; @@ -724,7 +724,7 @@ static int lp_count = 0; static int lpe_count = 0; static int -s390_exp_compare(exp1, exp2) +s390_exp_compare (exp1, exp2) expressionS *exp1; expressionS *exp2; { @@ -771,8 +771,8 @@ s390_exp_compare(exp1, exp2) && (exp1->X_op_symbol == exp2->X_op_symbol) && (exp1->X_add_number == exp2->X_add_number); default: - return 0; - } + return 0; + } } /* Test for @lit and if its present make an entry in the literal pool and @@ -852,7 +852,7 @@ s390_lit_suffix (str_p, exp_p, suffix) /* Processing for 'normal' data types. */ for (lpe = lpe_list; lpe != NULL; lpe = lpe->next) if (lpe->nbytes == nbytes && lpe->reloc == reloc - && s390_exp_compare(exp_p, &lpe->ex) != 0) + && s390_exp_compare (exp_p, &lpe->ex) != 0) break; } @@ -866,7 +866,7 @@ s390_lit_suffix (str_p, exp_p, suffix) } else { - lpe = (struct s390_lpe *) xmalloc(sizeof (struct s390_lpe)); + lpe = (struct s390_lpe *) xmalloc (sizeof (struct s390_lpe)); } lpe->ex = *exp_p; @@ -877,7 +877,7 @@ s390_lit_suffix (str_p, exp_p, suffix) lpe->floatnum = generic_floating_point_number; else if (exp_p->X_add_number <= 4) memcpy (lpe->bignum, generic_bignum, - exp_p->X_add_number*sizeof (LITTLENUM_TYPE)); + exp_p->X_add_number * sizeof (LITTLENUM_TYPE)); else as_bad (_("Big number is too big")); } @@ -888,13 +888,13 @@ s390_lit_suffix (str_p, exp_p, suffix) if (lp_sym == NULL) { sprintf (tmp_name, ".L\001%i", lp_count); - lp_sym = symbol_make(tmp_name); + lp_sym = symbol_make (tmp_name); } /* Make name for literal pool entry. */ sprintf (tmp_name, ".L\001%i\002%i", lp_count, lpe_count); lpe_count++; - lpe->sym = symbol_make(tmp_name); + lpe->sym = symbol_make (tmp_name); /* Add to literal pool list. */ lpe->next = NULL; @@ -984,7 +984,7 @@ s390_elf_cons (nbytes) } while (*input_line_pointer++ == ','); - input_line_pointer--; /* Put terminator back into stream. */ + input_line_pointer--; /* Put terminator back into stream. */ demand_empty_rest_of_line (); } @@ -1019,7 +1019,8 @@ md_gather_operands (str, insn, opcode) char *f; int fc, i; - while (ISSPACE (*str)) str++; + while (ISSPACE (*str)) + str++; parentheses = 0; skip_optional = 0; @@ -1047,7 +1048,8 @@ md_gather_operands (str, insn, opcode) hold = input_line_pointer; input_line_pointer = str; - if (! register_name (&ex)) /* parse the operand */ + /* Parse the operand. */ + if (! register_name (&ex)) expression (&ex); str = input_line_pointer; @@ -1227,6 +1229,7 @@ md_gather_operands (str, insn, opcode) /* Write out the instruction. */ f = frag_more (opcode->oplen); memcpy (f, insn, opcode->oplen); + dwarf2_emit_insn (opcode->oplen); /* Create any fixups. At this point we do not use a bfd_reloc_code_real_type, but instead just use the @@ -1396,7 +1399,7 @@ s390_insn (ignore) if (strcmp (opformat->name, "e") != 0 && *input_line_pointer++ != ',') as_bad (_("missing comma after insn constant\n")); - + if ((s = strchr (input_line_pointer, '\n')) != NULL) *s = '\0'; input_line_pointer = md_gather_operands (input_line_pointer, insn, @@ -1452,7 +1455,7 @@ s390_literals (ignore) struct s390_lpe *lpe; if (lp_sym == NULL || lpe_count == 0) - return; /* nothing to be done */ + return; /* Nothing to be done. */ /* Emit symbol for start of literal pool. */ S_SET_SEGMENT (lp_sym, now_seg); @@ -1491,7 +1494,7 @@ s390_literals (ignore) generic_floating_point_number = lpe->floatnum; else memcpy (generic_bignum, lpe->bignum, - lpe->ex.X_add_number*sizeof (LITTLENUM_TYPE)); + lpe->ex.X_add_number * sizeof (LITTLENUM_TYPE)); } emit_expr (&lpe->ex, lpe->nbytes); } @@ -1589,18 +1592,18 @@ symbolS * md_undefined_symbol (name) char *name; { - if (*name == '_' && *(name+1) == 'G' + if (*name == '_' && *(name + 1) == 'G' && strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0) - { - if (!GOT_symbol) - { - if (symbol_find (name)) - as_bad (_("GOT already in symbol table")); - GOT_symbol = symbol_new (name, undefined_section, - (valueT) 0, &zero_address_frag); - } - return GOT_symbol; - } + { + if (!GOT_symbol) + { + if (symbol_find (name)) + as_bad (_("GOT already in symbol table")); + GOT_symbol = symbol_new (name, undefined_section, + (valueT) 0, &zero_address_frag); + } + return GOT_symbol; + } return 0; } @@ -1622,8 +1625,8 @@ md_pcrel_from_section (fixp, sec) to make sure that the dynamic relocations are done correctly, so in some cases we force the original symbol to be used. */ int -tc_s390_fix_adjustable(fixP) - fixS * fixP; +tc_s390_fix_adjustable (fixP) + fixS *fixP; { /* Prevent all adjustments to global symbols. */ if (S_IS_EXTERN (fixP->fx_addsy)) @@ -1631,7 +1634,7 @@ tc_s390_fix_adjustable(fixP) if (S_IS_WEAK (fixP->fx_addsy)) return 0; /* Don't adjust pc-relative references to merge sections. */ - if ((S_GET_SEGMENT(fixP->fx_addsy)->flags & SEC_MERGE) != 0 + if ((S_GET_SEGMENT (fixP->fx_addsy)->flags & SEC_MERGE) != 0 && fixP->fx_pcrel) return 0; /* adjust_reloc_syms doesn't know about the GOT. */ @@ -1697,11 +1700,11 @@ md_apply_fix3 (fixP, valP, seg) segT seg; { char *where; - valueT value = * valP; + valueT value = *valP; where = fixP->fx_frag->fr_literal + fixP->fx_where; - if (fixP->fx_subsy != NULL) + if (fixP->fx_subsy != NULL) { if ((fixP->fx_addsy != NULL && S_GET_SEGMENT (fixP->fx_addsy) == S_GET_SEGMENT (fixP->fx_subsy) @@ -1711,24 +1714,24 @@ md_apply_fix3 (fixP, valP, seg) if (!S_IS_DEFINED (fixP->fx_subsy)) as_bad_where (fixP->fx_file, fixP->fx_line, _("unresolved fx_subsy symbol that must be resolved")); - value -= S_GET_VALUE(fixP->fx_subsy); + value -= S_GET_VALUE (fixP->fx_subsy); if (S_GET_SEGMENT (fixP->fx_subsy) == seg && ! fixP->fx_pcrel) value += MD_PCREL_FROM_SECTION (fixP, seg); } - - if (fixP->fx_addsy != NULL) + + if (fixP->fx_addsy != NULL) { if ((fixP->fx_subsy != NULL && S_GET_SEGMENT (fixP->fx_addsy) == S_GET_SEGMENT (fixP->fx_subsy) - && SEG_NORMAL (S_GET_SEGMENT(fixP->fx_addsy))) + && SEG_NORMAL (S_GET_SEGMENT (fixP->fx_addsy))) || (S_GET_SEGMENT (fixP->fx_addsy) == seg && fixP->fx_pcrel && TC_RELOC_RTSYM_LOC_FIXUP (fixP)) - || (!fixP->fx_pcrel + || (!fixP->fx_pcrel && S_GET_SEGMENT (fixP->fx_addsy) == absolute_section) || (S_GET_SEGMENT (fixP->fx_addsy) != undefined_section && !bfd_is_com_section (S_GET_SEGMENT (fixP->fx_addsy)) - && TC_FIX_ADJUSTABLE(fixP))) + && TC_FIX_ADJUSTABLE (fixP))) value -= S_GET_VALUE (fixP->fx_addsy); if (fixP->fx_pcrel) @@ -1964,8 +1967,8 @@ tc_gen_reloc (seg, fixp) if (reloc->howto == NULL) { as_bad_where (fixp->fx_file, fixp->fx_line, - _("cannot represent relocation type %s"), - bfd_get_reloc_code_name (code)); + _("cannot represent relocation type %s"), + bfd_get_reloc_code_name (code)); /* Set howto to a garbage value so that we can keep going. */ reloc->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_32); assert (reloc->howto != NULL); diff -uprN binutils-2.12.90.0.7/gas/config/tc-s390.h binutils-2.12.90.0.9/gas/config/tc-s390.h --- binutils-2.12.90.0.7/gas/config/tc-s390.h Fri Nov 16 14:05:52 2001 +++ binutils-2.12.90.0.9/gas/config/tc-s390.h Thu May 23 15:10:10 2002 @@ -1,5 +1,5 @@ /* tc-s390.h -- Header file for tc-s390.c. - Copyright 2000, 2001 Free Software Foundation, Inc. + Copyright 2000, 2001, 2002 Free Software Foundation, Inc. Written by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of GAS, the GNU Assembler. @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with GAS; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + 02111-1307, USA. */ #define TC_S390 @@ -34,7 +34,7 @@ struct fix; are willing to perform this relocation while building the .o file. This is only used for pcrel relocations, so GOTOFF does not need to be checked here. I am not sure if some of the others are ever used with - pcrel, but it is easier to be safe than sorry. */ + pcrel, but it is easier to be safe than sorry. */ #define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \ ((FIX)->fx_r_type != BFD_RELOC_390_GOTENT \ @@ -59,9 +59,9 @@ extern enum bfd_architecture s390_arch P /* The target BFD format. */ #define TARGET_FORMAT s390_target_format() -extern const char * s390_target_format PARAMS ((void)); +extern const char *s390_target_format PARAMS ((void)); -/* Set the endianness we are using. */ +/* Set the endianness we are using. */ #define TARGET_BYTES_BIG_ENDIAN 1 /* Whether or not the target is big endian */ diff -uprN binutils-2.12.90.0.7/gas/config/tc-sh.c binutils-2.12.90.0.9/gas/config/tc-sh.c --- binutils-2.12.90.0.7/gas/config/tc-sh.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/gas/config/tc-sh.c Thu May 23 15:10:10 2002 @@ -433,7 +433,7 @@ const relax_typeS md_relax_table[C (END, { SH64PCREL16_F, SH64PCREL16_M, SH64PCREL16_LENGTH, C (SH64PCREL16PT_64, SH64PCREL32) }, /* C (SH64PCREL16PT_64, SH64PCREL32) */ { SH64PCREL32_F, - SH64PCREL32_M, + SH64PCREL32_M, SH64PCREL32_LENGTH, C (SH64PCREL16PT_64, SH64PCREL48) }, /* C (SH64PCREL16PT_64, SH64PCREL48) */ @@ -554,12 +554,12 @@ sh_check_fixup (main_exp, r_type_p) plus/minus a symbol. However, gas' parser gives us: O_subtract (O_add (f@PLT, .), .LPCS#+2) - + so we attempt to transform this into: O_subtract (f@PLT, O_subtract (.LPCS#+2, .)) - which we can handle simply below. */ + which we can handle simply below. */ if (exp->X_op == O_subtract) { if (sh_PIC_related_p (exp->X_op_symbol)) @@ -620,7 +620,7 @@ sh_check_fixup (main_exp, r_type_p) case BFD_RELOC_UNUSED: *r_type_p = BFD_RELOC_SH_GOTPC; break; - + default: abort (); } @@ -654,15 +654,15 @@ sh_check_fixup (main_exp, r_type_p) case BFD_RELOC_32_GOTOFF: *r_type_p = BFD_RELOC_SH_GOTOFF_LOW16; break; - + case BFD_RELOC_SH_GOTPLT32: *r_type_p = BFD_RELOC_SH_GOTPLT_LOW16; break; - + case BFD_RELOC_32_GOT_PCREL: *r_type_p = BFD_RELOC_SH_GOT_LOW16; break; - + case BFD_RELOC_32_PLT_PCREL: *r_type_p = BFD_RELOC_SH_PLT_LOW16; break; @@ -678,15 +678,15 @@ sh_check_fixup (main_exp, r_type_p) case BFD_RELOC_32_GOTOFF: *r_type_p = BFD_RELOC_SH_GOTOFF_MEDLOW16; break; - + case BFD_RELOC_SH_GOTPLT32: *r_type_p = BFD_RELOC_SH_GOTPLT_MEDLOW16; break; - + case BFD_RELOC_32_GOT_PCREL: *r_type_p = BFD_RELOC_SH_GOT_MEDLOW16; break; - + case BFD_RELOC_32_PLT_PCREL: *r_type_p = BFD_RELOC_SH_PLT_MEDLOW16; break; @@ -702,15 +702,15 @@ sh_check_fixup (main_exp, r_type_p) case BFD_RELOC_32_GOTOFF: *r_type_p = BFD_RELOC_SH_GOTOFF_MEDHI16; break; - + case BFD_RELOC_SH_GOTPLT32: *r_type_p = BFD_RELOC_SH_GOTPLT_MEDHI16; break; - + case BFD_RELOC_32_GOT_PCREL: *r_type_p = BFD_RELOC_SH_GOT_MEDHI16; break; - + case BFD_RELOC_32_PLT_PCREL: *r_type_p = BFD_RELOC_SH_PLT_MEDHI16; break; @@ -726,15 +726,15 @@ sh_check_fixup (main_exp, r_type_p) case BFD_RELOC_32_GOTOFF: *r_type_p = BFD_RELOC_SH_GOTOFF_HI16; break; - + case BFD_RELOC_SH_GOTPLT32: *r_type_p = BFD_RELOC_SH_GOTPLT_HI16; break; - + case BFD_RELOC_32_GOT_PCREL: *r_type_p = BFD_RELOC_SH_GOT_HI16; break; - + case BFD_RELOC_32_PLT_PCREL: *r_type_p = BFD_RELOC_SH_PLT_HI16; break; @@ -808,7 +808,7 @@ sh_cons_fix_new (frag, off, size, exp) as_bad (_("unsupported BFD relocation size %u"), size); r_type = BFD_RELOC_UNUSED; } - + fix_new_exp (frag, off, size, exp, 0, r_type); } @@ -1566,6 +1566,27 @@ get_specific (opcode, operands) sh_operand_info *user = operands + n; sh_arg_type arg = this_try->arg[n]; + /* If this is a parallel insn check to see if both + parts have the same destination register. */ + if ((n == 2) && (this_try->nibbles[0] == PPI)) + { + static boolean bIsPPI = false; + static int nLastDestReg; + + if (!bIsPPI) + { + bIsPPI = true; + nLastDestReg = user->reg; + } + else /* Second insn. */ + { + if (nLastDestReg == user->reg) + as_warn (_("destination register is same for parallel insns")); + + bIsPPI = false; + } + } + switch (arg) { case A_DISP_PC: @@ -2453,14 +2474,14 @@ md_undefined_symbol (name) void tc_crawl_symbol_chain (headers) - object_headers *headers; + object_headers *headers ATTRIBUTE_UNUSED; { printf (_("call to tc_crawl_symbol_chain \n")); } void tc_headers_hook (headers) - object_headers *headers; + object_headers *headers ATTRIBUTE_UNUSED; { printf (_("call to tc_headers_hook \n")); } @@ -2903,7 +2924,7 @@ md_convert_frag (headers, seg, fragP) #ifdef BFD_ASSEMBLER bfd *headers ATTRIBUTE_UNUSED; #else - object_headers *headers; + object_headers *headers ATTRIBUTE_UNUSED; #endif segT seg; fragS *fragP; @@ -3659,6 +3680,16 @@ md_number_to_chars (ptr, use, nbytes) number_to_chars_bigendian (ptr, use, nbytes); } +/* This version is used in obj-coff.c when not using BFD_ASSEMBLER. + eg for the sh-hms target. */ + +long +md_pcrel_from (fixP) + fixS *fixP; +{ + return fixP->fx_size + fixP->fx_where + fixP->fx_frag->fr_address + 2; +} + long md_pcrel_from_section (fixP, sec) fixS *fixP; @@ -3677,7 +3708,7 @@ md_pcrel_from_section (fixP, sec) return fixP->fx_subsy ? fixP->fx_where + fixP->fx_frag->fr_address : 0; } - return fixP->fx_size + fixP->fx_where + fixP->fx_frag->fr_address + 2; + return md_pcrel_from (fixP); } #ifdef OBJ_COFF @@ -3935,7 +3966,7 @@ sh_end_of_match (cont, what) return cont + len; return NULL; -} +} int sh_parse_name (name, exprP, nextcharP) @@ -3982,7 +4013,7 @@ sh_parse_name (name, exprP, nextcharP) } exprP->X_add_symbol = symbol_find_or_make (name); - + if (*nextcharP != '@') goto no_suffix; else if ((next_end = sh_end_of_match (next + 1, "GOTOFF"))) diff -uprN binutils-2.12.90.0.7/gas/config/tc-sh.h binutils-2.12.90.0.9/gas/config/tc-sh.h --- binutils-2.12.90.0.7/gas/config/tc-sh.h Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/gas/config/tc-sh.h Thu May 23 15:10:10 2002 @@ -152,7 +152,7 @@ extern int tc_coff_sizemachdep PARAMS (( #endif /* We align most sections to a 16 byte boundary. */ -#define SUB_SEGMENT_ALIGN(SEG) \ +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ (strncmp (SEG_NAME (SEG), ".stabstr", 8) == 0 \ ? 0 \ : ((strncmp (SEG_NAME (SEG), ".stab", 5) == 0 \ diff -uprN binutils-2.12.90.0.7/gas/config/tc-sh64.c binutils-2.12.90.0.9/gas/config/tc-sh64.c --- binutils-2.12.90.0.7/gas/config/tc-sh64.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/tc-sh64.c Thu May 23 15:10:10 2002 @@ -230,12 +230,12 @@ shmedia_md_end () copy_symbol_attributes (symp, mainsym); /* Unset the BranchTarget mark that can be set at - attribute-copying. */ + attribute-copying. */ S_SET_OTHER (symp, - S_GET_OTHER (symp) & ~STO_SH5_ISA32); + S_GET_OTHER (symp) & ~STO_SH5_ISA32); /* The GLOBAL and WEAK attributes are not copied - over by copy_symbol_attributes. Do it here. */ + over by copy_symbol_attributes. Do it here. */ if (S_IS_WEAK (mainsym)) S_SET_WEAK (symp); else if (S_IS_EXTERNAL (mainsym)) @@ -471,7 +471,7 @@ sh64_adjust_symtab () if (main_symbol) { char *sym_name = (char *) S_GET_NAME (symp); - + /* All datalabels not used in relocs should be gone by now. We change those remaining to have the name of the main @@ -1095,7 +1095,7 @@ shmedia_md_convert_frag (output_bfd, seg reloctype = BFD_RELOC_32_GOTOFF; reloc_needed = 1; /* Fall through. */ - + case C (MOVI_IMM_64, UNDEF_MOVI): case C (MOVI_IMM_64, MOVI_64): { @@ -1155,7 +1155,7 @@ shmedia_md_convert_frag (output_bfd, seg reloctype = BFD_RELOC_32_GOTOFF; reloc_needed = 1; /* Fall through. */ - + case C (MOVI_IMM_32, UNDEF_MOVI): case C (MOVI_IMM_32, MOVI_32): { @@ -1329,7 +1329,7 @@ shmedia_md_convert_frag (output_bfd, seg movi_imm_64_pcrel_reloc_needed: reloc_needed = 1; /* Fall through. */ - + case C (MOVI_IMM_32_PCREL, MOVI_64): case C (MOVI_IMM_64_PCREL, MOVI_64): { @@ -2202,7 +2202,7 @@ shmedia_md_estimate_size_before_relax (f case C (MOVI_IMM_64_PCREL, MOVI_GOTPC): fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length; break; - + default: abort (); } @@ -2628,7 +2628,7 @@ shmedia_build_Mytes (opcode, operands) opjp->reloctype = BFD_RELOC_SH_GOT_LOW16; else if (opjp->reloctype == BFD_RELOC_SH_GOTPLT32) opjp->reloctype = BFD_RELOC_SH_GOTPLT_LOW16; - + if ((opjp->reloctype == BFD_RELOC_NONE || opjp->reloctype == BFD_RELOC_32_GOTOFF || opjp->reloctype == BFD_RELOC_32_PLT_PCREL @@ -2717,7 +2717,7 @@ shmedia_build_Mytes (opcode, operands) opjp->reloctype == BFD_RELOC_NONE ? BFD_RELOC_SH_PT_16 : opjp->reloctype); - + j++; break; } @@ -2757,7 +2757,7 @@ shmedia_build_Mytes (opcode, operands) opjp->reloctype == BFD_RELOC_NONE ? SHMEDIA_BFD_RELOC_PT : opjp->reloctype); - + j++; break; } @@ -3098,7 +3098,7 @@ sh64_emit_crange (startsym, endsym, cr_t exp.X_op_symbol = startsym; emit_expr (&exp, 4); - /* Emit the cr_size part. */ + /* Emit the cr_size part. */ exp.X_op = O_constant; exp.X_add_number = cr_type; exp.X_add_symbol = NULL; @@ -3299,11 +3299,11 @@ sh64_consume_datalabel (name, exp, cp, o exp->X_add_symbol = dl_symp; /* Unset the BranchTarget mark that can be set at symbol - creation or attributes copying. */ + creation or attributes copying. */ S_SET_OTHER (dl_symp, S_GET_OTHER (dl_symp) & ~STO_SH5_ISA32); /* The GLOBAL and WEAK attributes are not copied over by - copy_symbol_attributes. Do it here. */ + copy_symbol_attributes. Do it here. */ if (S_IS_WEAK (symp)) S_SET_WEAK (dl_symp); else if (S_IS_EXTERNAL (symp)) @@ -3470,7 +3470,7 @@ sh64_flag_output () } /* Vtables don't need "datalabel" but we allow it by simply deleting - any we find. */ + any we find. */ static char * strip_datalabels () diff -uprN binutils-2.12.90.0.7/gas/config/tc-sparc.c binutils-2.12.90.0.9/gas/config/tc-sparc.c --- binutils-2.12.90.0.7/gas/config/tc-sparc.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/tc-sparc.c Thu May 23 15:10:10 2002 @@ -2916,6 +2916,7 @@ md_apply_fix3 (fixP, valP, segment) && (S_IS_EXTERNAL (sym) || S_IS_WEAK (sym) || (seg->flags & SEC_MERGE) + || (seg->flags & SEC_THREAD_LOCAL) || (sparc_pic_code && ! fixP->fx_pcrel) || (seg != segment && (((bfd_get_section_flags (stdoutput, seg) & SEC_LINK_ONCE) != 0) diff -uprN binutils-2.12.90.0.7/gas/config/tc-tic54x.c binutils-2.12.90.0.9/gas/config/tc-tic54x.c --- binutils-2.12.90.0.7/gas/config/tc-tic54x.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/tc-tic54x.c Thu May 23 15:10:10 2002 @@ -1712,7 +1712,7 @@ tic54x_float_cons (type) /* The argument is capitalized if it should be zero-terminated 's' is normal string with upper 8-bits zero-filled, 'p' is packed. - Code copied from stringer, and slightly modified so that strings are packed + Code copied from stringer, and slightly modified so that strings are packed and encoded into the correct octets. */ static void @@ -3325,7 +3325,7 @@ md_begin () tm->name, hash_err); } parop_hash = hash_new (); - for (tm = (template *) tic54x_paroptab; tm->name; tm++) + for (tm = (template *) tic54x_paroptab; tm->name; tm++) { if (hash_find (parop_hash, tm->name)) continue; diff -uprN binutils-2.12.90.0.7/gas/config/tc-v850.h binutils-2.12.90.0.9/gas/config/tc-v850.h --- binutils-2.12.90.0.7/gas/config/tc-v850.h Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/gas/config/tc-v850.h Sun May 26 09:57:12 2002 @@ -1,5 +1,6 @@ /* tc-v850.h -- Header file for tc-v850.c. - Copyright 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. + Copyright 1996, 1997, 1998, 2000, 2001, 2002 + Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -20,7 +21,7 @@ #define TC_V850 -#include +#include "elf/v850.h" #define TARGET_BYTES_BIG_ENDIAN 0 diff -uprN binutils-2.12.90.0.7/gas/config/tc-xstormy16.c binutils-2.12.90.0.9/gas/config/tc-xstormy16.c --- binutils-2.12.90.0.7/gas/config/tc-xstormy16.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/gas/config/tc-xstormy16.c Thu May 23 15:10:10 2002 @@ -20,7 +20,7 @@ #include #include "as.h" -#include "subsegs.h" +#include "subsegs.h" #include "symcat.h" #include "opcodes/xstormy16-desc.h" #include "opcodes/xstormy16-opc.h" @@ -78,7 +78,7 @@ md_show_usage (stream) FILE * stream; { fprintf (stream, _(" XSTORMY16 specific command line options:\n")); -} +} /* The target specific pseudo-ops which we support. */ const pseudo_typeS md_pseudo_table[] = @@ -92,7 +92,7 @@ void md_begin () { /* Initialize the `cgen' interface. */ - + /* Set the machine number and endian. */ gas_cgen_cpu_desc = xstormy16_cgen_cpu_open (CGEN_CPU_OPEN_MACHS, 0, CGEN_CPU_OPEN_ENDIAN, @@ -116,7 +116,7 @@ md_assemble (str) insn.insn = xstormy16_cgen_assemble_insn (gas_cgen_cpu_desc, str, & insn.fields, insn.buffer, & errmsg); - + if (!insn.insn) { as_bad (errmsg); @@ -128,7 +128,7 @@ md_assemble (str) CGEN_FIELDS_BITSIZE (& insn.fields), 0, NULL); } -void +void md_operand (e) expressionS * e; { @@ -204,7 +204,7 @@ xstormy16_cons_fix_new (f, where, nbytes fix = fix_new_exp (f, where, nbytes, exp, 0, code); } -/* Called while parsing an instruction to create a fixup. +/* Called while parsing an instruction to create a fixup. Create BFD_RELOC_XSTORMY16_FPTR16 relocations. */ fixS * @@ -219,7 +219,7 @@ xstormy16_cgen_record_fixup_exp (frag, w { fixS *fixP; operatorT op = exp->X_op; - + if (op == O_fptr_symbol) exp->X_op = O_symbol; @@ -274,7 +274,7 @@ md_estimate_size_before_relax (fragP, se { /* No assembler relaxation is defined (or necessary) for this port. */ abort (); -} +} /* *fragP has been relaxed to its final size, and now needs to have the bytes inside it modified to conform to the new size. @@ -334,11 +334,11 @@ md_cgen_lookup_reloc (insn, operand, fix case XSTORMY16_OPERAND_IMM12: case XSTORMY16_OPERAND_HMEM8: return BFD_RELOC_NONE; - + case XSTORMY16_OPERAND_IMM8: case XSTORMY16_OPERAND_LMEM8: return fixP->fx_pcrel ? BFD_RELOC_8_PCREL : BFD_RELOC_8; - + case XSTORMY16_OPERAND_IMM16: fixP->fx_where += 2; return fixP->fx_pcrel ? BFD_RELOC_16_PCREL : BFD_RELOC_16; @@ -353,7 +353,7 @@ md_cgen_lookup_reloc (insn, operand, fix case XSTORMY16_OPERAND_REL12: fixP->fx_where += 2; - /* Fall through... */ + /* Fall through... */ case XSTORMY16_OPERAND_REL12A: fixP->fx_pcrel = 1; return BFD_RELOC_XSTORMY16_REL_12; @@ -392,14 +392,14 @@ xstormy16_fix_adjustable (fixP) { if (fixP->fx_addsy == NULL) return 1; - - /* Prevent all adjustments to global symbols. */ + + /* Prevent all adjustments to global symbols. */ if (S_IS_EXTERN (fixP->fx_addsy)) return 0; - + if (S_IS_WEAK (fixP->fx_addsy)) return 0; - + /* We need the symbol name for the VTABLE entries. */ if ( fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY) @@ -446,7 +446,7 @@ xstormy16_md_apply_fix3 (fixP, valueP, s default: break; } - + /* FIXME FIXME FIXME: The value we are passed in *valuep includes the symbol values. Since we are using BFD_ASSEMBLER, if we are doing this relocation the code in write.c is going to call @@ -571,9 +571,9 @@ xstormy16_md_apply_fix3 (fixP, valueP, s /* This is a RELA port. Thus, it does not need to store a value if it is going to make a reloc. What's more, when assembling a line like - + .byte global-0x7f00 - + we'll get a spurious error message if we try to stuff 0x7f00 into the byte. */ if (! fixP->fx_done) @@ -648,6 +648,6 @@ md_atof (type, litP, sizeP) md_number_to_chars (litP, (valueT) (*wordP--), sizeof (LITTLENUM_TYPE)); litP += sizeof (LITTLENUM_TYPE); } - + return 0; } diff -uprN binutils-2.12.90.0.7/gas/config/tc-xstormy16.h binutils-2.12.90.0.9/gas/config/tc-xstormy16.h --- binutils-2.12.90.0.7/gas/config/tc-xstormy16.h Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/config/tc-xstormy16.h Thu May 23 15:10:10 2002 @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with GAS; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + Boston, MA 02111-1307, USA. */ #define TC_XSTORMY16 diff -uprN binutils-2.12.90.0.7/gas/config/tc-z8k.c binutils-2.12.90.0.9/gas/config/tc-z8k.c --- binutils-2.12.90.0.7/gas/config/tc-z8k.c Fri Nov 16 14:05:52 2001 +++ binutils-2.12.90.0.9/gas/config/tc-z8k.c Thu May 23 15:10:10 2002 @@ -1,5 +1,5 @@ /* tc-z8k.c -- Assemble code for the Zilog Z800n - Copyright 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001 + Copyright 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -1081,6 +1081,7 @@ build_bytes (this_try, operand) case CLASS_FLAGS: *output_ptr++ = the_flags; break; + case CLASS_IGNORE: case CLASS_BIT: *output_ptr++ = c & 0xf; break; @@ -1116,6 +1117,9 @@ build_bytes (this_try, operand) nib = 0; switch (c & ARG_MASK) { + case ARG_NIM4: + imm_operand->X_add_number = -imm_operand->X_add_number; + /* Drop through. */ case ARG_IMM4: output_ptr = apply_fix (output_ptr, R_IMM4L, imm_operand, 1); break; @@ -1205,14 +1209,13 @@ md_assemble (str) if (opcode->opcode == 250) { - /* Was really a pseudo op. */ - pseudo_typeS *p; char oc; - char *old = input_line_pointer; *op_end = c; + /* Was really a pseudo op. */ + input_line_pointer = op_end; oc = *old; @@ -1227,7 +1230,11 @@ md_assemble (str) } else { - input_line_pointer = get_operands (opcode, op_end, operand); + char *new_input_line_pointer; + + new_input_line_pointer = get_operands (opcode, op_end, operand); + if (new_input_line_pointer) + input_line_pointer = new_input_line_pointer; prev_opcode = opcode; opcode = get_specific (opcode, operand); @@ -1335,9 +1342,10 @@ md_atof (type, litP, sizeP) CONST char *md_shortopts = "z:"; -struct option md_longopts[] = { - {NULL, no_argument, NULL, 0} -}; +struct option md_longopts[] = + { + {NULL, no_argument, NULL, 0} + }; size_t md_longopts_size = sizeof (md_longopts); @@ -1401,7 +1409,6 @@ md_section_align (seg, size) { return ((size + (1 << section_alignment[(int) seg]) - 1) & (-1 << section_alignment[(int) seg])); - } void diff -uprN binutils-2.12.90.0.7/gas/configure binutils-2.12.90.0.9/gas/configure --- binutils-2.12.90.0.7/gas/configure Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/gas/configure Sun May 26 09:57:12 2002 @@ -2394,6 +2394,7 @@ for this_target in $target $canon_target i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;; i386-*-bsd*) fmt=aout em=386bsd ;; i386-*-netbsd0.8) fmt=aout em=386bsd ;; + i386-*-netbsdpe*) fmt=coff em=pe bfd_gas=yes ;; i386-*-netbsd*) em=nbsd bfd_gas=yes case ${cpu} in x86_64) fmt=elf ;; @@ -2558,6 +2559,7 @@ EOF fmt=coff em=macos ;; ppc-*-netware*) fmt=elf em=ppcnw ;; ppc-*-vxworks*) fmt=elf ;; + ppc-*-windiss*) fmt=elf ;; s390x-*-linux-gnu*) fmt=elf em=linux ;; s390-*-linux-gnu*) fmt=elf em=linux ;; @@ -2571,10 +2573,10 @@ EOF esac ;; sh*-*-netbsdelf*) fmt=elf em=nbsd ;; sh-*-elf*) fmt=elf ;; - sh-*-coff*) fmt=coff bfd_gas=yes;; + sh-*-coff*) fmt=coff ;; sh-*-pe*) fmt=coff em=pe bfd_gas=yes endian=little ;; sh-*-rtemself*) fmt=elf ;; - sh-*-rtems*) fmt=coff bfd_gas=yes;; + sh-*-rtems*) fmt=coff ;; sh64-*-elf*) fmt=elf ;; ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;; @@ -3102,7 +3104,7 @@ esac case "${need_bfd}" in yes) BFDLIB=../bfd/libbfd.la - ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h" + ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h' ;; esac @@ -3135,7 +3137,7 @@ EOF # 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:3139: checking for $ac_word" >&5 +echo "configure:3141: 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 @@ -3165,7 +3167,7 @@ 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:3169: checking for $ac_word" >&5 +echo "configure:3171: 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 @@ -3216,7 +3218,7 @@ fi # 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:3220: checking for $ac_word" >&5 +echo "configure:3222: 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 @@ -3248,7 +3250,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:3252: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:3254: 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. @@ -3259,12 +3261,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 3263 "configure" +#line 3265 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:3268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3270: \"$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 @@ -3290,12 +3292,12 @@ 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:3294: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:3296: 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:3299: checking whether we are using GNU C" >&5 +echo "configure:3301: 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 @@ -3304,7 +3306,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3308: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3310: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -3323,7 +3325,7 @@ 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:3327: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:3329: 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 @@ -3360,7 +3362,7 @@ 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:3364: checking for $ac_word" >&5 +echo "configure:3366: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3391,7 +3393,7 @@ done test -n "$YACC" || YACC="yacc" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:3395: checking how to run the C preprocessor" >&5 +echo "configure:3397: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -3406,13 +3408,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3416: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3418: \"$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 : @@ -3423,13 +3425,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3433: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3435: \"$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 : @@ -3440,13 +3442,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3450: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3452: \"$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 : @@ -3476,7 +3478,7 @@ 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:3480: checking for $ac_word" >&5 +echo "configure:3482: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3509,7 +3511,7 @@ test -n "$LEX" || LEX="$missing_dir/miss # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3513: checking for $ac_word" >&5 +echo "configure:3515: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3543,7 +3545,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:3547: checking for yywrap in -l$ac_lib" >&5 +echo "configure:3549: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3551,7 +3553,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3585,7 +3587,7 @@ fi fi echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:3589: checking lex output file root" >&5 +echo "configure:3591: checking lex output file root" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3606,7 +3608,7 @@ echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 -echo "configure:3610: checking whether yytext is a pointer" >&5 +echo "configure:3612: checking whether yytext is a pointer" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3618,14 +3620,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPU ac_save_LIBS="$LIBS" LIBS="$LIBS $LEXLIB" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_prog_lex_yytext_pointer=yes else @@ -3651,7 +3653,7 @@ ALL_LINGUAS="fr tr es" # 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:3655: checking for $ac_word" >&5 +echo "configure:3657: 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 @@ -3679,12 +3681,12 @@ else fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3683: checking for ANSI C header files" >&5 +echo "configure:3685: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3692,7 +3694,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3696: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3698: \"$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* @@ -3709,7 +3711,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3727,7 +3729,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3748,7 +3750,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -3759,7 +3761,7 @@ if (XOR (islower (i), ISLOWER (i)) || to exit (0); } EOF -if { (eval echo configure:3763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -3783,12 +3785,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:3787: checking for working const" >&5 +echo "configure:3789: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+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:3843: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -3858,21 +3860,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:3862: checking for inline" >&5 +echo "configure:3864: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3878: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -3898,12 +3900,12 @@ EOF esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3902: checking for off_t" >&5 +echo "configure:3904: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3931,12 +3933,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3935: checking for size_t" >&5 +echo "configure:3937: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3966,19 +3968,19 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:3970: checking for working alloca.h" >&5 +echo "configure:3972: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:3982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -3999,12 +4001,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:4003: checking for alloca" >&5 +echo "configure:4005: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+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:4038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -4064,12 +4066,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:4068: checking whether alloca needs Cray hooks" >&5 +echo "configure:4070: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4098: checking for $ac_func" >&5 +echo "configure:4100: 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:4128: \"$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 @@ -4149,7 +4151,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:4153: checking stack direction for C alloca" >&5 +echo "configure:4155: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4157,7 +4159,7 @@ else ac_cv_c_stack_direction=0 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:4182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -4201,17 +4203,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4205: checking for $ac_hdr" >&5 +echo "configure:4207: 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:4215: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4217: \"$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* @@ -4240,12 +4242,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4244: checking for $ac_func" >&5 +echo "configure:4246: 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:4274: \"$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 @@ -4293,7 +4295,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:4297: checking for working mmap" >&5 +echo "configure:4299: 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 @@ -4301,7 +4303,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:4447: \"$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 @@ -4469,17 +4471,17 @@ unistd.h values.h sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4473: checking for $ac_hdr" >&5 +echo "configure:4475: 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:4483: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4485: \"$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* @@ -4509,12 +4511,12 @@ done __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4513: checking for $ac_func" >&5 +echo "configure:4515: 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:4543: \"$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 @@ -4566,12 +4568,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4570: checking for $ac_func" >&5 +echo "configure:4572: 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:4600: \"$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 @@ -4628,19 +4630,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:4632: checking for LC_MESSAGES" >&5 +echo "configure:4634: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:4644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -4661,7 +4663,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:4665: checking whether NLS is requested" >&5 +echo "configure:4667: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -4681,7 +4683,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:4685: checking whether included gettext is requested" >&5 +echo "configure:4687: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -4700,17 +4702,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:4704: checking for libintl.h" >&5 +echo "configure:4706: checking for libintl.h" >&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:4714: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4716: \"$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* @@ -4727,19 +4729,19 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:4731: checking for gettext in libc" >&5 +echo "configure:4733: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:4743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else @@ -4755,7 +4757,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1 if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:4759: checking for bindtextdomain in -lintl" >&5 +echo "configure:4761: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4763,7 +4765,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4790,19 +4792,19 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:4794: checking for gettext in libintl" >&5 +echo "configure:4796: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+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:4808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libintl=yes else @@ -4830,7 +4832,7 @@ EOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4834: checking for $ac_word" >&5 +echo "configure:4836: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4864,12 +4866,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4868: checking for $ac_func" >&5 +echo "configure:4870: 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:4898: \"$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 @@ -4919,7 +4921,7 @@ done # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4923: checking for $ac_word" >&5 +echo "configure:4925: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4955,7 +4957,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4959: checking for $ac_word" >&5 +echo "configure:4961: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4987,7 +4989,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -5027,7 +5029,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5031: checking for $ac_word" >&5 +echo "configure:5033: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5061,7 +5063,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5065: checking for $ac_word" >&5 +echo "configure:5067: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5097,7 +5099,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5101: checking for $ac_word" >&5 +echo "configure:5103: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5187,7 +5189,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:5191: checking for catalogs to be installed" >&5 +echo "configure:5193: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -5215,17 +5217,17 @@ echo "configure:5191: checking for catal if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:5219: checking for linux/version.h" >&5 +echo "configure:5221: checking for linux/version.h" >&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:5229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5231: \"$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* @@ -5288,7 +5290,7 @@ fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:5292: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:5294: 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" @@ -5313,7 +5315,7 @@ fi echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:5317: checking for executable suffix" >&5 +echo "configure:5319: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5323,7 +5325,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:5327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:5329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -5348,17 +5350,17 @@ for ac_hdr in string.h stdlib.h memory.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5352: checking for $ac_hdr" >&5 +echo "configure:5354: 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:5362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5364: \"$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* @@ -5388,7 +5390,7 @@ done # Put this here so that autoconf's "cross-compiling" message doesn't confuse # people who are not cross-compiling but are compiling cross-assemblers. echo $ac_n "checking whether compiling a cross-assembler""... $ac_c" 1>&6 -echo "configure:5392: checking whether compiling a cross-assembler" >&5 +echo "configure:5394: checking whether compiling a cross-assembler" >&5 if test "${host}" = "${target}"; then cross_gas=no else @@ -5403,19 +5405,19 @@ echo "$ac_t""$cross_gas" 1>&6 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:5407: checking for working alloca.h" >&5 +echo "configure:5409: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:5419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -5436,12 +5438,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:5440: checking for alloca" >&5 +echo "configure:5442: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+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:5475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -5501,12 +5503,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:5505: checking whether alloca needs Cray hooks" >&5 +echo "configure:5507: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5535: checking for $ac_func" >&5 +echo "configure:5537: 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:5565: \"$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 @@ -5586,7 +5588,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:5590: checking stack direction for C alloca" >&5 +echo "configure:5592: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5594,7 +5596,7 @@ else ac_cv_c_stack_direction=0 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:5619: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -5635,21 +5637,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:5639: checking for inline" >&5 +echo "configure:5641: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5655: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -5679,12 +5681,12 @@ esac for ac_func in unlink remove do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5683: checking for $ac_func" >&5 +echo "configure:5685: 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:5713: \"$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 @@ -5736,12 +5738,12 @@ done for ac_func in sbrk do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5740: checking for $ac_func" >&5 +echo "configure:5742: 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:5770: \"$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 @@ -5799,7 +5801,7 @@ case $host in ;; *-ncr-sysv4.3*) echo $ac_n "checking for _mwvalidcheckl in -lmw""... $ac_c" 1>&6 -echo "configure:5803: checking for _mwvalidcheckl in -lmw" >&5 +echo "configure:5805: checking for _mwvalidcheckl in -lmw" >&5 ac_lib_var=`echo mw'_'_mwvalidcheckl | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5807,7 +5809,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lmw $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5839,7 +5841,7 @@ else fi echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -echo "configure:5843: checking for main in -lm" >&5 +echo "configure:5845: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5847,14 +5849,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5877,7 +5879,7 @@ fi ;; *) echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -echo "configure:5881: checking for main in -lm" >&5 +echo "configure:5883: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5885,14 +5887,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5923,12 +5925,12 @@ esac # enough, but on some of those systems, the assert macro relies on requoting # working properly! echo $ac_n "checking for working assert macro""... $ac_c" 1>&6 -echo "configure:5927: checking for working assert macro" >&5 +echo "configure:5929: checking for working assert macro" >&5 if eval "test \"`echo '$''{'gas_cv_assert_ok'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5944,7 +5946,7 @@ assert (a == b ; return 0; } EOF -if { (eval echo configure:5948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_assert_ok=yes else @@ -5985,12 +5987,12 @@ gas_test_headers=" " echo $ac_n "checking whether declaration is required for strstr""... $ac_c" 1>&6 -echo "configure:5989: checking whether declaration is required for strstr" >&5 +echo "configure:5991: checking whether declaration is required for strstr" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_strstr'+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:6007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_strstr=no else @@ -6022,12 +6024,12 @@ fi echo $ac_n "checking whether declaration is required for malloc""... $ac_c" 1>&6 -echo "configure:6026: checking whether declaration is required for malloc" >&5 +echo "configure:6028: checking whether declaration is required for malloc" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_malloc'+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:6044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_malloc=no else @@ -6059,12 +6061,12 @@ fi echo $ac_n "checking whether declaration is required for free""... $ac_c" 1>&6 -echo "configure:6063: checking whether declaration is required for free" >&5 +echo "configure:6065: checking whether declaration is required for free" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_free'+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:6081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_free=no else @@ -6096,12 +6098,12 @@ fi echo $ac_n "checking whether declaration is required for sbrk""... $ac_c" 1>&6 -echo "configure:6100: checking whether declaration is required for sbrk" >&5 +echo "configure:6102: checking whether declaration is required for sbrk" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_sbrk'+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:6118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_sbrk=no else @@ -6133,12 +6135,12 @@ fi echo $ac_n "checking whether declaration is required for environ""... $ac_c" 1>&6 -echo "configure:6137: checking whether declaration is required for environ" >&5 +echo "configure:6139: checking whether declaration is required for environ" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_environ'+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:6155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_environ=no else @@ -6173,12 +6175,12 @@ fi # for it? echo $ac_n "checking whether declaration is required for errno""... $ac_c" 1>&6 -echo "configure:6177: checking whether declaration is required for errno" >&5 +echo "configure:6179: checking whether declaration is required for errno" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_errno'+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:6199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_errno=no else diff -uprN binutils-2.12.90.0.7/gas/configure.in binutils-2.12.90.0.9/gas/configure.in --- binutils-2.12.90.0.7/gas/configure.in Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/gas/configure.in Sun May 26 09:57:12 2002 @@ -250,6 +250,7 @@ changequote([,])dnl i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;; i386-*-bsd*) fmt=aout em=386bsd ;; i386-*-netbsd0.8) fmt=aout em=386bsd ;; + i386-*-netbsdpe*) fmt=coff em=pe bfd_gas=yes ;; i386-*-netbsd*) em=nbsd bfd_gas=yes case ${cpu} in x86_64) fmt=elf ;; @@ -409,6 +410,7 @@ changequote([,])dnl fmt=coff em=macos ;; ppc-*-netware*) fmt=elf em=ppcnw ;; ppc-*-vxworks*) fmt=elf ;; + ppc-*-windiss*) fmt=elf ;; s390x-*-linux-gnu*) fmt=elf em=linux ;; s390-*-linux-gnu*) fmt=elf em=linux ;; @@ -422,10 +424,10 @@ changequote([,])dnl esac ;; sh*-*-netbsdelf*) fmt=elf em=nbsd ;; sh-*-elf*) fmt=elf ;; - sh-*-coff*) fmt=coff bfd_gas=yes;; + sh-*-coff*) fmt=coff ;; sh-*-pe*) fmt=coff em=pe bfd_gas=yes endian=little ;; sh-*-rtemself*) fmt=elf ;; - sh-*-rtems*) fmt=coff bfd_gas=yes;; + sh-*-rtems*) fmt=coff ;; sh64-*-elf*) fmt=elf ;; ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;; @@ -858,7 +860,7 @@ esac case "${need_bfd}" in yes) BFDLIB=../bfd/libbfd.la - ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h" + ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h' ;; esac diff -uprN binutils-2.12.90.0.7/gas/dep-in.sed binutils-2.12.90.0.9/gas/dep-in.sed --- binutils-2.12.90.0.7/gas/dep-in.sed Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/gas/dep-in.sed Sun May 26 09:57:12 2002 @@ -11,16 +11,16 @@ s!@SRCDIR@/config!$(srcdir)/config!g s!@SRCDIR@/\.\./opcodes!$(srcdir)/../opcodes!g s!@TOPDIR@/opcodes!$(srcdir)/../opcodes!g s!@SRCDIR@/!!g -s! \$(INCDIR)/ansidecl\.h!!g -s! \$(INCDIR)/fopen-same\.h!!g s! \$(srcdir)/config/te-generic\.h!!g s! \.\./bfd/bfd\.h!!g s! itbl-cpu\.h!!g s! itbl-parse\.h!!g s! \$(INCDIR)/bin-bugs\.h!!g +s! \$(INCDIR)/ansidecl\.h!!g s! \$(INCDIR)/libiberty\.h!!g s! \$(INCDIR)/progress\.h!!g +s! \$(INCDIR)/fopen-same\.h!!g s! obj-format\.h!!g s! targ-cpu\.h!!g s! targ-env\.h!!g diff -uprN binutils-2.12.90.0.7/gas/doc/as.texinfo binutils-2.12.90.0.9/gas/doc/as.texinfo --- binutils-2.12.90.0.7/gas/doc/as.texinfo Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/gas/doc/as.texinfo Thu May 23 15:10:11 2002 @@ -4978,6 +4978,8 @@ read-only section executable section @item s shared section (meaningful for PE targets) +@item a +ignored. (For compatibility with the ELF version) @end table If no flags are specified, the default flags depend upon the section name. If diff -uprN binutils-2.12.90.0.7/gas/dwarf2dbg.c binutils-2.12.90.0.9/gas/dwarf2dbg.c --- binutils-2.12.90.0.7/gas/dwarf2dbg.c Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/gas/dwarf2dbg.c Thu May 23 15:10:10 2002 @@ -241,7 +241,7 @@ dwarf2_gen_line_info (ofs, loc) symbols apply to assembler code. It is necessary to emit duplicate line symbols when a compiler asks for them, because GDB uses them to determine the end of the prologue. */ - if (debug_type == DEBUG_DWARF2 + if (debug_type == DEBUG_DWARF2 && line == loc->line && filenum == loc->filenum) return; @@ -286,11 +286,25 @@ dwarf2_emit_insn (size) { struct dwarf2_line_info loc; - if (debug_type != DEBUG_DWARF2 && ! loc_directive_seen) + if (loc_directive_seen) + { + /* Use the last location established by a .loc directive, not + the value returned by dwarf2_where(). That calls as_where() + which will return either the logical input file name (foo.c) + or the physical input file name (foo.s) and not the file name + specified in the most recent .loc directive (eg foo.h). */ + loc = current; + + /* Unless we generate DWARF2 debugging information for each + assembler line, we only emit one line symbol for one LOC. */ + if (debug_type != DEBUG_DWARF2) + loc_directive_seen = false; + } + else if (debug_type != DEBUG_DWARF2) return; - loc_directive_seen = false; + else + dwarf2_where (& loc); - dwarf2_where (&loc); dwarf2_gen_line_info (frag_now_fix () - size, &loc); } @@ -414,7 +428,10 @@ dwarf2_directive_loc (dummy) #ifndef NO_LISTING if (listing) - listing_source_line (line); + { + listing_source_file (files[filenum].filename); + listing_source_line (line); + } #endif } diff -uprN binutils-2.12.90.0.7/gas/ehopt.c binutils-2.12.90.0.9/gas/ehopt.c --- binutils-2.12.90.0.7/gas/ehopt.c Wed May 23 10:55:03 2001 +++ binutils-2.12.90.0.9/gas/ehopt.c Thu May 23 15:10:10 2002 @@ -370,7 +370,7 @@ check_eh_frame (exp, pnbytes) d->state = state_error; else { - int left = (d->aug_size -= *pnbytes); + int left = (d->aug_size -= *pnbytes); if (left == 0) d->state = state_wait_loc4; else if (left < 0) diff -uprN binutils-2.12.90.0.7/gas/expr.c binutils-2.12.90.0.9/gas/expr.c --- binutils-2.12.90.0.7/gas/expr.c Mon Oct 15 21:27:23 2001 +++ binutils-2.12.90.0.9/gas/expr.c Thu May 23 15:10:10 2002 @@ -803,7 +803,7 @@ operand (expressionP) integer_constant ((NUMBERS_WITH_SUFFIX || flag_m68k_mri) ? 0 : 10, - expressionP); + expressionP); break; #ifdef LITERAL_PREFIXDOLLAR_HEX diff -uprN binutils-2.12.90.0.7/gas/flonum-konst.c binutils-2.12.90.0.9/gas/flonum-konst.c --- binutils-2.12.90.0.7/gas/flonum-konst.c Fri Mar 9 11:16:41 2001 +++ binutils-2.12.90.0.9/gas/flonum-konst.c Sun May 26 09:57:12 2002 @@ -1,5 +1,5 @@ /* flonum_const.c - Useful Flonum constants - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 2000 + Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 2000, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -19,7 +19,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include "ansidecl.h" #include "flonum.h" /* JF: I added the last entry to this table, and I'm not sure if its right or not. Could go either way. I wish diff -uprN binutils-2.12.90.0.7/gas/flonum-mult.c binutils-2.12.90.0.9/gas/flonum-mult.c --- binutils-2.12.90.0.7/gas/flonum-mult.c Fri Mar 9 11:16:41 2001 +++ binutils-2.12.90.0.9/gas/flonum-mult.c Sun May 26 09:57:12 2002 @@ -1,5 +1,5 @@ /* flonum_mult.c - multiply two flonums - Copyright 1987, 1990, 1991, 1992, 1995, 2000 + Copyright 1987, 1990, 1991, 1992, 1995, 2000, 2002 Free Software Foundation, Inc. This file is part of Gas, the GNU Assembler. @@ -19,7 +19,7 @@ in a file named COPYING. Among other things, the copyright notice and this notice must be preserved on all copies. */ -#include +#include "ansidecl.h" #include "flonum.h" /* plan for a . b => p(roduct) diff -uprN binutils-2.12.90.0.7/gas/frags.h binutils-2.12.90.0.9/gas/frags.h --- binutils-2.12.90.0.7/gas/frags.h Thu Mar 29 23:28:40 2001 +++ binutils-2.12.90.0.9/gas/frags.h Thu May 23 15:10:10 2002 @@ -38,7 +38,7 @@ struct obstack; of a particular frag}+offset. BUG: it may be smarter to have a single pointer off to various different - notes for different frag kinds. See how code pans. */ + notes for different frag kinds. See how code pans. */ struct frag { /* Object file address (as an octet offset). */ diff -uprN binutils-2.12.90.0.7/gas/gasp.c binutils-2.12.90.0.9/gas/gasp.c --- binutils-2.12.90.0.7/gas/gasp.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/gasp.c Sun May 26 09:57:12 2002 @@ -51,7 +51,7 @@ suitable for gas to consume. #include #include #include -#include +#include "getopt.h" #ifdef HAVE_STDLIB_H #include @@ -575,7 +575,7 @@ is_flonum (idx, string) if (regcomp (®, "^[0-9]*\\.[0-9]+([eE][+-]?[0-9]+)?", REG_EXTENDED) != 0) return 0; - + rc = regexec (®, &buf.ptr[idx], 0, NULL, 0); sb_kill (&buf); regfree (®); diff -uprN binutils-2.12.90.0.7/gas/input-file.c binutils-2.12.90.0.9/gas/input-file.c --- binutils-2.12.90.0.7/gas/input-file.c Mon Oct 15 21:27:23 2001 +++ binutils-2.12.90.0.9/gas/input-file.c Thu May 23 15:10:10 2002 @@ -157,29 +157,29 @@ input_file_open (filename, pre) /* Begins with comment, may not want to preprocess. */ c = getc (f_in); if (c == 'N') - { - fgets (buf, 80, f_in); - if (!strncmp (buf, "O_APP", 5) && ISSPACE (buf[5])) - preprocess = 0; - if (!strchr (buf, '\n')) - ungetc ('#', f_in); /* It was longer. */ - else - ungetc ('\n', f_in); - } + { + fgets (buf, 80, f_in); + if (!strncmp (buf, "O_APP", 5) && ISSPACE (buf[5])) + preprocess = 0; + if (!strchr (buf, '\n')) + ungetc ('#', f_in); /* It was longer. */ + else + ungetc ('\n', f_in); + } else if (c == 'A') - { - fgets (buf, 80, f_in); - if (!strncmp (buf, "PP", 2) && ISSPACE (buf[2])) - preprocess = 1; - if (!strchr (buf, '\n')) - ungetc ('#', f_in); - else - ungetc ('\n', f_in); - } + { + fgets (buf, 80, f_in); + if (!strncmp (buf, "PP", 2) && ISSPACE (buf[2])) + preprocess = 1; + if (!strchr (buf, '\n')) + ungetc ('#', f_in); + else + ungetc ('\n', f_in); + } else if (c == '\n') - ungetc ('\n', f_in); + ungetc ('\n', f_in); else - ungetc ('#', f_in); + ungetc ('#', f_in); } else ungetc (c, f_in); diff -uprN binutils-2.12.90.0.7/gas/listing.c binutils-2.12.90.0.9/gas/listing.c --- binutils-2.12.90.0.7/gas/listing.c Mon Oct 1 15:25:22 2001 +++ binutils-2.12.90.0.9/gas/listing.c Sun May 26 09:57:12 2002 @@ -1,6 +1,6 @@ /* listing.c - mainting assembly listings Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001 + 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -92,7 +92,7 @@ Software Foundation, 59 Temple Place - S */ #include "as.h" -#include +#include "obstack.h" #include "safe-ctype.h" #include "input-file.h" #include "subsegs.h" @@ -616,36 +616,36 @@ calc_hex (list) data_buffer_size += 2; octet_in_frag++; } - if (frag_ptr->fr_type == rs_fill) - { - unsigned int var_rep_max = octet_in_frag; - unsigned int var_rep_idx = octet_in_frag; - - /* Print as many bytes from the variable part as is sensible. */ - while (((offsetT) octet_in_frag - < (frag_ptr->fr_fix + frag_ptr->fr_var * frag_ptr->fr_offset)) - && data_buffer_size < MAX_BYTES - 3) - { - if (address == ~(unsigned int) 0) - { - address = frag_ptr->fr_address / OCTETS_PER_BYTE; - } - sprintf (data_buffer + data_buffer_size, - "%02X", - (frag_ptr->fr_literal[var_rep_idx]) & 0xff); + if (frag_ptr->fr_type == rs_fill) + { + unsigned int var_rep_max = octet_in_frag; + unsigned int var_rep_idx = octet_in_frag; + + /* Print as many bytes from the variable part as is sensible. */ + while (((offsetT) octet_in_frag + < (frag_ptr->fr_fix + frag_ptr->fr_var * frag_ptr->fr_offset)) + && data_buffer_size < MAX_BYTES - 3) + { + if (address == ~(unsigned int) 0) + { + address = frag_ptr->fr_address / OCTETS_PER_BYTE; + } + sprintf (data_buffer + data_buffer_size, + "%02X", + (frag_ptr->fr_literal[var_rep_idx]) & 0xff); #if 0 - data_buffer[data_buffer_size++] = '*'; - data_buffer[data_buffer_size++] = '*'; + data_buffer[data_buffer_size++] = '*'; + data_buffer[data_buffer_size++] = '*'; #endif - data_buffer_size += 2; + data_buffer_size += 2; - var_rep_idx++; - octet_in_frag++; + var_rep_idx++; + octet_in_frag++; - if ((offsetT) var_rep_idx >= frag_ptr->fr_fix + frag_ptr->fr_var) - var_rep_idx = var_rep_max; - } - } + if ((offsetT) var_rep_idx >= frag_ptr->fr_fix + frag_ptr->fr_var) + var_rep_idx = var_rep_max; + } + } frag_ptr = frag_ptr->fr_next; } @@ -1063,7 +1063,7 @@ listing_listing (name) if (!((listing & LISTING_NODEBUG) && debugging_pseudo (list, list->line_contents))) { - print_lines (list, + print_lines (list, list->file->linenum == 0 ? list->line : list->file->linenum, list->line_contents, calc_hex (list)); } diff -uprN binutils-2.12.90.0.7/gas/macro.c binutils-2.12.90.0.9/gas/macro.c --- binutils-2.12.90.0.7/gas/macro.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/gas/macro.c Thu May 23 15:10:10 2002 @@ -383,7 +383,7 @@ get_any_string (idx, in, out, expand, pr idx + 1, in, &val); - sprintf(buf, "%d", val); + sprintf (buf, "%d", val); sb_add_string (out, buf); } else if (in->ptr[idx] == '"' @@ -928,29 +928,29 @@ macro_expand (idx, in, m, out, comment_c /* The macro may be called with an optional qualifier, which may be referred to in the macro body as \0. */ if (idx < in->len && in->ptr[idx] == '.') - { - /* The Microtec assembler ignores this if followed by a white space. - (Macro invocation with empty extension) */ - idx++; - if ( idx < in->len - && in->ptr[idx] != ' ' - && in->ptr[idx] != '\t') - { - formal_entry *n; - - n = (formal_entry *) xmalloc (sizeof (formal_entry)); - sb_new (&n->name); - sb_new (&n->def); - sb_new (&n->actual); - n->index = QUAL_INDEX; - - n->next = m->formals; - m->formals = n; - - idx = get_any_string (idx, in, &n->actual, 1, 0); - } - } - } + { + /* The Microtec assembler ignores this if followed by a white space. + (Macro invocation with empty extension) */ + idx++; + if ( idx < in->len + && in->ptr[idx] != ' ' + && in->ptr[idx] != '\t') + { + formal_entry *n; + + n = (formal_entry *) xmalloc (sizeof (formal_entry)); + sb_new (&n->name); + sb_new (&n->def); + sb_new (&n->actual); + n->index = QUAL_INDEX; + + n->next = m->formals; + m->formals = n; + + idx = get_any_string (idx, in, &n->actual, 1, 0); + } + } + } /* Peel off the actuals and store them away in the hash tables' actuals. */ idx = sb_skip_white (idx, in); diff -uprN binutils-2.12.90.0.7/gas/macro.h binutils-2.12.90.0.9/gas/macro.h --- binutils-2.12.90.0.7/gas/macro.h Fri Mar 9 11:16:43 2001 +++ binutils-2.12.90.0.9/gas/macro.h Thu May 23 15:10:10 2002 @@ -79,7 +79,7 @@ extern const char *define_macro PARAMS ((int idx, sb *in, sb *label, int (*get_line) PARAMS ((sb *)), const char **namep)); extern int check_macro PARAMS ((const char *, sb *, int, const char **, - macro_entry **)); + macro_entry **)); extern void delete_macro PARAMS ((const char *)); extern const char *expand_irp PARAMS ((int, int, sb *, sb *, int (*) PARAMS ((sb *)), int)); diff -uprN binutils-2.12.90.0.7/gas/read.c binutils-2.12.90.0.9/gas/read.c --- binutils-2.12.90.0.7/gas/read.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/gas/read.c Thu May 23 15:10:10 2002 @@ -45,7 +45,7 @@ Software Foundation, 59 Temple Place - S #include "ecoff.h" #ifndef TC_START_LABEL -#define TC_START_LABEL(x,y) (x==':') +#define TC_START_LABEL(x,y) (x == ':') #endif /* Set by the object-format or the target. */ diff -uprN binutils-2.12.90.0.7/gas/stabs.c binutils-2.12.90.0.9/gas/stabs.c --- binutils-2.12.90.0.7/gas/stabs.c Sun Feb 3 11:22:31 2002 +++ binutils-2.12.90.0.9/gas/stabs.c Thu May 23 15:10:10 2002 @@ -240,6 +240,14 @@ s_stab_generic (what, stab_secname, stab other = longint; desc = get_absolute_expression (); + + if ((desc > 0xffff) || (desc < -0x8000)) + /* This could happen for example with a source file with a huge + number of lines. The only cure is to use a different debug + format, probably DWARF. */ + as_warn (_(".stab%c: description field '%x' too big, try a different debug format"), + what, desc); + if (what == 's' || what == 'n') { if (*input_line_pointer != ',') @@ -343,7 +351,7 @@ s_stab_generic (what, stab_secname, stab if (what == 's') { /* Release the string, if nobody else has used the obstack. */ - if (saved_string_obstack_end == notes.next_free) + if (saved_string_obstack_end == notes.next_free) obstack_free (¬es, string); } @@ -580,7 +588,7 @@ stabs_generate_asm_lineno () unsigned int lineno; char *buf; char sym[30]; - /* Remember the last file/line and avoid duplicates. */ + /* Remember the last file/line and avoid duplicates. */ static unsigned int prev_lineno = -1; static char *prev_file = NULL; @@ -593,22 +601,22 @@ stabs_generate_asm_lineno () as_where (&file, &lineno); - /* Don't emit sequences of stabs for the same line. */ + /* Don't emit sequences of stabs for the same line. */ if (prev_file == NULL) { - /* First time thru. */ + /* First time thru. */ prev_file = xstrdup (file); prev_lineno = lineno; } else if (lineno == prev_lineno && strcmp (file, prev_file) == 0) { - /* Same file/line as last time. */ + /* Same file/line as last time. */ return; } else { - /* Remember file/line for next time. */ + /* Remember file/line for next time. */ prev_lineno = lineno; if (strcmp (file, prev_file) != 0) { diff -uprN binutils-2.12.90.0.7/gas/symbols.c binutils-2.12.90.0.9/gas/symbols.c --- binutils-2.12.90.0.7/gas/symbols.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/gas/symbols.c Thu May 23 15:10:10 2002 @@ -439,9 +439,9 @@ colon (sym_name) /* Just seen "x:" - ra #ifdef BFD_ASSEMBLER if (OUTPUT_FLAVOR == bfd_target_aout_flavour) #endif - sprintf(od_buf, "%d.%d.", - S_GET_OTHER (symbolP), - S_GET_DESC (symbolP)); + sprintf (od_buf, "%d.%d.", + S_GET_OTHER (symbolP), + S_GET_DESC (symbolP)); #endif as_bad (_("symbol `%s' is already defined as \"%s\"/%s%ld"), sym_name, @@ -1878,7 +1878,7 @@ S_SET_EXTERNAL (s) { char * file; unsigned int line; - + /* Do not reassign section symbols. */ as_where (& file, & line); as_warn_where (file, line, @@ -2398,7 +2398,7 @@ print_symbol_value_1 (file, sym) segT s = S_GET_SEGMENT (sym); if (s != undefined_section - && s != expr_section) + && s != expr_section) fprintf (file, " %lx", (long) S_GET_VALUE (sym)); } else if (indent_level < max_indent_level diff -uprN binutils-2.12.90.0.7/gas/testsuite/ChangeLog binutils-2.12.90.0.9/gas/testsuite/ChangeLog --- binutils-2.12.90.0.7/gas/testsuite/ChangeLog Tue Apr 23 11:56:30 2002 +++ binutils-2.12.90.0.9/gas/testsuite/ChangeLog Sun May 26 09:57:12 2002 @@ -1,3 +1,68 @@ +2002-05-23 Tom Rix + + * gas/d10v/d10v.exp: Add instruction packing test. + * gas/d10v/instruction_packing.s : New test. + +2002-05-22 Tom Rix + + * gas/d10v/d10v.exp: Renamed from d10.exp. Add address-* tests. + * gas/d10v/address-001.s - address-041.s : New tests. + +2002-05-23 H.J. Lu + + * gas/mips/elf-rel.d: Skip the padding. + * gas/mips/elfel-rel.d: Likewise. + +2002-05-23 H.J. Lu + + * gas/all/align2.d: New. + * gas/all/align2.s: New. + + * gas/all/gas.exp: Run align2. + +2002-05-22 H.J. Lu + + * gas/mips/elf-rel.d: Updated for the subsegs_finish change in + write.c. + * gas/mips/elfel-rel.d: Likewise. + +Wed May 22 14:26:07 2002 J"orn Rennecke + + * gas/sh/pcrel-coff.s: New file. + * gas/sh/pcrel-coff.d: Likewise. + * gas/sh/basic.exp: For coff, don't do dsp test, + and a modified pcrel test. + +2002-05-22 Thiemo Seufer + + * gas/mips/rol64.s: New file, test of drol, dror macros. + * gas/mips/rol64.d: Likewise. + * gas/mips/mips.exp: Add new test. + +2002-05-20 Nick Clifton + + * gas/arm/arm.exp: Replace deprecated command line switches + with their modern equivalents. + * gas/arm/arm7t.d: As above. + * gas/arm/armv1.d: As above. + * gas/arm/fpa-dyadic.d: As above. + * gas/arm/fpa-mem.d: As above. + * gas/arm/fpa-monadic.d: As above. + * gas/arm/inst.d: As above. + * gas/arm/ldconst.d: As above. + * gas/arm/xscale.d: As above. + +2002-05-13 Alan Modra + + * gas/i386/x86-64-opcode.s: Pad out end of .text with zeros. + * gas/i386/x86-64-opcode.d: Adjust. + +2002-05-02 Nick Clifton + + * gas/arm/arm7t.s: Add thumb mode "sub r?, #0" and "add r?, #0". + * gas/arm/arm7t.d: Add expected results. (Make sure that the + subtract is not converted into an add). + 2002-04-23 H.J. Lu * gas/mips/elempic.d: Use empic.l. diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/all/align2.d binutils-2.12.90.0.9/gas/testsuite/gas/all/align2.d --- binutils-2.12.90.0.7/gas/testsuite/gas/all/align2.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/all/align2.d Thu May 23 15:10:11 2002 @@ -0,0 +1,9 @@ +#objdump: -s -j .text +#name: align2 + +# Test the section alignment. + +.*: .* + +Contents of section .text: + 0000 ff[ 0-9a-f]*[ ]+.* diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/all/align2.s binutils-2.12.90.0.9/gas/testsuite/gas/all/align2.s --- binutils-2.12.90.0.7/gas/testsuite/gas/all/align2.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/all/align2.s Thu May 23 15:10:11 2002 @@ -0,0 +1,2 @@ + .p2align 4,0 + .byte 0xff diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/all/gas.exp binutils-2.12.90.0.9/gas/testsuite/gas/all/gas.exp --- binutils-2.12.90.0.7/gas/testsuite/gas/all/gas.exp Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/all/gas.exp Thu May 23 15:10:11 2002 @@ -107,6 +107,7 @@ case $target_triplet in { default { run_dump_test struct run_dump_test align + run_dump_test align2 } } diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/arm/arm.exp binutils-2.12.90.0.9/gas/testsuite/gas/arm/arm.exp --- binutils-2.12.90.0.7/gas/testsuite/gas/arm/arm.exp Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/arm/arm.exp Thu May 23 15:10:11 2002 @@ -21,19 +21,19 @@ if {[istarget *arm*-*-*] || [istarget "x run_dump_test "armv1" - run_errors_test "armv1-bad" "-marm1" "ARM v1 errors" + run_errors_test "armv1-bad" "-mcpu=arm7m" "ARM v1 errors" - gas_test "arm3.s" "-marm3" $stdoptlist "Arm 3 instructions" + gas_test "arm3.s" "-mcpu=arm3" $stdoptlist "Arm 3 instructions" - gas_test "arm6.s" "-marm6" $stdoptlist "Arm 6 instructions" + gas_test "arm6.s" "-mcpu=arm6" $stdoptlist "Arm 6 instructions" - gas_test "arm7dm.s" "-marm7dm" $stdoptlist "Arm 7DM instructions" + gas_test "arm7dm.s" "-mcpu=arm7dm" $stdoptlist "Arm 7DM instructions" run_dump_test "arm7t" - gas_test "thumb.s" "-marm7t" $stdoptlist "Thumb instructions" + gas_test "thumb.s" "-mcpu=arm7t" $stdoptlist "Thumb instructions" - gas_test "arch4t.s" "-marmv4t" $stdoptlist "Arm architecture 4t instructions" + gas_test "arch4t.s" "-march=armv4t" $stdoptlist "Arm architecture 4t instructions" run_dump_test "arch5tej" diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/arm/arm7t.d binutils-2.12.90.0.9/gas/testsuite/gas/arm/arm7t.d --- binutils-2.12.90.0.7/gas/testsuite/gas/arm/arm7t.d Thu Jul 26 18:02:55 2001 +++ binutils-2.12.90.0.9/gas/testsuite/gas/arm/arm7t.d Thu May 23 15:10:11 2002 @@ -1,6 +1,6 @@ #objdump: -dr --prefix-addresses --show-raw-insn #name: ARM arm7t -#as: -marm7t -EL +#as: -mcpu=arm7t -EL # Test the halfword and signextend memory transfers: @@ -66,3 +66,5 @@ Disassembly of section .text: [ ]*dc:.*fred 0+e0 <[^>]*> 0000c0de ? .* 0+e4 <[^>]*> 0000dead ? .* +0+e8 <[^>]*> 3800 sub r0, #0 +0+ea <[^>]*> 3000 add r0, #0 diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/arm/arm7t.s binutils-2.12.90.0.9/gas/testsuite/gas/arm/arm7t.s --- binutils-2.12.90.0.7/gas/testsuite/gas/arm/arm7t.s Mon Nov 1 14:31:31 1999 +++ binutils-2.12.90.0.9/gas/testsuite/gas/arm/arm7t.s Thu May 23 15:10:11 2002 @@ -72,3 +72,11 @@ misc: .align .L2: .word fred + + .ltorg + .thumb + .global thumb_tests + .thumb_func +thumb_tests: + sub r0, #0 + add r0, #0 diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/arm/armv1.d binutils-2.12.90.0.9/gas/testsuite/gas/arm/armv1.d --- binutils-2.12.90.0.7/gas/testsuite/gas/arm/armv1.d Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/arm/armv1.d Thu May 23 15:10:11 2002 @@ -1,6 +1,6 @@ #objdump: -dr --prefix-addresses --show-raw-insn #name: ARM v1 instructions -#as: -marm1 +#as: -mcpu=arm7t # Test the ARM v1 instructions diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/arm/fpa-dyadic.d binutils-2.12.90.0.9/gas/testsuite/gas/arm/fpa-dyadic.d --- binutils-2.12.90.0.7/gas/testsuite/gas/arm/fpa-dyadic.d Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/arm/fpa-dyadic.d Thu May 23 15:10:11 2002 @@ -1,6 +1,6 @@ #objdump: -dr --prefix-addresses --show-raw-insn #name: FPA Dyadic instructions -#as: -mfpe-old +#as: -mfpu=fpa -mcpu=arm7m # Test FPA Dyadic instructions # This test should work for both big and little-endian assembly. diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/arm/fpa-mem.d binutils-2.12.90.0.9/gas/testsuite/gas/arm/fpa-mem.d --- binutils-2.12.90.0.7/gas/testsuite/gas/arm/fpa-mem.d Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/arm/fpa-mem.d Thu May 23 15:10:11 2002 @@ -1,6 +1,6 @@ #objdump: -dr --prefix-addresses --show-raw-insn #name: FPA memory insructions -#as: -mfpa10 +#as: -mfpu=fpa10 -mcpu=arm7m # Test FPA memory instructions # This test should work for both big and little-endian assembly. diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/arm/fpa-monadic.d binutils-2.12.90.0.9/gas/testsuite/gas/arm/fpa-monadic.d --- binutils-2.12.90.0.7/gas/testsuite/gas/arm/fpa-monadic.d Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/arm/fpa-monadic.d Thu May 23 15:10:11 2002 @@ -1,6 +1,6 @@ #objdump: -dr --prefix-addresses --show-raw-insn #name: FPA Monadic instructions -#as: -mfpe-old +#as: -mfpu=fpa -mcpu=arm7m # Test FPA Monadic instructions # This test should work for both big and little-endian assembly. diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/arm/inst.d binutils-2.12.90.0.9/gas/testsuite/gas/arm/inst.d --- binutils-2.12.90.0.7/gas/testsuite/gas/arm/inst.d Thu Jul 26 18:02:55 2001 +++ binutils-2.12.90.0.9/gas/testsuite/gas/arm/inst.d Thu May 23 15:10:11 2002 @@ -1,6 +1,6 @@ #objdump: -dr --prefix-addresses --show-raw-insn #name: ARM basic instructions -#as: -marm2 -EL +#as: -mcpu=arm7m -EL # Test the standard ARM instructions: diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/arm/ldconst.d binutils-2.12.90.0.9/gas/testsuite/gas/arm/ldconst.d --- binutils-2.12.90.0.7/gas/testsuite/gas/arm/ldconst.d Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/arm/ldconst.d Thu May 23 15:10:11 2002 @@ -1,6 +1,6 @@ #objdump: -dr --prefix-addresses --show-raw-insn #name: ARM ldr with immediate constant -#as: -marm2 -EL +#as: -mcpu=arm7m -EL .*: +file format .*arm.* diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/arm/xscale.d binutils-2.12.90.0.9/gas/testsuite/gas/arm/xscale.d --- binutils-2.12.90.0.7/gas/testsuite/gas/arm/xscale.d Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/arm/xscale.d Thu May 23 15:10:11 2002 @@ -1,6 +1,6 @@ #objdump: -dr --prefix-addresses --show-raw-insn #name: XScale instructions -#as: -mxscale -EL +#as: -mcpu=xscale -EL # Test the XScale instructions: diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-001.d binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-001.d --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-001.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-001.d Sun May 26 09:57:12 2002 @@ -0,0 +1,33 @@ +#objdump: -D +#name: D10V supported indirect addressing +#as: + +.*: +file format elf32-d10v + +Disassembly of section .text: + +00000000
: + 0: 78 02 72 04 ldb r0, @r2 -> ldub r0, @r2 + 4: 70 02 62 04 ld r0, @r2 -> ld2w r0, @r2 + 8: 7c 02 68 04 stb r0, @r2 -> st r0, @r2 + c: 75 02 60 05 st2w r0, @r2 -> ld r0, @r2\+ + 10: 71 02 e8 05 ld2w r0, @r2\+ -> st r0, @r2\+ + 14: 75 02 e4 05 st2w r0, @r2\+ -> ld r0, @r2- + 18: 73 02 ec 05 ld2w r0, @r2- -> st r0, @r2- + 1c: 77 02 f0 1e st2w r0, @r2- -> ldb r0, @sp + 20: 79 0f 60 1e ldub r0, @sp -> ld r0, @sp + 24: 71 0f 78 1e ld2w r0, @sp -> stb r0, @sp + 28: 74 0f 6a 1e st r0, @sp -> st2w r0, @sp + 2c: 70 0f e2 1f ld r0, @sp\+ -> ld2w r0, @sp\+ + 30: 74 0f ea 1f st r0, @sp\+ -> st2w r0, @sp\+ + 34: 72 0f e6 1f ld r0, @sp- -> ld2w r0, @sp- + 38: 76 0f ee 1f st r0, @-sp -> st2w r0, @-sp + 3c: f8 02 80 00 ldb r0, @\(-0x8000, r2\) + 40: f9 02 80 00 ldub r0, @\(-0x8000, r2\) + 44: f0 02 80 00 ld r0, @\(-0x8000, r2\) + 48: f1 02 80 00 ld2w r0, @\(-0x8000, r2\) + 4c: fc 02 80 00 stb r0, @\(-0x8000, r2\) + 50: f4 02 80 00 st r0, @\(-0x8000, r2\) + 54: f5 02 80 00 st2w r0, @\(-0x8000, r2\) + 58: 26 0d 5e 00 jmp r13 || nop +Disassembly of section .data: diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-001.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-001.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-001.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-001.s Sun May 26 09:57:12 2002 @@ -0,0 +1,78 @@ + ;; + ;; address-001.s + ;; Test supported indirect addressing + ;; + + .text + .global main +main: + ;; + ;; Indirect + ;; + ldb r0,@r2 + ldub r0,@r2 + ld r0,@r2 + ld2w r0,@r2 + stb r0,@r2 + st r0,@r2 + st2w r0,@r2 + + ;; + ;; Indirect with post increment + ;; + ld r0,@r2+ + ld2w r0,@r2+ + st r0,@r2+ + st2w r0,@r2+ + + ;; + ;; Indirect with postdecrement + ;; + ld r0,@r2- + ld2w r0,@r2- + st r0,@r2- + st2w r0,@r2- + + ;; + ;; Indirect through stackpointer + ;; + ldb r0,@sp + ldub r0,@sp + ld r0,@sp + ld2w r0,@sp + stb r0,@sp + st r0,@sp + st2w r0,@sp + + ;; + ;; Indirect through stackpointer with postincrement + ;; + ld r0,@sp+ + ld2w r0,@sp+ + st r0,@sp+ + st2w r0,@sp+ + + ;; + ;; Indirect through stackpointer with postdecrement + ;; + ld r0,@sp- + ld2w r0,@sp- + + ;; + ;; Indirect through stackpointer with predecrement + ;; + st r0,@-sp + st2w r0,@-sp + + ;; + ;; Indirect with displacement + ;; + ldb r0,@(0x8000,r2) + ldub r0,@(0x8000,r2) + ld r0,@(0x8000,r2) + ld2w r0,@(0x8000,r2) + stb r0,@(0x8000,r2) + st r0,@(0x8000,r2) + st2w r0,@(0x8000,r2) + + jmp r13 diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-002.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-002.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-002.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-002.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-002.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-002.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-002.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-002.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldb r0,@r2+ + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-003.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-003.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-003.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-003.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-003.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-003.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-003.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-003.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldub r0,@r2+ + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-004.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-004.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-004.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-004.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-004.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-004.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-004.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-004.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + stb r0,@r2+ + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-005.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-005.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-005.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-005.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-005.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-005.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-005.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-005.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldb r0,@r2- + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-006.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-006.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-006.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-006.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-006.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-006.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-006.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-006.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldub r0,@r2- + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-007.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-007.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-007.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-007.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-007.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-007.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-007.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-007.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + stb r0,@r2- + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-008.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-008.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-008.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-008.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-008.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-008.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-008.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-008.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldb r0,@+r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-009.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-009.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-009.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-009.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-009.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-009.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-009.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-009.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldub r0,@+r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-010.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-010.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-010.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-010.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-010.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-010.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-010.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-010.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ld r0,@+r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-011.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-011.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-011.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-011.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-011.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-011.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-011.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-011.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ld2w r0,@+r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-012.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-012.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-012.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-012.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-012.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-012.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-012.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-012.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + stb r0,@+r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-013.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-013.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-013.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-013.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-013.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-013.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-013.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-013.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + st r0,@+r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-014.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-014.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-014.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-014.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-014.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-014.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-014.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-014.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + st2w r0,@+r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-015.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-015.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-015.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-015.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-015.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-015.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-015.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-015.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldb r0,@-r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-016.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-016.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-016.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-016.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-016.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-016.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-016.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-016.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldub r0,@-r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-017.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-017.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-017.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-017.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-017.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-017.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-017.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-017.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ld r0,@-r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-018.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-018.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-018.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-018.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-018.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-018.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-018.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-018.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ld2w r0,@-r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-019.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-019.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-019.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-019.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-019.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-019.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-019.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-019.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + stb r0,@-r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-020.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-020.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-020.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-020.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-020.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-020.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-020.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-020.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + st r0,@-r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-021.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-021.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-021.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-021.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-021.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-021.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-021.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-021.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + st2w r0,@-r2 + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-022.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-022.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-022.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-022.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-022.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-022.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-022.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-022.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldb r0,@sp+ + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-023.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-023.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-023.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-023.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-023.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-023.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-023.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-023.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldub r0,@sp+ + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-024.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-024.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-024.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-024.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-024.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-024.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-024.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-024.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + stb r0,@sp+ + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-025.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-025.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-025.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-025.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-025.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-025.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-025.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-025.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldb r0,@sp- + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-026.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-026.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-026.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-026.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-026.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-026.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-026.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-026.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldub r0,@sp- + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-027.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-027.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-027.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-027.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-027.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-027.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-027.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-027.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + stb r0,@sp- + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-028.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-028.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-028.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-028.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: Unsupported use of sp + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-028.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-028.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-028.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-028.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + st r0,@sp- + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-029.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-029.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-029.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-029.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: Unsupported use of sp + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-029.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-029.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-029.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-029.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + st2w r0,@sp- + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-030.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-030.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-030.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-030.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-030.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-030.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-030.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-030.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldb r0,@+sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-031.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-031.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-031.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-031.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-031.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-031.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-031.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-031.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldub r0,@+sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-032.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-032.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-032.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-032.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-032.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-032.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-032.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-032.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ld r0,@+sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-033.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-033.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-033.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-033.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-033.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-033.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-033.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-033.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ld2w r0,@+sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-034.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-034.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-034.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-034.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-034.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-034.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-034.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-034.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + stb r0,@+sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-035.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-035.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-035.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-035.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-035.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-035.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-035.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-035.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + st r0,@+sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-036.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-036.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-036.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-036.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-036.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-036.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-036.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-036.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + st2w r0,@+sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-037.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-037.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-037.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-037.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-037.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-037.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-037.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-037.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldb r0,@-sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-038.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-038.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-038.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-038.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-038.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-038.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-038.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-038.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ldub r0,@-sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-039.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-039.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-039.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-039.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-039.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-039.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-039.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-039.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ld r0,@-sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-040.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-040.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-040.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-040.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-040.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-040.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-040.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-040.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + ld2w r0,@-sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-041.l binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-041.l --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-041.l Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-041.l Sun May 26 09:57:12 2002 @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:6: Error: bad opcode or operands +.*:6: Fatal error: can't find opcode diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-041.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-041.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/address-041.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/address-041.s Sun May 26 09:57:12 2002 @@ -0,0 +1,8 @@ + ;; Test unsupported indirect addressing + + .text + .global main +main: + stb r0,@-sp + jmp r13 + diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/d10.exp binutils-2.12.90.0.9/gas/testsuite/gas/d10v/d10.exp --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/d10.exp Sat Oct 9 09:13:50 1999 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/d10.exp Wed Dec 31 16:00:00 1969 @@ -1,19 +0,0 @@ -# -# Driver for D10V assembler testsuite -# -proc run_list_test { name opts } { - global srcdir subdir - set testname "D10V $name" - set file $srcdir/$subdir/$name - gas_run ${name}.s $opts ">&dump.out" - if {[regexp_diff "dump.out" "${file}.l"] } { - fail $testname - verbose "output is [file_contents "dump.out"]" 2 - return - } - pass $testname -} - -if {[istarget d10v-*-*]} { - run_dump_test "inst" -} diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/d10v.exp binutils-2.12.90.0.9/gas/testsuite/gas/d10v/d10v.exp --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/d10v.exp Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/d10v.exp Sun May 26 09:57:12 2002 @@ -0,0 +1,61 @@ +# +# Driver for D10V assembler testsuite +# +proc run_list_test { name opts } { + global srcdir subdir + set testname "D10V $name" + set file $srcdir/$subdir/$name + gas_run ${name}.s $opts ">&dump.out" + if {[regexp_diff "dump.out" "${file}.l"] } { + fail $testname + verbose "output is [file_contents "dump.out"]" 2 + return + } + pass $testname +} + +if {[istarget d10v-*-*]} { + run_dump_test "inst" + run_dump_test "address-001" + run_list_test "address-002" "" + run_list_test "address-003" "" + run_list_test "address-004" "" + run_list_test "address-005" "" + run_list_test "address-006" "" + run_list_test "address-007" "" + run_list_test "address-008" "" + run_list_test "address-009" "" + run_list_test "address-010" "" + run_list_test "address-011" "" + run_list_test "address-012" "" + run_list_test "address-013" "" + run_list_test "address-014" "" + run_list_test "address-015" "" + run_list_test "address-016" "" + run_list_test "address-017" "" + run_list_test "address-018" "" + run_list_test "address-019" "" + run_list_test "address-020" "" + run_list_test "address-021" "" + run_list_test "address-022" "" + run_list_test "address-023" "" + run_list_test "address-024" "" + run_list_test "address-025" "" + run_list_test "address-026" "" + run_list_test "address-027" "" + run_list_test "address-028" "" + run_list_test "address-029" "" + run_list_test "address-030" "" + run_list_test "address-031" "" + run_list_test "address-032" "" + run_list_test "address-033" "" + run_list_test "address-034" "" + run_list_test "address-035" "" + run_list_test "address-036" "" + run_list_test "address-037" "" + run_list_test "address-038" "" + run_list_test "address-039" "" + run_list_test "address-040" "" + run_list_test "address-041" "" + run_dump_test "instruction_packing" +} diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/instruction_packing.d binutils-2.12.90.0.9/gas/testsuite/gas/d10v/instruction_packing.d --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/instruction_packing.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/instruction_packing.d Sun May 26 09:57:12 2002 @@ -0,0 +1,86 @@ +#objdump: -Dr +#name: D10V intruction packing +#as: -W + +.*: +file format elf32-d10v + +Disassembly of section .text: + +00000000
: + 0: 2f 00 5e 00 nop || nop + +00000004 : + 4: 30 23 24 02 ld r2, @r3 || sra r0, r1 + 8: 24 11 a4 02 bra.s 94 || sra r0, r1 + +0000000c : + c: 30 23 24 02 ld r2, @r3 || sra r0, r1 + 10: 24 10 a4 02 bra.s 94 || sra r0, r1 + +00000014 : + 14: 30 23 02 8a ld r2, @r3 || add r4, r5 + 18: 24 0f 82 8a bra.s 94 || add r4, r5 + +0000001c : + 1c: 01 45 24 02 add r4, r5 || sra r0, r1 + 20: 01 45 2c ce add r4, r5 || mulx a0, r6, r7 + +00000024 : + 24: 30 23 02 8a ld r2, @r3 || add r4, r5 + 28: 24 0d 82 8a bra.s 94 || add r4, r5 + +0000002c : + 2c: 01 45 24 02 add r4, r5 || sra r0, r1 + 30: 01 45 2c ce add r4, r5 || mulx a0, r6, r7 + +00000034 : + 34: b0 23 24 02 ld r2, @r3 <- sra r0, r1 + 38: a4 0b a4 02 bra.s 94 <- sra r0, r1 + +0000003c : + 3c: 70 23 24 02 ld r2, @r3 -> sra r0, r1 + 40: 64 0a a4 02 bra.s 94 -> sra r0, r1 + +00000044 : + 44: 41 45 60 46 add r4, r5 -> ld r2, @r3 + 48: 41 45 48 13 add r4, r5 -> bra.s 94 + +0000004c : + 4c: 41 45 24 02 add r4, r5 -> sra r0, r1 + 50: 41 45 2c ce add r4, r5 -> mulx a0, r6, r7 + +00000054 : + 54: 70 23 02 8a ld r2, @r3 -> add r4, r5 + 58: 64 07 82 8a bra.s 94 -> add r4, r5 + +0000005c : + 5c: 81 45 24 02 add r4, r5 <- sra r0, r1 + 60: 81 45 2c ce add r4, r5 <- mulx a0, r6, r7 + +00000064 : + 64: 70 23 24 02 ld r2, @r3 -> sra r0, r1 + 68: 64 05 a4 02 bra.s 94 -> sra r0, r1 + +0000006c : + 6c: b0 23 24 02 ld r2, @r3 <- sra r0, r1 + 70: a4 04 a4 02 bra.s 94 <- sra r0, r1 + +00000074 : + 74: 70 23 02 8a ld r2, @r3 -> add r4, r5 + 78: 64 03 82 8a bra.s 94 -> add r4, r5 + +0000007c : + 7c: 81 45 24 02 add r4, r5 <- sra r0, r1 + 80: 81 45 2c ce add r4, r5 <- mulx a0, r6, r7 + +00000084 : + 84: b0 23 02 8a ld r2, @r3 <- add r4, r5 + 88: a4 01 82 8a bra.s 94 <- add r4, r5 + +0000008c : + 8c: 92 01 02 8a sra r0, r1 <- add r4, r5 + 90: 96 67 02 8a mulx a0, r6, r7 <- add r4, r5 + +00000094 : + 94: 26 0d 5e 00 jmp r13 || nop +Disassembly of section .data: diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/d10v/instruction_packing.s binutils-2.12.90.0.9/gas/testsuite/gas/d10v/instruction_packing.s --- binutils-2.12.90.0.7/gas/testsuite/gas/d10v/instruction_packing.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/d10v/instruction_packing.s Sun May 26 09:57:12 2002 @@ -0,0 +1,83 @@ + ;; Test instruction packing + + .text + .global main +main: + +MU_IU: + nop || nop + +FM00_IU_MU: + sra r0,r1 || ld r2,@r3 + sra r0,r1 || bra.s test_end + +FM00_MU_IU: + ld r2,@r3 || sra r0,r1 + bra.s test_end || sra r0,r1 + +FM00_IM_MU: + add r4,r5 || ld r2,@r3 + add r4,r5 || bra.s test_end + +FM00_IM_IU: + add r4,r5 || sra r0,r1 + add r4,r5 || mulx a0, r6, r7 + +FM00_MU_IM: + ld r2,@r3 || add r4,r5 + bra.s test_end || add r4,r5 + +FM00_IU_IM: + sra r0,r1 || add r4,r5 + mulx a0, r6, r7 || add r4,r5 + +FM01_IU_MU: + sra r0,r1 -> ld r2,@r3 + sra r0,r1 -> bra.s test_end + +FM01_MU_IU: + ld r2,@r3 -> sra r0,r1 + bra.s test_end -> sra r0,r1 + +FM01_IM_MU: + add r4,r5 -> ld r2,@r3 + add r4,r5 -> bra.s test_end + +FM01_IM_IU: + add r4,r5 -> sra r0,r1 + add r4,r5 -> mulx a0, r6, r7 + +FM01_MU_IM: + ld r2,@r3 -> add r4,r5 + bra.s test_end -> add r4,r5 + +FM01_IU_IM: + sra r0,r1 -> add r4,r5 + mulx a0, r6, r7 -> add r4,r5 + +FM10_IU_MU: + sra r0,r1 <- ld r2,@r3 + sra r0,r1 <- bra.s test_end + +FM10_MU_IU: + ld r2,@r3 <- sra r0,r1 + bra.s test_end <- sra r0,r1 + +FM10_IM_MU: + add r4,r5 <- ld r2,@r3 + add r4,r5 <- bra.s test_end + +FM10_IM_IU: + add r4,r5 <- sra r0,r1 + add r4,r5 <- mulx a0, r6, r7 + +FM10_MU_IM: + ld r2,@r3 <- add r4,r5 + bra.s test_end <- add r4,r5 + +FM10_IU_IM: + sra r0,r1 <- add r4,r5 + mulx a0, r6, r7 <- add r4,r5 +test_end: + + jmp r13 diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/i386/i386.exp binutils-2.12.90.0.9/gas/testsuite/gas/i386/i386.exp --- binutils-2.12.90.0.7/gas/testsuite/gas/i386/i386.exp Thu Mar 7 11:52:38 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/i386/i386.exp Thu May 23 15:10:11 2002 @@ -75,6 +75,9 @@ if [expr ([istarget "i*86-*-*"] || [ist && ![istarget *-*-linux*oldld*]) } then { run_dump_test "relax" + run_dump_test "tlsd" + run_dump_test "tlspic" + run_dump_test "tlsnopic" } set ASFLAGS "$old_ASFLAGS" diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlsd.d binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlsd.d --- binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlsd.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlsd.d Thu May 23 15:10:11 2002 @@ -0,0 +1,33 @@ +#objdump: -dr +#name: i386 dynamic tls + +.*: +file format .* + +Disassembly of section .text: + +0+000 : + 0: 55 [ ]*push %ebp + 1: 89 e5 [ ]*mov %esp,%ebp + 3: 53 [ ]*push %ebx + 4: 50 [ ]*push %eax + 5: e8 00 00 00 00 [ ]*call a + a: 5b [ ]*pop %ebx + b: 81 c3 03 00 00 00 [ ]*add \$0x3,%ebx +[ ]+d: R_386_GOTPC _GLOBAL_OFFSET_TABLE_ + 11: 8d 04 1d 00 00 00 00 [ ]*lea 0x0\(,%ebx,1\),%eax +[ ]+14: R_386_TLS_GD foo + 18: e8 fc ff ff ff [ ]*call 19 +[ ]+19: R_386_PLT32 ___tls_get_addr + 1d: 8d 83 00 00 00 00 [ ]*lea 0x0\(%ebx\),%eax +[ ]+1f: R_386_TLS_LDM bar + 23: e8 fc ff ff ff [ ]*call 24 +[ ]+24: R_386_PLT32 ___tls_get_addr + 28: 8d 7f 00 [ ]*lea 0x0\(%edi\),%edi + 2b: 8d 90 00 00 00 00 [ ]*lea 0x0\(%eax\),%edx +[ ]+2d: R_386_TLS_LDO_32 bar + 31: 8d 76 00 [ ]*lea 0x0\(%esi\),%esi + 34: 8d 88 00 00 00 00 [ ]*lea 0x0\(%eax\),%ecx +[ ]+36: R_386_TLS_LDO_32 baz + 3a: 8b 5d fc [ ]*mov 0xfffffffc\(%ebp\),%ebx + 3d: c9 [ ]*leave[ ]* + 3e: c3 [ ]*ret[ ]* diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlsd.s binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlsd.s --- binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlsd.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlsd.s Thu May 23 15:10:11 2002 @@ -0,0 +1,42 @@ + .section ".tdata", "awT", @progbits + .globl foo, baz + .hidden baz +foo: .long 25 +bar: .long 27 +baz: .long 29 + .text + .globl fn + .type fn,@function +fn: + pushl %ebp + movl %esp, %ebp + pushl %ebx + pushl %eax + call 1f +1: popl %ebx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx + + /* Dynamic TLS model, foo not known to be in the current object */ + leal foo@TLSGD(,%ebx,1), %eax + call ___tls_get_addr@PLT + /* %eax now contains &foo */ + + /* Dynamic TLS model, bar and baz known to be in the current object */ + leal bar@TLSLDM(%ebx), %eax + call ___tls_get_addr@PLT + + /* Just show that there can be arbitrary instructions here */ + leal 0(%edi, 1), %edi + + leal bar@DTPOFF(%eax), %edx + /* %edx now contains &bar */ + + /* Again, arbitrary instructions */ + leal 0(%esi, 1), %esi + + leal baz@DTPOFF(%eax), %ecx + /* %ecx now contains &baz */ + + movl -4(%ebp), %ebx + leave + ret diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlsnopic.d binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlsnopic.d --- binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlsnopic.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlsnopic.d Thu May 23 15:10:11 2002 @@ -0,0 +1,31 @@ +#objdump: -dr +#name: i386 non-pic tls + +.*: +file format .* + +Disassembly of section .text: + +0+000 : + 0: 8b 15 00 00 00 00 [ ]*mov 0x0,%edx +[ ]+2: R_386_32 .text + 6: 81 c2 08 00 00 00 [ ]*add \$0x8,%edx +[ ]+8: R_386_GOTPC _GLOBAL_OFFSET_TABLE_ + c: 65 a1 00 00 00 00 [ ]*mov %gs:0x0,%eax + 12: 2b 82 00 00 00 00 [ ]*sub 0x0\(%edx\),%eax +[ ]+14: R_386_TLS_IE_32 foo + 18: 65 a1 00 00 00 00 [ ]*mov %gs:0x0,%eax + 1e: 2d 00 00 00 00 [ ]*sub \$0x0,%eax +[ ]+1f: R_386_TLS_LE_32 bar + 23: 65 8b 0d 00 00 00 00 [ ]*mov %gs:0x0,%ecx + 2a: 90 [ ]*nop[ ]* + 2b: 81 e9 00 00 00 00 [ ]*sub \$0x0,%ecx +[ ]+2d: R_386_TLS_LE_32 baz + 31: 65 8b 0d 00 00 00 00 [ ]*mov %gs:0x0,%ecx + 38: 90 [ ]*nop + 39: 90 [ ]*nop + 3a: 8d 81 00 00 00 00 [ ]*lea 0x0\(%ecx\),%eax +[ ]+3c: R_386_TLS_LE var + 40: 90 [ ]*nop + 41: 8d 91 00 00 00 00 lea 0x0\(%ecx\),%edx +[ ]+43: R_386_TLS_LE var2 + 47: c3 [ ]*ret[ ]* diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlsnopic.s binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlsnopic.s --- binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlsnopic.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlsnopic.s Thu May 23 15:10:11 2002 @@ -0,0 +1,45 @@ + .section ".tdata", "awT", @progbits + .globl baz + .hidden baz + .globl var + .hidden var2 +bar: .long 27 +baz: .long 29 +var: .long 31 +var2: .long 33 + .text + .globl fn + .type fn,@function +fn: + /* Main binary, no PIC */ +1: movl 1b, %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx + + /* foo can be anywhere in startup TLS */ + movl %gs:0, %eax + subl foo@GOTTPOFF(%edx), %eax + /* %eax now contains &foo */ + + /* bar only in the main program */ + movl %gs:0, %eax + subl $bar@TPOFF, %eax + /* %eax now contains &bar */ + + /* baz only in the main program */ + movl %gs:0, %ecx + /* Arbitrary instructions in between */ + nop + subl $baz@TPOFF, %ecx + /* %ecx now contains &baz */ + + /* var and var2 only in the main program */ + movl %gs:0, %ecx + /* Arbitrary instructions in between */ + nop + nop + leal var@NTPOFF(%ecx), %eax + /* Arbitrary instructions in between */ + nop + leal var2@NTPOFF(%ecx), %edx + + ret diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlspic.d binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlspic.d --- binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlspic.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlspic.d Thu May 23 15:10:11 2002 @@ -0,0 +1,23 @@ +#objdump: -dr +#name: i386 non-pic tls + +.*: +file format .* + +Disassembly of section .text: + +0+000 : + 0: 55 [ ]*push %ebp + 1: 89 e5 [ ]*mov %esp,%ebp + 3: 53 [ ]*push %ebx + 4: 50 [ ]*push %eax + 5: e8 00 00 00 00 [ ]*call a + a: 5b [ ]*pop %ebx + b: 81 c3 03 00 00 00 [ ]*add \$0x3,%ebx +[ ]+d: R_386_GOTPC _GLOBAL_OFFSET_TABLE_ + 11: 65 a1 00 00 00 00 [ ]*mov %gs:0x0,%eax + 17: 8d 76 00 [ ]*lea 0x0\(%esi\),%esi + 1a: 2b 83 00 00 00 00 [ ]*sub 0x0\(%ebx\),%eax +[ ]+1c: R_386_TLS_IE_32 foo + 20: 8b 5d fc [ ]*mov 0xfffffffc\(%ebp\),%ebx + 23: c9 [ ]*leave[ ]* + 24: c3 [ ]*ret[ ]* diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlspic.s binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlspic.s --- binutils-2.12.90.0.7/gas/testsuite/gas/i386/tlspic.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/i386/tlspic.s Thu May 23 15:10:11 2002 @@ -0,0 +1,27 @@ + .section ".tdata", "awT", @progbits + .globl foo +foo: .long 25 + .text + .globl fn + .type fn,@function +fn: + pushl %ebp + movl %esp, %ebp + pushl %ebx + pushl %eax + call 1f +1: popl %ebx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx + + /* foo can be anywhere in the startup TLS */ + movl %gs:0, %eax + + /* Arbitrary instructions in between */ + leal 0(%esi, 1), %esi + + subl foo@GOTTPOFF(%ebx), %eax + /* %eax now contains &foo */ + + movl -4(%ebp), %ebx + leave + ret diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/i386/x86-64-opcode.d binutils-2.12.90.0.9/gas/testsuite/gas/i386/x86-64-opcode.d --- binutils-2.12.90.0.7/gas/testsuite/gas/i386/x86-64-opcode.d Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/i386/x86-64-opcode.d Thu May 23 15:10:11 2002 @@ -266,6 +266,4 @@ Disassembly of section .text: [ ]*43a:[ ]+e6 00[ ]+out[ ]+%al,\$0[x0]*[ ]*(#.*)* [ ]*43c:[ ]+66 e7 00[ ]+out[ ]+%ax,\$0[x0]*[ ]*(#.*)* [ ]*43f:[ ]+e7 00[ ]+out[ ]+%eax,\$0[x0]*[ ]*(#.*)* -.*nop.* -.*nop.* -.*nop.* +[ *]... diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/i386/x86-64-opcode.s binutils-2.12.90.0.9/gas/testsuite/gas/i386/x86-64-opcode.s --- binutils-2.12.90.0.7/gas/testsuite/gas/i386/x86-64-opcode.s Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/i386/x86-64-opcode.s Thu May 23 15:10:11 2002 @@ -386,3 +386,5 @@ OUT %eax,$0 # -- -- -- -- E7 00 # IN + + .p2align 4,0 diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/ia64/ia64.exp binutils-2.12.90.0.9/gas/testsuite/gas/ia64/ia64.exp --- binutils-2.12.90.0.7/gas/testsuite/gas/ia64/ia64.exp Sun Apr 23 09:41:25 2000 +++ binutils-2.12.90.0.9/gas/testsuite/gas/ia64/ia64.exp Thu May 23 15:10:11 2002 @@ -35,4 +35,5 @@ if [istarget "ia64-*"] then { run_dump_test "dv-mutex" run_dump_test "dv-safe" run_dump_test "dv-srlz" + run_dump_test "tls" } diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/ia64/tls.d binutils-2.12.90.0.9/gas/testsuite/gas/ia64/tls.d --- binutils-2.12.90.0.7/gas/testsuite/gas/ia64/tls.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/ia64/tls.d Thu May 23 15:10:11 2002 @@ -0,0 +1,53 @@ +#objdump: -dr +#name: ia64 tls + +.*: +file format .* + +Disassembly of section \.text: + +0000000000000000 : + 0: 0d 20 21 0a 80 05 \[MFI\] alloc r36=ar\.pfs,8,5,0 + 2: LTOFF_TPREL22 x + 6: 00 00 00 02 00 00 nop\.f 0x0 + c: 04 08 00 90 addl r32=0,r1;; + 10: 0b 00 01 40 18 10 \[MMI\] ld8 r32=\[r32\];; + 16: 10 02 35 00 40 00 add r33=r32,r13 + 1c: 00 00 04 00 nop\.i 0x0;; + 20: 0b 10 00 1a 00 21 \[MMI\] mov r2=r13;; + 21: TPREL22 y + 26: 10 02 08 00 48 00 addl r33=0,r2 + 2c: 00 00 04 00 nop\.i 0x0;; + 30: 01 00 01 02 00 21 \[MII\] mov r32=r1 + 31: LTOFF_DTPMOD22 z + 32: LTOFF_DTPREL22 z + 36: 50 02 04 00 48 c0 addl r37=0,r1 + 3c: 04 08 00 90 addl r38=0,r1;; + 40: 19 28 01 4a 18 10 \[MMB\] ld8 r37=\[r37\] + 42: PCREL21B __tls_get_addr + 46: 60 02 98 30 20 00 ld8 r38=\[r38\] + 4c: 08 00 00 50 br\.call\.sptk\.many b0=40 ;; + 50: 0b 08 00 40 00 21 \[MMI\] mov r1=r32;; + 51: LTOFF_DTPMOD22 a + 52: DTPREL22 a + 56: 50 02 04 00 48 c0 addl r37=0,r1 + 5c: 04 00 00 90 mov r38=0;; + 60: 1d 28 01 4a 18 10 \[MFB\] ld8 r37=\[r37\] + 62: PCREL21B __tls_get_addr + 66: 00 00 00 02 00 00 nop\.f 0x0 + 6c: 08 00 00 50 br\.call\.sptk\.many b0=60 ;; + 70: 0b 08 00 40 00 21 \[MMI\] mov r1=r32;; + 71: LTOFF_DTPMOD22 b + 76: 50 02 04 00 48 c0 addl r37=0,r1 + 7c: 04 00 00 84 mov r38=r0;; + 80: 1d 28 01 4a 18 10 \[MFB\] ld8 r37=\[r37\] + 82: PCREL21B __tls_get_addr + 86: 00 00 00 02 00 00 nop\.f 0x0 + 8c: 08 00 00 50 br\.call\.sptk\.many b0=80 ;; + 90: 02 08 00 40 00 21 \[MII\] mov r1=r32 + 92: DTPREL22 b + 96: 20 00 20 00 42 20 mov r2=r8;; + 9c: 04 10 00 90 addl r33=0,r2 + a0: 1d 10 01 04 00 24 \[MFB\] addl r34=0,r2 + a0: DTPREL22 c + a6: 00 00 00 02 00 80 nop\.f 0x0 + ac: 08 00 84 00 br\.ret\.sptk\.many b0;; diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/ia64/tls.s binutils-2.12.90.0.9/gas/testsuite/gas/ia64/tls.s --- binutils-2.12.90.0.7/gas/testsuite/gas/ia64/tls.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/ia64/tls.s Thu May 23 15:10:11 2002 @@ -0,0 +1,64 @@ + .section ".tdata", "awT", @progbits + .align 16 + .global x#, y#, z#, a#, b#, c# + .protected a#, b#, c# + .type x#,@object + .size x#,4 +x: data4 1 + .type y#,@object + .size y#,4 +y: data4 2 + .type z#,@object + .size z#,4 +z: data4 3 + .align 8 + .type a#,@object + .size a#,8 +a: data8 4 + .type b#,@object + .size b#,8 +b: data8 5 + .type c#,@object + .size c#,1 +c: data1 6 + + .text + .align 16 + .global foo# + .proc foo# +foo: + .prologue + alloc r36 = ar.pfs, 0, 5, 3, 0 + .body + addl loc0 = @ltoff(@tprel(x)), gp;; + ld8 loc0 = [loc0];; + add loc1 = loc0, r13;; + + mov r2 = r13;; + addl loc1 = @tprel(y), r2;; + + mov loc0 = gp + addl out0 = @ltoff(@dtpmod(z)), gp + addl out1 = @ltoff(@dtprel(z)), gp;; + ld8 out0 = [out0] + ld8 out1 = [out1] + br.call.sptk.many b0 = __tls_get_addr;; + mov gp = loc0;; + + addl out0 = @ltoff(@dtpmod(a)), gp + addl out1 = @dtprel(a), r0;; + ld8 out0 = [out0] + br.call.sptk.many b0 = __tls_get_addr;; + mov gp = loc0;; + + addl out0 = @ltoff(@dtpmod(b)), gp + mov out1 = r0;; + ld8 out0 = [out0] + br.call.sptk.many b0 = __tls_get_addr;; + mov gp = loc0 + mov r2 = ret0;; + addl loc1 = @dtprel(b), r2 + addl loc2 = @dtprel(c), r2 + + br.ret.sptk.many b0 + .endp foo# diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/mips/elf-rel.d binutils-2.12.90.0.9/gas/testsuite/gas/mips/elf-rel.d --- binutils-2.12.90.0.7/gas/testsuite/gas/mips/elf-rel.d Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/mips/elf-rel.d Thu May 23 15:10:11 2002 @@ -55,2042 +55,4 @@ Contents of section \.text: 0060 3c010001 3c010001 3c010002 3c010002 .* 0070 3c010001 3c010001 2021bffe 2021c002 .* 0080 2021bffe 2021c002 20213ffe 2021bffa .* - 0090 00000000 00000000 00000000 00000000 ................ - 00a0 00000000 00000000 00000000 00000000 ................ - 00b0 00000000 00000000 00000000 00000000 ................ - 00c0 00000000 00000000 00000000 00000000 ................ - 00d0 00000000 00000000 00000000 00000000 ................ - 00e0 00000000 00000000 00000000 00000000 ................ - 00f0 00000000 00000000 00000000 00000000 ................ - 0100 00000000 00000000 00000000 00000000 ................ - 0110 00000000 00000000 00000000 00000000 ................ - 0120 00000000 00000000 00000000 00000000 ................ - 0130 00000000 00000000 00000000 00000000 ................ - 0140 00000000 00000000 00000000 00000000 ................ - 0150 00000000 00000000 00000000 00000000 ................ - 0160 00000000 00000000 00000000 00000000 ................ - 0170 00000000 00000000 00000000 00000000 ................ - 0180 00000000 00000000 00000000 00000000 ................ - 0190 00000000 00000000 00000000 00000000 ................ - 01a0 00000000 00000000 00000000 00000000 ................ - 01b0 00000000 00000000 00000000 00000000 ................ - 01c0 00000000 00000000 00000000 00000000 ................ - 01d0 00000000 00000000 00000000 00000000 ................ - 01e0 00000000 00000000 00000000 00000000 ................ - 01f0 00000000 00000000 00000000 00000000 ................ - 0200 00000000 00000000 00000000 00000000 ................ - 0210 00000000 00000000 00000000 00000000 ................ - 0220 00000000 00000000 00000000 00000000 ................ - 0230 00000000 00000000 00000000 00000000 ................ - 0240 00000000 00000000 00000000 00000000 ................ - 0250 00000000 00000000 00000000 00000000 ................ - 0260 00000000 00000000 00000000 00000000 ................ - 0270 00000000 00000000 00000000 00000000 ................ - 0280 00000000 00000000 00000000 00000000 ................ - 0290 00000000 00000000 00000000 00000000 ................ - 02a0 00000000 00000000 00000000 00000000 ................ - 02b0 00000000 00000000 00000000 00000000 ................ - 02c0 00000000 00000000 00000000 00000000 ................ - 02d0 00000000 00000000 00000000 00000000 ................ - 02e0 00000000 00000000 00000000 00000000 ................ - 02f0 00000000 00000000 00000000 00000000 ................ - 0300 00000000 00000000 00000000 00000000 ................ - 0310 00000000 00000000 00000000 00000000 ................ - 0320 00000000 00000000 00000000 00000000 ................ - 0330 00000000 00000000 00000000 00000000 ................ - 0340 00000000 00000000 00000000 00000000 ................ - 0350 00000000 00000000 00000000 00000000 ................ - 0360 00000000 00000000 00000000 00000000 ................ - 0370 00000000 00000000 00000000 00000000 ................ - 0380 00000000 00000000 00000000 00000000 ................ - 0390 00000000 00000000 00000000 00000000 ................ - 03a0 00000000 00000000 00000000 00000000 ................ - 03b0 00000000 00000000 00000000 00000000 ................ - 03c0 00000000 00000000 00000000 00000000 ................ - 03d0 00000000 00000000 00000000 00000000 ................ - 03e0 00000000 00000000 00000000 00000000 ................ - 03f0 00000000 00000000 00000000 00000000 ................ - 0400 00000000 00000000 00000000 00000000 ................ - 0410 00000000 00000000 00000000 00000000 ................ - 0420 00000000 00000000 00000000 00000000 ................ - 0430 00000000 00000000 00000000 00000000 ................ - 0440 00000000 00000000 00000000 00000000 ................ - 0450 00000000 00000000 00000000 00000000 ................ - 0460 00000000 00000000 00000000 00000000 ................ - 0470 00000000 00000000 00000000 00000000 ................ - 0480 00000000 00000000 00000000 00000000 ................ - 0490 00000000 00000000 00000000 00000000 ................ - 04a0 00000000 00000000 00000000 00000000 ................ - 04b0 00000000 00000000 00000000 00000000 ................ - 04c0 00000000 00000000 00000000 00000000 ................ - 04d0 00000000 00000000 00000000 00000000 ................ - 04e0 00000000 00000000 00000000 00000000 ................ - 04f0 00000000 00000000 00000000 00000000 ................ - 0500 00000000 00000000 00000000 00000000 ................ - 0510 00000000 00000000 00000000 00000000 ................ - 0520 00000000 00000000 00000000 00000000 ................ - 0530 00000000 00000000 00000000 00000000 ................ - 0540 00000000 00000000 00000000 00000000 ................ - 0550 00000000 00000000 00000000 00000000 ................ - 0560 00000000 00000000 00000000 00000000 ................ - 0570 00000000 00000000 00000000 00000000 ................ - 0580 00000000 00000000 00000000 00000000 ................ - 0590 00000000 00000000 00000000 00000000 ................ - 05a0 00000000 00000000 00000000 00000000 ................ - 05b0 00000000 00000000 00000000 00000000 ................ - 05c0 00000000 00000000 00000000 00000000 ................ - 05d0 00000000 00000000 00000000 00000000 ................ - 05e0 00000000 00000000 00000000 00000000 ................ - 05f0 00000000 00000000 00000000 00000000 ................ - 0600 00000000 00000000 00000000 00000000 ................ - 0610 00000000 00000000 00000000 00000000 ................ - 0620 00000000 00000000 00000000 00000000 ................ - 0630 00000000 00000000 00000000 00000000 ................ - 0640 00000000 00000000 00000000 00000000 ................ - 0650 00000000 00000000 00000000 00000000 ................ - 0660 00000000 00000000 00000000 00000000 ................ - 0670 00000000 00000000 00000000 00000000 ................ - 0680 00000000 00000000 00000000 00000000 ................ - 0690 00000000 00000000 00000000 00000000 ................ - 06a0 00000000 00000000 00000000 00000000 ................ - 06b0 00000000 00000000 00000000 00000000 ................ - 06c0 00000000 00000000 00000000 00000000 ................ - 06d0 00000000 00000000 00000000 00000000 ................ - 06e0 00000000 00000000 00000000 00000000 ................ - 06f0 00000000 00000000 00000000 00000000 ................ - 0700 00000000 00000000 00000000 00000000 ................ - 0710 00000000 00000000 00000000 00000000 ................ - 0720 00000000 00000000 00000000 00000000 ................ - 0730 00000000 00000000 00000000 00000000 ................ - 0740 00000000 00000000 00000000 00000000 ................ - 0750 00000000 00000000 00000000 00000000 ................ - 0760 00000000 00000000 00000000 00000000 ................ - 0770 00000000 00000000 00000000 00000000 ................ - 0780 00000000 00000000 00000000 00000000 ................ - 0790 00000000 00000000 00000000 00000000 ................ - 07a0 00000000 00000000 00000000 00000000 ................ - 07b0 00000000 00000000 00000000 00000000 ................ - 07c0 00000000 00000000 00000000 00000000 ................ - 07d0 00000000 00000000 00000000 00000000 ................ - 07e0 00000000 00000000 00000000 00000000 ................ - 07f0 00000000 00000000 00000000 00000000 ................ - 0800 00000000 00000000 00000000 00000000 ................ - 0810 00000000 00000000 00000000 00000000 ................ - 0820 00000000 00000000 00000000 00000000 ................ - 0830 00000000 00000000 00000000 00000000 ................ - 0840 00000000 00000000 00000000 00000000 ................ - 0850 00000000 00000000 00000000 00000000 ................ - 0860 00000000 00000000 00000000 00000000 ................ - 0870 00000000 00000000 00000000 00000000 ................ - 0880 00000000 00000000 00000000 00000000 ................ - 0890 00000000 00000000 00000000 00000000 ................ - 08a0 00000000 00000000 00000000 00000000 ................ - 08b0 00000000 00000000 00000000 00000000 ................ - 08c0 00000000 00000000 00000000 00000000 ................ - 08d0 00000000 00000000 00000000 00000000 ................ - 08e0 00000000 00000000 00000000 00000000 ................ - 08f0 00000000 00000000 00000000 00000000 ................ - 0900 00000000 00000000 00000000 00000000 ................ - 0910 00000000 00000000 00000000 00000000 ................ - 0920 00000000 00000000 00000000 00000000 ................ - 0930 00000000 00000000 00000000 00000000 ................ - 0940 00000000 00000000 00000000 00000000 ................ - 0950 00000000 00000000 00000000 00000000 ................ - 0960 00000000 00000000 00000000 00000000 ................ - 0970 00000000 00000000 00000000 00000000 ................ - 0980 00000000 00000000 00000000 00000000 ................ - 0990 00000000 00000000 00000000 00000000 ................ - 09a0 00000000 00000000 00000000 00000000 ................ - 09b0 00000000 00000000 00000000 00000000 ................ - 09c0 00000000 00000000 00000000 00000000 ................ - 09d0 00000000 00000000 00000000 00000000 ................ - 09e0 00000000 00000000 00000000 00000000 ................ - 09f0 00000000 00000000 00000000 00000000 ................ - 0a00 00000000 00000000 00000000 00000000 ................ - 0a10 00000000 00000000 00000000 00000000 ................ - 0a20 00000000 00000000 00000000 00000000 ................ - 0a30 00000000 00000000 00000000 00000000 ................ - 0a40 00000000 00000000 00000000 00000000 ................ - 0a50 00000000 00000000 00000000 00000000 ................ - 0a60 00000000 00000000 00000000 00000000 ................ - 0a70 00000000 00000000 00000000 00000000 ................ - 0a80 00000000 00000000 00000000 00000000 ................ - 0a90 00000000 00000000 00000000 00000000 ................ - 0aa0 00000000 00000000 00000000 00000000 ................ - 0ab0 00000000 00000000 00000000 00000000 ................ - 0ac0 00000000 00000000 00000000 00000000 ................ - 0ad0 00000000 00000000 00000000 00000000 ................ - 0ae0 00000000 00000000 00000000 00000000 ................ - 0af0 00000000 00000000 00000000 00000000 ................ - 0b00 00000000 00000000 00000000 00000000 ................ - 0b10 00000000 00000000 00000000 00000000 ................ - 0b20 00000000 00000000 00000000 00000000 ................ - 0b30 00000000 00000000 00000000 00000000 ................ - 0b40 00000000 00000000 00000000 00000000 ................ - 0b50 00000000 00000000 00000000 00000000 ................ - 0b60 00000000 00000000 00000000 00000000 ................ - 0b70 00000000 00000000 00000000 00000000 ................ - 0b80 00000000 00000000 00000000 00000000 ................ - 0b90 00000000 00000000 00000000 00000000 ................ - 0ba0 00000000 00000000 00000000 00000000 ................ - 0bb0 00000000 00000000 00000000 00000000 ................ - 0bc0 00000000 00000000 00000000 00000000 ................ - 0bd0 00000000 00000000 00000000 00000000 ................ - 0be0 00000000 00000000 00000000 00000000 ................ - 0bf0 00000000 00000000 00000000 00000000 ................ - 0c00 00000000 00000000 00000000 00000000 ................ - 0c10 00000000 00000000 00000000 00000000 ................ - 0c20 00000000 00000000 00000000 00000000 ................ - 0c30 00000000 00000000 00000000 00000000 ................ - 0c40 00000000 00000000 00000000 00000000 ................ - 0c50 00000000 00000000 00000000 00000000 ................ - 0c60 00000000 00000000 00000000 00000000 ................ - 0c70 00000000 00000000 00000000 00000000 ................ - 0c80 00000000 00000000 00000000 00000000 ................ - 0c90 00000000 00000000 00000000 00000000 ................ - 0ca0 00000000 00000000 00000000 00000000 ................ - 0cb0 00000000 00000000 00000000 00000000 ................ - 0cc0 00000000 00000000 00000000 00000000 ................ - 0cd0 00000000 00000000 00000000 00000000 ................ - 0ce0 00000000 00000000 00000000 00000000 ................ - 0cf0 00000000 00000000 00000000 00000000 ................ - 0d00 00000000 00000000 00000000 00000000 ................ - 0d10 00000000 00000000 00000000 00000000 ................ - 0d20 00000000 00000000 00000000 00000000 ................ - 0d30 00000000 00000000 00000000 00000000 ................ - 0d40 00000000 00000000 00000000 00000000 ................ - 0d50 00000000 00000000 00000000 00000000 ................ - 0d60 00000000 00000000 00000000 00000000 ................ - 0d70 00000000 00000000 00000000 00000000 ................ - 0d80 00000000 00000000 00000000 00000000 ................ - 0d90 00000000 00000000 00000000 00000000 ................ - 0da0 00000000 00000000 00000000 00000000 ................ - 0db0 00000000 00000000 00000000 00000000 ................ - 0dc0 00000000 00000000 00000000 00000000 ................ - 0dd0 00000000 00000000 00000000 00000000 ................ - 0de0 00000000 00000000 00000000 00000000 ................ - 0df0 00000000 00000000 00000000 00000000 ................ - 0e00 00000000 00000000 00000000 00000000 ................ - 0e10 00000000 00000000 00000000 00000000 ................ - 0e20 00000000 00000000 00000000 00000000 ................ - 0e30 00000000 00000000 00000000 00000000 ................ - 0e40 00000000 00000000 00000000 00000000 ................ - 0e50 00000000 00000000 00000000 00000000 ................ - 0e60 00000000 00000000 00000000 00000000 ................ - 0e70 00000000 00000000 00000000 00000000 ................ - 0e80 00000000 00000000 00000000 00000000 ................ - 0e90 00000000 00000000 00000000 00000000 ................ - 0ea0 00000000 00000000 00000000 00000000 ................ - 0eb0 00000000 00000000 00000000 00000000 ................ - 0ec0 00000000 00000000 00000000 00000000 ................ - 0ed0 00000000 00000000 00000000 00000000 ................ - 0ee0 00000000 00000000 00000000 00000000 ................ - 0ef0 00000000 00000000 00000000 00000000 ................ - 0f00 00000000 00000000 00000000 00000000 ................ - 0f10 00000000 00000000 00000000 00000000 ................ - 0f20 00000000 00000000 00000000 00000000 ................ - 0f30 00000000 00000000 00000000 00000000 ................ - 0f40 00000000 00000000 00000000 00000000 ................ - 0f50 00000000 00000000 00000000 00000000 ................ - 0f60 00000000 00000000 00000000 00000000 ................ - 0f70 00000000 00000000 00000000 00000000 ................ - 0f80 00000000 00000000 00000000 00000000 ................ - 0f90 00000000 00000000 00000000 00000000 ................ - 0fa0 00000000 00000000 00000000 00000000 ................ - 0fb0 00000000 00000000 00000000 00000000 ................ - 0fc0 00000000 00000000 00000000 00000000 ................ - 0fd0 00000000 00000000 00000000 00000000 ................ - 0fe0 00000000 00000000 00000000 00000000 ................ - 0ff0 00000000 00000000 00000000 00000000 ................ - 1000 00000000 00000000 00000000 00000000 ................ - 1010 00000000 00000000 00000000 00000000 ................ - 1020 00000000 00000000 00000000 00000000 ................ - 1030 00000000 00000000 00000000 00000000 ................ - 1040 00000000 00000000 00000000 00000000 ................ - 1050 00000000 00000000 00000000 00000000 ................ - 1060 00000000 00000000 00000000 00000000 ................ - 1070 00000000 00000000 00000000 00000000 ................ - 1080 00000000 00000000 00000000 00000000 ................ - 1090 00000000 00000000 00000000 00000000 ................ - 10a0 00000000 00000000 00000000 00000000 ................ - 10b0 00000000 00000000 00000000 00000000 ................ - 10c0 00000000 00000000 00000000 00000000 ................ - 10d0 00000000 00000000 00000000 00000000 ................ - 10e0 00000000 00000000 00000000 00000000 ................ - 10f0 00000000 00000000 00000000 00000000 ................ - 1100 00000000 00000000 00000000 00000000 ................ - 1110 00000000 00000000 00000000 00000000 ................ - 1120 00000000 00000000 00000000 00000000 ................ - 1130 00000000 00000000 00000000 00000000 ................ - 1140 00000000 00000000 00000000 00000000 ................ - 1150 00000000 00000000 00000000 00000000 ................ - 1160 00000000 00000000 00000000 00000000 ................ - 1170 00000000 00000000 00000000 00000000 ................ - 1180 00000000 00000000 00000000 00000000 ................ - 1190 00000000 00000000 00000000 00000000 ................ - 11a0 00000000 00000000 00000000 00000000 ................ - 11b0 00000000 00000000 00000000 00000000 ................ - 11c0 00000000 00000000 00000000 00000000 ................ - 11d0 00000000 00000000 00000000 00000000 ................ - 11e0 00000000 00000000 00000000 00000000 ................ - 11f0 00000000 00000000 00000000 00000000 ................ - 1200 00000000 00000000 00000000 00000000 ................ - 1210 00000000 00000000 00000000 00000000 ................ - 1220 00000000 00000000 00000000 00000000 ................ - 1230 00000000 00000000 00000000 00000000 ................ - 1240 00000000 00000000 00000000 00000000 ................ - 1250 00000000 00000000 00000000 00000000 ................ - 1260 00000000 00000000 00000000 00000000 ................ - 1270 00000000 00000000 00000000 00000000 ................ - 1280 00000000 00000000 00000000 00000000 ................ - 1290 00000000 00000000 00000000 00000000 ................ - 12a0 00000000 00000000 00000000 00000000 ................ - 12b0 00000000 00000000 00000000 00000000 ................ - 12c0 00000000 00000000 00000000 00000000 ................ - 12d0 00000000 00000000 00000000 00000000 ................ - 12e0 00000000 00000000 00000000 00000000 ................ - 12f0 00000000 00000000 00000000 00000000 ................ - 1300 00000000 00000000 00000000 00000000 ................ - 1310 00000000 00000000 00000000 00000000 ................ - 1320 00000000 00000000 00000000 00000000 ................ - 1330 00000000 00000000 00000000 00000000 ................ - 1340 00000000 00000000 00000000 00000000 ................ - 1350 00000000 00000000 00000000 00000000 ................ - 1360 00000000 00000000 00000000 00000000 ................ - 1370 00000000 00000000 00000000 00000000 ................ - 1380 00000000 00000000 00000000 00000000 ................ - 1390 00000000 00000000 00000000 00000000 ................ - 13a0 00000000 00000000 00000000 00000000 ................ - 13b0 00000000 00000000 00000000 00000000 ................ - 13c0 00000000 00000000 00000000 00000000 ................ - 13d0 00000000 00000000 00000000 00000000 ................ - 13e0 00000000 00000000 00000000 00000000 ................ - 13f0 00000000 00000000 00000000 00000000 ................ - 1400 00000000 00000000 00000000 00000000 ................ - 1410 00000000 00000000 00000000 00000000 ................ - 1420 00000000 00000000 00000000 00000000 ................ - 1430 00000000 00000000 00000000 00000000 ................ - 1440 00000000 00000000 00000000 00000000 ................ - 1450 00000000 00000000 00000000 00000000 ................ - 1460 00000000 00000000 00000000 00000000 ................ - 1470 00000000 00000000 00000000 00000000 ................ - 1480 00000000 00000000 00000000 00000000 ................ - 1490 00000000 00000000 00000000 00000000 ................ - 14a0 00000000 00000000 00000000 00000000 ................ - 14b0 00000000 00000000 00000000 00000000 ................ - 14c0 00000000 00000000 00000000 00000000 ................ - 14d0 00000000 00000000 00000000 00000000 ................ - 14e0 00000000 00000000 00000000 00000000 ................ - 14f0 00000000 00000000 00000000 00000000 ................ - 1500 00000000 00000000 00000000 00000000 ................ - 1510 00000000 00000000 00000000 00000000 ................ - 1520 00000000 00000000 00000000 00000000 ................ - 1530 00000000 00000000 00000000 00000000 ................ - 1540 00000000 00000000 00000000 00000000 ................ - 1550 00000000 00000000 00000000 00000000 ................ - 1560 00000000 00000000 00000000 00000000 ................ - 1570 00000000 00000000 00000000 00000000 ................ - 1580 00000000 00000000 00000000 00000000 ................ - 1590 00000000 00000000 00000000 00000000 ................ - 15a0 00000000 00000000 00000000 00000000 ................ - 15b0 00000000 00000000 00000000 00000000 ................ - 15c0 00000000 00000000 00000000 00000000 ................ - 15d0 00000000 00000000 00000000 00000000 ................ - 15e0 00000000 00000000 00000000 00000000 ................ - 15f0 00000000 00000000 00000000 00000000 ................ - 1600 00000000 00000000 00000000 00000000 ................ - 1610 00000000 00000000 00000000 00000000 ................ - 1620 00000000 00000000 00000000 00000000 ................ - 1630 00000000 00000000 00000000 00000000 ................ - 1640 00000000 00000000 00000000 00000000 ................ - 1650 00000000 00000000 00000000 00000000 ................ - 1660 00000000 00000000 00000000 00000000 ................ - 1670 00000000 00000000 00000000 00000000 ................ - 1680 00000000 00000000 00000000 00000000 ................ - 1690 00000000 00000000 00000000 00000000 ................ - 16a0 00000000 00000000 00000000 00000000 ................ - 16b0 00000000 00000000 00000000 00000000 ................ - 16c0 00000000 00000000 00000000 00000000 ................ - 16d0 00000000 00000000 00000000 00000000 ................ - 16e0 00000000 00000000 00000000 00000000 ................ - 16f0 00000000 00000000 00000000 00000000 ................ - 1700 00000000 00000000 00000000 00000000 ................ - 1710 00000000 00000000 00000000 00000000 ................ - 1720 00000000 00000000 00000000 00000000 ................ - 1730 00000000 00000000 00000000 00000000 ................ - 1740 00000000 00000000 00000000 00000000 ................ - 1750 00000000 00000000 00000000 00000000 ................ - 1760 00000000 00000000 00000000 00000000 ................ - 1770 00000000 00000000 00000000 00000000 ................ - 1780 00000000 00000000 00000000 00000000 ................ - 1790 00000000 00000000 00000000 00000000 ................ - 17a0 00000000 00000000 00000000 00000000 ................ - 17b0 00000000 00000000 00000000 00000000 ................ - 17c0 00000000 00000000 00000000 00000000 ................ - 17d0 00000000 00000000 00000000 00000000 ................ - 17e0 00000000 00000000 00000000 00000000 ................ - 17f0 00000000 00000000 00000000 00000000 ................ - 1800 00000000 00000000 00000000 00000000 ................ - 1810 00000000 00000000 00000000 00000000 ................ - 1820 00000000 00000000 00000000 00000000 ................ - 1830 00000000 00000000 00000000 00000000 ................ - 1840 00000000 00000000 00000000 00000000 ................ - 1850 00000000 00000000 00000000 00000000 ................ - 1860 00000000 00000000 00000000 00000000 ................ - 1870 00000000 00000000 00000000 00000000 ................ - 1880 00000000 00000000 00000000 00000000 ................ - 1890 00000000 00000000 00000000 00000000 ................ - 18a0 00000000 00000000 00000000 00000000 ................ - 18b0 00000000 00000000 00000000 00000000 ................ - 18c0 00000000 00000000 00000000 00000000 ................ - 18d0 00000000 00000000 00000000 00000000 ................ - 18e0 00000000 00000000 00000000 00000000 ................ - 18f0 00000000 00000000 00000000 00000000 ................ - 1900 00000000 00000000 00000000 00000000 ................ - 1910 00000000 00000000 00000000 00000000 ................ - 1920 00000000 00000000 00000000 00000000 ................ - 1930 00000000 00000000 00000000 00000000 ................ - 1940 00000000 00000000 00000000 00000000 ................ - 1950 00000000 00000000 00000000 00000000 ................ - 1960 00000000 00000000 00000000 00000000 ................ - 1970 00000000 00000000 00000000 00000000 ................ - 1980 00000000 00000000 00000000 00000000 ................ - 1990 00000000 00000000 00000000 00000000 ................ - 19a0 00000000 00000000 00000000 00000000 ................ - 19b0 00000000 00000000 00000000 00000000 ................ - 19c0 00000000 00000000 00000000 00000000 ................ - 19d0 00000000 00000000 00000000 00000000 ................ - 19e0 00000000 00000000 00000000 00000000 ................ - 19f0 00000000 00000000 00000000 00000000 ................ - 1a00 00000000 00000000 00000000 00000000 ................ - 1a10 00000000 00000000 00000000 00000000 ................ - 1a20 00000000 00000000 00000000 00000000 ................ - 1a30 00000000 00000000 00000000 00000000 ................ - 1a40 00000000 00000000 00000000 00000000 ................ - 1a50 00000000 00000000 00000000 00000000 ................ - 1a60 00000000 00000000 00000000 00000000 ................ - 1a70 00000000 00000000 00000000 00000000 ................ - 1a80 00000000 00000000 00000000 00000000 ................ - 1a90 00000000 00000000 00000000 00000000 ................ - 1aa0 00000000 00000000 00000000 00000000 ................ - 1ab0 00000000 00000000 00000000 00000000 ................ - 1ac0 00000000 00000000 00000000 00000000 ................ - 1ad0 00000000 00000000 00000000 00000000 ................ - 1ae0 00000000 00000000 00000000 00000000 ................ - 1af0 00000000 00000000 00000000 00000000 ................ - 1b00 00000000 00000000 00000000 00000000 ................ - 1b10 00000000 00000000 00000000 00000000 ................ - 1b20 00000000 00000000 00000000 00000000 ................ - 1b30 00000000 00000000 00000000 00000000 ................ - 1b40 00000000 00000000 00000000 00000000 ................ - 1b50 00000000 00000000 00000000 00000000 ................ - 1b60 00000000 00000000 00000000 00000000 ................ - 1b70 00000000 00000000 00000000 00000000 ................ - 1b80 00000000 00000000 00000000 00000000 ................ - 1b90 00000000 00000000 00000000 00000000 ................ - 1ba0 00000000 00000000 00000000 00000000 ................ - 1bb0 00000000 00000000 00000000 00000000 ................ - 1bc0 00000000 00000000 00000000 00000000 ................ - 1bd0 00000000 00000000 00000000 00000000 ................ - 1be0 00000000 00000000 00000000 00000000 ................ - 1bf0 00000000 00000000 00000000 00000000 ................ - 1c00 00000000 00000000 00000000 00000000 ................ - 1c10 00000000 00000000 00000000 00000000 ................ - 1c20 00000000 00000000 00000000 00000000 ................ - 1c30 00000000 00000000 00000000 00000000 ................ - 1c40 00000000 00000000 00000000 00000000 ................ - 1c50 00000000 00000000 00000000 00000000 ................ - 1c60 00000000 00000000 00000000 00000000 ................ - 1c70 00000000 00000000 00000000 00000000 ................ - 1c80 00000000 00000000 00000000 00000000 ................ - 1c90 00000000 00000000 00000000 00000000 ................ - 1ca0 00000000 00000000 00000000 00000000 ................ - 1cb0 00000000 00000000 00000000 00000000 ................ - 1cc0 00000000 00000000 00000000 00000000 ................ - 1cd0 00000000 00000000 00000000 00000000 ................ - 1ce0 00000000 00000000 00000000 00000000 ................ - 1cf0 00000000 00000000 00000000 00000000 ................ - 1d00 00000000 00000000 00000000 00000000 ................ - 1d10 00000000 00000000 00000000 00000000 ................ - 1d20 00000000 00000000 00000000 00000000 ................ - 1d30 00000000 00000000 00000000 00000000 ................ - 1d40 00000000 00000000 00000000 00000000 ................ - 1d50 00000000 00000000 00000000 00000000 ................ - 1d60 00000000 00000000 00000000 00000000 ................ - 1d70 00000000 00000000 00000000 00000000 ................ - 1d80 00000000 00000000 00000000 00000000 ................ - 1d90 00000000 00000000 00000000 00000000 ................ - 1da0 00000000 00000000 00000000 00000000 ................ - 1db0 00000000 00000000 00000000 00000000 ................ - 1dc0 00000000 00000000 00000000 00000000 ................ - 1dd0 00000000 00000000 00000000 00000000 ................ - 1de0 00000000 00000000 00000000 00000000 ................ - 1df0 00000000 00000000 00000000 00000000 ................ - 1e00 00000000 00000000 00000000 00000000 ................ - 1e10 00000000 00000000 00000000 00000000 ................ - 1e20 00000000 00000000 00000000 00000000 ................ - 1e30 00000000 00000000 00000000 00000000 ................ - 1e40 00000000 00000000 00000000 00000000 ................ - 1e50 00000000 00000000 00000000 00000000 ................ - 1e60 00000000 00000000 00000000 00000000 ................ - 1e70 00000000 00000000 00000000 00000000 ................ - 1e80 00000000 00000000 00000000 00000000 ................ - 1e90 00000000 00000000 00000000 00000000 ................ - 1ea0 00000000 00000000 00000000 00000000 ................ - 1eb0 00000000 00000000 00000000 00000000 ................ - 1ec0 00000000 00000000 00000000 00000000 ................ - 1ed0 00000000 00000000 00000000 00000000 ................ - 1ee0 00000000 00000000 00000000 00000000 ................ - 1ef0 00000000 00000000 00000000 00000000 ................ - 1f00 00000000 00000000 00000000 00000000 ................ - 1f10 00000000 00000000 00000000 00000000 ................ - 1f20 00000000 00000000 00000000 00000000 ................ - 1f30 00000000 00000000 00000000 00000000 ................ - 1f40 00000000 00000000 00000000 00000000 ................ - 1f50 00000000 00000000 00000000 00000000 ................ - 1f60 00000000 00000000 00000000 00000000 ................ - 1f70 00000000 00000000 00000000 00000000 ................ - 1f80 00000000 00000000 00000000 00000000 ................ - 1f90 00000000 00000000 00000000 00000000 ................ - 1fa0 00000000 00000000 00000000 00000000 ................ - 1fb0 00000000 00000000 00000000 00000000 ................ - 1fc0 00000000 00000000 00000000 00000000 ................ - 1fd0 00000000 00000000 00000000 00000000 ................ - 1fe0 00000000 00000000 00000000 00000000 ................ - 1ff0 00000000 00000000 00000000 00000000 ................ - 2000 00000000 00000000 00000000 00000000 ................ - 2010 00000000 00000000 00000000 00000000 ................ - 2020 00000000 00000000 00000000 00000000 ................ - 2030 00000000 00000000 00000000 00000000 ................ - 2040 00000000 00000000 00000000 00000000 ................ - 2050 00000000 00000000 00000000 00000000 ................ - 2060 00000000 00000000 00000000 00000000 ................ - 2070 00000000 00000000 00000000 00000000 ................ - 2080 00000000 00000000 00000000 00000000 ................ - 2090 00000000 00000000 00000000 00000000 ................ - 20a0 00000000 00000000 00000000 00000000 ................ - 20b0 00000000 00000000 00000000 00000000 ................ - 20c0 00000000 00000000 00000000 00000000 ................ - 20d0 00000000 00000000 00000000 00000000 ................ - 20e0 00000000 00000000 00000000 00000000 ................ - 20f0 00000000 00000000 00000000 00000000 ................ - 2100 00000000 00000000 00000000 00000000 ................ - 2110 00000000 00000000 00000000 00000000 ................ - 2120 00000000 00000000 00000000 00000000 ................ - 2130 00000000 00000000 00000000 00000000 ................ - 2140 00000000 00000000 00000000 00000000 ................ - 2150 00000000 00000000 00000000 00000000 ................ - 2160 00000000 00000000 00000000 00000000 ................ - 2170 00000000 00000000 00000000 00000000 ................ - 2180 00000000 00000000 00000000 00000000 ................ - 2190 00000000 00000000 00000000 00000000 ................ - 21a0 00000000 00000000 00000000 00000000 ................ - 21b0 00000000 00000000 00000000 00000000 ................ - 21c0 00000000 00000000 00000000 00000000 ................ - 21d0 00000000 00000000 00000000 00000000 ................ - 21e0 00000000 00000000 00000000 00000000 ................ - 21f0 00000000 00000000 00000000 00000000 ................ - 2200 00000000 00000000 00000000 00000000 ................ - 2210 00000000 00000000 00000000 00000000 ................ - 2220 00000000 00000000 00000000 00000000 ................ - 2230 00000000 00000000 00000000 00000000 ................ - 2240 00000000 00000000 00000000 00000000 ................ - 2250 00000000 00000000 00000000 00000000 ................ - 2260 00000000 00000000 00000000 00000000 ................ - 2270 00000000 00000000 00000000 00000000 ................ - 2280 00000000 00000000 00000000 00000000 ................ - 2290 00000000 00000000 00000000 00000000 ................ - 22a0 00000000 00000000 00000000 00000000 ................ - 22b0 00000000 00000000 00000000 00000000 ................ - 22c0 00000000 00000000 00000000 00000000 ................ - 22d0 00000000 00000000 00000000 00000000 ................ - 22e0 00000000 00000000 00000000 00000000 ................ - 22f0 00000000 00000000 00000000 00000000 ................ - 2300 00000000 00000000 00000000 00000000 ................ - 2310 00000000 00000000 00000000 00000000 ................ - 2320 00000000 00000000 00000000 00000000 ................ - 2330 00000000 00000000 00000000 00000000 ................ - 2340 00000000 00000000 00000000 00000000 ................ - 2350 00000000 00000000 00000000 00000000 ................ - 2360 00000000 00000000 00000000 00000000 ................ - 2370 00000000 00000000 00000000 00000000 ................ - 2380 00000000 00000000 00000000 00000000 ................ - 2390 00000000 00000000 00000000 00000000 ................ - 23a0 00000000 00000000 00000000 00000000 ................ - 23b0 00000000 00000000 00000000 00000000 ................ - 23c0 00000000 00000000 00000000 00000000 ................ - 23d0 00000000 00000000 00000000 00000000 ................ - 23e0 00000000 00000000 00000000 00000000 ................ - 23f0 00000000 00000000 00000000 00000000 ................ - 2400 00000000 00000000 00000000 00000000 ................ - 2410 00000000 00000000 00000000 00000000 ................ - 2420 00000000 00000000 00000000 00000000 ................ - 2430 00000000 00000000 00000000 00000000 ................ - 2440 00000000 00000000 00000000 00000000 ................ - 2450 00000000 00000000 00000000 00000000 ................ - 2460 00000000 00000000 00000000 00000000 ................ - 2470 00000000 00000000 00000000 00000000 ................ - 2480 00000000 00000000 00000000 00000000 ................ - 2490 00000000 00000000 00000000 00000000 ................ - 24a0 00000000 00000000 00000000 00000000 ................ - 24b0 00000000 00000000 00000000 00000000 ................ - 24c0 00000000 00000000 00000000 00000000 ................ - 24d0 00000000 00000000 00000000 00000000 ................ - 24e0 00000000 00000000 00000000 00000000 ................ - 24f0 00000000 00000000 00000000 00000000 ................ - 2500 00000000 00000000 00000000 00000000 ................ - 2510 00000000 00000000 00000000 00000000 ................ - 2520 00000000 00000000 00000000 00000000 ................ - 2530 00000000 00000000 00000000 00000000 ................ - 2540 00000000 00000000 00000000 00000000 ................ - 2550 00000000 00000000 00000000 00000000 ................ - 2560 00000000 00000000 00000000 00000000 ................ - 2570 00000000 00000000 00000000 00000000 ................ - 2580 00000000 00000000 00000000 00000000 ................ - 2590 00000000 00000000 00000000 00000000 ................ - 25a0 00000000 00000000 00000000 00000000 ................ - 25b0 00000000 00000000 00000000 00000000 ................ - 25c0 00000000 00000000 00000000 00000000 ................ - 25d0 00000000 00000000 00000000 00000000 ................ - 25e0 00000000 00000000 00000000 00000000 ................ - 25f0 00000000 00000000 00000000 00000000 ................ - 2600 00000000 00000000 00000000 00000000 ................ - 2610 00000000 00000000 00000000 00000000 ................ - 2620 00000000 00000000 00000000 00000000 ................ - 2630 00000000 00000000 00000000 00000000 ................ - 2640 00000000 00000000 00000000 00000000 ................ - 2650 00000000 00000000 00000000 00000000 ................ - 2660 00000000 00000000 00000000 00000000 ................ - 2670 00000000 00000000 00000000 00000000 ................ - 2680 00000000 00000000 00000000 00000000 ................ - 2690 00000000 00000000 00000000 00000000 ................ - 26a0 00000000 00000000 00000000 00000000 ................ - 26b0 00000000 00000000 00000000 00000000 ................ - 26c0 00000000 00000000 00000000 00000000 ................ - 26d0 00000000 00000000 00000000 00000000 ................ - 26e0 00000000 00000000 00000000 00000000 ................ - 26f0 00000000 00000000 00000000 00000000 ................ - 2700 00000000 00000000 00000000 00000000 ................ - 2710 00000000 00000000 00000000 00000000 ................ - 2720 00000000 00000000 00000000 00000000 ................ - 2730 00000000 00000000 00000000 00000000 ................ - 2740 00000000 00000000 00000000 00000000 ................ - 2750 00000000 00000000 00000000 00000000 ................ - 2760 00000000 00000000 00000000 00000000 ................ - 2770 00000000 00000000 00000000 00000000 ................ - 2780 00000000 00000000 00000000 00000000 ................ - 2790 00000000 00000000 00000000 00000000 ................ - 27a0 00000000 00000000 00000000 00000000 ................ - 27b0 00000000 00000000 00000000 00000000 ................ - 27c0 00000000 00000000 00000000 00000000 ................ - 27d0 00000000 00000000 00000000 00000000 ................ - 27e0 00000000 00000000 00000000 00000000 ................ - 27f0 00000000 00000000 00000000 00000000 ................ - 2800 00000000 00000000 00000000 00000000 ................ - 2810 00000000 00000000 00000000 00000000 ................ - 2820 00000000 00000000 00000000 00000000 ................ - 2830 00000000 00000000 00000000 00000000 ................ - 2840 00000000 00000000 00000000 00000000 ................ - 2850 00000000 00000000 00000000 00000000 ................ - 2860 00000000 00000000 00000000 00000000 ................ - 2870 00000000 00000000 00000000 00000000 ................ - 2880 00000000 00000000 00000000 00000000 ................ - 2890 00000000 00000000 00000000 00000000 ................ - 28a0 00000000 00000000 00000000 00000000 ................ - 28b0 00000000 00000000 00000000 00000000 ................ - 28c0 00000000 00000000 00000000 00000000 ................ - 28d0 00000000 00000000 00000000 00000000 ................ - 28e0 00000000 00000000 00000000 00000000 ................ - 28f0 00000000 00000000 00000000 00000000 ................ - 2900 00000000 00000000 00000000 00000000 ................ - 2910 00000000 00000000 00000000 00000000 ................ - 2920 00000000 00000000 00000000 00000000 ................ - 2930 00000000 00000000 00000000 00000000 ................ - 2940 00000000 00000000 00000000 00000000 ................ - 2950 00000000 00000000 00000000 00000000 ................ - 2960 00000000 00000000 00000000 00000000 ................ - 2970 00000000 00000000 00000000 00000000 ................ - 2980 00000000 00000000 00000000 00000000 ................ - 2990 00000000 00000000 00000000 00000000 ................ - 29a0 00000000 00000000 00000000 00000000 ................ - 29b0 00000000 00000000 00000000 00000000 ................ - 29c0 00000000 00000000 00000000 00000000 ................ - 29d0 00000000 00000000 00000000 00000000 ................ - 29e0 00000000 00000000 00000000 00000000 ................ - 29f0 00000000 00000000 00000000 00000000 ................ - 2a00 00000000 00000000 00000000 00000000 ................ - 2a10 00000000 00000000 00000000 00000000 ................ - 2a20 00000000 00000000 00000000 00000000 ................ - 2a30 00000000 00000000 00000000 00000000 ................ - 2a40 00000000 00000000 00000000 00000000 ................ - 2a50 00000000 00000000 00000000 00000000 ................ - 2a60 00000000 00000000 00000000 00000000 ................ - 2a70 00000000 00000000 00000000 00000000 ................ - 2a80 00000000 00000000 00000000 00000000 ................ - 2a90 00000000 00000000 00000000 00000000 ................ - 2aa0 00000000 00000000 00000000 00000000 ................ - 2ab0 00000000 00000000 00000000 00000000 ................ - 2ac0 00000000 00000000 00000000 00000000 ................ - 2ad0 00000000 00000000 00000000 00000000 ................ - 2ae0 00000000 00000000 00000000 00000000 ................ - 2af0 00000000 00000000 00000000 00000000 ................ - 2b00 00000000 00000000 00000000 00000000 ................ - 2b10 00000000 00000000 00000000 00000000 ................ - 2b20 00000000 00000000 00000000 00000000 ................ - 2b30 00000000 00000000 00000000 00000000 ................ - 2b40 00000000 00000000 00000000 00000000 ................ - 2b50 00000000 00000000 00000000 00000000 ................ - 2b60 00000000 00000000 00000000 00000000 ................ - 2b70 00000000 00000000 00000000 00000000 ................ - 2b80 00000000 00000000 00000000 00000000 ................ - 2b90 00000000 00000000 00000000 00000000 ................ - 2ba0 00000000 00000000 00000000 00000000 ................ - 2bb0 00000000 00000000 00000000 00000000 ................ - 2bc0 00000000 00000000 00000000 00000000 ................ - 2bd0 00000000 00000000 00000000 00000000 ................ - 2be0 00000000 00000000 00000000 00000000 ................ - 2bf0 00000000 00000000 00000000 00000000 ................ - 2c00 00000000 00000000 00000000 00000000 ................ - 2c10 00000000 00000000 00000000 00000000 ................ - 2c20 00000000 00000000 00000000 00000000 ................ - 2c30 00000000 00000000 00000000 00000000 ................ - 2c40 00000000 00000000 00000000 00000000 ................ - 2c50 00000000 00000000 00000000 00000000 ................ - 2c60 00000000 00000000 00000000 00000000 ................ - 2c70 00000000 00000000 00000000 00000000 ................ - 2c80 00000000 00000000 00000000 00000000 ................ - 2c90 00000000 00000000 00000000 00000000 ................ - 2ca0 00000000 00000000 00000000 00000000 ................ - 2cb0 00000000 00000000 00000000 00000000 ................ - 2cc0 00000000 00000000 00000000 00000000 ................ - 2cd0 00000000 00000000 00000000 00000000 ................ - 2ce0 00000000 00000000 00000000 00000000 ................ - 2cf0 00000000 00000000 00000000 00000000 ................ - 2d00 00000000 00000000 00000000 00000000 ................ - 2d10 00000000 00000000 00000000 00000000 ................ - 2d20 00000000 00000000 00000000 00000000 ................ - 2d30 00000000 00000000 00000000 00000000 ................ - 2d40 00000000 00000000 00000000 00000000 ................ - 2d50 00000000 00000000 00000000 00000000 ................ - 2d60 00000000 00000000 00000000 00000000 ................ - 2d70 00000000 00000000 00000000 00000000 ................ - 2d80 00000000 00000000 00000000 00000000 ................ - 2d90 00000000 00000000 00000000 00000000 ................ - 2da0 00000000 00000000 00000000 00000000 ................ - 2db0 00000000 00000000 00000000 00000000 ................ - 2dc0 00000000 00000000 00000000 00000000 ................ - 2dd0 00000000 00000000 00000000 00000000 ................ - 2de0 00000000 00000000 00000000 00000000 ................ - 2df0 00000000 00000000 00000000 00000000 ................ - 2e00 00000000 00000000 00000000 00000000 ................ - 2e10 00000000 00000000 00000000 00000000 ................ - 2e20 00000000 00000000 00000000 00000000 ................ - 2e30 00000000 00000000 00000000 00000000 ................ - 2e40 00000000 00000000 00000000 00000000 ................ - 2e50 00000000 00000000 00000000 00000000 ................ - 2e60 00000000 00000000 00000000 00000000 ................ - 2e70 00000000 00000000 00000000 00000000 ................ - 2e80 00000000 00000000 00000000 00000000 ................ - 2e90 00000000 00000000 00000000 00000000 ................ - 2ea0 00000000 00000000 00000000 00000000 ................ - 2eb0 00000000 00000000 00000000 00000000 ................ - 2ec0 00000000 00000000 00000000 00000000 ................ - 2ed0 00000000 00000000 00000000 00000000 ................ - 2ee0 00000000 00000000 00000000 00000000 ................ - 2ef0 00000000 00000000 00000000 00000000 ................ - 2f00 00000000 00000000 00000000 00000000 ................ - 2f10 00000000 00000000 00000000 00000000 ................ - 2f20 00000000 00000000 00000000 00000000 ................ - 2f30 00000000 00000000 00000000 00000000 ................ - 2f40 00000000 00000000 00000000 00000000 ................ - 2f50 00000000 00000000 00000000 00000000 ................ - 2f60 00000000 00000000 00000000 00000000 ................ - 2f70 00000000 00000000 00000000 00000000 ................ - 2f80 00000000 00000000 00000000 00000000 ................ - 2f90 00000000 00000000 00000000 00000000 ................ - 2fa0 00000000 00000000 00000000 00000000 ................ - 2fb0 00000000 00000000 00000000 00000000 ................ - 2fc0 00000000 00000000 00000000 00000000 ................ - 2fd0 00000000 00000000 00000000 00000000 ................ - 2fe0 00000000 00000000 00000000 00000000 ................ - 2ff0 00000000 00000000 00000000 00000000 ................ - 3000 00000000 00000000 00000000 00000000 ................ - 3010 00000000 00000000 00000000 00000000 ................ - 3020 00000000 00000000 00000000 00000000 ................ - 3030 00000000 00000000 00000000 00000000 ................ - 3040 00000000 00000000 00000000 00000000 ................ - 3050 00000000 00000000 00000000 00000000 ................ - 3060 00000000 00000000 00000000 00000000 ................ - 3070 00000000 00000000 00000000 00000000 ................ - 3080 00000000 00000000 00000000 00000000 ................ - 3090 00000000 00000000 00000000 00000000 ................ - 30a0 00000000 00000000 00000000 00000000 ................ - 30b0 00000000 00000000 00000000 00000000 ................ - 30c0 00000000 00000000 00000000 00000000 ................ - 30d0 00000000 00000000 00000000 00000000 ................ - 30e0 00000000 00000000 00000000 00000000 ................ - 30f0 00000000 00000000 00000000 00000000 ................ - 3100 00000000 00000000 00000000 00000000 ................ - 3110 00000000 00000000 00000000 00000000 ................ - 3120 00000000 00000000 00000000 00000000 ................ - 3130 00000000 00000000 00000000 00000000 ................ - 3140 00000000 00000000 00000000 00000000 ................ - 3150 00000000 00000000 00000000 00000000 ................ - 3160 00000000 00000000 00000000 00000000 ................ - 3170 00000000 00000000 00000000 00000000 ................ - 3180 00000000 00000000 00000000 00000000 ................ - 3190 00000000 00000000 00000000 00000000 ................ - 31a0 00000000 00000000 00000000 00000000 ................ - 31b0 00000000 00000000 00000000 00000000 ................ - 31c0 00000000 00000000 00000000 00000000 ................ - 31d0 00000000 00000000 00000000 00000000 ................ - 31e0 00000000 00000000 00000000 00000000 ................ - 31f0 00000000 00000000 00000000 00000000 ................ - 3200 00000000 00000000 00000000 00000000 ................ - 3210 00000000 00000000 00000000 00000000 ................ - 3220 00000000 00000000 00000000 00000000 ................ - 3230 00000000 00000000 00000000 00000000 ................ - 3240 00000000 00000000 00000000 00000000 ................ - 3250 00000000 00000000 00000000 00000000 ................ - 3260 00000000 00000000 00000000 00000000 ................ - 3270 00000000 00000000 00000000 00000000 ................ - 3280 00000000 00000000 00000000 00000000 ................ - 3290 00000000 00000000 00000000 00000000 ................ - 32a0 00000000 00000000 00000000 00000000 ................ - 32b0 00000000 00000000 00000000 00000000 ................ - 32c0 00000000 00000000 00000000 00000000 ................ - 32d0 00000000 00000000 00000000 00000000 ................ - 32e0 00000000 00000000 00000000 00000000 ................ - 32f0 00000000 00000000 00000000 00000000 ................ - 3300 00000000 00000000 00000000 00000000 ................ - 3310 00000000 00000000 00000000 00000000 ................ - 3320 00000000 00000000 00000000 00000000 ................ - 3330 00000000 00000000 00000000 00000000 ................ - 3340 00000000 00000000 00000000 00000000 ................ - 3350 00000000 00000000 00000000 00000000 ................ - 3360 00000000 00000000 00000000 00000000 ................ - 3370 00000000 00000000 00000000 00000000 ................ - 3380 00000000 00000000 00000000 00000000 ................ - 3390 00000000 00000000 00000000 00000000 ................ - 33a0 00000000 00000000 00000000 00000000 ................ - 33b0 00000000 00000000 00000000 00000000 ................ - 33c0 00000000 00000000 00000000 00000000 ................ - 33d0 00000000 00000000 00000000 00000000 ................ - 33e0 00000000 00000000 00000000 00000000 ................ - 33f0 00000000 00000000 00000000 00000000 ................ - 3400 00000000 00000000 00000000 00000000 ................ - 3410 00000000 00000000 00000000 00000000 ................ - 3420 00000000 00000000 00000000 00000000 ................ - 3430 00000000 00000000 00000000 00000000 ................ - 3440 00000000 00000000 00000000 00000000 ................ - 3450 00000000 00000000 00000000 00000000 ................ - 3460 00000000 00000000 00000000 00000000 ................ - 3470 00000000 00000000 00000000 00000000 ................ - 3480 00000000 00000000 00000000 00000000 ................ - 3490 00000000 00000000 00000000 00000000 ................ - 34a0 00000000 00000000 00000000 00000000 ................ - 34b0 00000000 00000000 00000000 00000000 ................ - 34c0 00000000 00000000 00000000 00000000 ................ - 34d0 00000000 00000000 00000000 00000000 ................ - 34e0 00000000 00000000 00000000 00000000 ................ - 34f0 00000000 00000000 00000000 00000000 ................ - 3500 00000000 00000000 00000000 00000000 ................ - 3510 00000000 00000000 00000000 00000000 ................ - 3520 00000000 00000000 00000000 00000000 ................ - 3530 00000000 00000000 00000000 00000000 ................ - 3540 00000000 00000000 00000000 00000000 ................ - 3550 00000000 00000000 00000000 00000000 ................ - 3560 00000000 00000000 00000000 00000000 ................ - 3570 00000000 00000000 00000000 00000000 ................ - 3580 00000000 00000000 00000000 00000000 ................ - 3590 00000000 00000000 00000000 00000000 ................ - 35a0 00000000 00000000 00000000 00000000 ................ - 35b0 00000000 00000000 00000000 00000000 ................ - 35c0 00000000 00000000 00000000 00000000 ................ - 35d0 00000000 00000000 00000000 00000000 ................ - 35e0 00000000 00000000 00000000 00000000 ................ - 35f0 00000000 00000000 00000000 00000000 ................ - 3600 00000000 00000000 00000000 00000000 ................ - 3610 00000000 00000000 00000000 00000000 ................ - 3620 00000000 00000000 00000000 00000000 ................ - 3630 00000000 00000000 00000000 00000000 ................ - 3640 00000000 00000000 00000000 00000000 ................ - 3650 00000000 00000000 00000000 00000000 ................ - 3660 00000000 00000000 00000000 00000000 ................ - 3670 00000000 00000000 00000000 00000000 ................ - 3680 00000000 00000000 00000000 00000000 ................ - 3690 00000000 00000000 00000000 00000000 ................ - 36a0 00000000 00000000 00000000 00000000 ................ - 36b0 00000000 00000000 00000000 00000000 ................ - 36c0 00000000 00000000 00000000 00000000 ................ - 36d0 00000000 00000000 00000000 00000000 ................ - 36e0 00000000 00000000 00000000 00000000 ................ - 36f0 00000000 00000000 00000000 00000000 ................ - 3700 00000000 00000000 00000000 00000000 ................ - 3710 00000000 00000000 00000000 00000000 ................ - 3720 00000000 00000000 00000000 00000000 ................ - 3730 00000000 00000000 00000000 00000000 ................ - 3740 00000000 00000000 00000000 00000000 ................ - 3750 00000000 00000000 00000000 00000000 ................ - 3760 00000000 00000000 00000000 00000000 ................ - 3770 00000000 00000000 00000000 00000000 ................ - 3780 00000000 00000000 00000000 00000000 ................ - 3790 00000000 00000000 00000000 00000000 ................ - 37a0 00000000 00000000 00000000 00000000 ................ - 37b0 00000000 00000000 00000000 00000000 ................ - 37c0 00000000 00000000 00000000 00000000 ................ - 37d0 00000000 00000000 00000000 00000000 ................ - 37e0 00000000 00000000 00000000 00000000 ................ - 37f0 00000000 00000000 00000000 00000000 ................ - 3800 00000000 00000000 00000000 00000000 ................ - 3810 00000000 00000000 00000000 00000000 ................ - 3820 00000000 00000000 00000000 00000000 ................ - 3830 00000000 00000000 00000000 00000000 ................ - 3840 00000000 00000000 00000000 00000000 ................ - 3850 00000000 00000000 00000000 00000000 ................ - 3860 00000000 00000000 00000000 00000000 ................ - 3870 00000000 00000000 00000000 00000000 ................ - 3880 00000000 00000000 00000000 00000000 ................ - 3890 00000000 00000000 00000000 00000000 ................ - 38a0 00000000 00000000 00000000 00000000 ................ - 38b0 00000000 00000000 00000000 00000000 ................ - 38c0 00000000 00000000 00000000 00000000 ................ - 38d0 00000000 00000000 00000000 00000000 ................ - 38e0 00000000 00000000 00000000 00000000 ................ - 38f0 00000000 00000000 00000000 00000000 ................ - 3900 00000000 00000000 00000000 00000000 ................ - 3910 00000000 00000000 00000000 00000000 ................ - 3920 00000000 00000000 00000000 00000000 ................ - 3930 00000000 00000000 00000000 00000000 ................ - 3940 00000000 00000000 00000000 00000000 ................ - 3950 00000000 00000000 00000000 00000000 ................ - 3960 00000000 00000000 00000000 00000000 ................ - 3970 00000000 00000000 00000000 00000000 ................ - 3980 00000000 00000000 00000000 00000000 ................ - 3990 00000000 00000000 00000000 00000000 ................ - 39a0 00000000 00000000 00000000 00000000 ................ - 39b0 00000000 00000000 00000000 00000000 ................ - 39c0 00000000 00000000 00000000 00000000 ................ - 39d0 00000000 00000000 00000000 00000000 ................ - 39e0 00000000 00000000 00000000 00000000 ................ - 39f0 00000000 00000000 00000000 00000000 ................ - 3a00 00000000 00000000 00000000 00000000 ................ - 3a10 00000000 00000000 00000000 00000000 ................ - 3a20 00000000 00000000 00000000 00000000 ................ - 3a30 00000000 00000000 00000000 00000000 ................ - 3a40 00000000 00000000 00000000 00000000 ................ - 3a50 00000000 00000000 00000000 00000000 ................ - 3a60 00000000 00000000 00000000 00000000 ................ - 3a70 00000000 00000000 00000000 00000000 ................ - 3a80 00000000 00000000 00000000 00000000 ................ - 3a90 00000000 00000000 00000000 00000000 ................ - 3aa0 00000000 00000000 00000000 00000000 ................ - 3ab0 00000000 00000000 00000000 00000000 ................ - 3ac0 00000000 00000000 00000000 00000000 ................ - 3ad0 00000000 00000000 00000000 00000000 ................ - 3ae0 00000000 00000000 00000000 00000000 ................ - 3af0 00000000 00000000 00000000 00000000 ................ - 3b00 00000000 00000000 00000000 00000000 ................ - 3b10 00000000 00000000 00000000 00000000 ................ - 3b20 00000000 00000000 00000000 00000000 ................ - 3b30 00000000 00000000 00000000 00000000 ................ - 3b40 00000000 00000000 00000000 00000000 ................ - 3b50 00000000 00000000 00000000 00000000 ................ - 3b60 00000000 00000000 00000000 00000000 ................ - 3b70 00000000 00000000 00000000 00000000 ................ - 3b80 00000000 00000000 00000000 00000000 ................ - 3b90 00000000 00000000 00000000 00000000 ................ - 3ba0 00000000 00000000 00000000 00000000 ................ - 3bb0 00000000 00000000 00000000 00000000 ................ - 3bc0 00000000 00000000 00000000 00000000 ................ - 3bd0 00000000 00000000 00000000 00000000 ................ - 3be0 00000000 00000000 00000000 00000000 ................ - 3bf0 00000000 00000000 00000000 00000000 ................ - 3c00 00000000 00000000 00000000 00000000 ................ - 3c10 00000000 00000000 00000000 00000000 ................ - 3c20 00000000 00000000 00000000 00000000 ................ - 3c30 00000000 00000000 00000000 00000000 ................ - 3c40 00000000 00000000 00000000 00000000 ................ - 3c50 00000000 00000000 00000000 00000000 ................ - 3c60 00000000 00000000 00000000 00000000 ................ - 3c70 00000000 00000000 00000000 00000000 ................ - 3c80 00000000 00000000 00000000 00000000 ................ - 3c90 00000000 00000000 00000000 00000000 ................ - 3ca0 00000000 00000000 00000000 00000000 ................ - 3cb0 00000000 00000000 00000000 00000000 ................ - 3cc0 00000000 00000000 00000000 00000000 ................ - 3cd0 00000000 00000000 00000000 00000000 ................ - 3ce0 00000000 00000000 00000000 00000000 ................ - 3cf0 00000000 00000000 00000000 00000000 ................ - 3d00 00000000 00000000 00000000 00000000 ................ - 3d10 00000000 00000000 00000000 00000000 ................ - 3d20 00000000 00000000 00000000 00000000 ................ - 3d30 00000000 00000000 00000000 00000000 ................ - 3d40 00000000 00000000 00000000 00000000 ................ - 3d50 00000000 00000000 00000000 00000000 ................ - 3d60 00000000 00000000 00000000 00000000 ................ - 3d70 00000000 00000000 00000000 00000000 ................ - 3d80 00000000 00000000 00000000 00000000 ................ - 3d90 00000000 00000000 00000000 00000000 ................ - 3da0 00000000 00000000 00000000 00000000 ................ - 3db0 00000000 00000000 00000000 00000000 ................ - 3dc0 00000000 00000000 00000000 00000000 ................ - 3dd0 00000000 00000000 00000000 00000000 ................ - 3de0 00000000 00000000 00000000 00000000 ................ - 3df0 00000000 00000000 00000000 00000000 ................ - 3e00 00000000 00000000 00000000 00000000 ................ - 3e10 00000000 00000000 00000000 00000000 ................ - 3e20 00000000 00000000 00000000 00000000 ................ - 3e30 00000000 00000000 00000000 00000000 ................ - 3e40 00000000 00000000 00000000 00000000 ................ - 3e50 00000000 00000000 00000000 00000000 ................ - 3e60 00000000 00000000 00000000 00000000 ................ - 3e70 00000000 00000000 00000000 00000000 ................ - 3e80 00000000 00000000 00000000 00000000 ................ - 3e90 00000000 00000000 00000000 00000000 ................ - 3ea0 00000000 00000000 00000000 00000000 ................ - 3eb0 00000000 00000000 00000000 00000000 ................ - 3ec0 00000000 00000000 00000000 00000000 ................ - 3ed0 00000000 00000000 00000000 00000000 ................ - 3ee0 00000000 00000000 00000000 00000000 ................ - 3ef0 00000000 00000000 00000000 00000000 ................ - 3f00 00000000 00000000 00000000 00000000 ................ - 3f10 00000000 00000000 00000000 00000000 ................ - 3f20 00000000 00000000 00000000 00000000 ................ - 3f30 00000000 00000000 00000000 00000000 ................ - 3f40 00000000 00000000 00000000 00000000 ................ - 3f50 00000000 00000000 00000000 00000000 ................ - 3f60 00000000 00000000 00000000 00000000 ................ - 3f70 00000000 00000000 00000000 00000000 ................ - 3f80 00000000 00000000 00000000 00000000 ................ - 3f90 00000000 00000000 00000000 00000000 ................ - 3fa0 00000000 00000000 00000000 00000000 ................ - 3fb0 00000000 00000000 00000000 00000000 ................ - 3fc0 00000000 00000000 00000000 00000000 ................ - 3fd0 00000000 00000000 00000000 00000000 ................ - 3fe0 00000000 00000000 00000000 00000000 ................ - 3ff0 00000000 00000000 00000000 00000000 ................ - 4000 00000000 00000000 00000000 00000000 ................ - 4010 00000000 00000000 00000000 00000000 ................ - 4020 00000000 00000000 00000000 00000000 ................ - 4030 00000000 00000000 00000000 00000000 ................ - 4040 00000000 00000000 00000000 00000000 ................ - 4050 00000000 00000000 00000000 00000000 ................ - 4060 00000000 00000000 00000000 00000000 ................ - 4070 00000000 00000000 00000000 00000000 ................ - 4080 00000000 00000000 00000000 00000000 ................ - 4090 00000000 00000000 00000000 00000000 ................ - 40a0 00000000 00000000 00000000 00000000 ................ - 40b0 00000000 00000000 00000000 00000000 ................ - 40c0 00000000 00000000 00000000 00000000 ................ - 40d0 00000000 00000000 00000000 00000000 ................ - 40e0 00000000 00000000 00000000 00000000 ................ - 40f0 00000000 00000000 00000000 00000000 ................ - 4100 00000000 00000000 00000000 00000000 ................ - 4110 00000000 00000000 00000000 00000000 ................ - 4120 00000000 00000000 00000000 00000000 ................ - 4130 00000000 00000000 00000000 00000000 ................ - 4140 00000000 00000000 00000000 00000000 ................ - 4150 00000000 00000000 00000000 00000000 ................ - 4160 00000000 00000000 00000000 00000000 ................ - 4170 00000000 00000000 00000000 00000000 ................ - 4180 00000000 00000000 00000000 00000000 ................ - 4190 00000000 00000000 00000000 00000000 ................ - 41a0 00000000 00000000 00000000 00000000 ................ - 41b0 00000000 00000000 00000000 00000000 ................ - 41c0 00000000 00000000 00000000 00000000 ................ - 41d0 00000000 00000000 00000000 00000000 ................ - 41e0 00000000 00000000 00000000 00000000 ................ - 41f0 00000000 00000000 00000000 00000000 ................ - 4200 00000000 00000000 00000000 00000000 ................ - 4210 00000000 00000000 00000000 00000000 ................ - 4220 00000000 00000000 00000000 00000000 ................ - 4230 00000000 00000000 00000000 00000000 ................ - 4240 00000000 00000000 00000000 00000000 ................ - 4250 00000000 00000000 00000000 00000000 ................ - 4260 00000000 00000000 00000000 00000000 ................ - 4270 00000000 00000000 00000000 00000000 ................ - 4280 00000000 00000000 00000000 00000000 ................ - 4290 00000000 00000000 00000000 00000000 ................ - 42a0 00000000 00000000 00000000 00000000 ................ - 42b0 00000000 00000000 00000000 00000000 ................ - 42c0 00000000 00000000 00000000 00000000 ................ - 42d0 00000000 00000000 00000000 00000000 ................ - 42e0 00000000 00000000 00000000 00000000 ................ - 42f0 00000000 00000000 00000000 00000000 ................ - 4300 00000000 00000000 00000000 00000000 ................ - 4310 00000000 00000000 00000000 00000000 ................ - 4320 00000000 00000000 00000000 00000000 ................ - 4330 00000000 00000000 00000000 00000000 ................ - 4340 00000000 00000000 00000000 00000000 ................ - 4350 00000000 00000000 00000000 00000000 ................ - 4360 00000000 00000000 00000000 00000000 ................ - 4370 00000000 00000000 00000000 00000000 ................ - 4380 00000000 00000000 00000000 00000000 ................ - 4390 00000000 00000000 00000000 00000000 ................ - 43a0 00000000 00000000 00000000 00000000 ................ - 43b0 00000000 00000000 00000000 00000000 ................ - 43c0 00000000 00000000 00000000 00000000 ................ - 43d0 00000000 00000000 00000000 00000000 ................ - 43e0 00000000 00000000 00000000 00000000 ................ - 43f0 00000000 00000000 00000000 00000000 ................ - 4400 00000000 00000000 00000000 00000000 ................ - 4410 00000000 00000000 00000000 00000000 ................ - 4420 00000000 00000000 00000000 00000000 ................ - 4430 00000000 00000000 00000000 00000000 ................ - 4440 00000000 00000000 00000000 00000000 ................ - 4450 00000000 00000000 00000000 00000000 ................ - 4460 00000000 00000000 00000000 00000000 ................ - 4470 00000000 00000000 00000000 00000000 ................ - 4480 00000000 00000000 00000000 00000000 ................ - 4490 00000000 00000000 00000000 00000000 ................ - 44a0 00000000 00000000 00000000 00000000 ................ - 44b0 00000000 00000000 00000000 00000000 ................ - 44c0 00000000 00000000 00000000 00000000 ................ - 44d0 00000000 00000000 00000000 00000000 ................ - 44e0 00000000 00000000 00000000 00000000 ................ - 44f0 00000000 00000000 00000000 00000000 ................ - 4500 00000000 00000000 00000000 00000000 ................ - 4510 00000000 00000000 00000000 00000000 ................ - 4520 00000000 00000000 00000000 00000000 ................ - 4530 00000000 00000000 00000000 00000000 ................ - 4540 00000000 00000000 00000000 00000000 ................ - 4550 00000000 00000000 00000000 00000000 ................ - 4560 00000000 00000000 00000000 00000000 ................ - 4570 00000000 00000000 00000000 00000000 ................ - 4580 00000000 00000000 00000000 00000000 ................ - 4590 00000000 00000000 00000000 00000000 ................ - 45a0 00000000 00000000 00000000 00000000 ................ - 45b0 00000000 00000000 00000000 00000000 ................ - 45c0 00000000 00000000 00000000 00000000 ................ - 45d0 00000000 00000000 00000000 00000000 ................ - 45e0 00000000 00000000 00000000 00000000 ................ - 45f0 00000000 00000000 00000000 00000000 ................ - 4600 00000000 00000000 00000000 00000000 ................ - 4610 00000000 00000000 00000000 00000000 ................ - 4620 00000000 00000000 00000000 00000000 ................ - 4630 00000000 00000000 00000000 00000000 ................ - 4640 00000000 00000000 00000000 00000000 ................ - 4650 00000000 00000000 00000000 00000000 ................ - 4660 00000000 00000000 00000000 00000000 ................ - 4670 00000000 00000000 00000000 00000000 ................ - 4680 00000000 00000000 00000000 00000000 ................ - 4690 00000000 00000000 00000000 00000000 ................ - 46a0 00000000 00000000 00000000 00000000 ................ - 46b0 00000000 00000000 00000000 00000000 ................ - 46c0 00000000 00000000 00000000 00000000 ................ - 46d0 00000000 00000000 00000000 00000000 ................ - 46e0 00000000 00000000 00000000 00000000 ................ - 46f0 00000000 00000000 00000000 00000000 ................ - 4700 00000000 00000000 00000000 00000000 ................ - 4710 00000000 00000000 00000000 00000000 ................ - 4720 00000000 00000000 00000000 00000000 ................ - 4730 00000000 00000000 00000000 00000000 ................ - 4740 00000000 00000000 00000000 00000000 ................ - 4750 00000000 00000000 00000000 00000000 ................ - 4760 00000000 00000000 00000000 00000000 ................ - 4770 00000000 00000000 00000000 00000000 ................ - 4780 00000000 00000000 00000000 00000000 ................ - 4790 00000000 00000000 00000000 00000000 ................ - 47a0 00000000 00000000 00000000 00000000 ................ - 47b0 00000000 00000000 00000000 00000000 ................ - 47c0 00000000 00000000 00000000 00000000 ................ - 47d0 00000000 00000000 00000000 00000000 ................ - 47e0 00000000 00000000 00000000 00000000 ................ - 47f0 00000000 00000000 00000000 00000000 ................ - 4800 00000000 00000000 00000000 00000000 ................ - 4810 00000000 00000000 00000000 00000000 ................ - 4820 00000000 00000000 00000000 00000000 ................ - 4830 00000000 00000000 00000000 00000000 ................ - 4840 00000000 00000000 00000000 00000000 ................ - 4850 00000000 00000000 00000000 00000000 ................ - 4860 00000000 00000000 00000000 00000000 ................ - 4870 00000000 00000000 00000000 00000000 ................ - 4880 00000000 00000000 00000000 00000000 ................ - 4890 00000000 00000000 00000000 00000000 ................ - 48a0 00000000 00000000 00000000 00000000 ................ - 48b0 00000000 00000000 00000000 00000000 ................ - 48c0 00000000 00000000 00000000 00000000 ................ - 48d0 00000000 00000000 00000000 00000000 ................ - 48e0 00000000 00000000 00000000 00000000 ................ - 48f0 00000000 00000000 00000000 00000000 ................ - 4900 00000000 00000000 00000000 00000000 ................ - 4910 00000000 00000000 00000000 00000000 ................ - 4920 00000000 00000000 00000000 00000000 ................ - 4930 00000000 00000000 00000000 00000000 ................ - 4940 00000000 00000000 00000000 00000000 ................ - 4950 00000000 00000000 00000000 00000000 ................ - 4960 00000000 00000000 00000000 00000000 ................ - 4970 00000000 00000000 00000000 00000000 ................ - 4980 00000000 00000000 00000000 00000000 ................ - 4990 00000000 00000000 00000000 00000000 ................ - 49a0 00000000 00000000 00000000 00000000 ................ - 49b0 00000000 00000000 00000000 00000000 ................ - 49c0 00000000 00000000 00000000 00000000 ................ - 49d0 00000000 00000000 00000000 00000000 ................ - 49e0 00000000 00000000 00000000 00000000 ................ - 49f0 00000000 00000000 00000000 00000000 ................ - 4a00 00000000 00000000 00000000 00000000 ................ - 4a10 00000000 00000000 00000000 00000000 ................ - 4a20 00000000 00000000 00000000 00000000 ................ - 4a30 00000000 00000000 00000000 00000000 ................ - 4a40 00000000 00000000 00000000 00000000 ................ - 4a50 00000000 00000000 00000000 00000000 ................ - 4a60 00000000 00000000 00000000 00000000 ................ - 4a70 00000000 00000000 00000000 00000000 ................ - 4a80 00000000 00000000 00000000 00000000 ................ - 4a90 00000000 00000000 00000000 00000000 ................ - 4aa0 00000000 00000000 00000000 00000000 ................ - 4ab0 00000000 00000000 00000000 00000000 ................ - 4ac0 00000000 00000000 00000000 00000000 ................ - 4ad0 00000000 00000000 00000000 00000000 ................ - 4ae0 00000000 00000000 00000000 00000000 ................ - 4af0 00000000 00000000 00000000 00000000 ................ - 4b00 00000000 00000000 00000000 00000000 ................ - 4b10 00000000 00000000 00000000 00000000 ................ - 4b20 00000000 00000000 00000000 00000000 ................ - 4b30 00000000 00000000 00000000 00000000 ................ - 4b40 00000000 00000000 00000000 00000000 ................ - 4b50 00000000 00000000 00000000 00000000 ................ - 4b60 00000000 00000000 00000000 00000000 ................ - 4b70 00000000 00000000 00000000 00000000 ................ - 4b80 00000000 00000000 00000000 00000000 ................ - 4b90 00000000 00000000 00000000 00000000 ................ - 4ba0 00000000 00000000 00000000 00000000 ................ - 4bb0 00000000 00000000 00000000 00000000 ................ - 4bc0 00000000 00000000 00000000 00000000 ................ - 4bd0 00000000 00000000 00000000 00000000 ................ - 4be0 00000000 00000000 00000000 00000000 ................ - 4bf0 00000000 00000000 00000000 00000000 ................ - 4c00 00000000 00000000 00000000 00000000 ................ - 4c10 00000000 00000000 00000000 00000000 ................ - 4c20 00000000 00000000 00000000 00000000 ................ - 4c30 00000000 00000000 00000000 00000000 ................ - 4c40 00000000 00000000 00000000 00000000 ................ - 4c50 00000000 00000000 00000000 00000000 ................ - 4c60 00000000 00000000 00000000 00000000 ................ - 4c70 00000000 00000000 00000000 00000000 ................ - 4c80 00000000 00000000 00000000 00000000 ................ - 4c90 00000000 00000000 00000000 00000000 ................ - 4ca0 00000000 00000000 00000000 00000000 ................ - 4cb0 00000000 00000000 00000000 00000000 ................ - 4cc0 00000000 00000000 00000000 00000000 ................ - 4cd0 00000000 00000000 00000000 00000000 ................ - 4ce0 00000000 00000000 00000000 00000000 ................ - 4cf0 00000000 00000000 00000000 00000000 ................ - 4d00 00000000 00000000 00000000 00000000 ................ - 4d10 00000000 00000000 00000000 00000000 ................ - 4d20 00000000 00000000 00000000 00000000 ................ - 4d30 00000000 00000000 00000000 00000000 ................ - 4d40 00000000 00000000 00000000 00000000 ................ - 4d50 00000000 00000000 00000000 00000000 ................ - 4d60 00000000 00000000 00000000 00000000 ................ - 4d70 00000000 00000000 00000000 00000000 ................ - 4d80 00000000 00000000 00000000 00000000 ................ - 4d90 00000000 00000000 00000000 00000000 ................ - 4da0 00000000 00000000 00000000 00000000 ................ - 4db0 00000000 00000000 00000000 00000000 ................ - 4dc0 00000000 00000000 00000000 00000000 ................ - 4dd0 00000000 00000000 00000000 00000000 ................ - 4de0 00000000 00000000 00000000 00000000 ................ - 4df0 00000000 00000000 00000000 00000000 ................ - 4e00 00000000 00000000 00000000 00000000 ................ - 4e10 00000000 00000000 00000000 00000000 ................ - 4e20 00000000 00000000 00000000 00000000 ................ - 4e30 00000000 00000000 00000000 00000000 ................ - 4e40 00000000 00000000 00000000 00000000 ................ - 4e50 00000000 00000000 00000000 00000000 ................ - 4e60 00000000 00000000 00000000 00000000 ................ - 4e70 00000000 00000000 00000000 00000000 ................ - 4e80 00000000 00000000 00000000 00000000 ................ - 4e90 00000000 00000000 00000000 00000000 ................ - 4ea0 00000000 00000000 00000000 00000000 ................ - 4eb0 00000000 00000000 00000000 00000000 ................ - 4ec0 00000000 00000000 00000000 00000000 ................ - 4ed0 00000000 00000000 00000000 00000000 ................ - 4ee0 00000000 00000000 00000000 00000000 ................ - 4ef0 00000000 00000000 00000000 00000000 ................ - 4f00 00000000 00000000 00000000 00000000 ................ - 4f10 00000000 00000000 00000000 00000000 ................ - 4f20 00000000 00000000 00000000 00000000 ................ - 4f30 00000000 00000000 00000000 00000000 ................ - 4f40 00000000 00000000 00000000 00000000 ................ - 4f50 00000000 00000000 00000000 00000000 ................ - 4f60 00000000 00000000 00000000 00000000 ................ - 4f70 00000000 00000000 00000000 00000000 ................ - 4f80 00000000 00000000 00000000 00000000 ................ - 4f90 00000000 00000000 00000000 00000000 ................ - 4fa0 00000000 00000000 00000000 00000000 ................ - 4fb0 00000000 00000000 00000000 00000000 ................ - 4fc0 00000000 00000000 00000000 00000000 ................ - 4fd0 00000000 00000000 00000000 00000000 ................ - 4fe0 00000000 00000000 00000000 00000000 ................ - 4ff0 00000000 00000000 00000000 00000000 ................ - 5000 00000000 00000000 00000000 00000000 ................ - 5010 00000000 00000000 00000000 00000000 ................ - 5020 00000000 00000000 00000000 00000000 ................ - 5030 00000000 00000000 00000000 00000000 ................ - 5040 00000000 00000000 00000000 00000000 ................ - 5050 00000000 00000000 00000000 00000000 ................ - 5060 00000000 00000000 00000000 00000000 ................ - 5070 00000000 00000000 00000000 00000000 ................ - 5080 00000000 00000000 00000000 00000000 ................ - 5090 00000000 00000000 00000000 00000000 ................ - 50a0 00000000 00000000 00000000 00000000 ................ - 50b0 00000000 00000000 00000000 00000000 ................ - 50c0 00000000 00000000 00000000 00000000 ................ - 50d0 00000000 00000000 00000000 00000000 ................ - 50e0 00000000 00000000 00000000 00000000 ................ - 50f0 00000000 00000000 00000000 00000000 ................ - 5100 00000000 00000000 00000000 00000000 ................ - 5110 00000000 00000000 00000000 00000000 ................ - 5120 00000000 00000000 00000000 00000000 ................ - 5130 00000000 00000000 00000000 00000000 ................ - 5140 00000000 00000000 00000000 00000000 ................ - 5150 00000000 00000000 00000000 00000000 ................ - 5160 00000000 00000000 00000000 00000000 ................ - 5170 00000000 00000000 00000000 00000000 ................ - 5180 00000000 00000000 00000000 00000000 ................ - 5190 00000000 00000000 00000000 00000000 ................ - 51a0 00000000 00000000 00000000 00000000 ................ - 51b0 00000000 00000000 00000000 00000000 ................ - 51c0 00000000 00000000 00000000 00000000 ................ - 51d0 00000000 00000000 00000000 00000000 ................ - 51e0 00000000 00000000 00000000 00000000 ................ - 51f0 00000000 00000000 00000000 00000000 ................ - 5200 00000000 00000000 00000000 00000000 ................ - 5210 00000000 00000000 00000000 00000000 ................ - 5220 00000000 00000000 00000000 00000000 ................ - 5230 00000000 00000000 00000000 00000000 ................ - 5240 00000000 00000000 00000000 00000000 ................ - 5250 00000000 00000000 00000000 00000000 ................ - 5260 00000000 00000000 00000000 00000000 ................ - 5270 00000000 00000000 00000000 00000000 ................ - 5280 00000000 00000000 00000000 00000000 ................ - 5290 00000000 00000000 00000000 00000000 ................ - 52a0 00000000 00000000 00000000 00000000 ................ - 52b0 00000000 00000000 00000000 00000000 ................ - 52c0 00000000 00000000 00000000 00000000 ................ - 52d0 00000000 00000000 00000000 00000000 ................ - 52e0 00000000 00000000 00000000 00000000 ................ - 52f0 00000000 00000000 00000000 00000000 ................ - 5300 00000000 00000000 00000000 00000000 ................ - 5310 00000000 00000000 00000000 00000000 ................ - 5320 00000000 00000000 00000000 00000000 ................ - 5330 00000000 00000000 00000000 00000000 ................ - 5340 00000000 00000000 00000000 00000000 ................ - 5350 00000000 00000000 00000000 00000000 ................ - 5360 00000000 00000000 00000000 00000000 ................ - 5370 00000000 00000000 00000000 00000000 ................ - 5380 00000000 00000000 00000000 00000000 ................ - 5390 00000000 00000000 00000000 00000000 ................ - 53a0 00000000 00000000 00000000 00000000 ................ - 53b0 00000000 00000000 00000000 00000000 ................ - 53c0 00000000 00000000 00000000 00000000 ................ - 53d0 00000000 00000000 00000000 00000000 ................ - 53e0 00000000 00000000 00000000 00000000 ................ - 53f0 00000000 00000000 00000000 00000000 ................ - 5400 00000000 00000000 00000000 00000000 ................ - 5410 00000000 00000000 00000000 00000000 ................ - 5420 00000000 00000000 00000000 00000000 ................ - 5430 00000000 00000000 00000000 00000000 ................ - 5440 00000000 00000000 00000000 00000000 ................ - 5450 00000000 00000000 00000000 00000000 ................ - 5460 00000000 00000000 00000000 00000000 ................ - 5470 00000000 00000000 00000000 00000000 ................ - 5480 00000000 00000000 00000000 00000000 ................ - 5490 00000000 00000000 00000000 00000000 ................ - 54a0 00000000 00000000 00000000 00000000 ................ - 54b0 00000000 00000000 00000000 00000000 ................ - 54c0 00000000 00000000 00000000 00000000 ................ - 54d0 00000000 00000000 00000000 00000000 ................ - 54e0 00000000 00000000 00000000 00000000 ................ - 54f0 00000000 00000000 00000000 00000000 ................ - 5500 00000000 00000000 00000000 00000000 ................ - 5510 00000000 00000000 00000000 00000000 ................ - 5520 00000000 00000000 00000000 00000000 ................ - 5530 00000000 00000000 00000000 00000000 ................ - 5540 00000000 00000000 00000000 00000000 ................ - 5550 00000000 00000000 00000000 00000000 ................ - 5560 00000000 00000000 00000000 00000000 ................ - 5570 00000000 00000000 00000000 00000000 ................ - 5580 00000000 00000000 00000000 00000000 ................ - 5590 00000000 00000000 00000000 00000000 ................ - 55a0 00000000 00000000 00000000 00000000 ................ - 55b0 00000000 00000000 00000000 00000000 ................ - 55c0 00000000 00000000 00000000 00000000 ................ - 55d0 00000000 00000000 00000000 00000000 ................ - 55e0 00000000 00000000 00000000 00000000 ................ - 55f0 00000000 00000000 00000000 00000000 ................ - 5600 00000000 00000000 00000000 00000000 ................ - 5610 00000000 00000000 00000000 00000000 ................ - 5620 00000000 00000000 00000000 00000000 ................ - 5630 00000000 00000000 00000000 00000000 ................ - 5640 00000000 00000000 00000000 00000000 ................ - 5650 00000000 00000000 00000000 00000000 ................ - 5660 00000000 00000000 00000000 00000000 ................ - 5670 00000000 00000000 00000000 00000000 ................ - 5680 00000000 00000000 00000000 00000000 ................ - 5690 00000000 00000000 00000000 00000000 ................ - 56a0 00000000 00000000 00000000 00000000 ................ - 56b0 00000000 00000000 00000000 00000000 ................ - 56c0 00000000 00000000 00000000 00000000 ................ - 56d0 00000000 00000000 00000000 00000000 ................ - 56e0 00000000 00000000 00000000 00000000 ................ - 56f0 00000000 00000000 00000000 00000000 ................ - 5700 00000000 00000000 00000000 00000000 ................ - 5710 00000000 00000000 00000000 00000000 ................ - 5720 00000000 00000000 00000000 00000000 ................ - 5730 00000000 00000000 00000000 00000000 ................ - 5740 00000000 00000000 00000000 00000000 ................ - 5750 00000000 00000000 00000000 00000000 ................ - 5760 00000000 00000000 00000000 00000000 ................ - 5770 00000000 00000000 00000000 00000000 ................ - 5780 00000000 00000000 00000000 00000000 ................ - 5790 00000000 00000000 00000000 00000000 ................ - 57a0 00000000 00000000 00000000 00000000 ................ - 57b0 00000000 00000000 00000000 00000000 ................ - 57c0 00000000 00000000 00000000 00000000 ................ - 57d0 00000000 00000000 00000000 00000000 ................ - 57e0 00000000 00000000 00000000 00000000 ................ - 57f0 00000000 00000000 00000000 00000000 ................ - 5800 00000000 00000000 00000000 00000000 ................ - 5810 00000000 00000000 00000000 00000000 ................ - 5820 00000000 00000000 00000000 00000000 ................ - 5830 00000000 00000000 00000000 00000000 ................ - 5840 00000000 00000000 00000000 00000000 ................ - 5850 00000000 00000000 00000000 00000000 ................ - 5860 00000000 00000000 00000000 00000000 ................ - 5870 00000000 00000000 00000000 00000000 ................ - 5880 00000000 00000000 00000000 00000000 ................ - 5890 00000000 00000000 00000000 00000000 ................ - 58a0 00000000 00000000 00000000 00000000 ................ - 58b0 00000000 00000000 00000000 00000000 ................ - 58c0 00000000 00000000 00000000 00000000 ................ - 58d0 00000000 00000000 00000000 00000000 ................ - 58e0 00000000 00000000 00000000 00000000 ................ - 58f0 00000000 00000000 00000000 00000000 ................ - 5900 00000000 00000000 00000000 00000000 ................ - 5910 00000000 00000000 00000000 00000000 ................ - 5920 00000000 00000000 00000000 00000000 ................ - 5930 00000000 00000000 00000000 00000000 ................ - 5940 00000000 00000000 00000000 00000000 ................ - 5950 00000000 00000000 00000000 00000000 ................ - 5960 00000000 00000000 00000000 00000000 ................ - 5970 00000000 00000000 00000000 00000000 ................ - 5980 00000000 00000000 00000000 00000000 ................ - 5990 00000000 00000000 00000000 00000000 ................ - 59a0 00000000 00000000 00000000 00000000 ................ - 59b0 00000000 00000000 00000000 00000000 ................ - 59c0 00000000 00000000 00000000 00000000 ................ - 59d0 00000000 00000000 00000000 00000000 ................ - 59e0 00000000 00000000 00000000 00000000 ................ - 59f0 00000000 00000000 00000000 00000000 ................ - 5a00 00000000 00000000 00000000 00000000 ................ - 5a10 00000000 00000000 00000000 00000000 ................ - 5a20 00000000 00000000 00000000 00000000 ................ - 5a30 00000000 00000000 00000000 00000000 ................ - 5a40 00000000 00000000 00000000 00000000 ................ - 5a50 00000000 00000000 00000000 00000000 ................ - 5a60 00000000 00000000 00000000 00000000 ................ - 5a70 00000000 00000000 00000000 00000000 ................ - 5a80 00000000 00000000 00000000 00000000 ................ - 5a90 00000000 00000000 00000000 00000000 ................ - 5aa0 00000000 00000000 00000000 00000000 ................ - 5ab0 00000000 00000000 00000000 00000000 ................ - 5ac0 00000000 00000000 00000000 00000000 ................ - 5ad0 00000000 00000000 00000000 00000000 ................ - 5ae0 00000000 00000000 00000000 00000000 ................ - 5af0 00000000 00000000 00000000 00000000 ................ - 5b00 00000000 00000000 00000000 00000000 ................ - 5b10 00000000 00000000 00000000 00000000 ................ - 5b20 00000000 00000000 00000000 00000000 ................ - 5b30 00000000 00000000 00000000 00000000 ................ - 5b40 00000000 00000000 00000000 00000000 ................ - 5b50 00000000 00000000 00000000 00000000 ................ - 5b60 00000000 00000000 00000000 00000000 ................ - 5b70 00000000 00000000 00000000 00000000 ................ - 5b80 00000000 00000000 00000000 00000000 ................ - 5b90 00000000 00000000 00000000 00000000 ................ - 5ba0 00000000 00000000 00000000 00000000 ................ - 5bb0 00000000 00000000 00000000 00000000 ................ - 5bc0 00000000 00000000 00000000 00000000 ................ - 5bd0 00000000 00000000 00000000 00000000 ................ - 5be0 00000000 00000000 00000000 00000000 ................ - 5bf0 00000000 00000000 00000000 00000000 ................ - 5c00 00000000 00000000 00000000 00000000 ................ - 5c10 00000000 00000000 00000000 00000000 ................ - 5c20 00000000 00000000 00000000 00000000 ................ - 5c30 00000000 00000000 00000000 00000000 ................ - 5c40 00000000 00000000 00000000 00000000 ................ - 5c50 00000000 00000000 00000000 00000000 ................ - 5c60 00000000 00000000 00000000 00000000 ................ - 5c70 00000000 00000000 00000000 00000000 ................ - 5c80 00000000 00000000 00000000 00000000 ................ - 5c90 00000000 00000000 00000000 00000000 ................ - 5ca0 00000000 00000000 00000000 00000000 ................ - 5cb0 00000000 00000000 00000000 00000000 ................ - 5cc0 00000000 00000000 00000000 00000000 ................ - 5cd0 00000000 00000000 00000000 00000000 ................ - 5ce0 00000000 00000000 00000000 00000000 ................ - 5cf0 00000000 00000000 00000000 00000000 ................ - 5d00 00000000 00000000 00000000 00000000 ................ - 5d10 00000000 00000000 00000000 00000000 ................ - 5d20 00000000 00000000 00000000 00000000 ................ - 5d30 00000000 00000000 00000000 00000000 ................ - 5d40 00000000 00000000 00000000 00000000 ................ - 5d50 00000000 00000000 00000000 00000000 ................ - 5d60 00000000 00000000 00000000 00000000 ................ - 5d70 00000000 00000000 00000000 00000000 ................ - 5d80 00000000 00000000 00000000 00000000 ................ - 5d90 00000000 00000000 00000000 00000000 ................ - 5da0 00000000 00000000 00000000 00000000 ................ - 5db0 00000000 00000000 00000000 00000000 ................ - 5dc0 00000000 00000000 00000000 00000000 ................ - 5dd0 00000000 00000000 00000000 00000000 ................ - 5de0 00000000 00000000 00000000 00000000 ................ - 5df0 00000000 00000000 00000000 00000000 ................ - 5e00 00000000 00000000 00000000 00000000 ................ - 5e10 00000000 00000000 00000000 00000000 ................ - 5e20 00000000 00000000 00000000 00000000 ................ - 5e30 00000000 00000000 00000000 00000000 ................ - 5e40 00000000 00000000 00000000 00000000 ................ - 5e50 00000000 00000000 00000000 00000000 ................ - 5e60 00000000 00000000 00000000 00000000 ................ - 5e70 00000000 00000000 00000000 00000000 ................ - 5e80 00000000 00000000 00000000 00000000 ................ - 5e90 00000000 00000000 00000000 00000000 ................ - 5ea0 00000000 00000000 00000000 00000000 ................ - 5eb0 00000000 00000000 00000000 00000000 ................ - 5ec0 00000000 00000000 00000000 00000000 ................ - 5ed0 00000000 00000000 00000000 00000000 ................ - 5ee0 00000000 00000000 00000000 00000000 ................ - 5ef0 00000000 00000000 00000000 00000000 ................ - 5f00 00000000 00000000 00000000 00000000 ................ - 5f10 00000000 00000000 00000000 00000000 ................ - 5f20 00000000 00000000 00000000 00000000 ................ - 5f30 00000000 00000000 00000000 00000000 ................ - 5f40 00000000 00000000 00000000 00000000 ................ - 5f50 00000000 00000000 00000000 00000000 ................ - 5f60 00000000 00000000 00000000 00000000 ................ - 5f70 00000000 00000000 00000000 00000000 ................ - 5f80 00000000 00000000 00000000 00000000 ................ - 5f90 00000000 00000000 00000000 00000000 ................ - 5fa0 00000000 00000000 00000000 00000000 ................ - 5fb0 00000000 00000000 00000000 00000000 ................ - 5fc0 00000000 00000000 00000000 00000000 ................ - 5fd0 00000000 00000000 00000000 00000000 ................ - 5fe0 00000000 00000000 00000000 00000000 ................ - 5ff0 00000000 00000000 00000000 00000000 ................ - 6000 00000000 00000000 00000000 00000000 ................ - 6010 00000000 00000000 00000000 00000000 ................ - 6020 00000000 00000000 00000000 00000000 ................ - 6030 00000000 00000000 00000000 00000000 ................ - 6040 00000000 00000000 00000000 00000000 ................ - 6050 00000000 00000000 00000000 00000000 ................ - 6060 00000000 00000000 00000000 00000000 ................ - 6070 00000000 00000000 00000000 00000000 ................ - 6080 00000000 00000000 00000000 00000000 ................ - 6090 00000000 00000000 00000000 00000000 ................ - 60a0 00000000 00000000 00000000 00000000 ................ - 60b0 00000000 00000000 00000000 00000000 ................ - 60c0 00000000 00000000 00000000 00000000 ................ - 60d0 00000000 00000000 00000000 00000000 ................ - 60e0 00000000 00000000 00000000 00000000 ................ - 60f0 00000000 00000000 00000000 00000000 ................ - 6100 00000000 00000000 00000000 00000000 ................ - 6110 00000000 00000000 00000000 00000000 ................ - 6120 00000000 00000000 00000000 00000000 ................ - 6130 00000000 00000000 00000000 00000000 ................ - 6140 00000000 00000000 00000000 00000000 ................ - 6150 00000000 00000000 00000000 00000000 ................ - 6160 00000000 00000000 00000000 00000000 ................ - 6170 00000000 00000000 00000000 00000000 ................ - 6180 00000000 00000000 00000000 00000000 ................ - 6190 00000000 00000000 00000000 00000000 ................ - 61a0 00000000 00000000 00000000 00000000 ................ - 61b0 00000000 00000000 00000000 00000000 ................ - 61c0 00000000 00000000 00000000 00000000 ................ - 61d0 00000000 00000000 00000000 00000000 ................ - 61e0 00000000 00000000 00000000 00000000 ................ - 61f0 00000000 00000000 00000000 00000000 ................ - 6200 00000000 00000000 00000000 00000000 ................ - 6210 00000000 00000000 00000000 00000000 ................ - 6220 00000000 00000000 00000000 00000000 ................ - 6230 00000000 00000000 00000000 00000000 ................ - 6240 00000000 00000000 00000000 00000000 ................ - 6250 00000000 00000000 00000000 00000000 ................ - 6260 00000000 00000000 00000000 00000000 ................ - 6270 00000000 00000000 00000000 00000000 ................ - 6280 00000000 00000000 00000000 00000000 ................ - 6290 00000000 00000000 00000000 00000000 ................ - 62a0 00000000 00000000 00000000 00000000 ................ - 62b0 00000000 00000000 00000000 00000000 ................ - 62c0 00000000 00000000 00000000 00000000 ................ - 62d0 00000000 00000000 00000000 00000000 ................ - 62e0 00000000 00000000 00000000 00000000 ................ - 62f0 00000000 00000000 00000000 00000000 ................ - 6300 00000000 00000000 00000000 00000000 ................ - 6310 00000000 00000000 00000000 00000000 ................ - 6320 00000000 00000000 00000000 00000000 ................ - 6330 00000000 00000000 00000000 00000000 ................ - 6340 00000000 00000000 00000000 00000000 ................ - 6350 00000000 00000000 00000000 00000000 ................ - 6360 00000000 00000000 00000000 00000000 ................ - 6370 00000000 00000000 00000000 00000000 ................ - 6380 00000000 00000000 00000000 00000000 ................ - 6390 00000000 00000000 00000000 00000000 ................ - 63a0 00000000 00000000 00000000 00000000 ................ - 63b0 00000000 00000000 00000000 00000000 ................ - 63c0 00000000 00000000 00000000 00000000 ................ - 63d0 00000000 00000000 00000000 00000000 ................ - 63e0 00000000 00000000 00000000 00000000 ................ - 63f0 00000000 00000000 00000000 00000000 ................ - 6400 00000000 00000000 00000000 00000000 ................ - 6410 00000000 00000000 00000000 00000000 ................ - 6420 00000000 00000000 00000000 00000000 ................ - 6430 00000000 00000000 00000000 00000000 ................ - 6440 00000000 00000000 00000000 00000000 ................ - 6450 00000000 00000000 00000000 00000000 ................ - 6460 00000000 00000000 00000000 00000000 ................ - 6470 00000000 00000000 00000000 00000000 ................ - 6480 00000000 00000000 00000000 00000000 ................ - 6490 00000000 00000000 00000000 00000000 ................ - 64a0 00000000 00000000 00000000 00000000 ................ - 64b0 00000000 00000000 00000000 00000000 ................ - 64c0 00000000 00000000 00000000 00000000 ................ - 64d0 00000000 00000000 00000000 00000000 ................ - 64e0 00000000 00000000 00000000 00000000 ................ - 64f0 00000000 00000000 00000000 00000000 ................ - 6500 00000000 00000000 00000000 00000000 ................ - 6510 00000000 00000000 00000000 00000000 ................ - 6520 00000000 00000000 00000000 00000000 ................ - 6530 00000000 00000000 00000000 00000000 ................ - 6540 00000000 00000000 00000000 00000000 ................ - 6550 00000000 00000000 00000000 00000000 ................ - 6560 00000000 00000000 00000000 00000000 ................ - 6570 00000000 00000000 00000000 00000000 ................ - 6580 00000000 00000000 00000000 00000000 ................ - 6590 00000000 00000000 00000000 00000000 ................ - 65a0 00000000 00000000 00000000 00000000 ................ - 65b0 00000000 00000000 00000000 00000000 ................ - 65c0 00000000 00000000 00000000 00000000 ................ - 65d0 00000000 00000000 00000000 00000000 ................ - 65e0 00000000 00000000 00000000 00000000 ................ - 65f0 00000000 00000000 00000000 00000000 ................ - 6600 00000000 00000000 00000000 00000000 ................ - 6610 00000000 00000000 00000000 00000000 ................ - 6620 00000000 00000000 00000000 00000000 ................ - 6630 00000000 00000000 00000000 00000000 ................ - 6640 00000000 00000000 00000000 00000000 ................ - 6650 00000000 00000000 00000000 00000000 ................ - 6660 00000000 00000000 00000000 00000000 ................ - 6670 00000000 00000000 00000000 00000000 ................ - 6680 00000000 00000000 00000000 00000000 ................ - 6690 00000000 00000000 00000000 00000000 ................ - 66a0 00000000 00000000 00000000 00000000 ................ - 66b0 00000000 00000000 00000000 00000000 ................ - 66c0 00000000 00000000 00000000 00000000 ................ - 66d0 00000000 00000000 00000000 00000000 ................ - 66e0 00000000 00000000 00000000 00000000 ................ - 66f0 00000000 00000000 00000000 00000000 ................ - 6700 00000000 00000000 00000000 00000000 ................ - 6710 00000000 00000000 00000000 00000000 ................ - 6720 00000000 00000000 00000000 00000000 ................ - 6730 00000000 00000000 00000000 00000000 ................ - 6740 00000000 00000000 00000000 00000000 ................ - 6750 00000000 00000000 00000000 00000000 ................ - 6760 00000000 00000000 00000000 00000000 ................ - 6770 00000000 00000000 00000000 00000000 ................ - 6780 00000000 00000000 00000000 00000000 ................ - 6790 00000000 00000000 00000000 00000000 ................ - 67a0 00000000 00000000 00000000 00000000 ................ - 67b0 00000000 00000000 00000000 00000000 ................ - 67c0 00000000 00000000 00000000 00000000 ................ - 67d0 00000000 00000000 00000000 00000000 ................ - 67e0 00000000 00000000 00000000 00000000 ................ - 67f0 00000000 00000000 00000000 00000000 ................ - 6800 00000000 00000000 00000000 00000000 ................ - 6810 00000000 00000000 00000000 00000000 ................ - 6820 00000000 00000000 00000000 00000000 ................ - 6830 00000000 00000000 00000000 00000000 ................ - 6840 00000000 00000000 00000000 00000000 ................ - 6850 00000000 00000000 00000000 00000000 ................ - 6860 00000000 00000000 00000000 00000000 ................ - 6870 00000000 00000000 00000000 00000000 ................ - 6880 00000000 00000000 00000000 00000000 ................ - 6890 00000000 00000000 00000000 00000000 ................ - 68a0 00000000 00000000 00000000 00000000 ................ - 68b0 00000000 00000000 00000000 00000000 ................ - 68c0 00000000 00000000 00000000 00000000 ................ - 68d0 00000000 00000000 00000000 00000000 ................ - 68e0 00000000 00000000 00000000 00000000 ................ - 68f0 00000000 00000000 00000000 00000000 ................ - 6900 00000000 00000000 00000000 00000000 ................ - 6910 00000000 00000000 00000000 00000000 ................ - 6920 00000000 00000000 00000000 00000000 ................ - 6930 00000000 00000000 00000000 00000000 ................ - 6940 00000000 00000000 00000000 00000000 ................ - 6950 00000000 00000000 00000000 00000000 ................ - 6960 00000000 00000000 00000000 00000000 ................ - 6970 00000000 00000000 00000000 00000000 ................ - 6980 00000000 00000000 00000000 00000000 ................ - 6990 00000000 00000000 00000000 00000000 ................ - 69a0 00000000 00000000 00000000 00000000 ................ - 69b0 00000000 00000000 00000000 00000000 ................ - 69c0 00000000 00000000 00000000 00000000 ................ - 69d0 00000000 00000000 00000000 00000000 ................ - 69e0 00000000 00000000 00000000 00000000 ................ - 69f0 00000000 00000000 00000000 00000000 ................ - 6a00 00000000 00000000 00000000 00000000 ................ - 6a10 00000000 00000000 00000000 00000000 ................ - 6a20 00000000 00000000 00000000 00000000 ................ - 6a30 00000000 00000000 00000000 00000000 ................ - 6a40 00000000 00000000 00000000 00000000 ................ - 6a50 00000000 00000000 00000000 00000000 ................ - 6a60 00000000 00000000 00000000 00000000 ................ - 6a70 00000000 00000000 00000000 00000000 ................ - 6a80 00000000 00000000 00000000 00000000 ................ - 6a90 00000000 00000000 00000000 00000000 ................ - 6aa0 00000000 00000000 00000000 00000000 ................ - 6ab0 00000000 00000000 00000000 00000000 ................ - 6ac0 00000000 00000000 00000000 00000000 ................ - 6ad0 00000000 00000000 00000000 00000000 ................ - 6ae0 00000000 00000000 00000000 00000000 ................ - 6af0 00000000 00000000 00000000 00000000 ................ - 6b00 00000000 00000000 00000000 00000000 ................ - 6b10 00000000 00000000 00000000 00000000 ................ - 6b20 00000000 00000000 00000000 00000000 ................ - 6b30 00000000 00000000 00000000 00000000 ................ - 6b40 00000000 00000000 00000000 00000000 ................ - 6b50 00000000 00000000 00000000 00000000 ................ - 6b60 00000000 00000000 00000000 00000000 ................ - 6b70 00000000 00000000 00000000 00000000 ................ - 6b80 00000000 00000000 00000000 00000000 ................ - 6b90 00000000 00000000 00000000 00000000 ................ - 6ba0 00000000 00000000 00000000 00000000 ................ - 6bb0 00000000 00000000 00000000 00000000 ................ - 6bc0 00000000 00000000 00000000 00000000 ................ - 6bd0 00000000 00000000 00000000 00000000 ................ - 6be0 00000000 00000000 00000000 00000000 ................ - 6bf0 00000000 00000000 00000000 00000000 ................ - 6c00 00000000 00000000 00000000 00000000 ................ - 6c10 00000000 00000000 00000000 00000000 ................ - 6c20 00000000 00000000 00000000 00000000 ................ - 6c30 00000000 00000000 00000000 00000000 ................ - 6c40 00000000 00000000 00000000 00000000 ................ - 6c50 00000000 00000000 00000000 00000000 ................ - 6c60 00000000 00000000 00000000 00000000 ................ - 6c70 00000000 00000000 00000000 00000000 ................ - 6c80 00000000 00000000 00000000 00000000 ................ - 6c90 00000000 00000000 00000000 00000000 ................ - 6ca0 00000000 00000000 00000000 00000000 ................ - 6cb0 00000000 00000000 00000000 00000000 ................ - 6cc0 00000000 00000000 00000000 00000000 ................ - 6cd0 00000000 00000000 00000000 00000000 ................ - 6ce0 00000000 00000000 00000000 00000000 ................ - 6cf0 00000000 00000000 00000000 00000000 ................ - 6d00 00000000 00000000 00000000 00000000 ................ - 6d10 00000000 00000000 00000000 00000000 ................ - 6d20 00000000 00000000 00000000 00000000 ................ - 6d30 00000000 00000000 00000000 00000000 ................ - 6d40 00000000 00000000 00000000 00000000 ................ - 6d50 00000000 00000000 00000000 00000000 ................ - 6d60 00000000 00000000 00000000 00000000 ................ - 6d70 00000000 00000000 00000000 00000000 ................ - 6d80 00000000 00000000 00000000 00000000 ................ - 6d90 00000000 00000000 00000000 00000000 ................ - 6da0 00000000 00000000 00000000 00000000 ................ - 6db0 00000000 00000000 00000000 00000000 ................ - 6dc0 00000000 00000000 00000000 00000000 ................ - 6dd0 00000000 00000000 00000000 00000000 ................ - 6de0 00000000 00000000 00000000 00000000 ................ - 6df0 00000000 00000000 00000000 00000000 ................ - 6e00 00000000 00000000 00000000 00000000 ................ - 6e10 00000000 00000000 00000000 00000000 ................ - 6e20 00000000 00000000 00000000 00000000 ................ - 6e30 00000000 00000000 00000000 00000000 ................ - 6e40 00000000 00000000 00000000 00000000 ................ - 6e50 00000000 00000000 00000000 00000000 ................ - 6e60 00000000 00000000 00000000 00000000 ................ - 6e70 00000000 00000000 00000000 00000000 ................ - 6e80 00000000 00000000 00000000 00000000 ................ - 6e90 00000000 00000000 00000000 00000000 ................ - 6ea0 00000000 00000000 00000000 00000000 ................ - 6eb0 00000000 00000000 00000000 00000000 ................ - 6ec0 00000000 00000000 00000000 00000000 ................ - 6ed0 00000000 00000000 00000000 00000000 ................ - 6ee0 00000000 00000000 00000000 00000000 ................ - 6ef0 00000000 00000000 00000000 00000000 ................ - 6f00 00000000 00000000 00000000 00000000 ................ - 6f10 00000000 00000000 00000000 00000000 ................ - 6f20 00000000 00000000 00000000 00000000 ................ - 6f30 00000000 00000000 00000000 00000000 ................ - 6f40 00000000 00000000 00000000 00000000 ................ - 6f50 00000000 00000000 00000000 00000000 ................ - 6f60 00000000 00000000 00000000 00000000 ................ - 6f70 00000000 00000000 00000000 00000000 ................ - 6f80 00000000 00000000 00000000 00000000 ................ - 6f90 00000000 00000000 00000000 00000000 ................ - 6fa0 00000000 00000000 00000000 00000000 ................ - 6fb0 00000000 00000000 00000000 00000000 ................ - 6fc0 00000000 00000000 00000000 00000000 ................ - 6fd0 00000000 00000000 00000000 00000000 ................ - 6fe0 00000000 00000000 00000000 00000000 ................ - 6ff0 00000000 00000000 00000000 00000000 ................ - 7000 00000000 00000000 00000000 00000000 ................ - 7010 00000000 00000000 00000000 00000000 ................ - 7020 00000000 00000000 00000000 00000000 ................ - 7030 00000000 00000000 00000000 00000000 ................ - 7040 00000000 00000000 00000000 00000000 ................ - 7050 00000000 00000000 00000000 00000000 ................ - 7060 00000000 00000000 00000000 00000000 ................ - 7070 00000000 00000000 00000000 00000000 ................ - 7080 00000000 00000000 00000000 00000000 ................ - 7090 00000000 00000000 00000000 00000000 ................ - 70a0 00000000 00000000 00000000 00000000 ................ - 70b0 00000000 00000000 00000000 00000000 ................ - 70c0 00000000 00000000 00000000 00000000 ................ - 70d0 00000000 00000000 00000000 00000000 ................ - 70e0 00000000 00000000 00000000 00000000 ................ - 70f0 00000000 00000000 00000000 00000000 ................ - 7100 00000000 00000000 00000000 00000000 ................ - 7110 00000000 00000000 00000000 00000000 ................ - 7120 00000000 00000000 00000000 00000000 ................ - 7130 00000000 00000000 00000000 00000000 ................ - 7140 00000000 00000000 00000000 00000000 ................ - 7150 00000000 00000000 00000000 00000000 ................ - 7160 00000000 00000000 00000000 00000000 ................ - 7170 00000000 00000000 00000000 00000000 ................ - 7180 00000000 00000000 00000000 00000000 ................ - 7190 00000000 00000000 00000000 00000000 ................ - 71a0 00000000 00000000 00000000 00000000 ................ - 71b0 00000000 00000000 00000000 00000000 ................ - 71c0 00000000 00000000 00000000 00000000 ................ - 71d0 00000000 00000000 00000000 00000000 ................ - 71e0 00000000 00000000 00000000 00000000 ................ - 71f0 00000000 00000000 00000000 00000000 ................ - 7200 00000000 00000000 00000000 00000000 ................ - 7210 00000000 00000000 00000000 00000000 ................ - 7220 00000000 00000000 00000000 00000000 ................ - 7230 00000000 00000000 00000000 00000000 ................ - 7240 00000000 00000000 00000000 00000000 ................ - 7250 00000000 00000000 00000000 00000000 ................ - 7260 00000000 00000000 00000000 00000000 ................ - 7270 00000000 00000000 00000000 00000000 ................ - 7280 00000000 00000000 00000000 00000000 ................ - 7290 00000000 00000000 00000000 00000000 ................ - 72a0 00000000 00000000 00000000 00000000 ................ - 72b0 00000000 00000000 00000000 00000000 ................ - 72c0 00000000 00000000 00000000 00000000 ................ - 72d0 00000000 00000000 00000000 00000000 ................ - 72e0 00000000 00000000 00000000 00000000 ................ - 72f0 00000000 00000000 00000000 00000000 ................ - 7300 00000000 00000000 00000000 00000000 ................ - 7310 00000000 00000000 00000000 00000000 ................ - 7320 00000000 00000000 00000000 00000000 ................ - 7330 00000000 00000000 00000000 00000000 ................ - 7340 00000000 00000000 00000000 00000000 ................ - 7350 00000000 00000000 00000000 00000000 ................ - 7360 00000000 00000000 00000000 00000000 ................ - 7370 00000000 00000000 00000000 00000000 ................ - 7380 00000000 00000000 00000000 00000000 ................ - 7390 00000000 00000000 00000000 00000000 ................ - 73a0 00000000 00000000 00000000 00000000 ................ - 73b0 00000000 00000000 00000000 00000000 ................ - 73c0 00000000 00000000 00000000 00000000 ................ - 73d0 00000000 00000000 00000000 00000000 ................ - 73e0 00000000 00000000 00000000 00000000 ................ - 73f0 00000000 00000000 00000000 00000000 ................ - 7400 00000000 00000000 00000000 00000000 ................ - 7410 00000000 00000000 00000000 00000000 ................ - 7420 00000000 00000000 00000000 00000000 ................ - 7430 00000000 00000000 00000000 00000000 ................ - 7440 00000000 00000000 00000000 00000000 ................ - 7450 00000000 00000000 00000000 00000000 ................ - 7460 00000000 00000000 00000000 00000000 ................ - 7470 00000000 00000000 00000000 00000000 ................ - 7480 00000000 00000000 00000000 00000000 ................ - 7490 00000000 00000000 00000000 00000000 ................ - 74a0 00000000 00000000 00000000 00000000 ................ - 74b0 00000000 00000000 00000000 00000000 ................ - 74c0 00000000 00000000 00000000 00000000 ................ - 74d0 00000000 00000000 00000000 00000000 ................ - 74e0 00000000 00000000 00000000 00000000 ................ - 74f0 00000000 00000000 00000000 00000000 ................ - 7500 00000000 00000000 00000000 00000000 ................ - 7510 00000000 00000000 00000000 00000000 ................ - 7520 00000000 00000000 00000000 00000000 ................ - 7530 00000000 00000000 00000000 00000000 ................ - 7540 00000000 00000000 00000000 00000000 ................ - 7550 00000000 00000000 00000000 00000000 ................ - 7560 00000000 00000000 00000000 00000000 ................ - 7570 00000000 00000000 00000000 00000000 ................ - 7580 00000000 00000000 00000000 00000000 ................ - 7590 00000000 00000000 00000000 00000000 ................ - 75a0 00000000 00000000 00000000 00000000 ................ - 75b0 00000000 00000000 00000000 00000000 ................ - 75c0 00000000 00000000 00000000 00000000 ................ - 75d0 00000000 00000000 00000000 00000000 ................ - 75e0 00000000 00000000 00000000 00000000 ................ - 75f0 00000000 00000000 00000000 00000000 ................ - 7600 00000000 00000000 00000000 00000000 ................ - 7610 00000000 00000000 00000000 00000000 ................ - 7620 00000000 00000000 00000000 00000000 ................ - 7630 00000000 00000000 00000000 00000000 ................ - 7640 00000000 00000000 00000000 00000000 ................ - 7650 00000000 00000000 00000000 00000000 ................ - 7660 00000000 00000000 00000000 00000000 ................ - 7670 00000000 00000000 00000000 00000000 ................ - 7680 00000000 00000000 00000000 00000000 ................ - 7690 00000000 00000000 00000000 00000000 ................ - 76a0 00000000 00000000 00000000 00000000 ................ - 76b0 00000000 00000000 00000000 00000000 ................ - 76c0 00000000 00000000 00000000 00000000 ................ - 76d0 00000000 00000000 00000000 00000000 ................ - 76e0 00000000 00000000 00000000 00000000 ................ - 76f0 00000000 00000000 00000000 00000000 ................ - 7700 00000000 00000000 00000000 00000000 ................ - 7710 00000000 00000000 00000000 00000000 ................ - 7720 00000000 00000000 00000000 00000000 ................ - 7730 00000000 00000000 00000000 00000000 ................ - 7740 00000000 00000000 00000000 00000000 ................ - 7750 00000000 00000000 00000000 00000000 ................ - 7760 00000000 00000000 00000000 00000000 ................ - 7770 00000000 00000000 00000000 00000000 ................ - 7780 00000000 00000000 00000000 00000000 ................ - 7790 00000000 00000000 00000000 00000000 ................ - 77a0 00000000 00000000 00000000 00000000 ................ - 77b0 00000000 00000000 00000000 00000000 ................ - 77c0 00000000 00000000 00000000 00000000 ................ - 77d0 00000000 00000000 00000000 00000000 ................ - 77e0 00000000 00000000 00000000 00000000 ................ - 77f0 00000000 00000000 00000000 00000000 ................ - 7800 00000000 00000000 00000000 00000000 ................ - 7810 00000000 00000000 00000000 00000000 ................ - 7820 00000000 00000000 00000000 00000000 ................ - 7830 00000000 00000000 00000000 00000000 ................ - 7840 00000000 00000000 00000000 00000000 ................ - 7850 00000000 00000000 00000000 00000000 ................ - 7860 00000000 00000000 00000000 00000000 ................ - 7870 00000000 00000000 00000000 00000000 ................ - 7880 00000000 00000000 00000000 00000000 ................ - 7890 00000000 00000000 00000000 00000000 ................ - 78a0 00000000 00000000 00000000 00000000 ................ - 78b0 00000000 00000000 00000000 00000000 ................ - 78c0 00000000 00000000 00000000 00000000 ................ - 78d0 00000000 00000000 00000000 00000000 ................ - 78e0 00000000 00000000 00000000 00000000 ................ - 78f0 00000000 00000000 00000000 00000000 ................ - 7900 00000000 00000000 00000000 00000000 ................ - 7910 00000000 00000000 00000000 00000000 ................ - 7920 00000000 00000000 00000000 00000000 ................ - 7930 00000000 00000000 00000000 00000000 ................ - 7940 00000000 00000000 00000000 00000000 ................ - 7950 00000000 00000000 00000000 00000000 ................ - 7960 00000000 00000000 00000000 00000000 ................ - 7970 00000000 00000000 00000000 00000000 ................ - 7980 00000000 00000000 00000000 00000000 ................ - 7990 00000000 00000000 00000000 00000000 ................ - 79a0 00000000 00000000 00000000 00000000 ................ - 79b0 00000000 00000000 00000000 00000000 ................ - 79c0 00000000 00000000 00000000 00000000 ................ - 79d0 00000000 00000000 00000000 00000000 ................ - 79e0 00000000 00000000 00000000 00000000 ................ - 79f0 00000000 00000000 00000000 00000000 ................ - 7a00 00000000 00000000 00000000 00000000 ................ - 7a10 00000000 00000000 00000000 00000000 ................ - 7a20 00000000 00000000 00000000 00000000 ................ - 7a30 00000000 00000000 00000000 00000000 ................ - 7a40 00000000 00000000 00000000 00000000 ................ - 7a50 00000000 00000000 00000000 00000000 ................ - 7a60 00000000 00000000 00000000 00000000 ................ - 7a70 00000000 00000000 00000000 00000000 ................ - 7a80 00000000 00000000 00000000 00000000 ................ - 7a90 00000000 00000000 00000000 00000000 ................ - 7aa0 00000000 00000000 00000000 00000000 ................ - 7ab0 00000000 00000000 00000000 00000000 ................ - 7ac0 00000000 00000000 00000000 00000000 ................ - 7ad0 00000000 00000000 00000000 00000000 ................ - 7ae0 00000000 00000000 00000000 00000000 ................ - 7af0 00000000 00000000 00000000 00000000 ................ - 7b00 00000000 00000000 00000000 00000000 ................ - 7b10 00000000 00000000 00000000 00000000 ................ - 7b20 00000000 00000000 00000000 00000000 ................ - 7b30 00000000 00000000 00000000 00000000 ................ - 7b40 00000000 00000000 00000000 00000000 ................ - 7b50 00000000 00000000 00000000 00000000 ................ - 7b60 00000000 00000000 00000000 00000000 ................ - 7b70 00000000 00000000 00000000 00000000 ................ - 7b80 00000000 00000000 00000000 00000000 ................ - 7b90 00000000 00000000 00000000 00000000 ................ - 7ba0 00000000 00000000 00000000 00000000 ................ - 7bb0 00000000 00000000 00000000 00000000 ................ - 7bc0 00000000 00000000 00000000 00000000 ................ - 7bd0 00000000 00000000 00000000 00000000 ................ - 7be0 00000000 00000000 00000000 00000000 ................ - 7bf0 00000000 00000000 00000000 00000000 ................ - 7c00 00000000 00000000 00000000 00000000 ................ - 7c10 00000000 00000000 00000000 00000000 ................ - 7c20 00000000 00000000 00000000 00000000 ................ - 7c30 00000000 00000000 00000000 00000000 ................ - 7c40 00000000 00000000 00000000 00000000 ................ - 7c50 00000000 00000000 00000000 00000000 ................ - 7c60 00000000 00000000 00000000 00000000 ................ - 7c70 00000000 00000000 00000000 00000000 ................ - 7c80 00000000 00000000 00000000 00000000 ................ - 7c90 00000000 00000000 00000000 00000000 ................ - 7ca0 00000000 00000000 00000000 00000000 ................ - 7cb0 00000000 00000000 00000000 00000000 ................ - 7cc0 00000000 00000000 00000000 00000000 ................ - 7cd0 00000000 00000000 00000000 00000000 ................ - 7ce0 00000000 00000000 00000000 00000000 ................ - 7cf0 00000000 00000000 00000000 00000000 ................ - 7d00 00000000 00000000 00000000 00000000 ................ - 7d10 00000000 00000000 00000000 00000000 ................ - 7d20 00000000 00000000 00000000 00000000 ................ - 7d30 00000000 00000000 00000000 00000000 ................ - 7d40 00000000 00000000 00000000 00000000 ................ - 7d50 00000000 00000000 00000000 00000000 ................ - 7d60 00000000 00000000 00000000 00000000 ................ - 7d70 00000000 00000000 00000000 00000000 ................ - 7d80 00000000 00000000 00000000 00000000 ................ - 7d90 00000000 00000000 00000000 00000000 ................ - 7da0 00000000 00000000 00000000 00000000 ................ - 7db0 00000000 00000000 00000000 00000000 ................ - 7dc0 00000000 00000000 00000000 00000000 ................ - 7dd0 00000000 00000000 00000000 00000000 ................ - 7de0 00000000 00000000 00000000 00000000 ................ - 7df0 00000000 00000000 00000000 00000000 ................ - 7e00 00000000 00000000 00000000 00000000 ................ - 7e10 00000000 00000000 00000000 00000000 ................ - 7e20 00000000 00000000 00000000 00000000 ................ - 7e30 00000000 00000000 00000000 00000000 ................ - 7e40 00000000 00000000 00000000 00000000 ................ - 7e50 00000000 00000000 00000000 00000000 ................ - 7e60 00000000 00000000 00000000 00000000 ................ - 7e70 00000000 00000000 00000000 00000000 ................ - 7e80 00000000 00000000 00000000 00000000 ................ - 7e90 00000000 00000000 00000000 00000000 ................ - 7ea0 00000000 00000000 00000000 00000000 ................ - 7eb0 00000000 00000000 00000000 00000000 ................ - 7ec0 00000000 00000000 00000000 00000000 ................ - 7ed0 00000000 00000000 00000000 00000000 ................ - 7ee0 00000000 00000000 00000000 00000000 ................ - 7ef0 00000000 00000000 00000000 00000000 ................ - 7f00 00000000 00000000 00000000 00000000 ................ - 7f10 00000000 00000000 00000000 00000000 ................ - 7f20 00000000 00000000 00000000 00000000 ................ - 7f30 00000000 00000000 00000000 00000000 ................ - 7f40 00000000 00000000 00000000 00000000 ................ - 7f50 00000000 00000000 00000000 00000000 ................ - 7f60 00000000 00000000 00000000 00000000 ................ - 7f70 00000000 00000000 00000000 00000000 ................ - 7f80 00000000 00000000 00000000 00000000 ................ - 7f90 00000000 00000000 00000000 00000000 ................ - 7fa0 00000000 00000000 00000000 00000000 ................ - 7fb0 00000000 00000000 00000000 00000000 ................ - 7fc0 00000000 00000000 00000000 00000000 ................ - 7fd0 00000000 00000000 00000000 00000000 ................ - 7fe0 00000000 00000000 00000000 00000000 ................ - 7ff0 00000000 00000000 00000000 00000000 ................ +#pass diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/mips/elfel-rel.d binutils-2.12.90.0.9/gas/testsuite/gas/mips/elfel-rel.d --- binutils-2.12.90.0.7/gas/testsuite/gas/mips/elfel-rel.d Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/mips/elfel-rel.d Thu May 23 15:10:11 2002 @@ -56,2042 +56,4 @@ Contents of section \.text: 0060 0100013c 0100013c 0200013c 0200013c .* 0070 0100013c 0100013c febf2120 02c02120 .* 0080 febf2120 02c02120 fe3f2120 fabf2120 .* - 0090 00000000 00000000 00000000 00000000 ................ - 00a0 00000000 00000000 00000000 00000000 ................ - 00b0 00000000 00000000 00000000 00000000 ................ - 00c0 00000000 00000000 00000000 00000000 ................ - 00d0 00000000 00000000 00000000 00000000 ................ - 00e0 00000000 00000000 00000000 00000000 ................ - 00f0 00000000 00000000 00000000 00000000 ................ - 0100 00000000 00000000 00000000 00000000 ................ - 0110 00000000 00000000 00000000 00000000 ................ - 0120 00000000 00000000 00000000 00000000 ................ - 0130 00000000 00000000 00000000 00000000 ................ - 0140 00000000 00000000 00000000 00000000 ................ - 0150 00000000 00000000 00000000 00000000 ................ - 0160 00000000 00000000 00000000 00000000 ................ - 0170 00000000 00000000 00000000 00000000 ................ - 0180 00000000 00000000 00000000 00000000 ................ - 0190 00000000 00000000 00000000 00000000 ................ - 01a0 00000000 00000000 00000000 00000000 ................ - 01b0 00000000 00000000 00000000 00000000 ................ - 01c0 00000000 00000000 00000000 00000000 ................ - 01d0 00000000 00000000 00000000 00000000 ................ - 01e0 00000000 00000000 00000000 00000000 ................ - 01f0 00000000 00000000 00000000 00000000 ................ - 0200 00000000 00000000 00000000 00000000 ................ - 0210 00000000 00000000 00000000 00000000 ................ - 0220 00000000 00000000 00000000 00000000 ................ - 0230 00000000 00000000 00000000 00000000 ................ - 0240 00000000 00000000 00000000 00000000 ................ - 0250 00000000 00000000 00000000 00000000 ................ - 0260 00000000 00000000 00000000 00000000 ................ - 0270 00000000 00000000 00000000 00000000 ................ - 0280 00000000 00000000 00000000 00000000 ................ - 0290 00000000 00000000 00000000 00000000 ................ - 02a0 00000000 00000000 00000000 00000000 ................ - 02b0 00000000 00000000 00000000 00000000 ................ - 02c0 00000000 00000000 00000000 00000000 ................ - 02d0 00000000 00000000 00000000 00000000 ................ - 02e0 00000000 00000000 00000000 00000000 ................ - 02f0 00000000 00000000 00000000 00000000 ................ - 0300 00000000 00000000 00000000 00000000 ................ - 0310 00000000 00000000 00000000 00000000 ................ - 0320 00000000 00000000 00000000 00000000 ................ - 0330 00000000 00000000 00000000 00000000 ................ - 0340 00000000 00000000 00000000 00000000 ................ - 0350 00000000 00000000 00000000 00000000 ................ - 0360 00000000 00000000 00000000 00000000 ................ - 0370 00000000 00000000 00000000 00000000 ................ - 0380 00000000 00000000 00000000 00000000 ................ - 0390 00000000 00000000 00000000 00000000 ................ - 03a0 00000000 00000000 00000000 00000000 ................ - 03b0 00000000 00000000 00000000 00000000 ................ - 03c0 00000000 00000000 00000000 00000000 ................ - 03d0 00000000 00000000 00000000 00000000 ................ - 03e0 00000000 00000000 00000000 00000000 ................ - 03f0 00000000 00000000 00000000 00000000 ................ - 0400 00000000 00000000 00000000 00000000 ................ - 0410 00000000 00000000 00000000 00000000 ................ - 0420 00000000 00000000 00000000 00000000 ................ - 0430 00000000 00000000 00000000 00000000 ................ - 0440 00000000 00000000 00000000 00000000 ................ - 0450 00000000 00000000 00000000 00000000 ................ - 0460 00000000 00000000 00000000 00000000 ................ - 0470 00000000 00000000 00000000 00000000 ................ - 0480 00000000 00000000 00000000 00000000 ................ - 0490 00000000 00000000 00000000 00000000 ................ - 04a0 00000000 00000000 00000000 00000000 ................ - 04b0 00000000 00000000 00000000 00000000 ................ - 04c0 00000000 00000000 00000000 00000000 ................ - 04d0 00000000 00000000 00000000 00000000 ................ - 04e0 00000000 00000000 00000000 00000000 ................ - 04f0 00000000 00000000 00000000 00000000 ................ - 0500 00000000 00000000 00000000 00000000 ................ - 0510 00000000 00000000 00000000 00000000 ................ - 0520 00000000 00000000 00000000 00000000 ................ - 0530 00000000 00000000 00000000 00000000 ................ - 0540 00000000 00000000 00000000 00000000 ................ - 0550 00000000 00000000 00000000 00000000 ................ - 0560 00000000 00000000 00000000 00000000 ................ - 0570 00000000 00000000 00000000 00000000 ................ - 0580 00000000 00000000 00000000 00000000 ................ - 0590 00000000 00000000 00000000 00000000 ................ - 05a0 00000000 00000000 00000000 00000000 ................ - 05b0 00000000 00000000 00000000 00000000 ................ - 05c0 00000000 00000000 00000000 00000000 ................ - 05d0 00000000 00000000 00000000 00000000 ................ - 05e0 00000000 00000000 00000000 00000000 ................ - 05f0 00000000 00000000 00000000 00000000 ................ - 0600 00000000 00000000 00000000 00000000 ................ - 0610 00000000 00000000 00000000 00000000 ................ - 0620 00000000 00000000 00000000 00000000 ................ - 0630 00000000 00000000 00000000 00000000 ................ - 0640 00000000 00000000 00000000 00000000 ................ - 0650 00000000 00000000 00000000 00000000 ................ - 0660 00000000 00000000 00000000 00000000 ................ - 0670 00000000 00000000 00000000 00000000 ................ - 0680 00000000 00000000 00000000 00000000 ................ - 0690 00000000 00000000 00000000 00000000 ................ - 06a0 00000000 00000000 00000000 00000000 ................ - 06b0 00000000 00000000 00000000 00000000 ................ - 06c0 00000000 00000000 00000000 00000000 ................ - 06d0 00000000 00000000 00000000 00000000 ................ - 06e0 00000000 00000000 00000000 00000000 ................ - 06f0 00000000 00000000 00000000 00000000 ................ - 0700 00000000 00000000 00000000 00000000 ................ - 0710 00000000 00000000 00000000 00000000 ................ - 0720 00000000 00000000 00000000 00000000 ................ - 0730 00000000 00000000 00000000 00000000 ................ - 0740 00000000 00000000 00000000 00000000 ................ - 0750 00000000 00000000 00000000 00000000 ................ - 0760 00000000 00000000 00000000 00000000 ................ - 0770 00000000 00000000 00000000 00000000 ................ - 0780 00000000 00000000 00000000 00000000 ................ - 0790 00000000 00000000 00000000 00000000 ................ - 07a0 00000000 00000000 00000000 00000000 ................ - 07b0 00000000 00000000 00000000 00000000 ................ - 07c0 00000000 00000000 00000000 00000000 ................ - 07d0 00000000 00000000 00000000 00000000 ................ - 07e0 00000000 00000000 00000000 00000000 ................ - 07f0 00000000 00000000 00000000 00000000 ................ - 0800 00000000 00000000 00000000 00000000 ................ - 0810 00000000 00000000 00000000 00000000 ................ - 0820 00000000 00000000 00000000 00000000 ................ - 0830 00000000 00000000 00000000 00000000 ................ - 0840 00000000 00000000 00000000 00000000 ................ - 0850 00000000 00000000 00000000 00000000 ................ - 0860 00000000 00000000 00000000 00000000 ................ - 0870 00000000 00000000 00000000 00000000 ................ - 0880 00000000 00000000 00000000 00000000 ................ - 0890 00000000 00000000 00000000 00000000 ................ - 08a0 00000000 00000000 00000000 00000000 ................ - 08b0 00000000 00000000 00000000 00000000 ................ - 08c0 00000000 00000000 00000000 00000000 ................ - 08d0 00000000 00000000 00000000 00000000 ................ - 08e0 00000000 00000000 00000000 00000000 ................ - 08f0 00000000 00000000 00000000 00000000 ................ - 0900 00000000 00000000 00000000 00000000 ................ - 0910 00000000 00000000 00000000 00000000 ................ - 0920 00000000 00000000 00000000 00000000 ................ - 0930 00000000 00000000 00000000 00000000 ................ - 0940 00000000 00000000 00000000 00000000 ................ - 0950 00000000 00000000 00000000 00000000 ................ - 0960 00000000 00000000 00000000 00000000 ................ - 0970 00000000 00000000 00000000 00000000 ................ - 0980 00000000 00000000 00000000 00000000 ................ - 0990 00000000 00000000 00000000 00000000 ................ - 09a0 00000000 00000000 00000000 00000000 ................ - 09b0 00000000 00000000 00000000 00000000 ................ - 09c0 00000000 00000000 00000000 00000000 ................ - 09d0 00000000 00000000 00000000 00000000 ................ - 09e0 00000000 00000000 00000000 00000000 ................ - 09f0 00000000 00000000 00000000 00000000 ................ - 0a00 00000000 00000000 00000000 00000000 ................ - 0a10 00000000 00000000 00000000 00000000 ................ - 0a20 00000000 00000000 00000000 00000000 ................ - 0a30 00000000 00000000 00000000 00000000 ................ - 0a40 00000000 00000000 00000000 00000000 ................ - 0a50 00000000 00000000 00000000 00000000 ................ - 0a60 00000000 00000000 00000000 00000000 ................ - 0a70 00000000 00000000 00000000 00000000 ................ - 0a80 00000000 00000000 00000000 00000000 ................ - 0a90 00000000 00000000 00000000 00000000 ................ - 0aa0 00000000 00000000 00000000 00000000 ................ - 0ab0 00000000 00000000 00000000 00000000 ................ - 0ac0 00000000 00000000 00000000 00000000 ................ - 0ad0 00000000 00000000 00000000 00000000 ................ - 0ae0 00000000 00000000 00000000 00000000 ................ - 0af0 00000000 00000000 00000000 00000000 ................ - 0b00 00000000 00000000 00000000 00000000 ................ - 0b10 00000000 00000000 00000000 00000000 ................ - 0b20 00000000 00000000 00000000 00000000 ................ - 0b30 00000000 00000000 00000000 00000000 ................ - 0b40 00000000 00000000 00000000 00000000 ................ - 0b50 00000000 00000000 00000000 00000000 ................ - 0b60 00000000 00000000 00000000 00000000 ................ - 0b70 00000000 00000000 00000000 00000000 ................ - 0b80 00000000 00000000 00000000 00000000 ................ - 0b90 00000000 00000000 00000000 00000000 ................ - 0ba0 00000000 00000000 00000000 00000000 ................ - 0bb0 00000000 00000000 00000000 00000000 ................ - 0bc0 00000000 00000000 00000000 00000000 ................ - 0bd0 00000000 00000000 00000000 00000000 ................ - 0be0 00000000 00000000 00000000 00000000 ................ - 0bf0 00000000 00000000 00000000 00000000 ................ - 0c00 00000000 00000000 00000000 00000000 ................ - 0c10 00000000 00000000 00000000 00000000 ................ - 0c20 00000000 00000000 00000000 00000000 ................ - 0c30 00000000 00000000 00000000 00000000 ................ - 0c40 00000000 00000000 00000000 00000000 ................ - 0c50 00000000 00000000 00000000 00000000 ................ - 0c60 00000000 00000000 00000000 00000000 ................ - 0c70 00000000 00000000 00000000 00000000 ................ - 0c80 00000000 00000000 00000000 00000000 ................ - 0c90 00000000 00000000 00000000 00000000 ................ - 0ca0 00000000 00000000 00000000 00000000 ................ - 0cb0 00000000 00000000 00000000 00000000 ................ - 0cc0 00000000 00000000 00000000 00000000 ................ - 0cd0 00000000 00000000 00000000 00000000 ................ - 0ce0 00000000 00000000 00000000 00000000 ................ - 0cf0 00000000 00000000 00000000 00000000 ................ - 0d00 00000000 00000000 00000000 00000000 ................ - 0d10 00000000 00000000 00000000 00000000 ................ - 0d20 00000000 00000000 00000000 00000000 ................ - 0d30 00000000 00000000 00000000 00000000 ................ - 0d40 00000000 00000000 00000000 00000000 ................ - 0d50 00000000 00000000 00000000 00000000 ................ - 0d60 00000000 00000000 00000000 00000000 ................ - 0d70 00000000 00000000 00000000 00000000 ................ - 0d80 00000000 00000000 00000000 00000000 ................ - 0d90 00000000 00000000 00000000 00000000 ................ - 0da0 00000000 00000000 00000000 00000000 ................ - 0db0 00000000 00000000 00000000 00000000 ................ - 0dc0 00000000 00000000 00000000 00000000 ................ - 0dd0 00000000 00000000 00000000 00000000 ................ - 0de0 00000000 00000000 00000000 00000000 ................ - 0df0 00000000 00000000 00000000 00000000 ................ - 0e00 00000000 00000000 00000000 00000000 ................ - 0e10 00000000 00000000 00000000 00000000 ................ - 0e20 00000000 00000000 00000000 00000000 ................ - 0e30 00000000 00000000 00000000 00000000 ................ - 0e40 00000000 00000000 00000000 00000000 ................ - 0e50 00000000 00000000 00000000 00000000 ................ - 0e60 00000000 00000000 00000000 00000000 ................ - 0e70 00000000 00000000 00000000 00000000 ................ - 0e80 00000000 00000000 00000000 00000000 ................ - 0e90 00000000 00000000 00000000 00000000 ................ - 0ea0 00000000 00000000 00000000 00000000 ................ - 0eb0 00000000 00000000 00000000 00000000 ................ - 0ec0 00000000 00000000 00000000 00000000 ................ - 0ed0 00000000 00000000 00000000 00000000 ................ - 0ee0 00000000 00000000 00000000 00000000 ................ - 0ef0 00000000 00000000 00000000 00000000 ................ - 0f00 00000000 00000000 00000000 00000000 ................ - 0f10 00000000 00000000 00000000 00000000 ................ - 0f20 00000000 00000000 00000000 00000000 ................ - 0f30 00000000 00000000 00000000 00000000 ................ - 0f40 00000000 00000000 00000000 00000000 ................ - 0f50 00000000 00000000 00000000 00000000 ................ - 0f60 00000000 00000000 00000000 00000000 ................ - 0f70 00000000 00000000 00000000 00000000 ................ - 0f80 00000000 00000000 00000000 00000000 ................ - 0f90 00000000 00000000 00000000 00000000 ................ - 0fa0 00000000 00000000 00000000 00000000 ................ - 0fb0 00000000 00000000 00000000 00000000 ................ - 0fc0 00000000 00000000 00000000 00000000 ................ - 0fd0 00000000 00000000 00000000 00000000 ................ - 0fe0 00000000 00000000 00000000 00000000 ................ - 0ff0 00000000 00000000 00000000 00000000 ................ - 1000 00000000 00000000 00000000 00000000 ................ - 1010 00000000 00000000 00000000 00000000 ................ - 1020 00000000 00000000 00000000 00000000 ................ - 1030 00000000 00000000 00000000 00000000 ................ - 1040 00000000 00000000 00000000 00000000 ................ - 1050 00000000 00000000 00000000 00000000 ................ - 1060 00000000 00000000 00000000 00000000 ................ - 1070 00000000 00000000 00000000 00000000 ................ - 1080 00000000 00000000 00000000 00000000 ................ - 1090 00000000 00000000 00000000 00000000 ................ - 10a0 00000000 00000000 00000000 00000000 ................ - 10b0 00000000 00000000 00000000 00000000 ................ - 10c0 00000000 00000000 00000000 00000000 ................ - 10d0 00000000 00000000 00000000 00000000 ................ - 10e0 00000000 00000000 00000000 00000000 ................ - 10f0 00000000 00000000 00000000 00000000 ................ - 1100 00000000 00000000 00000000 00000000 ................ - 1110 00000000 00000000 00000000 00000000 ................ - 1120 00000000 00000000 00000000 00000000 ................ - 1130 00000000 00000000 00000000 00000000 ................ - 1140 00000000 00000000 00000000 00000000 ................ - 1150 00000000 00000000 00000000 00000000 ................ - 1160 00000000 00000000 00000000 00000000 ................ - 1170 00000000 00000000 00000000 00000000 ................ - 1180 00000000 00000000 00000000 00000000 ................ - 1190 00000000 00000000 00000000 00000000 ................ - 11a0 00000000 00000000 00000000 00000000 ................ - 11b0 00000000 00000000 00000000 00000000 ................ - 11c0 00000000 00000000 00000000 00000000 ................ - 11d0 00000000 00000000 00000000 00000000 ................ - 11e0 00000000 00000000 00000000 00000000 ................ - 11f0 00000000 00000000 00000000 00000000 ................ - 1200 00000000 00000000 00000000 00000000 ................ - 1210 00000000 00000000 00000000 00000000 ................ - 1220 00000000 00000000 00000000 00000000 ................ - 1230 00000000 00000000 00000000 00000000 ................ - 1240 00000000 00000000 00000000 00000000 ................ - 1250 00000000 00000000 00000000 00000000 ................ - 1260 00000000 00000000 00000000 00000000 ................ - 1270 00000000 00000000 00000000 00000000 ................ - 1280 00000000 00000000 00000000 00000000 ................ - 1290 00000000 00000000 00000000 00000000 ................ - 12a0 00000000 00000000 00000000 00000000 ................ - 12b0 00000000 00000000 00000000 00000000 ................ - 12c0 00000000 00000000 00000000 00000000 ................ - 12d0 00000000 00000000 00000000 00000000 ................ - 12e0 00000000 00000000 00000000 00000000 ................ - 12f0 00000000 00000000 00000000 00000000 ................ - 1300 00000000 00000000 00000000 00000000 ................ - 1310 00000000 00000000 00000000 00000000 ................ - 1320 00000000 00000000 00000000 00000000 ................ - 1330 00000000 00000000 00000000 00000000 ................ - 1340 00000000 00000000 00000000 00000000 ................ - 1350 00000000 00000000 00000000 00000000 ................ - 1360 00000000 00000000 00000000 00000000 ................ - 1370 00000000 00000000 00000000 00000000 ................ - 1380 00000000 00000000 00000000 00000000 ................ - 1390 00000000 00000000 00000000 00000000 ................ - 13a0 00000000 00000000 00000000 00000000 ................ - 13b0 00000000 00000000 00000000 00000000 ................ - 13c0 00000000 00000000 00000000 00000000 ................ - 13d0 00000000 00000000 00000000 00000000 ................ - 13e0 00000000 00000000 00000000 00000000 ................ - 13f0 00000000 00000000 00000000 00000000 ................ - 1400 00000000 00000000 00000000 00000000 ................ - 1410 00000000 00000000 00000000 00000000 ................ - 1420 00000000 00000000 00000000 00000000 ................ - 1430 00000000 00000000 00000000 00000000 ................ - 1440 00000000 00000000 00000000 00000000 ................ - 1450 00000000 00000000 00000000 00000000 ................ - 1460 00000000 00000000 00000000 00000000 ................ - 1470 00000000 00000000 00000000 00000000 ................ - 1480 00000000 00000000 00000000 00000000 ................ - 1490 00000000 00000000 00000000 00000000 ................ - 14a0 00000000 00000000 00000000 00000000 ................ - 14b0 00000000 00000000 00000000 00000000 ................ - 14c0 00000000 00000000 00000000 00000000 ................ - 14d0 00000000 00000000 00000000 00000000 ................ - 14e0 00000000 00000000 00000000 00000000 ................ - 14f0 00000000 00000000 00000000 00000000 ................ - 1500 00000000 00000000 00000000 00000000 ................ - 1510 00000000 00000000 00000000 00000000 ................ - 1520 00000000 00000000 00000000 00000000 ................ - 1530 00000000 00000000 00000000 00000000 ................ - 1540 00000000 00000000 00000000 00000000 ................ - 1550 00000000 00000000 00000000 00000000 ................ - 1560 00000000 00000000 00000000 00000000 ................ - 1570 00000000 00000000 00000000 00000000 ................ - 1580 00000000 00000000 00000000 00000000 ................ - 1590 00000000 00000000 00000000 00000000 ................ - 15a0 00000000 00000000 00000000 00000000 ................ - 15b0 00000000 00000000 00000000 00000000 ................ - 15c0 00000000 00000000 00000000 00000000 ................ - 15d0 00000000 00000000 00000000 00000000 ................ - 15e0 00000000 00000000 00000000 00000000 ................ - 15f0 00000000 00000000 00000000 00000000 ................ - 1600 00000000 00000000 00000000 00000000 ................ - 1610 00000000 00000000 00000000 00000000 ................ - 1620 00000000 00000000 00000000 00000000 ................ - 1630 00000000 00000000 00000000 00000000 ................ - 1640 00000000 00000000 00000000 00000000 ................ - 1650 00000000 00000000 00000000 00000000 ................ - 1660 00000000 00000000 00000000 00000000 ................ - 1670 00000000 00000000 00000000 00000000 ................ - 1680 00000000 00000000 00000000 00000000 ................ - 1690 00000000 00000000 00000000 00000000 ................ - 16a0 00000000 00000000 00000000 00000000 ................ - 16b0 00000000 00000000 00000000 00000000 ................ - 16c0 00000000 00000000 00000000 00000000 ................ - 16d0 00000000 00000000 00000000 00000000 ................ - 16e0 00000000 00000000 00000000 00000000 ................ - 16f0 00000000 00000000 00000000 00000000 ................ - 1700 00000000 00000000 00000000 00000000 ................ - 1710 00000000 00000000 00000000 00000000 ................ - 1720 00000000 00000000 00000000 00000000 ................ - 1730 00000000 00000000 00000000 00000000 ................ - 1740 00000000 00000000 00000000 00000000 ................ - 1750 00000000 00000000 00000000 00000000 ................ - 1760 00000000 00000000 00000000 00000000 ................ - 1770 00000000 00000000 00000000 00000000 ................ - 1780 00000000 00000000 00000000 00000000 ................ - 1790 00000000 00000000 00000000 00000000 ................ - 17a0 00000000 00000000 00000000 00000000 ................ - 17b0 00000000 00000000 00000000 00000000 ................ - 17c0 00000000 00000000 00000000 00000000 ................ - 17d0 00000000 00000000 00000000 00000000 ................ - 17e0 00000000 00000000 00000000 00000000 ................ - 17f0 00000000 00000000 00000000 00000000 ................ - 1800 00000000 00000000 00000000 00000000 ................ - 1810 00000000 00000000 00000000 00000000 ................ - 1820 00000000 00000000 00000000 00000000 ................ - 1830 00000000 00000000 00000000 00000000 ................ - 1840 00000000 00000000 00000000 00000000 ................ - 1850 00000000 00000000 00000000 00000000 ................ - 1860 00000000 00000000 00000000 00000000 ................ - 1870 00000000 00000000 00000000 00000000 ................ - 1880 00000000 00000000 00000000 00000000 ................ - 1890 00000000 00000000 00000000 00000000 ................ - 18a0 00000000 00000000 00000000 00000000 ................ - 18b0 00000000 00000000 00000000 00000000 ................ - 18c0 00000000 00000000 00000000 00000000 ................ - 18d0 00000000 00000000 00000000 00000000 ................ - 18e0 00000000 00000000 00000000 00000000 ................ - 18f0 00000000 00000000 00000000 00000000 ................ - 1900 00000000 00000000 00000000 00000000 ................ - 1910 00000000 00000000 00000000 00000000 ................ - 1920 00000000 00000000 00000000 00000000 ................ - 1930 00000000 00000000 00000000 00000000 ................ - 1940 00000000 00000000 00000000 00000000 ................ - 1950 00000000 00000000 00000000 00000000 ................ - 1960 00000000 00000000 00000000 00000000 ................ - 1970 00000000 00000000 00000000 00000000 ................ - 1980 00000000 00000000 00000000 00000000 ................ - 1990 00000000 00000000 00000000 00000000 ................ - 19a0 00000000 00000000 00000000 00000000 ................ - 19b0 00000000 00000000 00000000 00000000 ................ - 19c0 00000000 00000000 00000000 00000000 ................ - 19d0 00000000 00000000 00000000 00000000 ................ - 19e0 00000000 00000000 00000000 00000000 ................ - 19f0 00000000 00000000 00000000 00000000 ................ - 1a00 00000000 00000000 00000000 00000000 ................ - 1a10 00000000 00000000 00000000 00000000 ................ - 1a20 00000000 00000000 00000000 00000000 ................ - 1a30 00000000 00000000 00000000 00000000 ................ - 1a40 00000000 00000000 00000000 00000000 ................ - 1a50 00000000 00000000 00000000 00000000 ................ - 1a60 00000000 00000000 00000000 00000000 ................ - 1a70 00000000 00000000 00000000 00000000 ................ - 1a80 00000000 00000000 00000000 00000000 ................ - 1a90 00000000 00000000 00000000 00000000 ................ - 1aa0 00000000 00000000 00000000 00000000 ................ - 1ab0 00000000 00000000 00000000 00000000 ................ - 1ac0 00000000 00000000 00000000 00000000 ................ - 1ad0 00000000 00000000 00000000 00000000 ................ - 1ae0 00000000 00000000 00000000 00000000 ................ - 1af0 00000000 00000000 00000000 00000000 ................ - 1b00 00000000 00000000 00000000 00000000 ................ - 1b10 00000000 00000000 00000000 00000000 ................ - 1b20 00000000 00000000 00000000 00000000 ................ - 1b30 00000000 00000000 00000000 00000000 ................ - 1b40 00000000 00000000 00000000 00000000 ................ - 1b50 00000000 00000000 00000000 00000000 ................ - 1b60 00000000 00000000 00000000 00000000 ................ - 1b70 00000000 00000000 00000000 00000000 ................ - 1b80 00000000 00000000 00000000 00000000 ................ - 1b90 00000000 00000000 00000000 00000000 ................ - 1ba0 00000000 00000000 00000000 00000000 ................ - 1bb0 00000000 00000000 00000000 00000000 ................ - 1bc0 00000000 00000000 00000000 00000000 ................ - 1bd0 00000000 00000000 00000000 00000000 ................ - 1be0 00000000 00000000 00000000 00000000 ................ - 1bf0 00000000 00000000 00000000 00000000 ................ - 1c00 00000000 00000000 00000000 00000000 ................ - 1c10 00000000 00000000 00000000 00000000 ................ - 1c20 00000000 00000000 00000000 00000000 ................ - 1c30 00000000 00000000 00000000 00000000 ................ - 1c40 00000000 00000000 00000000 00000000 ................ - 1c50 00000000 00000000 00000000 00000000 ................ - 1c60 00000000 00000000 00000000 00000000 ................ - 1c70 00000000 00000000 00000000 00000000 ................ - 1c80 00000000 00000000 00000000 00000000 ................ - 1c90 00000000 00000000 00000000 00000000 ................ - 1ca0 00000000 00000000 00000000 00000000 ................ - 1cb0 00000000 00000000 00000000 00000000 ................ - 1cc0 00000000 00000000 00000000 00000000 ................ - 1cd0 00000000 00000000 00000000 00000000 ................ - 1ce0 00000000 00000000 00000000 00000000 ................ - 1cf0 00000000 00000000 00000000 00000000 ................ - 1d00 00000000 00000000 00000000 00000000 ................ - 1d10 00000000 00000000 00000000 00000000 ................ - 1d20 00000000 00000000 00000000 00000000 ................ - 1d30 00000000 00000000 00000000 00000000 ................ - 1d40 00000000 00000000 00000000 00000000 ................ - 1d50 00000000 00000000 00000000 00000000 ................ - 1d60 00000000 00000000 00000000 00000000 ................ - 1d70 00000000 00000000 00000000 00000000 ................ - 1d80 00000000 00000000 00000000 00000000 ................ - 1d90 00000000 00000000 00000000 00000000 ................ - 1da0 00000000 00000000 00000000 00000000 ................ - 1db0 00000000 00000000 00000000 00000000 ................ - 1dc0 00000000 00000000 00000000 00000000 ................ - 1dd0 00000000 00000000 00000000 00000000 ................ - 1de0 00000000 00000000 00000000 00000000 ................ - 1df0 00000000 00000000 00000000 00000000 ................ - 1e00 00000000 00000000 00000000 00000000 ................ - 1e10 00000000 00000000 00000000 00000000 ................ - 1e20 00000000 00000000 00000000 00000000 ................ - 1e30 00000000 00000000 00000000 00000000 ................ - 1e40 00000000 00000000 00000000 00000000 ................ - 1e50 00000000 00000000 00000000 00000000 ................ - 1e60 00000000 00000000 00000000 00000000 ................ - 1e70 00000000 00000000 00000000 00000000 ................ - 1e80 00000000 00000000 00000000 00000000 ................ - 1e90 00000000 00000000 00000000 00000000 ................ - 1ea0 00000000 00000000 00000000 00000000 ................ - 1eb0 00000000 00000000 00000000 00000000 ................ - 1ec0 00000000 00000000 00000000 00000000 ................ - 1ed0 00000000 00000000 00000000 00000000 ................ - 1ee0 00000000 00000000 00000000 00000000 ................ - 1ef0 00000000 00000000 00000000 00000000 ................ - 1f00 00000000 00000000 00000000 00000000 ................ - 1f10 00000000 00000000 00000000 00000000 ................ - 1f20 00000000 00000000 00000000 00000000 ................ - 1f30 00000000 00000000 00000000 00000000 ................ - 1f40 00000000 00000000 00000000 00000000 ................ - 1f50 00000000 00000000 00000000 00000000 ................ - 1f60 00000000 00000000 00000000 00000000 ................ - 1f70 00000000 00000000 00000000 00000000 ................ - 1f80 00000000 00000000 00000000 00000000 ................ - 1f90 00000000 00000000 00000000 00000000 ................ - 1fa0 00000000 00000000 00000000 00000000 ................ - 1fb0 00000000 00000000 00000000 00000000 ................ - 1fc0 00000000 00000000 00000000 00000000 ................ - 1fd0 00000000 00000000 00000000 00000000 ................ - 1fe0 00000000 00000000 00000000 00000000 ................ - 1ff0 00000000 00000000 00000000 00000000 ................ - 2000 00000000 00000000 00000000 00000000 ................ - 2010 00000000 00000000 00000000 00000000 ................ - 2020 00000000 00000000 00000000 00000000 ................ - 2030 00000000 00000000 00000000 00000000 ................ - 2040 00000000 00000000 00000000 00000000 ................ - 2050 00000000 00000000 00000000 00000000 ................ - 2060 00000000 00000000 00000000 00000000 ................ - 2070 00000000 00000000 00000000 00000000 ................ - 2080 00000000 00000000 00000000 00000000 ................ - 2090 00000000 00000000 00000000 00000000 ................ - 20a0 00000000 00000000 00000000 00000000 ................ - 20b0 00000000 00000000 00000000 00000000 ................ - 20c0 00000000 00000000 00000000 00000000 ................ - 20d0 00000000 00000000 00000000 00000000 ................ - 20e0 00000000 00000000 00000000 00000000 ................ - 20f0 00000000 00000000 00000000 00000000 ................ - 2100 00000000 00000000 00000000 00000000 ................ - 2110 00000000 00000000 00000000 00000000 ................ - 2120 00000000 00000000 00000000 00000000 ................ - 2130 00000000 00000000 00000000 00000000 ................ - 2140 00000000 00000000 00000000 00000000 ................ - 2150 00000000 00000000 00000000 00000000 ................ - 2160 00000000 00000000 00000000 00000000 ................ - 2170 00000000 00000000 00000000 00000000 ................ - 2180 00000000 00000000 00000000 00000000 ................ - 2190 00000000 00000000 00000000 00000000 ................ - 21a0 00000000 00000000 00000000 00000000 ................ - 21b0 00000000 00000000 00000000 00000000 ................ - 21c0 00000000 00000000 00000000 00000000 ................ - 21d0 00000000 00000000 00000000 00000000 ................ - 21e0 00000000 00000000 00000000 00000000 ................ - 21f0 00000000 00000000 00000000 00000000 ................ - 2200 00000000 00000000 00000000 00000000 ................ - 2210 00000000 00000000 00000000 00000000 ................ - 2220 00000000 00000000 00000000 00000000 ................ - 2230 00000000 00000000 00000000 00000000 ................ - 2240 00000000 00000000 00000000 00000000 ................ - 2250 00000000 00000000 00000000 00000000 ................ - 2260 00000000 00000000 00000000 00000000 ................ - 2270 00000000 00000000 00000000 00000000 ................ - 2280 00000000 00000000 00000000 00000000 ................ - 2290 00000000 00000000 00000000 00000000 ................ - 22a0 00000000 00000000 00000000 00000000 ................ - 22b0 00000000 00000000 00000000 00000000 ................ - 22c0 00000000 00000000 00000000 00000000 ................ - 22d0 00000000 00000000 00000000 00000000 ................ - 22e0 00000000 00000000 00000000 00000000 ................ - 22f0 00000000 00000000 00000000 00000000 ................ - 2300 00000000 00000000 00000000 00000000 ................ - 2310 00000000 00000000 00000000 00000000 ................ - 2320 00000000 00000000 00000000 00000000 ................ - 2330 00000000 00000000 00000000 00000000 ................ - 2340 00000000 00000000 00000000 00000000 ................ - 2350 00000000 00000000 00000000 00000000 ................ - 2360 00000000 00000000 00000000 00000000 ................ - 2370 00000000 00000000 00000000 00000000 ................ - 2380 00000000 00000000 00000000 00000000 ................ - 2390 00000000 00000000 00000000 00000000 ................ - 23a0 00000000 00000000 00000000 00000000 ................ - 23b0 00000000 00000000 00000000 00000000 ................ - 23c0 00000000 00000000 00000000 00000000 ................ - 23d0 00000000 00000000 00000000 00000000 ................ - 23e0 00000000 00000000 00000000 00000000 ................ - 23f0 00000000 00000000 00000000 00000000 ................ - 2400 00000000 00000000 00000000 00000000 ................ - 2410 00000000 00000000 00000000 00000000 ................ - 2420 00000000 00000000 00000000 00000000 ................ - 2430 00000000 00000000 00000000 00000000 ................ - 2440 00000000 00000000 00000000 00000000 ................ - 2450 00000000 00000000 00000000 00000000 ................ - 2460 00000000 00000000 00000000 00000000 ................ - 2470 00000000 00000000 00000000 00000000 ................ - 2480 00000000 00000000 00000000 00000000 ................ - 2490 00000000 00000000 00000000 00000000 ................ - 24a0 00000000 00000000 00000000 00000000 ................ - 24b0 00000000 00000000 00000000 00000000 ................ - 24c0 00000000 00000000 00000000 00000000 ................ - 24d0 00000000 00000000 00000000 00000000 ................ - 24e0 00000000 00000000 00000000 00000000 ................ - 24f0 00000000 00000000 00000000 00000000 ................ - 2500 00000000 00000000 00000000 00000000 ................ - 2510 00000000 00000000 00000000 00000000 ................ - 2520 00000000 00000000 00000000 00000000 ................ - 2530 00000000 00000000 00000000 00000000 ................ - 2540 00000000 00000000 00000000 00000000 ................ - 2550 00000000 00000000 00000000 00000000 ................ - 2560 00000000 00000000 00000000 00000000 ................ - 2570 00000000 00000000 00000000 00000000 ................ - 2580 00000000 00000000 00000000 00000000 ................ - 2590 00000000 00000000 00000000 00000000 ................ - 25a0 00000000 00000000 00000000 00000000 ................ - 25b0 00000000 00000000 00000000 00000000 ................ - 25c0 00000000 00000000 00000000 00000000 ................ - 25d0 00000000 00000000 00000000 00000000 ................ - 25e0 00000000 00000000 00000000 00000000 ................ - 25f0 00000000 00000000 00000000 00000000 ................ - 2600 00000000 00000000 00000000 00000000 ................ - 2610 00000000 00000000 00000000 00000000 ................ - 2620 00000000 00000000 00000000 00000000 ................ - 2630 00000000 00000000 00000000 00000000 ................ - 2640 00000000 00000000 00000000 00000000 ................ - 2650 00000000 00000000 00000000 00000000 ................ - 2660 00000000 00000000 00000000 00000000 ................ - 2670 00000000 00000000 00000000 00000000 ................ - 2680 00000000 00000000 00000000 00000000 ................ - 2690 00000000 00000000 00000000 00000000 ................ - 26a0 00000000 00000000 00000000 00000000 ................ - 26b0 00000000 00000000 00000000 00000000 ................ - 26c0 00000000 00000000 00000000 00000000 ................ - 26d0 00000000 00000000 00000000 00000000 ................ - 26e0 00000000 00000000 00000000 00000000 ................ - 26f0 00000000 00000000 00000000 00000000 ................ - 2700 00000000 00000000 00000000 00000000 ................ - 2710 00000000 00000000 00000000 00000000 ................ - 2720 00000000 00000000 00000000 00000000 ................ - 2730 00000000 00000000 00000000 00000000 ................ - 2740 00000000 00000000 00000000 00000000 ................ - 2750 00000000 00000000 00000000 00000000 ................ - 2760 00000000 00000000 00000000 00000000 ................ - 2770 00000000 00000000 00000000 00000000 ................ - 2780 00000000 00000000 00000000 00000000 ................ - 2790 00000000 00000000 00000000 00000000 ................ - 27a0 00000000 00000000 00000000 00000000 ................ - 27b0 00000000 00000000 00000000 00000000 ................ - 27c0 00000000 00000000 00000000 00000000 ................ - 27d0 00000000 00000000 00000000 00000000 ................ - 27e0 00000000 00000000 00000000 00000000 ................ - 27f0 00000000 00000000 00000000 00000000 ................ - 2800 00000000 00000000 00000000 00000000 ................ - 2810 00000000 00000000 00000000 00000000 ................ - 2820 00000000 00000000 00000000 00000000 ................ - 2830 00000000 00000000 00000000 00000000 ................ - 2840 00000000 00000000 00000000 00000000 ................ - 2850 00000000 00000000 00000000 00000000 ................ - 2860 00000000 00000000 00000000 00000000 ................ - 2870 00000000 00000000 00000000 00000000 ................ - 2880 00000000 00000000 00000000 00000000 ................ - 2890 00000000 00000000 00000000 00000000 ................ - 28a0 00000000 00000000 00000000 00000000 ................ - 28b0 00000000 00000000 00000000 00000000 ................ - 28c0 00000000 00000000 00000000 00000000 ................ - 28d0 00000000 00000000 00000000 00000000 ................ - 28e0 00000000 00000000 00000000 00000000 ................ - 28f0 00000000 00000000 00000000 00000000 ................ - 2900 00000000 00000000 00000000 00000000 ................ - 2910 00000000 00000000 00000000 00000000 ................ - 2920 00000000 00000000 00000000 00000000 ................ - 2930 00000000 00000000 00000000 00000000 ................ - 2940 00000000 00000000 00000000 00000000 ................ - 2950 00000000 00000000 00000000 00000000 ................ - 2960 00000000 00000000 00000000 00000000 ................ - 2970 00000000 00000000 00000000 00000000 ................ - 2980 00000000 00000000 00000000 00000000 ................ - 2990 00000000 00000000 00000000 00000000 ................ - 29a0 00000000 00000000 00000000 00000000 ................ - 29b0 00000000 00000000 00000000 00000000 ................ - 29c0 00000000 00000000 00000000 00000000 ................ - 29d0 00000000 00000000 00000000 00000000 ................ - 29e0 00000000 00000000 00000000 00000000 ................ - 29f0 00000000 00000000 00000000 00000000 ................ - 2a00 00000000 00000000 00000000 00000000 ................ - 2a10 00000000 00000000 00000000 00000000 ................ - 2a20 00000000 00000000 00000000 00000000 ................ - 2a30 00000000 00000000 00000000 00000000 ................ - 2a40 00000000 00000000 00000000 00000000 ................ - 2a50 00000000 00000000 00000000 00000000 ................ - 2a60 00000000 00000000 00000000 00000000 ................ - 2a70 00000000 00000000 00000000 00000000 ................ - 2a80 00000000 00000000 00000000 00000000 ................ - 2a90 00000000 00000000 00000000 00000000 ................ - 2aa0 00000000 00000000 00000000 00000000 ................ - 2ab0 00000000 00000000 00000000 00000000 ................ - 2ac0 00000000 00000000 00000000 00000000 ................ - 2ad0 00000000 00000000 00000000 00000000 ................ - 2ae0 00000000 00000000 00000000 00000000 ................ - 2af0 00000000 00000000 00000000 00000000 ................ - 2b00 00000000 00000000 00000000 00000000 ................ - 2b10 00000000 00000000 00000000 00000000 ................ - 2b20 00000000 00000000 00000000 00000000 ................ - 2b30 00000000 00000000 00000000 00000000 ................ - 2b40 00000000 00000000 00000000 00000000 ................ - 2b50 00000000 00000000 00000000 00000000 ................ - 2b60 00000000 00000000 00000000 00000000 ................ - 2b70 00000000 00000000 00000000 00000000 ................ - 2b80 00000000 00000000 00000000 00000000 ................ - 2b90 00000000 00000000 00000000 00000000 ................ - 2ba0 00000000 00000000 00000000 00000000 ................ - 2bb0 00000000 00000000 00000000 00000000 ................ - 2bc0 00000000 00000000 00000000 00000000 ................ - 2bd0 00000000 00000000 00000000 00000000 ................ - 2be0 00000000 00000000 00000000 00000000 ................ - 2bf0 00000000 00000000 00000000 00000000 ................ - 2c00 00000000 00000000 00000000 00000000 ................ - 2c10 00000000 00000000 00000000 00000000 ................ - 2c20 00000000 00000000 00000000 00000000 ................ - 2c30 00000000 00000000 00000000 00000000 ................ - 2c40 00000000 00000000 00000000 00000000 ................ - 2c50 00000000 00000000 00000000 00000000 ................ - 2c60 00000000 00000000 00000000 00000000 ................ - 2c70 00000000 00000000 00000000 00000000 ................ - 2c80 00000000 00000000 00000000 00000000 ................ - 2c90 00000000 00000000 00000000 00000000 ................ - 2ca0 00000000 00000000 00000000 00000000 ................ - 2cb0 00000000 00000000 00000000 00000000 ................ - 2cc0 00000000 00000000 00000000 00000000 ................ - 2cd0 00000000 00000000 00000000 00000000 ................ - 2ce0 00000000 00000000 00000000 00000000 ................ - 2cf0 00000000 00000000 00000000 00000000 ................ - 2d00 00000000 00000000 00000000 00000000 ................ - 2d10 00000000 00000000 00000000 00000000 ................ - 2d20 00000000 00000000 00000000 00000000 ................ - 2d30 00000000 00000000 00000000 00000000 ................ - 2d40 00000000 00000000 00000000 00000000 ................ - 2d50 00000000 00000000 00000000 00000000 ................ - 2d60 00000000 00000000 00000000 00000000 ................ - 2d70 00000000 00000000 00000000 00000000 ................ - 2d80 00000000 00000000 00000000 00000000 ................ - 2d90 00000000 00000000 00000000 00000000 ................ - 2da0 00000000 00000000 00000000 00000000 ................ - 2db0 00000000 00000000 00000000 00000000 ................ - 2dc0 00000000 00000000 00000000 00000000 ................ - 2dd0 00000000 00000000 00000000 00000000 ................ - 2de0 00000000 00000000 00000000 00000000 ................ - 2df0 00000000 00000000 00000000 00000000 ................ - 2e00 00000000 00000000 00000000 00000000 ................ - 2e10 00000000 00000000 00000000 00000000 ................ - 2e20 00000000 00000000 00000000 00000000 ................ - 2e30 00000000 00000000 00000000 00000000 ................ - 2e40 00000000 00000000 00000000 00000000 ................ - 2e50 00000000 00000000 00000000 00000000 ................ - 2e60 00000000 00000000 00000000 00000000 ................ - 2e70 00000000 00000000 00000000 00000000 ................ - 2e80 00000000 00000000 00000000 00000000 ................ - 2e90 00000000 00000000 00000000 00000000 ................ - 2ea0 00000000 00000000 00000000 00000000 ................ - 2eb0 00000000 00000000 00000000 00000000 ................ - 2ec0 00000000 00000000 00000000 00000000 ................ - 2ed0 00000000 00000000 00000000 00000000 ................ - 2ee0 00000000 00000000 00000000 00000000 ................ - 2ef0 00000000 00000000 00000000 00000000 ................ - 2f00 00000000 00000000 00000000 00000000 ................ - 2f10 00000000 00000000 00000000 00000000 ................ - 2f20 00000000 00000000 00000000 00000000 ................ - 2f30 00000000 00000000 00000000 00000000 ................ - 2f40 00000000 00000000 00000000 00000000 ................ - 2f50 00000000 00000000 00000000 00000000 ................ - 2f60 00000000 00000000 00000000 00000000 ................ - 2f70 00000000 00000000 00000000 00000000 ................ - 2f80 00000000 00000000 00000000 00000000 ................ - 2f90 00000000 00000000 00000000 00000000 ................ - 2fa0 00000000 00000000 00000000 00000000 ................ - 2fb0 00000000 00000000 00000000 00000000 ................ - 2fc0 00000000 00000000 00000000 00000000 ................ - 2fd0 00000000 00000000 00000000 00000000 ................ - 2fe0 00000000 00000000 00000000 00000000 ................ - 2ff0 00000000 00000000 00000000 00000000 ................ - 3000 00000000 00000000 00000000 00000000 ................ - 3010 00000000 00000000 00000000 00000000 ................ - 3020 00000000 00000000 00000000 00000000 ................ - 3030 00000000 00000000 00000000 00000000 ................ - 3040 00000000 00000000 00000000 00000000 ................ - 3050 00000000 00000000 00000000 00000000 ................ - 3060 00000000 00000000 00000000 00000000 ................ - 3070 00000000 00000000 00000000 00000000 ................ - 3080 00000000 00000000 00000000 00000000 ................ - 3090 00000000 00000000 00000000 00000000 ................ - 30a0 00000000 00000000 00000000 00000000 ................ - 30b0 00000000 00000000 00000000 00000000 ................ - 30c0 00000000 00000000 00000000 00000000 ................ - 30d0 00000000 00000000 00000000 00000000 ................ - 30e0 00000000 00000000 00000000 00000000 ................ - 30f0 00000000 00000000 00000000 00000000 ................ - 3100 00000000 00000000 00000000 00000000 ................ - 3110 00000000 00000000 00000000 00000000 ................ - 3120 00000000 00000000 00000000 00000000 ................ - 3130 00000000 00000000 00000000 00000000 ................ - 3140 00000000 00000000 00000000 00000000 ................ - 3150 00000000 00000000 00000000 00000000 ................ - 3160 00000000 00000000 00000000 00000000 ................ - 3170 00000000 00000000 00000000 00000000 ................ - 3180 00000000 00000000 00000000 00000000 ................ - 3190 00000000 00000000 00000000 00000000 ................ - 31a0 00000000 00000000 00000000 00000000 ................ - 31b0 00000000 00000000 00000000 00000000 ................ - 31c0 00000000 00000000 00000000 00000000 ................ - 31d0 00000000 00000000 00000000 00000000 ................ - 31e0 00000000 00000000 00000000 00000000 ................ - 31f0 00000000 00000000 00000000 00000000 ................ - 3200 00000000 00000000 00000000 00000000 ................ - 3210 00000000 00000000 00000000 00000000 ................ - 3220 00000000 00000000 00000000 00000000 ................ - 3230 00000000 00000000 00000000 00000000 ................ - 3240 00000000 00000000 00000000 00000000 ................ - 3250 00000000 00000000 00000000 00000000 ................ - 3260 00000000 00000000 00000000 00000000 ................ - 3270 00000000 00000000 00000000 00000000 ................ - 3280 00000000 00000000 00000000 00000000 ................ - 3290 00000000 00000000 00000000 00000000 ................ - 32a0 00000000 00000000 00000000 00000000 ................ - 32b0 00000000 00000000 00000000 00000000 ................ - 32c0 00000000 00000000 00000000 00000000 ................ - 32d0 00000000 00000000 00000000 00000000 ................ - 32e0 00000000 00000000 00000000 00000000 ................ - 32f0 00000000 00000000 00000000 00000000 ................ - 3300 00000000 00000000 00000000 00000000 ................ - 3310 00000000 00000000 00000000 00000000 ................ - 3320 00000000 00000000 00000000 00000000 ................ - 3330 00000000 00000000 00000000 00000000 ................ - 3340 00000000 00000000 00000000 00000000 ................ - 3350 00000000 00000000 00000000 00000000 ................ - 3360 00000000 00000000 00000000 00000000 ................ - 3370 00000000 00000000 00000000 00000000 ................ - 3380 00000000 00000000 00000000 00000000 ................ - 3390 00000000 00000000 00000000 00000000 ................ - 33a0 00000000 00000000 00000000 00000000 ................ - 33b0 00000000 00000000 00000000 00000000 ................ - 33c0 00000000 00000000 00000000 00000000 ................ - 33d0 00000000 00000000 00000000 00000000 ................ - 33e0 00000000 00000000 00000000 00000000 ................ - 33f0 00000000 00000000 00000000 00000000 ................ - 3400 00000000 00000000 00000000 00000000 ................ - 3410 00000000 00000000 00000000 00000000 ................ - 3420 00000000 00000000 00000000 00000000 ................ - 3430 00000000 00000000 00000000 00000000 ................ - 3440 00000000 00000000 00000000 00000000 ................ - 3450 00000000 00000000 00000000 00000000 ................ - 3460 00000000 00000000 00000000 00000000 ................ - 3470 00000000 00000000 00000000 00000000 ................ - 3480 00000000 00000000 00000000 00000000 ................ - 3490 00000000 00000000 00000000 00000000 ................ - 34a0 00000000 00000000 00000000 00000000 ................ - 34b0 00000000 00000000 00000000 00000000 ................ - 34c0 00000000 00000000 00000000 00000000 ................ - 34d0 00000000 00000000 00000000 00000000 ................ - 34e0 00000000 00000000 00000000 00000000 ................ - 34f0 00000000 00000000 00000000 00000000 ................ - 3500 00000000 00000000 00000000 00000000 ................ - 3510 00000000 00000000 00000000 00000000 ................ - 3520 00000000 00000000 00000000 00000000 ................ - 3530 00000000 00000000 00000000 00000000 ................ - 3540 00000000 00000000 00000000 00000000 ................ - 3550 00000000 00000000 00000000 00000000 ................ - 3560 00000000 00000000 00000000 00000000 ................ - 3570 00000000 00000000 00000000 00000000 ................ - 3580 00000000 00000000 00000000 00000000 ................ - 3590 00000000 00000000 00000000 00000000 ................ - 35a0 00000000 00000000 00000000 00000000 ................ - 35b0 00000000 00000000 00000000 00000000 ................ - 35c0 00000000 00000000 00000000 00000000 ................ - 35d0 00000000 00000000 00000000 00000000 ................ - 35e0 00000000 00000000 00000000 00000000 ................ - 35f0 00000000 00000000 00000000 00000000 ................ - 3600 00000000 00000000 00000000 00000000 ................ - 3610 00000000 00000000 00000000 00000000 ................ - 3620 00000000 00000000 00000000 00000000 ................ - 3630 00000000 00000000 00000000 00000000 ................ - 3640 00000000 00000000 00000000 00000000 ................ - 3650 00000000 00000000 00000000 00000000 ................ - 3660 00000000 00000000 00000000 00000000 ................ - 3670 00000000 00000000 00000000 00000000 ................ - 3680 00000000 00000000 00000000 00000000 ................ - 3690 00000000 00000000 00000000 00000000 ................ - 36a0 00000000 00000000 00000000 00000000 ................ - 36b0 00000000 00000000 00000000 00000000 ................ - 36c0 00000000 00000000 00000000 00000000 ................ - 36d0 00000000 00000000 00000000 00000000 ................ - 36e0 00000000 00000000 00000000 00000000 ................ - 36f0 00000000 00000000 00000000 00000000 ................ - 3700 00000000 00000000 00000000 00000000 ................ - 3710 00000000 00000000 00000000 00000000 ................ - 3720 00000000 00000000 00000000 00000000 ................ - 3730 00000000 00000000 00000000 00000000 ................ - 3740 00000000 00000000 00000000 00000000 ................ - 3750 00000000 00000000 00000000 00000000 ................ - 3760 00000000 00000000 00000000 00000000 ................ - 3770 00000000 00000000 00000000 00000000 ................ - 3780 00000000 00000000 00000000 00000000 ................ - 3790 00000000 00000000 00000000 00000000 ................ - 37a0 00000000 00000000 00000000 00000000 ................ - 37b0 00000000 00000000 00000000 00000000 ................ - 37c0 00000000 00000000 00000000 00000000 ................ - 37d0 00000000 00000000 00000000 00000000 ................ - 37e0 00000000 00000000 00000000 00000000 ................ - 37f0 00000000 00000000 00000000 00000000 ................ - 3800 00000000 00000000 00000000 00000000 ................ - 3810 00000000 00000000 00000000 00000000 ................ - 3820 00000000 00000000 00000000 00000000 ................ - 3830 00000000 00000000 00000000 00000000 ................ - 3840 00000000 00000000 00000000 00000000 ................ - 3850 00000000 00000000 00000000 00000000 ................ - 3860 00000000 00000000 00000000 00000000 ................ - 3870 00000000 00000000 00000000 00000000 ................ - 3880 00000000 00000000 00000000 00000000 ................ - 3890 00000000 00000000 00000000 00000000 ................ - 38a0 00000000 00000000 00000000 00000000 ................ - 38b0 00000000 00000000 00000000 00000000 ................ - 38c0 00000000 00000000 00000000 00000000 ................ - 38d0 00000000 00000000 00000000 00000000 ................ - 38e0 00000000 00000000 00000000 00000000 ................ - 38f0 00000000 00000000 00000000 00000000 ................ - 3900 00000000 00000000 00000000 00000000 ................ - 3910 00000000 00000000 00000000 00000000 ................ - 3920 00000000 00000000 00000000 00000000 ................ - 3930 00000000 00000000 00000000 00000000 ................ - 3940 00000000 00000000 00000000 00000000 ................ - 3950 00000000 00000000 00000000 00000000 ................ - 3960 00000000 00000000 00000000 00000000 ................ - 3970 00000000 00000000 00000000 00000000 ................ - 3980 00000000 00000000 00000000 00000000 ................ - 3990 00000000 00000000 00000000 00000000 ................ - 39a0 00000000 00000000 00000000 00000000 ................ - 39b0 00000000 00000000 00000000 00000000 ................ - 39c0 00000000 00000000 00000000 00000000 ................ - 39d0 00000000 00000000 00000000 00000000 ................ - 39e0 00000000 00000000 00000000 00000000 ................ - 39f0 00000000 00000000 00000000 00000000 ................ - 3a00 00000000 00000000 00000000 00000000 ................ - 3a10 00000000 00000000 00000000 00000000 ................ - 3a20 00000000 00000000 00000000 00000000 ................ - 3a30 00000000 00000000 00000000 00000000 ................ - 3a40 00000000 00000000 00000000 00000000 ................ - 3a50 00000000 00000000 00000000 00000000 ................ - 3a60 00000000 00000000 00000000 00000000 ................ - 3a70 00000000 00000000 00000000 00000000 ................ - 3a80 00000000 00000000 00000000 00000000 ................ - 3a90 00000000 00000000 00000000 00000000 ................ - 3aa0 00000000 00000000 00000000 00000000 ................ - 3ab0 00000000 00000000 00000000 00000000 ................ - 3ac0 00000000 00000000 00000000 00000000 ................ - 3ad0 00000000 00000000 00000000 00000000 ................ - 3ae0 00000000 00000000 00000000 00000000 ................ - 3af0 00000000 00000000 00000000 00000000 ................ - 3b00 00000000 00000000 00000000 00000000 ................ - 3b10 00000000 00000000 00000000 00000000 ................ - 3b20 00000000 00000000 00000000 00000000 ................ - 3b30 00000000 00000000 00000000 00000000 ................ - 3b40 00000000 00000000 00000000 00000000 ................ - 3b50 00000000 00000000 00000000 00000000 ................ - 3b60 00000000 00000000 00000000 00000000 ................ - 3b70 00000000 00000000 00000000 00000000 ................ - 3b80 00000000 00000000 00000000 00000000 ................ - 3b90 00000000 00000000 00000000 00000000 ................ - 3ba0 00000000 00000000 00000000 00000000 ................ - 3bb0 00000000 00000000 00000000 00000000 ................ - 3bc0 00000000 00000000 00000000 00000000 ................ - 3bd0 00000000 00000000 00000000 00000000 ................ - 3be0 00000000 00000000 00000000 00000000 ................ - 3bf0 00000000 00000000 00000000 00000000 ................ - 3c00 00000000 00000000 00000000 00000000 ................ - 3c10 00000000 00000000 00000000 00000000 ................ - 3c20 00000000 00000000 00000000 00000000 ................ - 3c30 00000000 00000000 00000000 00000000 ................ - 3c40 00000000 00000000 00000000 00000000 ................ - 3c50 00000000 00000000 00000000 00000000 ................ - 3c60 00000000 00000000 00000000 00000000 ................ - 3c70 00000000 00000000 00000000 00000000 ................ - 3c80 00000000 00000000 00000000 00000000 ................ - 3c90 00000000 00000000 00000000 00000000 ................ - 3ca0 00000000 00000000 00000000 00000000 ................ - 3cb0 00000000 00000000 00000000 00000000 ................ - 3cc0 00000000 00000000 00000000 00000000 ................ - 3cd0 00000000 00000000 00000000 00000000 ................ - 3ce0 00000000 00000000 00000000 00000000 ................ - 3cf0 00000000 00000000 00000000 00000000 ................ - 3d00 00000000 00000000 00000000 00000000 ................ - 3d10 00000000 00000000 00000000 00000000 ................ - 3d20 00000000 00000000 00000000 00000000 ................ - 3d30 00000000 00000000 00000000 00000000 ................ - 3d40 00000000 00000000 00000000 00000000 ................ - 3d50 00000000 00000000 00000000 00000000 ................ - 3d60 00000000 00000000 00000000 00000000 ................ - 3d70 00000000 00000000 00000000 00000000 ................ - 3d80 00000000 00000000 00000000 00000000 ................ - 3d90 00000000 00000000 00000000 00000000 ................ - 3da0 00000000 00000000 00000000 00000000 ................ - 3db0 00000000 00000000 00000000 00000000 ................ - 3dc0 00000000 00000000 00000000 00000000 ................ - 3dd0 00000000 00000000 00000000 00000000 ................ - 3de0 00000000 00000000 00000000 00000000 ................ - 3df0 00000000 00000000 00000000 00000000 ................ - 3e00 00000000 00000000 00000000 00000000 ................ - 3e10 00000000 00000000 00000000 00000000 ................ - 3e20 00000000 00000000 00000000 00000000 ................ - 3e30 00000000 00000000 00000000 00000000 ................ - 3e40 00000000 00000000 00000000 00000000 ................ - 3e50 00000000 00000000 00000000 00000000 ................ - 3e60 00000000 00000000 00000000 00000000 ................ - 3e70 00000000 00000000 00000000 00000000 ................ - 3e80 00000000 00000000 00000000 00000000 ................ - 3e90 00000000 00000000 00000000 00000000 ................ - 3ea0 00000000 00000000 00000000 00000000 ................ - 3eb0 00000000 00000000 00000000 00000000 ................ - 3ec0 00000000 00000000 00000000 00000000 ................ - 3ed0 00000000 00000000 00000000 00000000 ................ - 3ee0 00000000 00000000 00000000 00000000 ................ - 3ef0 00000000 00000000 00000000 00000000 ................ - 3f00 00000000 00000000 00000000 00000000 ................ - 3f10 00000000 00000000 00000000 00000000 ................ - 3f20 00000000 00000000 00000000 00000000 ................ - 3f30 00000000 00000000 00000000 00000000 ................ - 3f40 00000000 00000000 00000000 00000000 ................ - 3f50 00000000 00000000 00000000 00000000 ................ - 3f60 00000000 00000000 00000000 00000000 ................ - 3f70 00000000 00000000 00000000 00000000 ................ - 3f80 00000000 00000000 00000000 00000000 ................ - 3f90 00000000 00000000 00000000 00000000 ................ - 3fa0 00000000 00000000 00000000 00000000 ................ - 3fb0 00000000 00000000 00000000 00000000 ................ - 3fc0 00000000 00000000 00000000 00000000 ................ - 3fd0 00000000 00000000 00000000 00000000 ................ - 3fe0 00000000 00000000 00000000 00000000 ................ - 3ff0 00000000 00000000 00000000 00000000 ................ - 4000 00000000 00000000 00000000 00000000 ................ - 4010 00000000 00000000 00000000 00000000 ................ - 4020 00000000 00000000 00000000 00000000 ................ - 4030 00000000 00000000 00000000 00000000 ................ - 4040 00000000 00000000 00000000 00000000 ................ - 4050 00000000 00000000 00000000 00000000 ................ - 4060 00000000 00000000 00000000 00000000 ................ - 4070 00000000 00000000 00000000 00000000 ................ - 4080 00000000 00000000 00000000 00000000 ................ - 4090 00000000 00000000 00000000 00000000 ................ - 40a0 00000000 00000000 00000000 00000000 ................ - 40b0 00000000 00000000 00000000 00000000 ................ - 40c0 00000000 00000000 00000000 00000000 ................ - 40d0 00000000 00000000 00000000 00000000 ................ - 40e0 00000000 00000000 00000000 00000000 ................ - 40f0 00000000 00000000 00000000 00000000 ................ - 4100 00000000 00000000 00000000 00000000 ................ - 4110 00000000 00000000 00000000 00000000 ................ - 4120 00000000 00000000 00000000 00000000 ................ - 4130 00000000 00000000 00000000 00000000 ................ - 4140 00000000 00000000 00000000 00000000 ................ - 4150 00000000 00000000 00000000 00000000 ................ - 4160 00000000 00000000 00000000 00000000 ................ - 4170 00000000 00000000 00000000 00000000 ................ - 4180 00000000 00000000 00000000 00000000 ................ - 4190 00000000 00000000 00000000 00000000 ................ - 41a0 00000000 00000000 00000000 00000000 ................ - 41b0 00000000 00000000 00000000 00000000 ................ - 41c0 00000000 00000000 00000000 00000000 ................ - 41d0 00000000 00000000 00000000 00000000 ................ - 41e0 00000000 00000000 00000000 00000000 ................ - 41f0 00000000 00000000 00000000 00000000 ................ - 4200 00000000 00000000 00000000 00000000 ................ - 4210 00000000 00000000 00000000 00000000 ................ - 4220 00000000 00000000 00000000 00000000 ................ - 4230 00000000 00000000 00000000 00000000 ................ - 4240 00000000 00000000 00000000 00000000 ................ - 4250 00000000 00000000 00000000 00000000 ................ - 4260 00000000 00000000 00000000 00000000 ................ - 4270 00000000 00000000 00000000 00000000 ................ - 4280 00000000 00000000 00000000 00000000 ................ - 4290 00000000 00000000 00000000 00000000 ................ - 42a0 00000000 00000000 00000000 00000000 ................ - 42b0 00000000 00000000 00000000 00000000 ................ - 42c0 00000000 00000000 00000000 00000000 ................ - 42d0 00000000 00000000 00000000 00000000 ................ - 42e0 00000000 00000000 00000000 00000000 ................ - 42f0 00000000 00000000 00000000 00000000 ................ - 4300 00000000 00000000 00000000 00000000 ................ - 4310 00000000 00000000 00000000 00000000 ................ - 4320 00000000 00000000 00000000 00000000 ................ - 4330 00000000 00000000 00000000 00000000 ................ - 4340 00000000 00000000 00000000 00000000 ................ - 4350 00000000 00000000 00000000 00000000 ................ - 4360 00000000 00000000 00000000 00000000 ................ - 4370 00000000 00000000 00000000 00000000 ................ - 4380 00000000 00000000 00000000 00000000 ................ - 4390 00000000 00000000 00000000 00000000 ................ - 43a0 00000000 00000000 00000000 00000000 ................ - 43b0 00000000 00000000 00000000 00000000 ................ - 43c0 00000000 00000000 00000000 00000000 ................ - 43d0 00000000 00000000 00000000 00000000 ................ - 43e0 00000000 00000000 00000000 00000000 ................ - 43f0 00000000 00000000 00000000 00000000 ................ - 4400 00000000 00000000 00000000 00000000 ................ - 4410 00000000 00000000 00000000 00000000 ................ - 4420 00000000 00000000 00000000 00000000 ................ - 4430 00000000 00000000 00000000 00000000 ................ - 4440 00000000 00000000 00000000 00000000 ................ - 4450 00000000 00000000 00000000 00000000 ................ - 4460 00000000 00000000 00000000 00000000 ................ - 4470 00000000 00000000 00000000 00000000 ................ - 4480 00000000 00000000 00000000 00000000 ................ - 4490 00000000 00000000 00000000 00000000 ................ - 44a0 00000000 00000000 00000000 00000000 ................ - 44b0 00000000 00000000 00000000 00000000 ................ - 44c0 00000000 00000000 00000000 00000000 ................ - 44d0 00000000 00000000 00000000 00000000 ................ - 44e0 00000000 00000000 00000000 00000000 ................ - 44f0 00000000 00000000 00000000 00000000 ................ - 4500 00000000 00000000 00000000 00000000 ................ - 4510 00000000 00000000 00000000 00000000 ................ - 4520 00000000 00000000 00000000 00000000 ................ - 4530 00000000 00000000 00000000 00000000 ................ - 4540 00000000 00000000 00000000 00000000 ................ - 4550 00000000 00000000 00000000 00000000 ................ - 4560 00000000 00000000 00000000 00000000 ................ - 4570 00000000 00000000 00000000 00000000 ................ - 4580 00000000 00000000 00000000 00000000 ................ - 4590 00000000 00000000 00000000 00000000 ................ - 45a0 00000000 00000000 00000000 00000000 ................ - 45b0 00000000 00000000 00000000 00000000 ................ - 45c0 00000000 00000000 00000000 00000000 ................ - 45d0 00000000 00000000 00000000 00000000 ................ - 45e0 00000000 00000000 00000000 00000000 ................ - 45f0 00000000 00000000 00000000 00000000 ................ - 4600 00000000 00000000 00000000 00000000 ................ - 4610 00000000 00000000 00000000 00000000 ................ - 4620 00000000 00000000 00000000 00000000 ................ - 4630 00000000 00000000 00000000 00000000 ................ - 4640 00000000 00000000 00000000 00000000 ................ - 4650 00000000 00000000 00000000 00000000 ................ - 4660 00000000 00000000 00000000 00000000 ................ - 4670 00000000 00000000 00000000 00000000 ................ - 4680 00000000 00000000 00000000 00000000 ................ - 4690 00000000 00000000 00000000 00000000 ................ - 46a0 00000000 00000000 00000000 00000000 ................ - 46b0 00000000 00000000 00000000 00000000 ................ - 46c0 00000000 00000000 00000000 00000000 ................ - 46d0 00000000 00000000 00000000 00000000 ................ - 46e0 00000000 00000000 00000000 00000000 ................ - 46f0 00000000 00000000 00000000 00000000 ................ - 4700 00000000 00000000 00000000 00000000 ................ - 4710 00000000 00000000 00000000 00000000 ................ - 4720 00000000 00000000 00000000 00000000 ................ - 4730 00000000 00000000 00000000 00000000 ................ - 4740 00000000 00000000 00000000 00000000 ................ - 4750 00000000 00000000 00000000 00000000 ................ - 4760 00000000 00000000 00000000 00000000 ................ - 4770 00000000 00000000 00000000 00000000 ................ - 4780 00000000 00000000 00000000 00000000 ................ - 4790 00000000 00000000 00000000 00000000 ................ - 47a0 00000000 00000000 00000000 00000000 ................ - 47b0 00000000 00000000 00000000 00000000 ................ - 47c0 00000000 00000000 00000000 00000000 ................ - 47d0 00000000 00000000 00000000 00000000 ................ - 47e0 00000000 00000000 00000000 00000000 ................ - 47f0 00000000 00000000 00000000 00000000 ................ - 4800 00000000 00000000 00000000 00000000 ................ - 4810 00000000 00000000 00000000 00000000 ................ - 4820 00000000 00000000 00000000 00000000 ................ - 4830 00000000 00000000 00000000 00000000 ................ - 4840 00000000 00000000 00000000 00000000 ................ - 4850 00000000 00000000 00000000 00000000 ................ - 4860 00000000 00000000 00000000 00000000 ................ - 4870 00000000 00000000 00000000 00000000 ................ - 4880 00000000 00000000 00000000 00000000 ................ - 4890 00000000 00000000 00000000 00000000 ................ - 48a0 00000000 00000000 00000000 00000000 ................ - 48b0 00000000 00000000 00000000 00000000 ................ - 48c0 00000000 00000000 00000000 00000000 ................ - 48d0 00000000 00000000 00000000 00000000 ................ - 48e0 00000000 00000000 00000000 00000000 ................ - 48f0 00000000 00000000 00000000 00000000 ................ - 4900 00000000 00000000 00000000 00000000 ................ - 4910 00000000 00000000 00000000 00000000 ................ - 4920 00000000 00000000 00000000 00000000 ................ - 4930 00000000 00000000 00000000 00000000 ................ - 4940 00000000 00000000 00000000 00000000 ................ - 4950 00000000 00000000 00000000 00000000 ................ - 4960 00000000 00000000 00000000 00000000 ................ - 4970 00000000 00000000 00000000 00000000 ................ - 4980 00000000 00000000 00000000 00000000 ................ - 4990 00000000 00000000 00000000 00000000 ................ - 49a0 00000000 00000000 00000000 00000000 ................ - 49b0 00000000 00000000 00000000 00000000 ................ - 49c0 00000000 00000000 00000000 00000000 ................ - 49d0 00000000 00000000 00000000 00000000 ................ - 49e0 00000000 00000000 00000000 00000000 ................ - 49f0 00000000 00000000 00000000 00000000 ................ - 4a00 00000000 00000000 00000000 00000000 ................ - 4a10 00000000 00000000 00000000 00000000 ................ - 4a20 00000000 00000000 00000000 00000000 ................ - 4a30 00000000 00000000 00000000 00000000 ................ - 4a40 00000000 00000000 00000000 00000000 ................ - 4a50 00000000 00000000 00000000 00000000 ................ - 4a60 00000000 00000000 00000000 00000000 ................ - 4a70 00000000 00000000 00000000 00000000 ................ - 4a80 00000000 00000000 00000000 00000000 ................ - 4a90 00000000 00000000 00000000 00000000 ................ - 4aa0 00000000 00000000 00000000 00000000 ................ - 4ab0 00000000 00000000 00000000 00000000 ................ - 4ac0 00000000 00000000 00000000 00000000 ................ - 4ad0 00000000 00000000 00000000 00000000 ................ - 4ae0 00000000 00000000 00000000 00000000 ................ - 4af0 00000000 00000000 00000000 00000000 ................ - 4b00 00000000 00000000 00000000 00000000 ................ - 4b10 00000000 00000000 00000000 00000000 ................ - 4b20 00000000 00000000 00000000 00000000 ................ - 4b30 00000000 00000000 00000000 00000000 ................ - 4b40 00000000 00000000 00000000 00000000 ................ - 4b50 00000000 00000000 00000000 00000000 ................ - 4b60 00000000 00000000 00000000 00000000 ................ - 4b70 00000000 00000000 00000000 00000000 ................ - 4b80 00000000 00000000 00000000 00000000 ................ - 4b90 00000000 00000000 00000000 00000000 ................ - 4ba0 00000000 00000000 00000000 00000000 ................ - 4bb0 00000000 00000000 00000000 00000000 ................ - 4bc0 00000000 00000000 00000000 00000000 ................ - 4bd0 00000000 00000000 00000000 00000000 ................ - 4be0 00000000 00000000 00000000 00000000 ................ - 4bf0 00000000 00000000 00000000 00000000 ................ - 4c00 00000000 00000000 00000000 00000000 ................ - 4c10 00000000 00000000 00000000 00000000 ................ - 4c20 00000000 00000000 00000000 00000000 ................ - 4c30 00000000 00000000 00000000 00000000 ................ - 4c40 00000000 00000000 00000000 00000000 ................ - 4c50 00000000 00000000 00000000 00000000 ................ - 4c60 00000000 00000000 00000000 00000000 ................ - 4c70 00000000 00000000 00000000 00000000 ................ - 4c80 00000000 00000000 00000000 00000000 ................ - 4c90 00000000 00000000 00000000 00000000 ................ - 4ca0 00000000 00000000 00000000 00000000 ................ - 4cb0 00000000 00000000 00000000 00000000 ................ - 4cc0 00000000 00000000 00000000 00000000 ................ - 4cd0 00000000 00000000 00000000 00000000 ................ - 4ce0 00000000 00000000 00000000 00000000 ................ - 4cf0 00000000 00000000 00000000 00000000 ................ - 4d00 00000000 00000000 00000000 00000000 ................ - 4d10 00000000 00000000 00000000 00000000 ................ - 4d20 00000000 00000000 00000000 00000000 ................ - 4d30 00000000 00000000 00000000 00000000 ................ - 4d40 00000000 00000000 00000000 00000000 ................ - 4d50 00000000 00000000 00000000 00000000 ................ - 4d60 00000000 00000000 00000000 00000000 ................ - 4d70 00000000 00000000 00000000 00000000 ................ - 4d80 00000000 00000000 00000000 00000000 ................ - 4d90 00000000 00000000 00000000 00000000 ................ - 4da0 00000000 00000000 00000000 00000000 ................ - 4db0 00000000 00000000 00000000 00000000 ................ - 4dc0 00000000 00000000 00000000 00000000 ................ - 4dd0 00000000 00000000 00000000 00000000 ................ - 4de0 00000000 00000000 00000000 00000000 ................ - 4df0 00000000 00000000 00000000 00000000 ................ - 4e00 00000000 00000000 00000000 00000000 ................ - 4e10 00000000 00000000 00000000 00000000 ................ - 4e20 00000000 00000000 00000000 00000000 ................ - 4e30 00000000 00000000 00000000 00000000 ................ - 4e40 00000000 00000000 00000000 00000000 ................ - 4e50 00000000 00000000 00000000 00000000 ................ - 4e60 00000000 00000000 00000000 00000000 ................ - 4e70 00000000 00000000 00000000 00000000 ................ - 4e80 00000000 00000000 00000000 00000000 ................ - 4e90 00000000 00000000 00000000 00000000 ................ - 4ea0 00000000 00000000 00000000 00000000 ................ - 4eb0 00000000 00000000 00000000 00000000 ................ - 4ec0 00000000 00000000 00000000 00000000 ................ - 4ed0 00000000 00000000 00000000 00000000 ................ - 4ee0 00000000 00000000 00000000 00000000 ................ - 4ef0 00000000 00000000 00000000 00000000 ................ - 4f00 00000000 00000000 00000000 00000000 ................ - 4f10 00000000 00000000 00000000 00000000 ................ - 4f20 00000000 00000000 00000000 00000000 ................ - 4f30 00000000 00000000 00000000 00000000 ................ - 4f40 00000000 00000000 00000000 00000000 ................ - 4f50 00000000 00000000 00000000 00000000 ................ - 4f60 00000000 00000000 00000000 00000000 ................ - 4f70 00000000 00000000 00000000 00000000 ................ - 4f80 00000000 00000000 00000000 00000000 ................ - 4f90 00000000 00000000 00000000 00000000 ................ - 4fa0 00000000 00000000 00000000 00000000 ................ - 4fb0 00000000 00000000 00000000 00000000 ................ - 4fc0 00000000 00000000 00000000 00000000 ................ - 4fd0 00000000 00000000 00000000 00000000 ................ - 4fe0 00000000 00000000 00000000 00000000 ................ - 4ff0 00000000 00000000 00000000 00000000 ................ - 5000 00000000 00000000 00000000 00000000 ................ - 5010 00000000 00000000 00000000 00000000 ................ - 5020 00000000 00000000 00000000 00000000 ................ - 5030 00000000 00000000 00000000 00000000 ................ - 5040 00000000 00000000 00000000 00000000 ................ - 5050 00000000 00000000 00000000 00000000 ................ - 5060 00000000 00000000 00000000 00000000 ................ - 5070 00000000 00000000 00000000 00000000 ................ - 5080 00000000 00000000 00000000 00000000 ................ - 5090 00000000 00000000 00000000 00000000 ................ - 50a0 00000000 00000000 00000000 00000000 ................ - 50b0 00000000 00000000 00000000 00000000 ................ - 50c0 00000000 00000000 00000000 00000000 ................ - 50d0 00000000 00000000 00000000 00000000 ................ - 50e0 00000000 00000000 00000000 00000000 ................ - 50f0 00000000 00000000 00000000 00000000 ................ - 5100 00000000 00000000 00000000 00000000 ................ - 5110 00000000 00000000 00000000 00000000 ................ - 5120 00000000 00000000 00000000 00000000 ................ - 5130 00000000 00000000 00000000 00000000 ................ - 5140 00000000 00000000 00000000 00000000 ................ - 5150 00000000 00000000 00000000 00000000 ................ - 5160 00000000 00000000 00000000 00000000 ................ - 5170 00000000 00000000 00000000 00000000 ................ - 5180 00000000 00000000 00000000 00000000 ................ - 5190 00000000 00000000 00000000 00000000 ................ - 51a0 00000000 00000000 00000000 00000000 ................ - 51b0 00000000 00000000 00000000 00000000 ................ - 51c0 00000000 00000000 00000000 00000000 ................ - 51d0 00000000 00000000 00000000 00000000 ................ - 51e0 00000000 00000000 00000000 00000000 ................ - 51f0 00000000 00000000 00000000 00000000 ................ - 5200 00000000 00000000 00000000 00000000 ................ - 5210 00000000 00000000 00000000 00000000 ................ - 5220 00000000 00000000 00000000 00000000 ................ - 5230 00000000 00000000 00000000 00000000 ................ - 5240 00000000 00000000 00000000 00000000 ................ - 5250 00000000 00000000 00000000 00000000 ................ - 5260 00000000 00000000 00000000 00000000 ................ - 5270 00000000 00000000 00000000 00000000 ................ - 5280 00000000 00000000 00000000 00000000 ................ - 5290 00000000 00000000 00000000 00000000 ................ - 52a0 00000000 00000000 00000000 00000000 ................ - 52b0 00000000 00000000 00000000 00000000 ................ - 52c0 00000000 00000000 00000000 00000000 ................ - 52d0 00000000 00000000 00000000 00000000 ................ - 52e0 00000000 00000000 00000000 00000000 ................ - 52f0 00000000 00000000 00000000 00000000 ................ - 5300 00000000 00000000 00000000 00000000 ................ - 5310 00000000 00000000 00000000 00000000 ................ - 5320 00000000 00000000 00000000 00000000 ................ - 5330 00000000 00000000 00000000 00000000 ................ - 5340 00000000 00000000 00000000 00000000 ................ - 5350 00000000 00000000 00000000 00000000 ................ - 5360 00000000 00000000 00000000 00000000 ................ - 5370 00000000 00000000 00000000 00000000 ................ - 5380 00000000 00000000 00000000 00000000 ................ - 5390 00000000 00000000 00000000 00000000 ................ - 53a0 00000000 00000000 00000000 00000000 ................ - 53b0 00000000 00000000 00000000 00000000 ................ - 53c0 00000000 00000000 00000000 00000000 ................ - 53d0 00000000 00000000 00000000 00000000 ................ - 53e0 00000000 00000000 00000000 00000000 ................ - 53f0 00000000 00000000 00000000 00000000 ................ - 5400 00000000 00000000 00000000 00000000 ................ - 5410 00000000 00000000 00000000 00000000 ................ - 5420 00000000 00000000 00000000 00000000 ................ - 5430 00000000 00000000 00000000 00000000 ................ - 5440 00000000 00000000 00000000 00000000 ................ - 5450 00000000 00000000 00000000 00000000 ................ - 5460 00000000 00000000 00000000 00000000 ................ - 5470 00000000 00000000 00000000 00000000 ................ - 5480 00000000 00000000 00000000 00000000 ................ - 5490 00000000 00000000 00000000 00000000 ................ - 54a0 00000000 00000000 00000000 00000000 ................ - 54b0 00000000 00000000 00000000 00000000 ................ - 54c0 00000000 00000000 00000000 00000000 ................ - 54d0 00000000 00000000 00000000 00000000 ................ - 54e0 00000000 00000000 00000000 00000000 ................ - 54f0 00000000 00000000 00000000 00000000 ................ - 5500 00000000 00000000 00000000 00000000 ................ - 5510 00000000 00000000 00000000 00000000 ................ - 5520 00000000 00000000 00000000 00000000 ................ - 5530 00000000 00000000 00000000 00000000 ................ - 5540 00000000 00000000 00000000 00000000 ................ - 5550 00000000 00000000 00000000 00000000 ................ - 5560 00000000 00000000 00000000 00000000 ................ - 5570 00000000 00000000 00000000 00000000 ................ - 5580 00000000 00000000 00000000 00000000 ................ - 5590 00000000 00000000 00000000 00000000 ................ - 55a0 00000000 00000000 00000000 00000000 ................ - 55b0 00000000 00000000 00000000 00000000 ................ - 55c0 00000000 00000000 00000000 00000000 ................ - 55d0 00000000 00000000 00000000 00000000 ................ - 55e0 00000000 00000000 00000000 00000000 ................ - 55f0 00000000 00000000 00000000 00000000 ................ - 5600 00000000 00000000 00000000 00000000 ................ - 5610 00000000 00000000 00000000 00000000 ................ - 5620 00000000 00000000 00000000 00000000 ................ - 5630 00000000 00000000 00000000 00000000 ................ - 5640 00000000 00000000 00000000 00000000 ................ - 5650 00000000 00000000 00000000 00000000 ................ - 5660 00000000 00000000 00000000 00000000 ................ - 5670 00000000 00000000 00000000 00000000 ................ - 5680 00000000 00000000 00000000 00000000 ................ - 5690 00000000 00000000 00000000 00000000 ................ - 56a0 00000000 00000000 00000000 00000000 ................ - 56b0 00000000 00000000 00000000 00000000 ................ - 56c0 00000000 00000000 00000000 00000000 ................ - 56d0 00000000 00000000 00000000 00000000 ................ - 56e0 00000000 00000000 00000000 00000000 ................ - 56f0 00000000 00000000 00000000 00000000 ................ - 5700 00000000 00000000 00000000 00000000 ................ - 5710 00000000 00000000 00000000 00000000 ................ - 5720 00000000 00000000 00000000 00000000 ................ - 5730 00000000 00000000 00000000 00000000 ................ - 5740 00000000 00000000 00000000 00000000 ................ - 5750 00000000 00000000 00000000 00000000 ................ - 5760 00000000 00000000 00000000 00000000 ................ - 5770 00000000 00000000 00000000 00000000 ................ - 5780 00000000 00000000 00000000 00000000 ................ - 5790 00000000 00000000 00000000 00000000 ................ - 57a0 00000000 00000000 00000000 00000000 ................ - 57b0 00000000 00000000 00000000 00000000 ................ - 57c0 00000000 00000000 00000000 00000000 ................ - 57d0 00000000 00000000 00000000 00000000 ................ - 57e0 00000000 00000000 00000000 00000000 ................ - 57f0 00000000 00000000 00000000 00000000 ................ - 5800 00000000 00000000 00000000 00000000 ................ - 5810 00000000 00000000 00000000 00000000 ................ - 5820 00000000 00000000 00000000 00000000 ................ - 5830 00000000 00000000 00000000 00000000 ................ - 5840 00000000 00000000 00000000 00000000 ................ - 5850 00000000 00000000 00000000 00000000 ................ - 5860 00000000 00000000 00000000 00000000 ................ - 5870 00000000 00000000 00000000 00000000 ................ - 5880 00000000 00000000 00000000 00000000 ................ - 5890 00000000 00000000 00000000 00000000 ................ - 58a0 00000000 00000000 00000000 00000000 ................ - 58b0 00000000 00000000 00000000 00000000 ................ - 58c0 00000000 00000000 00000000 00000000 ................ - 58d0 00000000 00000000 00000000 00000000 ................ - 58e0 00000000 00000000 00000000 00000000 ................ - 58f0 00000000 00000000 00000000 00000000 ................ - 5900 00000000 00000000 00000000 00000000 ................ - 5910 00000000 00000000 00000000 00000000 ................ - 5920 00000000 00000000 00000000 00000000 ................ - 5930 00000000 00000000 00000000 00000000 ................ - 5940 00000000 00000000 00000000 00000000 ................ - 5950 00000000 00000000 00000000 00000000 ................ - 5960 00000000 00000000 00000000 00000000 ................ - 5970 00000000 00000000 00000000 00000000 ................ - 5980 00000000 00000000 00000000 00000000 ................ - 5990 00000000 00000000 00000000 00000000 ................ - 59a0 00000000 00000000 00000000 00000000 ................ - 59b0 00000000 00000000 00000000 00000000 ................ - 59c0 00000000 00000000 00000000 00000000 ................ - 59d0 00000000 00000000 00000000 00000000 ................ - 59e0 00000000 00000000 00000000 00000000 ................ - 59f0 00000000 00000000 00000000 00000000 ................ - 5a00 00000000 00000000 00000000 00000000 ................ - 5a10 00000000 00000000 00000000 00000000 ................ - 5a20 00000000 00000000 00000000 00000000 ................ - 5a30 00000000 00000000 00000000 00000000 ................ - 5a40 00000000 00000000 00000000 00000000 ................ - 5a50 00000000 00000000 00000000 00000000 ................ - 5a60 00000000 00000000 00000000 00000000 ................ - 5a70 00000000 00000000 00000000 00000000 ................ - 5a80 00000000 00000000 00000000 00000000 ................ - 5a90 00000000 00000000 00000000 00000000 ................ - 5aa0 00000000 00000000 00000000 00000000 ................ - 5ab0 00000000 00000000 00000000 00000000 ................ - 5ac0 00000000 00000000 00000000 00000000 ................ - 5ad0 00000000 00000000 00000000 00000000 ................ - 5ae0 00000000 00000000 00000000 00000000 ................ - 5af0 00000000 00000000 00000000 00000000 ................ - 5b00 00000000 00000000 00000000 00000000 ................ - 5b10 00000000 00000000 00000000 00000000 ................ - 5b20 00000000 00000000 00000000 00000000 ................ - 5b30 00000000 00000000 00000000 00000000 ................ - 5b40 00000000 00000000 00000000 00000000 ................ - 5b50 00000000 00000000 00000000 00000000 ................ - 5b60 00000000 00000000 00000000 00000000 ................ - 5b70 00000000 00000000 00000000 00000000 ................ - 5b80 00000000 00000000 00000000 00000000 ................ - 5b90 00000000 00000000 00000000 00000000 ................ - 5ba0 00000000 00000000 00000000 00000000 ................ - 5bb0 00000000 00000000 00000000 00000000 ................ - 5bc0 00000000 00000000 00000000 00000000 ................ - 5bd0 00000000 00000000 00000000 00000000 ................ - 5be0 00000000 00000000 00000000 00000000 ................ - 5bf0 00000000 00000000 00000000 00000000 ................ - 5c00 00000000 00000000 00000000 00000000 ................ - 5c10 00000000 00000000 00000000 00000000 ................ - 5c20 00000000 00000000 00000000 00000000 ................ - 5c30 00000000 00000000 00000000 00000000 ................ - 5c40 00000000 00000000 00000000 00000000 ................ - 5c50 00000000 00000000 00000000 00000000 ................ - 5c60 00000000 00000000 00000000 00000000 ................ - 5c70 00000000 00000000 00000000 00000000 ................ - 5c80 00000000 00000000 00000000 00000000 ................ - 5c90 00000000 00000000 00000000 00000000 ................ - 5ca0 00000000 00000000 00000000 00000000 ................ - 5cb0 00000000 00000000 00000000 00000000 ................ - 5cc0 00000000 00000000 00000000 00000000 ................ - 5cd0 00000000 00000000 00000000 00000000 ................ - 5ce0 00000000 00000000 00000000 00000000 ................ - 5cf0 00000000 00000000 00000000 00000000 ................ - 5d00 00000000 00000000 00000000 00000000 ................ - 5d10 00000000 00000000 00000000 00000000 ................ - 5d20 00000000 00000000 00000000 00000000 ................ - 5d30 00000000 00000000 00000000 00000000 ................ - 5d40 00000000 00000000 00000000 00000000 ................ - 5d50 00000000 00000000 00000000 00000000 ................ - 5d60 00000000 00000000 00000000 00000000 ................ - 5d70 00000000 00000000 00000000 00000000 ................ - 5d80 00000000 00000000 00000000 00000000 ................ - 5d90 00000000 00000000 00000000 00000000 ................ - 5da0 00000000 00000000 00000000 00000000 ................ - 5db0 00000000 00000000 00000000 00000000 ................ - 5dc0 00000000 00000000 00000000 00000000 ................ - 5dd0 00000000 00000000 00000000 00000000 ................ - 5de0 00000000 00000000 00000000 00000000 ................ - 5df0 00000000 00000000 00000000 00000000 ................ - 5e00 00000000 00000000 00000000 00000000 ................ - 5e10 00000000 00000000 00000000 00000000 ................ - 5e20 00000000 00000000 00000000 00000000 ................ - 5e30 00000000 00000000 00000000 00000000 ................ - 5e40 00000000 00000000 00000000 00000000 ................ - 5e50 00000000 00000000 00000000 00000000 ................ - 5e60 00000000 00000000 00000000 00000000 ................ - 5e70 00000000 00000000 00000000 00000000 ................ - 5e80 00000000 00000000 00000000 00000000 ................ - 5e90 00000000 00000000 00000000 00000000 ................ - 5ea0 00000000 00000000 00000000 00000000 ................ - 5eb0 00000000 00000000 00000000 00000000 ................ - 5ec0 00000000 00000000 00000000 00000000 ................ - 5ed0 00000000 00000000 00000000 00000000 ................ - 5ee0 00000000 00000000 00000000 00000000 ................ - 5ef0 00000000 00000000 00000000 00000000 ................ - 5f00 00000000 00000000 00000000 00000000 ................ - 5f10 00000000 00000000 00000000 00000000 ................ - 5f20 00000000 00000000 00000000 00000000 ................ - 5f30 00000000 00000000 00000000 00000000 ................ - 5f40 00000000 00000000 00000000 00000000 ................ - 5f50 00000000 00000000 00000000 00000000 ................ - 5f60 00000000 00000000 00000000 00000000 ................ - 5f70 00000000 00000000 00000000 00000000 ................ - 5f80 00000000 00000000 00000000 00000000 ................ - 5f90 00000000 00000000 00000000 00000000 ................ - 5fa0 00000000 00000000 00000000 00000000 ................ - 5fb0 00000000 00000000 00000000 00000000 ................ - 5fc0 00000000 00000000 00000000 00000000 ................ - 5fd0 00000000 00000000 00000000 00000000 ................ - 5fe0 00000000 00000000 00000000 00000000 ................ - 5ff0 00000000 00000000 00000000 00000000 ................ - 6000 00000000 00000000 00000000 00000000 ................ - 6010 00000000 00000000 00000000 00000000 ................ - 6020 00000000 00000000 00000000 00000000 ................ - 6030 00000000 00000000 00000000 00000000 ................ - 6040 00000000 00000000 00000000 00000000 ................ - 6050 00000000 00000000 00000000 00000000 ................ - 6060 00000000 00000000 00000000 00000000 ................ - 6070 00000000 00000000 00000000 00000000 ................ - 6080 00000000 00000000 00000000 00000000 ................ - 6090 00000000 00000000 00000000 00000000 ................ - 60a0 00000000 00000000 00000000 00000000 ................ - 60b0 00000000 00000000 00000000 00000000 ................ - 60c0 00000000 00000000 00000000 00000000 ................ - 60d0 00000000 00000000 00000000 00000000 ................ - 60e0 00000000 00000000 00000000 00000000 ................ - 60f0 00000000 00000000 00000000 00000000 ................ - 6100 00000000 00000000 00000000 00000000 ................ - 6110 00000000 00000000 00000000 00000000 ................ - 6120 00000000 00000000 00000000 00000000 ................ - 6130 00000000 00000000 00000000 00000000 ................ - 6140 00000000 00000000 00000000 00000000 ................ - 6150 00000000 00000000 00000000 00000000 ................ - 6160 00000000 00000000 00000000 00000000 ................ - 6170 00000000 00000000 00000000 00000000 ................ - 6180 00000000 00000000 00000000 00000000 ................ - 6190 00000000 00000000 00000000 00000000 ................ - 61a0 00000000 00000000 00000000 00000000 ................ - 61b0 00000000 00000000 00000000 00000000 ................ - 61c0 00000000 00000000 00000000 00000000 ................ - 61d0 00000000 00000000 00000000 00000000 ................ - 61e0 00000000 00000000 00000000 00000000 ................ - 61f0 00000000 00000000 00000000 00000000 ................ - 6200 00000000 00000000 00000000 00000000 ................ - 6210 00000000 00000000 00000000 00000000 ................ - 6220 00000000 00000000 00000000 00000000 ................ - 6230 00000000 00000000 00000000 00000000 ................ - 6240 00000000 00000000 00000000 00000000 ................ - 6250 00000000 00000000 00000000 00000000 ................ - 6260 00000000 00000000 00000000 00000000 ................ - 6270 00000000 00000000 00000000 00000000 ................ - 6280 00000000 00000000 00000000 00000000 ................ - 6290 00000000 00000000 00000000 00000000 ................ - 62a0 00000000 00000000 00000000 00000000 ................ - 62b0 00000000 00000000 00000000 00000000 ................ - 62c0 00000000 00000000 00000000 00000000 ................ - 62d0 00000000 00000000 00000000 00000000 ................ - 62e0 00000000 00000000 00000000 00000000 ................ - 62f0 00000000 00000000 00000000 00000000 ................ - 6300 00000000 00000000 00000000 00000000 ................ - 6310 00000000 00000000 00000000 00000000 ................ - 6320 00000000 00000000 00000000 00000000 ................ - 6330 00000000 00000000 00000000 00000000 ................ - 6340 00000000 00000000 00000000 00000000 ................ - 6350 00000000 00000000 00000000 00000000 ................ - 6360 00000000 00000000 00000000 00000000 ................ - 6370 00000000 00000000 00000000 00000000 ................ - 6380 00000000 00000000 00000000 00000000 ................ - 6390 00000000 00000000 00000000 00000000 ................ - 63a0 00000000 00000000 00000000 00000000 ................ - 63b0 00000000 00000000 00000000 00000000 ................ - 63c0 00000000 00000000 00000000 00000000 ................ - 63d0 00000000 00000000 00000000 00000000 ................ - 63e0 00000000 00000000 00000000 00000000 ................ - 63f0 00000000 00000000 00000000 00000000 ................ - 6400 00000000 00000000 00000000 00000000 ................ - 6410 00000000 00000000 00000000 00000000 ................ - 6420 00000000 00000000 00000000 00000000 ................ - 6430 00000000 00000000 00000000 00000000 ................ - 6440 00000000 00000000 00000000 00000000 ................ - 6450 00000000 00000000 00000000 00000000 ................ - 6460 00000000 00000000 00000000 00000000 ................ - 6470 00000000 00000000 00000000 00000000 ................ - 6480 00000000 00000000 00000000 00000000 ................ - 6490 00000000 00000000 00000000 00000000 ................ - 64a0 00000000 00000000 00000000 00000000 ................ - 64b0 00000000 00000000 00000000 00000000 ................ - 64c0 00000000 00000000 00000000 00000000 ................ - 64d0 00000000 00000000 00000000 00000000 ................ - 64e0 00000000 00000000 00000000 00000000 ................ - 64f0 00000000 00000000 00000000 00000000 ................ - 6500 00000000 00000000 00000000 00000000 ................ - 6510 00000000 00000000 00000000 00000000 ................ - 6520 00000000 00000000 00000000 00000000 ................ - 6530 00000000 00000000 00000000 00000000 ................ - 6540 00000000 00000000 00000000 00000000 ................ - 6550 00000000 00000000 00000000 00000000 ................ - 6560 00000000 00000000 00000000 00000000 ................ - 6570 00000000 00000000 00000000 00000000 ................ - 6580 00000000 00000000 00000000 00000000 ................ - 6590 00000000 00000000 00000000 00000000 ................ - 65a0 00000000 00000000 00000000 00000000 ................ - 65b0 00000000 00000000 00000000 00000000 ................ - 65c0 00000000 00000000 00000000 00000000 ................ - 65d0 00000000 00000000 00000000 00000000 ................ - 65e0 00000000 00000000 00000000 00000000 ................ - 65f0 00000000 00000000 00000000 00000000 ................ - 6600 00000000 00000000 00000000 00000000 ................ - 6610 00000000 00000000 00000000 00000000 ................ - 6620 00000000 00000000 00000000 00000000 ................ - 6630 00000000 00000000 00000000 00000000 ................ - 6640 00000000 00000000 00000000 00000000 ................ - 6650 00000000 00000000 00000000 00000000 ................ - 6660 00000000 00000000 00000000 00000000 ................ - 6670 00000000 00000000 00000000 00000000 ................ - 6680 00000000 00000000 00000000 00000000 ................ - 6690 00000000 00000000 00000000 00000000 ................ - 66a0 00000000 00000000 00000000 00000000 ................ - 66b0 00000000 00000000 00000000 00000000 ................ - 66c0 00000000 00000000 00000000 00000000 ................ - 66d0 00000000 00000000 00000000 00000000 ................ - 66e0 00000000 00000000 00000000 00000000 ................ - 66f0 00000000 00000000 00000000 00000000 ................ - 6700 00000000 00000000 00000000 00000000 ................ - 6710 00000000 00000000 00000000 00000000 ................ - 6720 00000000 00000000 00000000 00000000 ................ - 6730 00000000 00000000 00000000 00000000 ................ - 6740 00000000 00000000 00000000 00000000 ................ - 6750 00000000 00000000 00000000 00000000 ................ - 6760 00000000 00000000 00000000 00000000 ................ - 6770 00000000 00000000 00000000 00000000 ................ - 6780 00000000 00000000 00000000 00000000 ................ - 6790 00000000 00000000 00000000 00000000 ................ - 67a0 00000000 00000000 00000000 00000000 ................ - 67b0 00000000 00000000 00000000 00000000 ................ - 67c0 00000000 00000000 00000000 00000000 ................ - 67d0 00000000 00000000 00000000 00000000 ................ - 67e0 00000000 00000000 00000000 00000000 ................ - 67f0 00000000 00000000 00000000 00000000 ................ - 6800 00000000 00000000 00000000 00000000 ................ - 6810 00000000 00000000 00000000 00000000 ................ - 6820 00000000 00000000 00000000 00000000 ................ - 6830 00000000 00000000 00000000 00000000 ................ - 6840 00000000 00000000 00000000 00000000 ................ - 6850 00000000 00000000 00000000 00000000 ................ - 6860 00000000 00000000 00000000 00000000 ................ - 6870 00000000 00000000 00000000 00000000 ................ - 6880 00000000 00000000 00000000 00000000 ................ - 6890 00000000 00000000 00000000 00000000 ................ - 68a0 00000000 00000000 00000000 00000000 ................ - 68b0 00000000 00000000 00000000 00000000 ................ - 68c0 00000000 00000000 00000000 00000000 ................ - 68d0 00000000 00000000 00000000 00000000 ................ - 68e0 00000000 00000000 00000000 00000000 ................ - 68f0 00000000 00000000 00000000 00000000 ................ - 6900 00000000 00000000 00000000 00000000 ................ - 6910 00000000 00000000 00000000 00000000 ................ - 6920 00000000 00000000 00000000 00000000 ................ - 6930 00000000 00000000 00000000 00000000 ................ - 6940 00000000 00000000 00000000 00000000 ................ - 6950 00000000 00000000 00000000 00000000 ................ - 6960 00000000 00000000 00000000 00000000 ................ - 6970 00000000 00000000 00000000 00000000 ................ - 6980 00000000 00000000 00000000 00000000 ................ - 6990 00000000 00000000 00000000 00000000 ................ - 69a0 00000000 00000000 00000000 00000000 ................ - 69b0 00000000 00000000 00000000 00000000 ................ - 69c0 00000000 00000000 00000000 00000000 ................ - 69d0 00000000 00000000 00000000 00000000 ................ - 69e0 00000000 00000000 00000000 00000000 ................ - 69f0 00000000 00000000 00000000 00000000 ................ - 6a00 00000000 00000000 00000000 00000000 ................ - 6a10 00000000 00000000 00000000 00000000 ................ - 6a20 00000000 00000000 00000000 00000000 ................ - 6a30 00000000 00000000 00000000 00000000 ................ - 6a40 00000000 00000000 00000000 00000000 ................ - 6a50 00000000 00000000 00000000 00000000 ................ - 6a60 00000000 00000000 00000000 00000000 ................ - 6a70 00000000 00000000 00000000 00000000 ................ - 6a80 00000000 00000000 00000000 00000000 ................ - 6a90 00000000 00000000 00000000 00000000 ................ - 6aa0 00000000 00000000 00000000 00000000 ................ - 6ab0 00000000 00000000 00000000 00000000 ................ - 6ac0 00000000 00000000 00000000 00000000 ................ - 6ad0 00000000 00000000 00000000 00000000 ................ - 6ae0 00000000 00000000 00000000 00000000 ................ - 6af0 00000000 00000000 00000000 00000000 ................ - 6b00 00000000 00000000 00000000 00000000 ................ - 6b10 00000000 00000000 00000000 00000000 ................ - 6b20 00000000 00000000 00000000 00000000 ................ - 6b30 00000000 00000000 00000000 00000000 ................ - 6b40 00000000 00000000 00000000 00000000 ................ - 6b50 00000000 00000000 00000000 00000000 ................ - 6b60 00000000 00000000 00000000 00000000 ................ - 6b70 00000000 00000000 00000000 00000000 ................ - 6b80 00000000 00000000 00000000 00000000 ................ - 6b90 00000000 00000000 00000000 00000000 ................ - 6ba0 00000000 00000000 00000000 00000000 ................ - 6bb0 00000000 00000000 00000000 00000000 ................ - 6bc0 00000000 00000000 00000000 00000000 ................ - 6bd0 00000000 00000000 00000000 00000000 ................ - 6be0 00000000 00000000 00000000 00000000 ................ - 6bf0 00000000 00000000 00000000 00000000 ................ - 6c00 00000000 00000000 00000000 00000000 ................ - 6c10 00000000 00000000 00000000 00000000 ................ - 6c20 00000000 00000000 00000000 00000000 ................ - 6c30 00000000 00000000 00000000 00000000 ................ - 6c40 00000000 00000000 00000000 00000000 ................ - 6c50 00000000 00000000 00000000 00000000 ................ - 6c60 00000000 00000000 00000000 00000000 ................ - 6c70 00000000 00000000 00000000 00000000 ................ - 6c80 00000000 00000000 00000000 00000000 ................ - 6c90 00000000 00000000 00000000 00000000 ................ - 6ca0 00000000 00000000 00000000 00000000 ................ - 6cb0 00000000 00000000 00000000 00000000 ................ - 6cc0 00000000 00000000 00000000 00000000 ................ - 6cd0 00000000 00000000 00000000 00000000 ................ - 6ce0 00000000 00000000 00000000 00000000 ................ - 6cf0 00000000 00000000 00000000 00000000 ................ - 6d00 00000000 00000000 00000000 00000000 ................ - 6d10 00000000 00000000 00000000 00000000 ................ - 6d20 00000000 00000000 00000000 00000000 ................ - 6d30 00000000 00000000 00000000 00000000 ................ - 6d40 00000000 00000000 00000000 00000000 ................ - 6d50 00000000 00000000 00000000 00000000 ................ - 6d60 00000000 00000000 00000000 00000000 ................ - 6d70 00000000 00000000 00000000 00000000 ................ - 6d80 00000000 00000000 00000000 00000000 ................ - 6d90 00000000 00000000 00000000 00000000 ................ - 6da0 00000000 00000000 00000000 00000000 ................ - 6db0 00000000 00000000 00000000 00000000 ................ - 6dc0 00000000 00000000 00000000 00000000 ................ - 6dd0 00000000 00000000 00000000 00000000 ................ - 6de0 00000000 00000000 00000000 00000000 ................ - 6df0 00000000 00000000 00000000 00000000 ................ - 6e00 00000000 00000000 00000000 00000000 ................ - 6e10 00000000 00000000 00000000 00000000 ................ - 6e20 00000000 00000000 00000000 00000000 ................ - 6e30 00000000 00000000 00000000 00000000 ................ - 6e40 00000000 00000000 00000000 00000000 ................ - 6e50 00000000 00000000 00000000 00000000 ................ - 6e60 00000000 00000000 00000000 00000000 ................ - 6e70 00000000 00000000 00000000 00000000 ................ - 6e80 00000000 00000000 00000000 00000000 ................ - 6e90 00000000 00000000 00000000 00000000 ................ - 6ea0 00000000 00000000 00000000 00000000 ................ - 6eb0 00000000 00000000 00000000 00000000 ................ - 6ec0 00000000 00000000 00000000 00000000 ................ - 6ed0 00000000 00000000 00000000 00000000 ................ - 6ee0 00000000 00000000 00000000 00000000 ................ - 6ef0 00000000 00000000 00000000 00000000 ................ - 6f00 00000000 00000000 00000000 00000000 ................ - 6f10 00000000 00000000 00000000 00000000 ................ - 6f20 00000000 00000000 00000000 00000000 ................ - 6f30 00000000 00000000 00000000 00000000 ................ - 6f40 00000000 00000000 00000000 00000000 ................ - 6f50 00000000 00000000 00000000 00000000 ................ - 6f60 00000000 00000000 00000000 00000000 ................ - 6f70 00000000 00000000 00000000 00000000 ................ - 6f80 00000000 00000000 00000000 00000000 ................ - 6f90 00000000 00000000 00000000 00000000 ................ - 6fa0 00000000 00000000 00000000 00000000 ................ - 6fb0 00000000 00000000 00000000 00000000 ................ - 6fc0 00000000 00000000 00000000 00000000 ................ - 6fd0 00000000 00000000 00000000 00000000 ................ - 6fe0 00000000 00000000 00000000 00000000 ................ - 6ff0 00000000 00000000 00000000 00000000 ................ - 7000 00000000 00000000 00000000 00000000 ................ - 7010 00000000 00000000 00000000 00000000 ................ - 7020 00000000 00000000 00000000 00000000 ................ - 7030 00000000 00000000 00000000 00000000 ................ - 7040 00000000 00000000 00000000 00000000 ................ - 7050 00000000 00000000 00000000 00000000 ................ - 7060 00000000 00000000 00000000 00000000 ................ - 7070 00000000 00000000 00000000 00000000 ................ - 7080 00000000 00000000 00000000 00000000 ................ - 7090 00000000 00000000 00000000 00000000 ................ - 70a0 00000000 00000000 00000000 00000000 ................ - 70b0 00000000 00000000 00000000 00000000 ................ - 70c0 00000000 00000000 00000000 00000000 ................ - 70d0 00000000 00000000 00000000 00000000 ................ - 70e0 00000000 00000000 00000000 00000000 ................ - 70f0 00000000 00000000 00000000 00000000 ................ - 7100 00000000 00000000 00000000 00000000 ................ - 7110 00000000 00000000 00000000 00000000 ................ - 7120 00000000 00000000 00000000 00000000 ................ - 7130 00000000 00000000 00000000 00000000 ................ - 7140 00000000 00000000 00000000 00000000 ................ - 7150 00000000 00000000 00000000 00000000 ................ - 7160 00000000 00000000 00000000 00000000 ................ - 7170 00000000 00000000 00000000 00000000 ................ - 7180 00000000 00000000 00000000 00000000 ................ - 7190 00000000 00000000 00000000 00000000 ................ - 71a0 00000000 00000000 00000000 00000000 ................ - 71b0 00000000 00000000 00000000 00000000 ................ - 71c0 00000000 00000000 00000000 00000000 ................ - 71d0 00000000 00000000 00000000 00000000 ................ - 71e0 00000000 00000000 00000000 00000000 ................ - 71f0 00000000 00000000 00000000 00000000 ................ - 7200 00000000 00000000 00000000 00000000 ................ - 7210 00000000 00000000 00000000 00000000 ................ - 7220 00000000 00000000 00000000 00000000 ................ - 7230 00000000 00000000 00000000 00000000 ................ - 7240 00000000 00000000 00000000 00000000 ................ - 7250 00000000 00000000 00000000 00000000 ................ - 7260 00000000 00000000 00000000 00000000 ................ - 7270 00000000 00000000 00000000 00000000 ................ - 7280 00000000 00000000 00000000 00000000 ................ - 7290 00000000 00000000 00000000 00000000 ................ - 72a0 00000000 00000000 00000000 00000000 ................ - 72b0 00000000 00000000 00000000 00000000 ................ - 72c0 00000000 00000000 00000000 00000000 ................ - 72d0 00000000 00000000 00000000 00000000 ................ - 72e0 00000000 00000000 00000000 00000000 ................ - 72f0 00000000 00000000 00000000 00000000 ................ - 7300 00000000 00000000 00000000 00000000 ................ - 7310 00000000 00000000 00000000 00000000 ................ - 7320 00000000 00000000 00000000 00000000 ................ - 7330 00000000 00000000 00000000 00000000 ................ - 7340 00000000 00000000 00000000 00000000 ................ - 7350 00000000 00000000 00000000 00000000 ................ - 7360 00000000 00000000 00000000 00000000 ................ - 7370 00000000 00000000 00000000 00000000 ................ - 7380 00000000 00000000 00000000 00000000 ................ - 7390 00000000 00000000 00000000 00000000 ................ - 73a0 00000000 00000000 00000000 00000000 ................ - 73b0 00000000 00000000 00000000 00000000 ................ - 73c0 00000000 00000000 00000000 00000000 ................ - 73d0 00000000 00000000 00000000 00000000 ................ - 73e0 00000000 00000000 00000000 00000000 ................ - 73f0 00000000 00000000 00000000 00000000 ................ - 7400 00000000 00000000 00000000 00000000 ................ - 7410 00000000 00000000 00000000 00000000 ................ - 7420 00000000 00000000 00000000 00000000 ................ - 7430 00000000 00000000 00000000 00000000 ................ - 7440 00000000 00000000 00000000 00000000 ................ - 7450 00000000 00000000 00000000 00000000 ................ - 7460 00000000 00000000 00000000 00000000 ................ - 7470 00000000 00000000 00000000 00000000 ................ - 7480 00000000 00000000 00000000 00000000 ................ - 7490 00000000 00000000 00000000 00000000 ................ - 74a0 00000000 00000000 00000000 00000000 ................ - 74b0 00000000 00000000 00000000 00000000 ................ - 74c0 00000000 00000000 00000000 00000000 ................ - 74d0 00000000 00000000 00000000 00000000 ................ - 74e0 00000000 00000000 00000000 00000000 ................ - 74f0 00000000 00000000 00000000 00000000 ................ - 7500 00000000 00000000 00000000 00000000 ................ - 7510 00000000 00000000 00000000 00000000 ................ - 7520 00000000 00000000 00000000 00000000 ................ - 7530 00000000 00000000 00000000 00000000 ................ - 7540 00000000 00000000 00000000 00000000 ................ - 7550 00000000 00000000 00000000 00000000 ................ - 7560 00000000 00000000 00000000 00000000 ................ - 7570 00000000 00000000 00000000 00000000 ................ - 7580 00000000 00000000 00000000 00000000 ................ - 7590 00000000 00000000 00000000 00000000 ................ - 75a0 00000000 00000000 00000000 00000000 ................ - 75b0 00000000 00000000 00000000 00000000 ................ - 75c0 00000000 00000000 00000000 00000000 ................ - 75d0 00000000 00000000 00000000 00000000 ................ - 75e0 00000000 00000000 00000000 00000000 ................ - 75f0 00000000 00000000 00000000 00000000 ................ - 7600 00000000 00000000 00000000 00000000 ................ - 7610 00000000 00000000 00000000 00000000 ................ - 7620 00000000 00000000 00000000 00000000 ................ - 7630 00000000 00000000 00000000 00000000 ................ - 7640 00000000 00000000 00000000 00000000 ................ - 7650 00000000 00000000 00000000 00000000 ................ - 7660 00000000 00000000 00000000 00000000 ................ - 7670 00000000 00000000 00000000 00000000 ................ - 7680 00000000 00000000 00000000 00000000 ................ - 7690 00000000 00000000 00000000 00000000 ................ - 76a0 00000000 00000000 00000000 00000000 ................ - 76b0 00000000 00000000 00000000 00000000 ................ - 76c0 00000000 00000000 00000000 00000000 ................ - 76d0 00000000 00000000 00000000 00000000 ................ - 76e0 00000000 00000000 00000000 00000000 ................ - 76f0 00000000 00000000 00000000 00000000 ................ - 7700 00000000 00000000 00000000 00000000 ................ - 7710 00000000 00000000 00000000 00000000 ................ - 7720 00000000 00000000 00000000 00000000 ................ - 7730 00000000 00000000 00000000 00000000 ................ - 7740 00000000 00000000 00000000 00000000 ................ - 7750 00000000 00000000 00000000 00000000 ................ - 7760 00000000 00000000 00000000 00000000 ................ - 7770 00000000 00000000 00000000 00000000 ................ - 7780 00000000 00000000 00000000 00000000 ................ - 7790 00000000 00000000 00000000 00000000 ................ - 77a0 00000000 00000000 00000000 00000000 ................ - 77b0 00000000 00000000 00000000 00000000 ................ - 77c0 00000000 00000000 00000000 00000000 ................ - 77d0 00000000 00000000 00000000 00000000 ................ - 77e0 00000000 00000000 00000000 00000000 ................ - 77f0 00000000 00000000 00000000 00000000 ................ - 7800 00000000 00000000 00000000 00000000 ................ - 7810 00000000 00000000 00000000 00000000 ................ - 7820 00000000 00000000 00000000 00000000 ................ - 7830 00000000 00000000 00000000 00000000 ................ - 7840 00000000 00000000 00000000 00000000 ................ - 7850 00000000 00000000 00000000 00000000 ................ - 7860 00000000 00000000 00000000 00000000 ................ - 7870 00000000 00000000 00000000 00000000 ................ - 7880 00000000 00000000 00000000 00000000 ................ - 7890 00000000 00000000 00000000 00000000 ................ - 78a0 00000000 00000000 00000000 00000000 ................ - 78b0 00000000 00000000 00000000 00000000 ................ - 78c0 00000000 00000000 00000000 00000000 ................ - 78d0 00000000 00000000 00000000 00000000 ................ - 78e0 00000000 00000000 00000000 00000000 ................ - 78f0 00000000 00000000 00000000 00000000 ................ - 7900 00000000 00000000 00000000 00000000 ................ - 7910 00000000 00000000 00000000 00000000 ................ - 7920 00000000 00000000 00000000 00000000 ................ - 7930 00000000 00000000 00000000 00000000 ................ - 7940 00000000 00000000 00000000 00000000 ................ - 7950 00000000 00000000 00000000 00000000 ................ - 7960 00000000 00000000 00000000 00000000 ................ - 7970 00000000 00000000 00000000 00000000 ................ - 7980 00000000 00000000 00000000 00000000 ................ - 7990 00000000 00000000 00000000 00000000 ................ - 79a0 00000000 00000000 00000000 00000000 ................ - 79b0 00000000 00000000 00000000 00000000 ................ - 79c0 00000000 00000000 00000000 00000000 ................ - 79d0 00000000 00000000 00000000 00000000 ................ - 79e0 00000000 00000000 00000000 00000000 ................ - 79f0 00000000 00000000 00000000 00000000 ................ - 7a00 00000000 00000000 00000000 00000000 ................ - 7a10 00000000 00000000 00000000 00000000 ................ - 7a20 00000000 00000000 00000000 00000000 ................ - 7a30 00000000 00000000 00000000 00000000 ................ - 7a40 00000000 00000000 00000000 00000000 ................ - 7a50 00000000 00000000 00000000 00000000 ................ - 7a60 00000000 00000000 00000000 00000000 ................ - 7a70 00000000 00000000 00000000 00000000 ................ - 7a80 00000000 00000000 00000000 00000000 ................ - 7a90 00000000 00000000 00000000 00000000 ................ - 7aa0 00000000 00000000 00000000 00000000 ................ - 7ab0 00000000 00000000 00000000 00000000 ................ - 7ac0 00000000 00000000 00000000 00000000 ................ - 7ad0 00000000 00000000 00000000 00000000 ................ - 7ae0 00000000 00000000 00000000 00000000 ................ - 7af0 00000000 00000000 00000000 00000000 ................ - 7b00 00000000 00000000 00000000 00000000 ................ - 7b10 00000000 00000000 00000000 00000000 ................ - 7b20 00000000 00000000 00000000 00000000 ................ - 7b30 00000000 00000000 00000000 00000000 ................ - 7b40 00000000 00000000 00000000 00000000 ................ - 7b50 00000000 00000000 00000000 00000000 ................ - 7b60 00000000 00000000 00000000 00000000 ................ - 7b70 00000000 00000000 00000000 00000000 ................ - 7b80 00000000 00000000 00000000 00000000 ................ - 7b90 00000000 00000000 00000000 00000000 ................ - 7ba0 00000000 00000000 00000000 00000000 ................ - 7bb0 00000000 00000000 00000000 00000000 ................ - 7bc0 00000000 00000000 00000000 00000000 ................ - 7bd0 00000000 00000000 00000000 00000000 ................ - 7be0 00000000 00000000 00000000 00000000 ................ - 7bf0 00000000 00000000 00000000 00000000 ................ - 7c00 00000000 00000000 00000000 00000000 ................ - 7c10 00000000 00000000 00000000 00000000 ................ - 7c20 00000000 00000000 00000000 00000000 ................ - 7c30 00000000 00000000 00000000 00000000 ................ - 7c40 00000000 00000000 00000000 00000000 ................ - 7c50 00000000 00000000 00000000 00000000 ................ - 7c60 00000000 00000000 00000000 00000000 ................ - 7c70 00000000 00000000 00000000 00000000 ................ - 7c80 00000000 00000000 00000000 00000000 ................ - 7c90 00000000 00000000 00000000 00000000 ................ - 7ca0 00000000 00000000 00000000 00000000 ................ - 7cb0 00000000 00000000 00000000 00000000 ................ - 7cc0 00000000 00000000 00000000 00000000 ................ - 7cd0 00000000 00000000 00000000 00000000 ................ - 7ce0 00000000 00000000 00000000 00000000 ................ - 7cf0 00000000 00000000 00000000 00000000 ................ - 7d00 00000000 00000000 00000000 00000000 ................ - 7d10 00000000 00000000 00000000 00000000 ................ - 7d20 00000000 00000000 00000000 00000000 ................ - 7d30 00000000 00000000 00000000 00000000 ................ - 7d40 00000000 00000000 00000000 00000000 ................ - 7d50 00000000 00000000 00000000 00000000 ................ - 7d60 00000000 00000000 00000000 00000000 ................ - 7d70 00000000 00000000 00000000 00000000 ................ - 7d80 00000000 00000000 00000000 00000000 ................ - 7d90 00000000 00000000 00000000 00000000 ................ - 7da0 00000000 00000000 00000000 00000000 ................ - 7db0 00000000 00000000 00000000 00000000 ................ - 7dc0 00000000 00000000 00000000 00000000 ................ - 7dd0 00000000 00000000 00000000 00000000 ................ - 7de0 00000000 00000000 00000000 00000000 ................ - 7df0 00000000 00000000 00000000 00000000 ................ - 7e00 00000000 00000000 00000000 00000000 ................ - 7e10 00000000 00000000 00000000 00000000 ................ - 7e20 00000000 00000000 00000000 00000000 ................ - 7e30 00000000 00000000 00000000 00000000 ................ - 7e40 00000000 00000000 00000000 00000000 ................ - 7e50 00000000 00000000 00000000 00000000 ................ - 7e60 00000000 00000000 00000000 00000000 ................ - 7e70 00000000 00000000 00000000 00000000 ................ - 7e80 00000000 00000000 00000000 00000000 ................ - 7e90 00000000 00000000 00000000 00000000 ................ - 7ea0 00000000 00000000 00000000 00000000 ................ - 7eb0 00000000 00000000 00000000 00000000 ................ - 7ec0 00000000 00000000 00000000 00000000 ................ - 7ed0 00000000 00000000 00000000 00000000 ................ - 7ee0 00000000 00000000 00000000 00000000 ................ - 7ef0 00000000 00000000 00000000 00000000 ................ - 7f00 00000000 00000000 00000000 00000000 ................ - 7f10 00000000 00000000 00000000 00000000 ................ - 7f20 00000000 00000000 00000000 00000000 ................ - 7f30 00000000 00000000 00000000 00000000 ................ - 7f40 00000000 00000000 00000000 00000000 ................ - 7f50 00000000 00000000 00000000 00000000 ................ - 7f60 00000000 00000000 00000000 00000000 ................ - 7f70 00000000 00000000 00000000 00000000 ................ - 7f80 00000000 00000000 00000000 00000000 ................ - 7f90 00000000 00000000 00000000 00000000 ................ - 7fa0 00000000 00000000 00000000 00000000 ................ - 7fb0 00000000 00000000 00000000 00000000 ................ - 7fc0 00000000 00000000 00000000 00000000 ................ - 7fd0 00000000 00000000 00000000 00000000 ................ - 7fe0 00000000 00000000 00000000 00000000 ................ - 7ff0 00000000 00000000 00000000 00000000 ................ +#pass diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/mips/mips.exp binutils-2.12.90.0.9/gas/testsuite/gas/mips/mips.exp --- binutils-2.12.90.0.7/gas/testsuite/gas/mips/mips.exp Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/mips/mips.exp Thu May 23 15:10:11 2002 @@ -122,6 +122,7 @@ if { [istarget mips*-*-*] } then { run_dump_test "mul" } run_dump_test "rol" + run_dump_test "rol64" if !$aout { run_dump_test "sb" } run_dump_test "trunc" if !$aout { run_dump_test "ulh" } diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/mips/rol64.d binutils-2.12.90.0.9/gas/testsuite/gas/mips/rol64.d --- binutils-2.12.90.0.7/gas/testsuite/gas/mips/rol64.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/mips/rol64.d Thu May 23 15:10:11 2002 @@ -0,0 +1,62 @@ +#objdump: -dr --prefix-addresses -mmips:4000 +#as: -march=r4000 -mtune=r4000 +#name: MIPS R4000 drol + +# Test the drol and dror macros. + +.*: +file format .*mips.* + +Disassembly of section .text: +0+0000 <[^>]*> dnegu at,a1 +0+0004 <[^>]*> dsrlv at,a0,at +0+0008 <[^>]*> dsllv a0,a0,a1 +0+000c <[^>]*> or a0,a0,at +0+0010 <[^>]*> dnegu at,a2 +0+0014 <[^>]*> dsrlv at,a1,at +0+0018 <[^>]*> dsllv a0,a1,a2 +0+001c <[^>]*> or a0,a0,at +0+0020 <[^>]*> dsll at,a0,0x1 +0+0024 <[^>]*> dsrl32 a0,a0,0x1f +0+0028 <[^>]*> or a0,a0,at +0+002c <[^>]*> dsll at,a1,0x1 +0+0030 <[^>]*> dsrl32 a0,a1,0x1f +0+0034 <[^>]*> or a0,a0,at +0+0038 <[^>]*> dsll at,a1,0x1f +0+003c <[^>]*> dsrl32 a0,a1,0x1 +0+0040 <[^>]*> or a0,a0,at +0+0044 <[^>]*> dsll32 at,a1,0x0 +0+0048 <[^>]*> dsrl32 a0,a1,0x0 +0+004c <[^>]*> or a0,a0,at +0+0050 <[^>]*> dsll32 at,a1,0x1 +0+0054 <[^>]*> dsrl a0,a1,0x1f +0+0058 <[^>]*> or a0,a0,at +0+005c <[^>]*> dsll32 at,a1,0x1f +0+0060 <[^>]*> dsrl a0,a1,0x1 +0+0064 <[^>]*> or a0,a0,at +0+0068 <[^>]*> dnegu at,a1 +0+006c <[^>]*> dsllv at,a0,at +0+0070 <[^>]*> dsrlv a0,a0,a1 +0+0074 <[^>]*> or a0,a0,at +0+0078 <[^>]*> dnegu at,a2 +0+007c <[^>]*> dsllv at,a1,at +0+0080 <[^>]*> dsrlv a0,a1,a2 +0+0084 <[^>]*> or a0,a0,at +0+0088 <[^>]*> dsrl at,a0,0x1 +0+008c <[^>]*> dsll32 a0,a0,0x1f +0+0090 <[^>]*> or a0,a0,at +0+0094 <[^>]*> dsrl at,a1,0x1 +0+0098 <[^>]*> dsll32 a0,a1,0x1f +0+009c <[^>]*> or a0,a0,at +0+00a0 <[^>]*> dsrl at,a1,0x1f +0+00a4 <[^>]*> dsll32 a0,a1,0x1 +0+00a8 <[^>]*> or a0,a0,at +0+00ac <[^>]*> dsrl32 at,a1,0x0 +0+00b0 <[^>]*> dsll32 a0,a1,0x0 +0+00b4 <[^>]*> or a0,a0,at +0+00b8 <[^>]*> dsrl32 at,a1,0x1 +0+00bc <[^>]*> dsll a0,a1,0x1f +0+00c0 <[^>]*> or a0,a0,at +0+00c4 <[^>]*> dsrl32 at,a1,0x1f +0+00c8 <[^>]*> dsll a0,a1,0x1 +0+00cc <[^>]*> or a0,a0,at + ... diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/mips/rol64.s binutils-2.12.90.0.9/gas/testsuite/gas/mips/rol64.s --- binutils-2.12.90.0.7/gas/testsuite/gas/mips/rol64.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/mips/rol64.s Thu May 23 15:10:11 2002 @@ -0,0 +1,27 @@ +# Source file used to test the drol and dror macros. + +foo: + drol $4,$5 + drol $4,$5,$6 + drol $4,1 + drol $4,$5,0 + drol $4,$5,1 + drol $4,$5,31 + drol $4,$5,32 + drol $4,$5,33 + drol $4,$5,63 + drol $4,$5,64 + + dror $4,$5 + dror $4,$5,$6 + dror $4,1 + dror $4,$5,0 + dror $4,$5,1 + dror $4,$5,31 + dror $4,$5,32 + dror $4,$5,33 + dror $4,$5,63 + dror $4,$5,64 + +# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ... + .space 8 diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/sh/basic.exp binutils-2.12.90.0.9/gas/testsuite/gas/sh/basic.exp --- binutils-2.12.90.0.7/gas/testsuite/gas/sh/basic.exp Thu Mar 7 11:52:38 2002 +++ binutils-2.12.90.0.9/gas/testsuite/gas/sh/basic.exp Thu May 23 15:10:11 2002 @@ -88,12 +88,19 @@ proc do_fp {} { if [istarget sh*-*-*] then { # Test the basic instruction parser. do_fp - # Test DSP instructions - run_dump_test "dsp" + + # coff is missing information about the machine type, so everything is + # dumped as sh4. + if {[istarget sh*-*coff] || [istarget sh*-hms]} then { + run_dump_test "pcrel-coff" + } else { + # Test DSP instructions + run_dump_test "dsp" + + run_dump_test "pcrel" + } if {[istarget sh*-*elf] || [istarget sh*-linux*]} then { run_dump_test "pic" } - - run_dump_test "pcrel" } diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/sh/pcrel-coff.d binutils-2.12.90.0.9/gas/testsuite/gas/sh/pcrel-coff.d --- binutils-2.12.90.0.7/gas/testsuite/gas/sh/pcrel-coff.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/sh/pcrel-coff.d Thu May 23 15:10:11 2002 @@ -0,0 +1,27 @@ +#as: -big +#objdump: -d +#name: PC-relative loads + +.*: file format .*sh.* + +Disassembly of section .text: + +00000000 : + 0: d1 03 mov\.l 10 ,r1 ! 0xfffffff0 + 2: d1 03 mov\.l 10 ,r1 ! 0xfffffff0 + 4: c7 02 mova 10 ,r0 + 6: 61 02 mov\.l @r0,r1 + 8: d1 01 mov\.l 10 ,r1 ! 0xfffffff0 + a: 01 03 bsrf r1 + c: 00 09 nop + e: 00 09 nop + +00000010 : + 10: ff ff \.word 0xffff + 12: ff f0 fadd fr15,fr15 + 14: 00 09 nop + 16: 00 09 nop + 18: 00 09 nop + 1a: 00 09 nop + 1c: 00 09 nop + 1e: 00 09 nop diff -uprN binutils-2.12.90.0.7/gas/testsuite/gas/sh/pcrel-coff.s binutils-2.12.90.0.9/gas/testsuite/gas/sh/pcrel-coff.s --- binutils-2.12.90.0.7/gas/testsuite/gas/sh/pcrel-coff.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/gas/testsuite/gas/sh/pcrel-coff.s Thu May 23 15:10:11 2002 @@ -0,0 +1,14 @@ + .text + + .p2align 2 +code: + mov.l litpool, r1 + mov.l @(14,pc), r1 + mova @(litpool-.,pc), r0 + mov.l @r0,r1 + mov.l @(litpool-.,pc), r1 + bsrf r1 + nop + nop +litpool: + .long code - . diff -uprN binutils-2.12.90.0.7/gas/write.c binutils-2.12.90.0.9/gas/write.c --- binutils-2.12.90.0.7/gas/write.c Thu Mar 7 11:52:37 2002 +++ binutils-2.12.90.0.9/gas/write.c Thu May 23 15:10:10 2002 @@ -527,6 +527,7 @@ cvt_frag_to_fill (headersP, sec, fragP) as_bad_where (fragP->fr_file, fragP->fr_line, _("attempt to .org/.space backwards? (%ld)"), (long) fragP->fr_offset); + fragP->fr_offset = 0; } fragP->fr_type = rs_fill; break; @@ -677,7 +678,14 @@ size_seg (abfd, sec, xxx) while (fragp->fr_next != last) fragp = fragp->fr_next; last->fr_address = size; - fragp->fr_offset += newsize - size; + if ((newsize - size) % fragp->fr_var == 0) + fragp->fr_offset += (newsize - size) / fragp->fr_var; + else + /* If we hit this abort, it's likely due to subsegs_finish not + providing sufficient alignment on the last frag, and the + machine dependent code using alignment frags with fr_var + greater than 1. */ + abort (); } #ifdef tc_frob_section @@ -881,6 +889,13 @@ adjust_reloc_syms (abfd, sec, xxx) symbol_mark_used_in_reloc (fixp->fx_addsy); goto done; } + + /* Never adjust a reloc against TLS local symbol. */ + if (symsec->flags & SEC_THREAD_LOCAL) + { + symbol_mark_used_in_reloc (fixp->fx_addsy); + goto done; + } #endif /* Is there some other reason we can't adjust this one? (E.g., @@ -1417,10 +1432,19 @@ set_segment_vma (abfd, sec, xxx) makes calculating their intended length trivial. */ #ifndef SUB_SEGMENT_ALIGN +#ifdef HANDLE_ALIGN +/* The last subsegment gets an aligment corresponding to the alignment + of the section. This allows proper nop-filling at the end of + code-bearing sections. */ +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ + (!(FRCHAIN)->frch_next || (FRCHAIN)->frch_next->frch_seg != (SEG) \ + ? get_recorded_alignment (SEG) : 0) +#else #ifdef BFD_ASSEMBLER -#define SUB_SEGMENT_ALIGN(SEG) (0) +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 0 #else -#define SUB_SEGMENT_ALIGN(SEG) (2) +#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 2 +#endif #endif #endif @@ -1431,20 +1455,15 @@ subsegs_finish () for (frchainP = frchain_root; frchainP; frchainP = frchainP->frch_next) { - int alignment; + int alignment = 0; subseg_set (frchainP->frch_seg, frchainP->frch_subseg); /* This now gets called even if we had errors. In that case, any alignment is meaningless, and, moreover, will look weird if we are generating a listing. */ - alignment = had_errors () ? 0 : SUB_SEGMENT_ALIGN (now_seg); - - /* The last subsegment gets an aligment corresponding to the - alignment of the section. This allows proper nop-filling - at the end of code-bearing sections. */ - if (!frchainP->frch_next || frchainP->frch_next->frch_seg != now_seg) - alignment = get_recorded_alignment (now_seg); + if (!had_errors ()) + alignment = SUB_SEGMENT_ALIGN (now_seg, frchainP); if (subseg_text_p (now_seg)) frag_align_code (alignment, 0); diff -uprN binutils-2.12.90.0.7/gprof/ChangeLog binutils-2.12.90.0.9/gprof/ChangeLog --- binutils-2.12.90.0.7/gprof/ChangeLog Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/gprof/ChangeLog Thu May 23 15:10:11 2002 @@ -1,3 +1,8 @@ +2002-05-02 Nick Clifton + + * po/Make-in (.po.gmo): Do not attempt to create a .gmo file if + the sources are read-only. + 2002-04-04 Alan Modra * dep-in.sed: Cope with absolute paths. diff -uprN binutils-2.12.90.0.7/gprof/po/Make-in binutils-2.12.90.0.9/gprof/po/Make-in --- binutils-2.12.90.0.7/gprof/po/Make-in Thu Jun 3 11:02:08 1999 +++ binutils-2.12.90.0.9/gprof/po/Make-in Thu May 23 15:10:11 2002 @@ -70,7 +70,9 @@ INSTOBJEXT = @INSTOBJEXT@ .po.gmo: file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ - && rm -f $$file && $(GMSGFMT) -o $$file $< + && test -w $$file \ + && (rm -f $$file && $(GMSGFMT) -o $$file $< ) \ + || echo "$$file is not writable" .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ diff -uprN binutils-2.12.90.0.7/include/ChangeLog binutils-2.12.90.0.9/include/ChangeLog --- binutils-2.12.90.0.7/include/ChangeLog Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/include/ChangeLog Sun May 26 09:57:12 2002 @@ -1,3 +1,21 @@ +2002-05-23 Andrew Cagney + + * sim-d10v.h: Delete file. Moved to include/gdb/. + +2002-05-23 Jakub Jelinek + + * elf/common.h (PT_TLS, SHF_TLS, STT_TLS, DF_STATIC_TLS): Define. + * elf/ia64.h (R_IA64_LTOFF_TPREL22): Renamed from R_IA64_LTOFF_TP22. + * elf/i386.h: Add TLS relocs. + +2002-05-21 H.J. Lu (hjl@gnu.org) + + * bfdlink.h (bfd_link_info): Add allow_multiple_definition. + +Fri May 17 14:25:40 2002 J"orn Rennecke + + * dis-asm.h (print_insn_shl, print_insn_sh64l): Remove prototype. + 2002-04-16 David S. Miller * xregex2.h (__restrict_arr): Define to __restrict on GCC diff -uprN binutils-2.12.90.0.7/include/bfdlink.h binutils-2.12.90.0.9/include/bfdlink.h --- binutils-2.12.90.0.7/include/bfdlink.h Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/include/bfdlink.h Thu May 23 15:10:11 2002 @@ -231,6 +231,8 @@ struct bfd_link_info select an appropriate memset function. Apparently it is also normal for HPPA shared libraries to have undefined symbols. */ boolean allow_shlib_undefined; + /* True if ok to have multiple definition. */ + boolean allow_multiple_definition; /* Which symbols to strip. */ enum bfd_link_strip strip; /* Which local symbols to discard. */ diff -uprN binutils-2.12.90.0.7/include/dis-asm.h binutils-2.12.90.0.9/include/dis-asm.h --- binutils-2.12.90.0.7/include/dis-asm.h Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/include/dis-asm.h Thu May 23 15:10:11 2002 @@ -226,7 +226,6 @@ extern int print_insn_little_powerpc PAR extern int print_insn_rs6000 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_s390 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_sh PARAMS ((bfd_vma, disassemble_info*)); -extern int print_insn_shl PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_tic30 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_tic54x PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_tic80 PARAMS ((bfd_vma, disassemble_info*)); @@ -235,7 +234,6 @@ extern int print_insn_vax PARAMS ((bfd_ extern int print_insn_w65 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_xstormy16 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_sh64 PARAMS ((bfd_vma, disassemble_info *)); -extern int print_insn_sh64l PARAMS ((bfd_vma, disassemble_info *)); extern int print_insn_sh64x_media PARAMS ((bfd_vma, disassemble_info *)); extern disassembler_ftype arc_get_disassembler PARAMS ((void *)); diff -uprN binutils-2.12.90.0.7/include/elf/ChangeLog binutils-2.12.90.0.9/include/elf/ChangeLog --- binutils-2.12.90.0.7/include/elf/ChangeLog Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/include/elf/ChangeLog Thu May 23 15:10:11 2002 @@ -1,3 +1,16 @@ +2002-05-08 Jason Thorpe + + * common.h (NT_GNU_ABI_TAG): Define. + (GNU_ABI_TAG_LINUX): Define. + (GNU_ABI_TAG_HURD): Define. + (GNU_ABI_TAG_SOLARIS): Define. + (NT_NETBSD_IDENT): Define. + (NT_FREEBSD_ABI_TAG): Define. + +2002-04-24 Elena Zannoni + + * dwarf2.h: Add DW_AT_GNU_vector. + 2002-02-13 Matt Fredette * m68k.h (EF_M68000): Define. diff -uprN binutils-2.12.90.0.7/include/elf/common.h binutils-2.12.90.0.9/include/elf/common.h --- binutils-2.12.90.0.7/include/elf/common.h Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/include/elf/common.h Thu May 23 15:10:11 2002 @@ -254,6 +254,7 @@ Foundation, Inc., 59 Temple Place - Suit #define PT_NOTE 4 /* Auxiliary information */ #define PT_SHLIB 5 /* Reserved, unspecified semantics */ #define PT_PHDR 6 /* Entry for header table itself */ +#define PT_TLS 7 /* Thread local storage segment */ #define PT_LOOS 0x60000000 /* OS-specific */ #define PT_HIOS 0x6fffffff /* OS-specific */ #define PT_LOPROC 0x70000000 /* Processor-specific */ @@ -322,6 +323,7 @@ Foundation, Inc., 59 Temple Place - Suit #define SHF_LINK_ORDER (1 << 7) /* Preserve section ordering when linking */ #define SHF_OS_NONCONFORMING (1 << 8) /* OS specific processing required */ #define SHF_GROUP (1 << 9) /* Member of a section group */ +#define SHF_TLS (1 << 10) /* Thread local storage section */ /* #define SHF_MASKOS 0x0F000000 *//* OS-specific semantics */ #define SHF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */ @@ -358,6 +360,21 @@ Foundation, Inc., 59 Temple Place - Suit #define NT_VERSION 1 /* Contains a version string. */ #define NT_ARCH 2 /* Contains an architecture string. */ +/* Values for GNU .note.ABI-tag notes. Note name is "GNU". */ + +#define NT_GNU_ABI_TAG 1 +#define GNU_ABI_TAG_LINUX 0 +#define GNU_ABI_TAG_HURD 1 +#define GNU_ABI_TAG_SOLARIS 2 + +/* Values for NetBSD .note.netbsd.ident notes. Note name is "NetBSD". */ + +#define NT_NETBSD_IDENT 1 + +/* Values for FreeBSD .note.ABI-tag notes. Note name is "FreeBSD". */ + +#define NT_FREEBSD_ABI_TAG 1 + /* These three macros disassemble and assemble a symbol table st_info field, which contains the symbol binding and symbol type. The STB_ and STT_ defines identify the binding and type. */ @@ -402,6 +419,7 @@ Foundation, Inc., 59 Temple Place - Suit #define STT_SECTION 3 /* Symbol associated with a section */ #define STT_FILE 4 /* Symbol gives a file name */ #define STT_COMMON 5 /* An uninitialised common block */ +#define STT_TLS 6 /* Thread local data object */ #define STT_LOOS 10 /* OS-specific semantics */ #define STT_HIOS 12 /* OS-specific semantics */ #define STT_LOPROC 13 /* Application-specific semantics */ @@ -570,6 +588,7 @@ Foundation, Inc., 59 Temple Place - Suit #define DF_SYMBOLIC (1 << 1) #define DF_TEXTREL (1 << 2) #define DF_BIND_NOW (1 << 3) +#define DF_STATIC_TLS (1 << 4) /* These constants are used for the version number of a Elf32_Verdef structure. */ diff -uprN binutils-2.12.90.0.7/include/elf/dwarf2.h binutils-2.12.90.0.9/include/elf/dwarf2.h --- binutils-2.12.90.0.7/include/elf/dwarf2.h Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/include/elf/dwarf2.h Thu May 23 15:10:11 2002 @@ -328,6 +328,7 @@ enum dwarf_attribute DW_AT_src_coords = 0x2104, DW_AT_body_begin = 0x2105, DW_AT_body_end = 0x2106, + DW_AT_GNU_vector = 0x2107, /* VMS Extensions. */ DW_AT_VMS_rtnbeg_pd_address = 0x2201 }; diff -uprN binutils-2.12.90.0.7/include/elf/i386.h binutils-2.12.90.0.9/include/elf/i386.h --- binutils-2.12.90.0.7/include/elf/i386.h Thu Mar 15 14:53:07 2001 +++ binutils-2.12.90.0.9/include/elf/i386.h Thu May 23 15:10:11 2002 @@ -34,12 +34,31 @@ START_RELOC_NUMBERS (elf_i386_reloc_type RELOC_NUMBER (R_386_RELATIVE, 8) /* Adjust by program base */ RELOC_NUMBER (R_386_GOTOFF, 9) /* 32 bit offset to GOT */ RELOC_NUMBER (R_386_GOTPC, 10) /* 32 bit PC relative offset to GOT */ - FAKE_RELOC (FIRST_INVALID_RELOC, 11) - FAKE_RELOC (LAST_INVALID_RELOC, 19) + RELOC_NUMBER (R_386_32PLT, 11) /* Used by Sun */ + FAKE_RELOC (FIRST_INVALID_RELOC, 12) + FAKE_RELOC (LAST_INVALID_RELOC, 16) + RELOC_NUMBER (R_386_TLS_LE, 17) + RELOC_NUMBER (R_386_TLS_GD, 18) + RELOC_NUMBER (R_386_TLS_LDM, 19) RELOC_NUMBER (R_386_16, 20) RELOC_NUMBER (R_386_PC16, 21) RELOC_NUMBER (R_386_8, 22) RELOC_NUMBER (R_386_PC8, 23) + RELOC_NUMBER (R_386_TLS_GD_32, 24) + RELOC_NUMBER (R_386_TLS_GD_PUSH, 25) + RELOC_NUMBER (R_386_TLS_GD_CALL, 26) + RELOC_NUMBER (R_386_TLS_GD_POP, 27) + RELOC_NUMBER (R_386_TLS_LDM_32, 28) + RELOC_NUMBER (R_386_TLS_LDM_PUSH, 29) + RELOC_NUMBER (R_386_TLS_LDM_CALL, 30) + RELOC_NUMBER (R_386_TLS_LDM_POP, 31) + RELOC_NUMBER (R_386_TLS_LDO_32, 32) + RELOC_NUMBER (R_386_TLS_IE_32, 33) + RELOC_NUMBER (R_386_TLS_LE_32, 34) + RELOC_NUMBER (R_386_TLS_DTPMOD32, 35) + RELOC_NUMBER (R_386_TLS_DTPOFF32, 36) + RELOC_NUMBER (R_386_TLS_TPOFF32, 37) + /* These are GNU extensions to enable C++ vtable garbage collection. */ RELOC_NUMBER (R_386_GNU_VTINHERIT, 250) RELOC_NUMBER (R_386_GNU_VTENTRY, 251) diff -uprN binutils-2.12.90.0.7/include/elf/ia64.h binutils-2.12.90.0.9/include/elf/ia64.h --- binutils-2.12.90.0.7/include/elf/ia64.h Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/include/elf/ia64.h Thu May 23 15:10:11 2002 @@ -192,7 +192,7 @@ START_RELOC_NUMBERS (elf_ia64_reloc_type RELOC_NUMBER (R_IA64_TPREL64MSB, 0x96) /* @tprel(sym+add), data8 MSB */ RELOC_NUMBER (R_IA64_TPREL64LSB, 0x97) /* @tprel(sym+add), data8 LSB */ - RELOC_NUMBER (R_IA64_LTOFF_TP22, 0x9a) /* @ltoff(@tprel(s+a)), add imm22 */ + RELOC_NUMBER (R_IA64_LTOFF_TPREL22, 0x9a) /* @ltoff(@tprel(s+a)), add imm22 */ RELOC_NUMBER (R_IA64_DTPMOD64MSB, 0xa6) /* @dtpmod(sym+add), data8 MSB */ RELOC_NUMBER (R_IA64_DTPMOD64LSB, 0xa7) /* @dtpmod(sym+add), data8 LSB */ diff -uprN binutils-2.12.90.0.7/include/gdb/ChangeLog binutils-2.12.90.0.9/include/gdb/ChangeLog --- binutils-2.12.90.0.7/include/gdb/ChangeLog Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/include/gdb/ChangeLog Sun May 26 09:57:12 2002 @@ -1,3 +1,17 @@ +2002-05-23 Andrew Cagney + + * sim-d10v.h: New file. Moved from include/sim-d10v.h. + +2002-05-10 Elena Zannoni + + * sim-sh.h: New file, for sh gdb<->sim interface. + +2002-05-09 Daniel Jacobowitz + + * signals.h: Update comments. + (enum target_signal): Remove conditional compilation around + Mach-specific signals. Move them to after TARGET_SIGNAL_DEFAULT. + 2002-03-10 Daniel Jacobowitz * signals.h: New file, from gdb/defs.h. diff -uprN binutils-2.12.90.0.7/include/gdb/signals.h binutils-2.12.90.0.9/include/gdb/signals.h --- binutils-2.12.90.0.7/include/gdb/signals.h Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/include/gdb/signals.h Thu May 23 15:10:11 2002 @@ -32,7 +32,8 @@ Since these numbers have actually made it out into other software (stubs, etc.), you mustn't disturb the assigned numbering. If you need to add new signals here, add them to the end of the explicitly - numbered signals. + numbered signals, at the comment marker. Add them unconditionally, + not within any #if or #ifdef. This is based strongly on Unix/POSIX signals for several reasons: (1) This set of signals represents a widely-accepted attempt to @@ -208,15 +209,6 @@ enum target_signal TARGET_SIGNAL_REALTIME_126, TARGET_SIGNAL_REALTIME_127, -#if defined(MACH) || defined(__MACH__) - /* Mach exceptions */ - TARGET_EXC_BAD_ACCESS, - TARGET_EXC_BAD_INSTRUCTION, - TARGET_EXC_ARITHMETIC, - TARGET_EXC_EMULATION, - TARGET_EXC_SOFTWARE, - TARGET_EXC_BREAKPOINT, -#endif TARGET_SIGNAL_INFO, /* Some signal we don't know about. */ @@ -226,6 +218,18 @@ enum target_signal (for passing to proceed and so on). */ TARGET_SIGNAL_DEFAULT, + /* Mach exceptions. In versions of GDB before 5.2, these were just before + TARGET_SIGNAL_INFO if you were compiling on a Mach host (and missing + otherwise). */ + TARGET_EXC_BAD_ACCESS, + TARGET_EXC_BAD_INSTRUCTION, + TARGET_EXC_ARITHMETIC, + TARGET_EXC_EMULATION, + TARGET_EXC_SOFTWARE, + TARGET_EXC_BREAKPOINT, + + /* If you are adding a new signal, add it just above this comment. */ + /* Last and unused enum value, for sizing arrays, etc. */ TARGET_SIGNAL_LAST }; diff -uprN binutils-2.12.90.0.7/include/gdb/sim-d10v.h binutils-2.12.90.0.9/include/gdb/sim-d10v.h --- binutils-2.12.90.0.7/include/gdb/sim-d10v.h Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/include/gdb/sim-d10v.h Sun May 26 09:57:12 2002 @@ -0,0 +1,103 @@ +/* This file defines the interface between the d10v simulator and gdb. + Copyright 1999 Free Software Foundation, Inc. + +This file is part of GDB. + +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. */ + +#if !defined (SIM_D10V_H) +#define SIM_D10V_H + +#ifdef __cplusplus +extern "C" { // } +#endif + +/* GDB interprets addresses as: + + 0x00xxxxxx: Physical unified memory segment (Unified memory) + 0x01xxxxxx: Physical instruction memory segment (On-chip insn memory) + 0x02xxxxxx: Physical data memory segment (On-chip data memory) + 0x10xxxxxx: Logical data address segment (DMAP translated memory) + 0x11xxxxxx: Logical instruction address segment (IMAP translated memory) + + The remote d10v board interprets addresses as: + + 0x00xxxxxx: Physical unified memory segment (Unified memory) + 0x01xxxxxx: Physical instruction memory segment (On-chip insn memory) + 0x02xxxxxx: Physical data memory segment (On-chip data memory) + + The following translate a virtual DMAP/IMAP offset into a physical + memory segment assigning the translated address to PHYS. Since a + memory access may cross a page boundrary the number of bytes for + which the translation is applicable (or 0 for an invalid virtual + offset) is returned. */ + +enum + { + SIM_D10V_MEMORY_UNIFIED = 0x00000000, + SIM_D10V_MEMORY_INSN = 0x01000000, + SIM_D10V_MEMORY_DATA = 0x02000000, + SIM_D10V_MEMORY_DMAP = 0x10000000, + SIM_D10V_MEMORY_IMAP = 0x11000000 + }; + +extern unsigned long sim_d10v_translate_dmap_addr + (unsigned long offset, + int nr_bytes, + unsigned long *phys, + unsigned long (*dmap_register) (int reg_nr)); + +extern unsigned long sim_d10v_translate_imap_addr + (unsigned long offset, + int nr_bytes, + unsigned long *phys, + unsigned long (*imap_register) (int reg_nr)); + +extern unsigned long sim_d10v_translate_addr + (unsigned long vaddr, + int nr_bytes, + unsigned long *phys, + unsigned long (*dmap_register) (int reg_nr), + unsigned long (*imap_register) (int reg_nr)); + + +/* The simulator makes use of the following register information. */ + +enum + { + SIM_D10V_R0_REGNUM = 0, + SIM_D10V_CR0_REGNUM = 16, + SIM_D10V_A0_REGNUM = 32, + SIM_D10V_SPI_REGNUM = 34, + SIM_D10V_SPU_REGNUM = 35, + SIM_D10V_IMAP0_REGNUM = 36, + SIM_D10V_DMAP0_REGNUM = 38, + SIM_D10V_TS2_DMAP_REGNUM = 40 + }; + +enum + { + SIM_D10V_NR_R_REGS = 16, + SIM_D10V_NR_A_REGS = 2, + SIM_D10V_NR_IMAP_REGS = 2, + SIM_D10V_NR_DMAP_REGS = 4, + SIM_D10V_NR_CR_REGS = 16 + }; + +#ifdef __cplusplus +} +#endif + +#endif diff -uprN binutils-2.12.90.0.7/include/gdb/sim-sh.h binutils-2.12.90.0.9/include/gdb/sim-sh.h --- binutils-2.12.90.0.7/include/gdb/sim-sh.h Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/include/gdb/sim-sh.h Thu May 23 15:10:11 2002 @@ -0,0 +1,54 @@ +/* This file defines the interface between the sh simulator and gdb. + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GDB. + +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. */ + +#if !defined (SIM_SH_H) +#define SIM_SH_H + +#ifdef __cplusplus +extern "C" { // } +#endif + +/* The simulator makes use of the following register information. */ + +enum + { + SIM_SH64_R0_REGNUM = 0, + SIM_SH64_SP_REGNUM = 15, + SIM_SH64_PC_REGNUM = 64, + SIM_SH64_SR_REGNUM = 65, + SIM_SH64_SSR_REGNUM = 66, + SIM_SH64_SPC_REGNUM = 67, + SIM_SH64_TR0_REGNUM = 68, + SIM_SH64_FPCSR_REGNUM = 76, + SIM_SH64_FR0_REGNUM = 77 + }; + +enum + { + SIM_SH64_NR_REGS = 141, /* total number of architectural registers */ + SIM_SH64_NR_R_REGS = 64, /* number of general registers */ + SIM_SH64_NR_TR_REGS = 8, /* number of target registers */ + SIM_SH64_NR_FP_REGS = 64 /* number of floating point registers */ + }; + +#ifdef __cplusplus +} +#endif + +#endif diff -uprN binutils-2.12.90.0.7/include/opcode/ChangeLog binutils-2.12.90.0.9/include/opcode/ChangeLog --- binutils-2.12.90.0.7/include/opcode/ChangeLog Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/include/opcode/ChangeLog Sun May 26 09:57:12 2002 @@ -1,3 +1,17 @@ +2002-05-25 Alan Modra + + * ia64.h: Use #include "" instead of <> for local header files. + * sparc.h: Likewise. + +2002-05-22 Thiemo Seufer + + * mips.h: Add M_DROL, M_DROL_I, M_DROR, M_DROR_I macro cases. + +2002-05-17 Andrey Volkov + + * h8300.h: Corrected defs of all control regs + and eepmov instr. + 2002-04-11 Alan Modra * i386.h: Add intel mode cmpsd and movsd. diff -uprN binutils-2.12.90.0.7/include/opcode/h8300.h binutils-2.12.90.0.9/include/opcode/h8300.h --- binutils-2.12.90.0.7/include/opcode/h8300.h Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/include/opcode/h8300.h Thu May 23 15:10:11 2002 @@ -333,8 +333,8 @@ struct h8_opcode h8_opcodes[] = NEW_SOP(O(O_AND,SL),0,6,"and.l"),{{IMM32,RD32,E }},{{0x7,0xA,0x6,B30|RD32,IMM32LIST,E}} EOP, NEW_SOP(O(O_AND,SL),0,2,"and.l") ,{{RS32,RD32,E }},{{0x0,0x1,0xF,0x0,0x6,0x6,B30|RS32,B30|RD32,E}} EOP, - NEW_SOP(O(O_ANDC,SB),1,2,"andc"), {{IMM8,CCR,E}},{{ 0x0,0x6,IMM8,IGNORE,E,0,0,0,0}} EOP, - NEW_SOP(O(O_ANDC,SB),1,2,"andc"), {{IMM8,EXR,E}},{{ 0x0,0x1,0x4,0x1,0x0,0x6,IMM8,IGNORE,E,0,0,0,0}} EOP, + NEW_SOP(O(O_ANDC,SB),1,2,"andc"), {{IMM8,CCR|DST,E}},{{ 0x0,0x6,IMM8,IGNORE,E,0,0,0,0}} EOP, + NEW_SOP(O(O_ANDC,SB),1,2,"andc"), {{IMM8,EXR|DST,E}},{{ 0x0,0x1,0x4,0x1,0x0,0x6,IMM8,IGNORE,E,0,0,0,0}} EOP, BITOP(O(O_BAND,SB), IMM3|B30,"band",0x7,0x6,0x7,0xC,0x7,0xE,0x0), BRANCH(O(O_BRA,SB),"bra",0x0), @@ -391,14 +391,14 @@ struct h8_opcode h8_opcodes[] = NEW_SOP(O(O_DEC, SW),0,2,"dec.w") ,{{DBIT,RD16,E }},{{0x1,0xB,0x5|DBIT,RD16,E}} EOP, NEW_SOP(O(O_DEC, SL),0,2,"dec.l") ,{{DBIT,RD32,E }},{{0x1,0xB,0x7|DBIT,RD32|B30,E}} EOP, - NEW_SOP(O(O_DIVU,SB),1,6,"divxu.b"), {{RS8,RD16,E}}, {{0x5,0x1,RS8,RD16,E,0,0,0,0}}EOP, - NEW_SOP(O(O_DIVU,SW),0,20,"divxu.w"),{{RS16,RD32,E}},{{0x5,0x3,RS16,B30|RD32,E}}EOP, + NEW_SOP(O(O_DIVU,SB),1,13,"divxu.b"), {{RS8,RD16,E}}, {{0x5,0x1,RS8,RD16,E,0,0,0,0}}EOP, + NEW_SOP(O(O_DIVU,SW),0,21,"divxu.w"),{{RS16,RD32,E}},{{0x5,0x3,RS16,B30|RD32,E}}EOP, - NEW_SOP(O(O_DIVS,SB),0,20,"divxs.b") ,{{RS8,RD16,E }},{{0x0,0x1,0xD,0x0,0x5,0x1,RS8,RD16,E}} EOP, - NEW_SOP(O(O_DIVS,SW),0,02,"divxs.w") ,{{RS16,RD32,E }},{{0x0,0x1,0xD,0x0,0x5,0x3,RS16,B30|RD32,E}} EOP, + NEW_SOP(O(O_DIVS,SB),0,13,"divxs.b") ,{{RS8,RD16,E }},{{0x0,0x1,0xD,0x0,0x5,0x1,RS8,RD16,E}} EOP, + NEW_SOP(O(O_DIVS,SW),0,21,"divxs.w") ,{{RS16,RD32,E }},{{0x0,0x1,0xD,0x0,0x5,0x3,RS16,B30|RD32,E}} EOP, - NEW_SOP(O(O_EEPMOV,SB),1,50,"eepmov.b"),{{E,0,0}},{{0x7,0xB,0x5,0xC,0x5,0x9,0x8,0xF,E}}EOP, - NEW_SOP(O(O_EEPMOV,SW),0,50,"eepmov.w"),{{E,0,0}},{{0x7,0xB,0xD,0x4,0x5,0x9,0x8,0xF,E}} EOP, + NEW_SOP(O(O_EEPMOV,SB),1,4,"eepmov.b"),{{E,0,0}},{{0x7,0xB,0x5,0xC,0x5,0x9,0x8,0xF,E}}EOP, + NEW_SOP(O(O_EEPMOV,SW),0,4,"eepmov.w"),{{E,0,0}},{{0x7,0xB,0xD,0x4,0x5,0x9,0x8,0xF,E}} EOP, NEW_SOP(O(O_EXTS,SW),0,2,"exts.w"),{{OR16,E,0}},{{0x1,0x7,0xD,OR16,E }}EOP, NEW_SOP(O(O_EXTS,SL),0,2,"exts.l"),{{OR32,E,0}},{{0x1,0x7,0xF,OR32|B30,E }}EOP, @@ -419,23 +419,23 @@ struct h8_opcode h8_opcodes[] = SOP(O(O_JSR,SB),8,"jsr"),{{SRC|ABSJMP,E,0}},{{0x5,0xE,SRC|ABSJMP,IGNORE,IGNORE,IGNORE,IGNORE,IGNORE,E}}EOP, SOP(O(O_JSR,SB),8,"jsr"),{{SRC|MEMIND,E,0}},{{0x5,0xF,SRC|MEMIND,IGNORE,E,0,0,0,0}}EOP, - NEW_SOP(O(O_LDC,SB),1,2,"ldc"),{{IMM8,CCR,E}}, {{ 0x0,0x7,IMM8,IGNORE,E,0,0,0,0}}EOP, - NEW_SOP(O(O_LDC,SB),1,2,"ldc"),{{OR8,CCR,E}}, {{ 0x0,0x3,0x0,OR8,E,0,0,0,0}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{ABS16SRC,CCR,E}}, {{PREFIXLDC,0x6,0xB,0x0,0x0,ABS16SRC,IGNORE,IGNORE,IGNORE,E}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{ABS32SRC,CCR,E}}, {{PREFIXLDC,0x6,0xB,0x2,0x0,SRC|ABS32LIST,E}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{DISP|SRC|L_16,CCR,E}},{{PREFIXLDC,0x6,0xF,B30|DISPREG,0,DISP|L_16,IGNORE,IGNORE,IGNORE,E}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{DISP|SRC|L_32,CCR,E}},{{PREFIXLDC,0x7,0x8,B30|DISPREG,0,0x6,0xB,0x2,0x0,SRC|DISP32LIST,E}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{RSINC,CCR,E}}, {{PREFIXLDC,0x6,0xD,B30|RSINC,0x0,E}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{RSIND,CCR,E}}, {{PREFIXLDC,0x6,0x9,B30|RDIND,0x0,E}} EOP, - - NEW_SOP(O(O_LDC,SB),1,2,"ldc"),{{IMM8,EXR,E}}, {{ 0x0,0x1,0x4,0x1,0x0,0x7,IMM8,IGNORE,E,0,0,0,0}}EOP, - NEW_SOP(O(O_LDC,SB),1,2,"ldc"),{{OR8,EXR,E}}, {{ 0x0,0x3,0x1,OR8,E,0,0,0,0}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{ABS16SRC,EXR,E}}, {{ 0x0,0x1,0x4,0x1,0x6,0xb,0x0,0x0,ABS16SRC,IGNORE,IGNORE,IGNORE,E}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{ABS32SRC,EXR,E}}, {{ 0x0,0x1,0x4,0x1,0x6,0xb,0x2,0x0,SRC|ABS32LIST,E}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{DISP|SRC|L_16,EXR,E}},{{ 0x0,0x1,0x4,0x1,0x6,0xf,B30|DISPREG,0,DISP|L_16,IGNORE,IGNORE,IGNORE,E}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{DISP|SRC|L_32,EXR,E}},{{ 0x0,0x1,0x4,0x1,0x7,0x8,B30|DISPREG,0,0x6,0xB,0x2,0x0,SRC|DISP32LIST,E}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{RSINC,EXR,E}}, {{ 0x0,0x1,0x4,0x1,0x6,0xd,B30|RSINC,0x0,E}}EOP, - NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{RSIND,EXR,E}}, {{ 0x0,0x1,0x4,0x1,0x6,0x9,B30|RDIND,0x0,E}} EOP, + NEW_SOP(O(O_LDC,SB),1,2,"ldc"),{{IMM8,CCR|DST,E}}, {{ 0x0,0x7,IMM8,IGNORE,E,0,0,0,0}}EOP, + NEW_SOP(O(O_LDC,SB),1,2,"ldc"),{{OR8,CCR|DST,E}}, {{ 0x0,0x3,0x0,OR8,E,0,0,0,0}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{ABS16SRC,CCR|DST,E}}, {{PREFIXLDC,0x6,0xB,0x0,0x0,ABS16SRC,IGNORE,IGNORE,IGNORE,E}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{ABS32SRC,CCR|DST,E}}, {{PREFIXLDC,0x6,0xB,0x2,0x0,SRC|ABS32LIST,E}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{DISP|SRC|L_16,CCR|DST,E}},{{PREFIXLDC,0x6,0xF,B30|DISPREG,0,DISP|L_16,IGNORE,IGNORE,IGNORE,E}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{DISP|SRC|L_32,CCR|DST,E}},{{PREFIXLDC,0x7,0x8,B30|DISPREG,0,0x6,0xB,0x2,0x0,SRC|DISP32LIST,E}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{RSINC,CCR|DST,E}}, {{PREFIXLDC,0x6,0xD,B30|RSINC,0x0,E}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{RSIND,CCR|DST,E}}, {{PREFIXLDC,0x6,0x9,B30|RDIND,0x0,E}} EOP, + + NEW_SOP(O(O_LDC,SB),1,2,"ldc"),{{IMM8,EXR|DST,E}}, {{ 0x0,0x1,0x4,0x1,0x0,0x7,IMM8,IGNORE,E,0,0,0,0}}EOP, + NEW_SOP(O(O_LDC,SB),1,2,"ldc"),{{OR8,EXR|DST,E}}, {{ 0x0,0x3,0x1,OR8,E,0,0,0,0}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{ABS16SRC,EXR|DST,E}}, {{ 0x0,0x1,0x4,0x1,0x6,0xb,0x0,0x0,ABS16SRC,IGNORE,IGNORE,IGNORE,E}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{ABS32SRC,EXR|DST,E}}, {{ 0x0,0x1,0x4,0x1,0x6,0xb,0x2,0x0,SRC|ABS32LIST,E}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{DISP|SRC|L_16,EXR|DST,E}},{{ 0x0,0x1,0x4,0x1,0x6,0xf,B30|DISPREG,0,DISP|L_16,IGNORE,IGNORE,IGNORE,E}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{DISP|SRC|L_32,EXR|DST,E}},{{ 0x0,0x1,0x4,0x1,0x7,0x8,B30|DISPREG,0,0x6,0xB,0x2,0x0,SRC|DISP32LIST,E}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{RSINC,EXR|DST,E}}, {{ 0x0,0x1,0x4,0x1,0x6,0xd,B30|RSINC,0x0,E}}EOP, + NEW_SOP(O(O_LDC,SB),0,2,"ldc"),{{RSIND,EXR|DST,E}}, {{ 0x0,0x1,0x4,0x1,0x6,0x9,B30|RDIND,0x0,E}} EOP, SOP(O(O_MOV_TO_REG,SB),4,"mov.b"),{{ABS|SRC|L_16|MEMRELAX,RD8,E}}, {{ 0x6,0xA,0x0,RD8,SRC|ABS|MEMRELAX|A16LIST,E}}EOP, SOP(O(O_MOV_TO_REG,SB),6,"mov.b"),{{ABS|SRC|L_32|MEMRELAX,RD8,E }}, {{ 0x6,0xA,0x2,RD8,SRC|ABS|MEMRELAX|A32LIST,E }}EOP, @@ -520,8 +520,8 @@ struct h8_opcode h8_opcodes[] = NEW_SOP(O(O_OR,SL),0,6,"or.l"),{{IMM32,RD32,E }},{{0x7,0xA,0x4,B30|RD32,IMM32LIST,E}} EOP, NEW_SOP(O(O_OR,SL),0,2,"or.l"),{{RS32,RD32,E }},{{0x0,0x1,0xF,0x0,0x6,0x4,B30|RS32,B30|RD32,E}} EOP, - NEW_SOP(O(O_ORC,SB),1,2,"orc"),{{IMM8,CCR,E}},{{ 0x0,0x4,IMM8,IGNORE,E,0,0,0,0}}EOP, - NEW_SOP(O(O_ORC,SB),1,2,"orc"),{{IMM8,EXR,E}},{{ 0x0,0x1,0x4,0x1,0x0,0x4,IMM8,IGNORE,E,0,0,0,0}}EOP, + NEW_SOP(O(O_ORC,SB),1,2,"orc"),{{IMM8,CCR|DST,E}},{{ 0x0,0x4,IMM8,IGNORE,E,0,0,0,0}}EOP, + NEW_SOP(O(O_ORC,SB),1,2,"orc"),{{IMM8,EXR|DST,E}},{{ 0x0,0x1,0x4,0x1,0x0,0x4,IMM8,IGNORE,E,0,0,0,0}}EOP, NEW_SOP(O(O_MOV_TO_REG,SW),1,6,"pop.w"),{{OR16,E,0}},{{ 0x6,0xD,0x7,OR16,E,0,0,0,0}}EOP, NEW_SOP(O(O_MOV_TO_REG,SL),0,6,"pop.l"),{{OR32,E,0}},{{ PREFIX32,0x6,0xD,0x7,OR32|B30,E,0,0,0,0}}EOP, @@ -544,25 +544,25 @@ struct h8_opcode h8_opcodes[] = SOP(O(O_SLEEP,SN),2,"sleep"),{{E,0,0}},{{ 0x0,0x1,0x8,0x0,E,0,0,0,0}} EOP, - NEW_SOP(O(O_STC,SB), 1,2,"stc"),{{CCR,RD8,E}},{{ 0x0,0x2,0x0,RD8,E,0,0,0,0}} EOP, + NEW_SOP(O(O_STC,SB), 1,2,"stc"),{{CCR|SRC,RD8,E}},{{ 0x0,0x2,0x0,RD8,E,0,0,0,0}} EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR,RSIND,E}}, {{PREFIXLDC,0x6,0x9,B31|RDIND,0x0,E}} EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR,DISP|DST|L_16,E}},{{PREFIXLDC,0x6,0xF,B31|DISPREG,0,DST|DISP|L_16,IGNORE,IGNORE,IGNORE,E}}EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR,DISP|DST|L_32,E}},{{PREFIXLDC,0x7,0x8,B30|DISPREG,0,0x6,0xB,0xA,0x0,DST|DISP32LIST,E}}EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR,RDDEC,E}}, {{PREFIXLDC,0x6,0xD,B31|RDDEC,0x0,E}}EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR|SRC,RSIND,E}}, {{PREFIXLDC,0x6,0x9,B31|RDIND,0x0,E}} EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR|SRC,DISP|DST|L_16,E}},{{PREFIXLDC,0x6,0xF,B31|DISPREG,0,DST|DISP|L_16,IGNORE,IGNORE,IGNORE,E}}EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR|SRC,DISP|DST|L_32,E}},{{PREFIXLDC,0x7,0x8,B30|DISPREG,0,0x6,0xB,0xA,0x0,DST|DISP32LIST,E}}EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR|SRC,RDDEC,E}}, {{PREFIXLDC,0x6,0xD,B31|RDDEC,0x0,E}}EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR,ABS16SRC,E}}, {{PREFIXLDC,0x6,0xB,0x8,0x0,ABS16DST,IGNORE,IGNORE,IGNORE,E}}EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR,ABS32SRC,E}}, {{PREFIXLDC,0x6,0xB,0xA,0x0,DST|ABS32LIST,E}}EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR|SRC,ABS16DST,E}}, {{PREFIXLDC,0x6,0xB,0x8,0x0,ABS16DST,IGNORE,IGNORE,IGNORE,E}}EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{CCR|SRC,ABS32DST,E}}, {{PREFIXLDC,0x6,0xB,0xA,0x0,DST|ABS32LIST,E}}EOP, - NEW_SOP(O(O_STC,SB), 1,2,"stc"),{{EXR,RD8,E}},{{ 0x0,0x2,0x1,RD8,E,0,0,0,0}} EOP, + NEW_SOP(O(O_STC,SB), 1,2,"stc"),{{EXR|SRC,RD8,E}},{{ 0x0,0x2,0x1,RD8,E,0,0,0,0}} EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR,RSIND,E}}, {{0x0,0x1,0x4,0x1,0x6,0x9,B31|RDIND,0x0,E}} EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR,DISP|DST|L_16,E}},{{0x0,0x1,0x4,0x1,0x6,0xF,B31|DISPREG,0,DST|DISP|L_16,IGNORE,IGNORE,IGNORE,E}}EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR,DISP|DST|L_32,E}},{{0x0,0x1,0x4,0x1,0x7,0x8,B30|DISPREG,0,0x6,0xB,0xA,0x0,DST|DISP32LIST,E}}EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR,RDDEC,E}}, {{0x0,0x1,0x4,0x1,0x6,0xD,B31|RDDEC,0x0,E}}EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR|SRC,RSIND,E}}, {{0x0,0x1,0x4,0x1,0x6,0x9,B31|RDIND,0x0,E}} EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR|SRC,DISP|DST|L_16,E}},{{0x0,0x1,0x4,0x1,0x6,0xF,B31|DISPREG,0,DST|DISP|L_16,IGNORE,IGNORE,IGNORE,E}}EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR|SRC,DISP|DST|L_32,E}},{{0x0,0x1,0x4,0x1,0x7,0x8,B30|DISPREG,0,0x6,0xB,0xA,0x0,DST|DISP32LIST,E}}EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR|SRC,RDDEC,E}}, {{0x0,0x1,0x4,0x1,0x6,0xD,B31|RDDEC,0x0,E}}EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR,ABS16SRC,E}}, {{0x0,0x1,0x4,0x1,0x6,0xB,0x8,0x0,ABS16DST,IGNORE,IGNORE,IGNORE,E}}EOP, - NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR,ABS32SRC,E}}, {{0x0,0x1,0x4,0x1,0x6,0xB,0xA,0x0,DST|ABS32LIST,E}}EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR|SRC,ABS16DST,E}}, {{0x0,0x1,0x4,0x1,0x6,0xB,0x8,0x0,ABS16DST,IGNORE,IGNORE,IGNORE,E}}EOP, + NEW_SOP(O(O_STC,SB),0,2,"stc"),{{EXR|SRC,ABS32DST,E}}, {{0x0,0x1,0x4,0x1,0x6,0xB,0xA,0x0,DST|ABS32LIST,E}}EOP, SOP(O(O_SUB,SB),2,"sub.b"),{{RS8,RD8,E}},{{ 0x1,0x8,RS8,RD8,E,0,0,0,0}}EOP, @@ -585,8 +585,8 @@ struct h8_opcode h8_opcodes[] = NEW_SOP(O(O_XOR,SL),0,6,"xor.l"),{{IMM32,RD32,E }},{{0x7,0xA,0x5,B30|RD32,IMM32LIST,E}} EOP, NEW_SOP(O(O_XOR,SL),0,2,"xor.l") ,{{RS32,RD32,E }},{{0x0,0x1,0xF,0x0,0x6,0x5,B30|RS32,B30|RD32,E}} EOP, - SOP(O(O_XORC,SB),2,"xorc"),{{IMM8,CCR,E}},{{ 0x0,0x5,IMM8,IGNORE,E,0,0,0,0}}EOP, - SOP(O(O_XORC,SB),2,"xorc"),{{IMM8,EXR,E}},{{ 0x0,0x1,0x4,0x1,0x0,0x5,IMM8,IGNORE,E,0,0,0,0}}EOP, + SOP(O(O_XORC,SB),2,"xorc"),{{IMM8,CCR|DST,E}},{{ 0x0,0x5,IMM8,IGNORE,E,0,0,0,0}}EOP, + SOP(O(O_XORC,SB),2,"xorc"),{{IMM8,EXR|DST,E}},{{ 0x0,0x1,0x4,0x1,0x0,0x5,IMM8,IGNORE,E,0,0,0,0}}EOP, NEW_SOP(O(O_CLRMAC,SN),1,2,"clrmac"),{{E, 0, 0}},{{0x0,0x1,0xa,0x0,E}} EOP, NEW_SOP(O(O_MAC,SL),1,2,"mac"),{{RSINC,RDINC,E}},{{0x0,0x1,0x6,0x0,0x6,0xd,B30|RSINC,B30|RDINC,E}} EOP, diff -uprN binutils-2.12.90.0.7/include/opcode/ia64.h binutils-2.12.90.0.9/include/opcode/ia64.h --- binutils-2.12.90.0.7/include/opcode/ia64.h Sat Sep 30 08:54:13 2000 +++ binutils-2.12.90.0.9/include/opcode/ia64.h Sun May 26 09:57:12 2002 @@ -1,5 +1,5 @@ /* ia64.h -- Header file for ia64 opcode table - Copyright (C) 1998, 1999 David Mosberger-Tang + Copyright (C) 1998, 1999, 2002 David Mosberger-Tang See the file HP-COPYRIGHT for additional information. */ @@ -8,7 +8,7 @@ #include -#include +#include "bfd.h" typedef BFD_HOST_U_64_BIT ia64_insn; diff -uprN binutils-2.12.90.0.7/include/opcode/mips.h binutils-2.12.90.0.9/include/opcode/mips.h --- binutils-2.12.90.0.7/include/opcode/mips.h Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/include/opcode/mips.h Thu May 23 15:10:11 2002 @@ -526,9 +526,13 @@ enum M_REM_3I, M_REMU_3, M_REMU_3I, + M_DROL, M_ROL, + M_DROL_I, M_ROL_I, + M_DROR, M_ROR, + M_DROR_I, M_ROR_I, M_S_DA, M_S_DOB, diff -uprN binutils-2.12.90.0.7/include/opcode/sparc.h binutils-2.12.90.0.9/include/opcode/sparc.h --- binutils-2.12.90.0.7/include/opcode/sparc.h Thu Mar 15 14:53:17 2001 +++ binutils-2.12.90.0.9/include/opcode/sparc.h Sun May 26 09:57:12 2002 @@ -1,5 +1,5 @@ /* Definitions for opcode table for the sparc. - Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000 + Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler, GDB, the GNU debugger, and @@ -20,7 +20,7 @@ along with GAS or GDB; see the file COPY the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include "ansidecl.h" /* The SPARC opcode table (and other related data) is defined in the opcodes library in sparc-opc.c. If you change anything here, make diff -uprN binutils-2.12.90.0.7/include/sim-d10v.h binutils-2.12.90.0.9/include/sim-d10v.h --- binutils-2.12.90.0.7/include/sim-d10v.h Thu Mar 15 14:53:01 2001 +++ binutils-2.12.90.0.9/include/sim-d10v.h Wed Dec 31 16:00:00 1969 @@ -1,103 +0,0 @@ -/* This file defines the interface between the d10v simulator and gdb. - Copyright 1999 Free Software Foundation, Inc. - -This file is part of GDB. - -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. */ - -#if !defined (SIM_D10V_H) -#define SIM_D10V_H - -#ifdef __cplusplus -extern "C" { // } -#endif - -/* GDB interprets addresses as: - - 0x00xxxxxx: Physical unified memory segment (Unified memory) - 0x01xxxxxx: Physical instruction memory segment (On-chip insn memory) - 0x02xxxxxx: Physical data memory segment (On-chip data memory) - 0x10xxxxxx: Logical data address segment (DMAP translated memory) - 0x11xxxxxx: Logical instruction address segment (IMAP translated memory) - - The remote d10v board interprets addresses as: - - 0x00xxxxxx: Physical unified memory segment (Unified memory) - 0x01xxxxxx: Physical instruction memory segment (On-chip insn memory) - 0x02xxxxxx: Physical data memory segment (On-chip data memory) - - The following translate a virtual DMAP/IMAP offset into a physical - memory segment assigning the translated address to PHYS. Since a - memory access may cross a page boundrary the number of bytes for - which the translation is applicable (or 0 for an invalid virtual - offset) is returned. */ - -enum - { - SIM_D10V_MEMORY_UNIFIED = 0x00000000, - SIM_D10V_MEMORY_INSN = 0x01000000, - SIM_D10V_MEMORY_DATA = 0x02000000, - SIM_D10V_MEMORY_DMAP = 0x10000000, - SIM_D10V_MEMORY_IMAP = 0x11000000 - }; - -extern unsigned long sim_d10v_translate_dmap_addr - (unsigned long offset, - int nr_bytes, - unsigned long *phys, - unsigned long (*dmap_register) (int reg_nr)); - -extern unsigned long sim_d10v_translate_imap_addr - (unsigned long offset, - int nr_bytes, - unsigned long *phys, - unsigned long (*imap_register) (int reg_nr)); - -extern unsigned long sim_d10v_translate_addr - (unsigned long vaddr, - int nr_bytes, - unsigned long *phys, - unsigned long (*dmap_register) (int reg_nr), - unsigned long (*imap_register) (int reg_nr)); - - -/* The simulator makes use of the following register information. */ - -enum - { - SIM_D10V_R0_REGNUM = 0, - SIM_D10V_CR0_REGNUM = 16, - SIM_D10V_A0_REGNUM = 32, - SIM_D10V_SPI_REGNUM = 34, - SIM_D10V_SPU_REGNUM = 35, - SIM_D10V_IMAP0_REGNUM = 36, - SIM_D10V_DMAP0_REGNUM = 38, - SIM_D10V_TS2_DMAP_REGNUM = 40 - }; - -enum - { - SIM_D10V_NR_R_REGS = 16, - SIM_D10V_NR_A_REGS = 2, - SIM_D10V_NR_IMAP_REGS = 2, - SIM_D10V_NR_DMAP_REGS = 4, - SIM_D10V_NR_CR_REGS = 16 - }; - -#ifdef __cplusplus -} -#endif - -#endif diff -uprN binutils-2.12.90.0.7/ld/ChangeLog binutils-2.12.90.0.9/ld/ChangeLog --- binutils-2.12.90.0.7/ld/ChangeLog Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/ld/ChangeLog Sun May 26 09:57:12 2002 @@ -1,3 +1,276 @@ +2002-05-25 Kazu Hirata + + * ldemul.c: Fix formatting. + * ldfile.c: Likewise. + * pe-dll.c: Likewise. + * pe-dll.h: Likewise. + +2002-05-25 Alan Modra + + * ldlang.c (lang_process): Formatting, grammar. + + * ldlex.l: Use #include "" instead of <> for local header files. + +2002-05-24 TAMURA Kent + + * configure.tgt: Add a target for i386-netbsdpe. + +2002-05-23 Jakub Jelinek + + * scripttempl/elf.sc: Add .rel{,a}.t{bss,data}, .tdata and .tbss. + * ldlang.c (lang_add_section): Set SEC_THREAD_LOCAL for + output section if necessary. Handle .tbss. + (lang_size_sections): Clear _raw_size for .tbss section + (it allocates space in PT_TLS segment only). + * ldwrite.c (build_link_order): Build link order for .tbss too. + +2002-05-23 Alan Modra + + * configure.in: Correct spelling of AC_PREREQ. + +2002-05-21 Danny Smith + + * pe-dll.c (autofilter_liblist): Add more system libs excluded by + default. + (autofilter_objlist): Add crtbegin.o, crtend.o. + +2002-05-21 Danny Smith + + * emultempl/pe.em (OPTION_EXCLUDE_LIBS): Add new define. + (longopts): Add new option --exclude-libs. + (gld_${EMULATION_NAME}_list_options): Give quick help about it. + (gld_${EMULATION_NAME}_parse_args): Use it. + * pe-dll.h (pe_dll_add_excludes): Add second param to prototype. + * pe-dll.c (exclude_list_struct): Add field type to distinguish symbols + from whole archives. + (pe_dll_add_excludes): Set excludes->type. + (auto_export): Add new variable libname and set to archive basename if + abfd. Use it when filtering default and user-specified libarary + excludes. Let string "ALL" mean all libs when filtering user-specified + libs. + * ld.texinfo: Document --exclude-libs. + +2002-05-22 Alan Modra + + * ldemul.c (ldemul_new_vers_pattern): New function. + * ldemul.h (ldemul_new_vers_pattern): Declare. + (struct ld_emulation_xfer_struct): Add new_vers_pattern. + * ldlang.c (lang_new_vers_pattern): Call ldemul_new_vers_pattern. + * emultempl/ppc64elf.em (dotsyms): New static var. + (gld${EMULATION_NAME}_new_vers_pattern): New function. + (LDEMUL_NEW_VERS_PATTERN): Define. + (PARSE_AND_LIST_PROLOGUE): Add OPTION_DOTSYMS, OPTION_NO_DOTSYMS. + (PARSE_AND_LIST_LONGOPTS): Likewise. + (PARSE_AND_LIST_ARGS_CASES): Handle them. + * emultempl/aix.em (ld_${EMULATION_NAME}_emulation): Update + initialiser. + * emultempl/armcoff.em: Likewise. + * emultempl/armelf_oabi.em: Likewise. + * emultempl/beos.em: Likewise. + * emultempl/elf32.em: Likewise. + * emultempl/generic.em: Likewise. + * emultempl/gld960.em: Likewise. + * emultempl/gld960c.em: Likewise. + * emultempl/linux.em: Likewise. + * emultempl/lnk960.em: Likewise. + * emultempl/m68kcoff.em: Likewise. + * emultempl/mipsecoff.em: Likewise. + * emultempl/pe.em: Likewise. + * emultempl/sunos.em: Likewise. + * emultempl/ticoff.em: Likewise. + * emultempl/vanilla.em: Likewise. + +2002-05-22 Alan Modra + + * genscripts.sh (LIB_PATH): For native targets, concatenate $libdir + and $NATIVE_LIB_DIRS. Add $tool_lib before other libs. + (LIB_SEARCH_DIRS): No need to use "tr". + (COMPILE_IN): Only set for native targets. + * configure.host (NATIVE_LIB_DIRS): Specify all native search dirs + here, rather than adding lib:/usr/lib:/usr/local/lib in genscripts.sh. + * configure.tgt (powerpc*): Set tdir_*. + (powerpcle*): Correct targ_extra_emuls. + * emulparams/elf32ppc.sh (LIB_PATH): Set up native 64 bit dirs. + * emulparams/elf64ppc.sh (LIB_PATH): Likewise. + +2002-05-22 Alan Modra + + * emultempl/pe.em (set_pe_subsystem): Don't set "cmdline" when + calling lang_add_entry. + +2002-05-21 H.J. Lu (hjl@gnu.org) + + * emultempl/elf32.em (gld${EMULATION_NAME}_parse_args): Handle + "-z muldefs". + (gld${EMULATION_NAME}_list_options): Add "-z muldefs". + + * ld.texinfo: Updated for --allow-multiple-definition and + "-z muldefs". + + * ldmain.c (main): Initialize the allow_multiple_definition + field to false. + + * lexsup.c (OPTION_ALLOW_MULTIPLE_DEFINITION): New. + (ld_options): Add --allow-multiple-definition. + (parse_args): Support OPTION_ALLOW_MULTIPLE_DEFINITION. + +2002-05-21 Jason Thorpe + + * Makefile.am (ALL_EMULATIONS): Add earmelfb_nbsd.o. + (earmelfb_nbsd.c): New rule. + * Makefile.in: Regenerate. + * configure.tgt (armeb-*-netbsdelf*): New target. + (arm-*-netbsdelf*): Add armelfb_nbsd to targ_extra_emuls. + (arm-*-netbsd*): Likewise. + * emulparams/armelfb_nbsd.sh: New file. + +2002-05-18 Tom Rix + + * emultempl/aix.em (gld*_parse_args): Add -bnortl and -bnortllib + support. + +2002-05-17 Marek Michalkiewicz + + * Makefile.am: Add new emulations avr1, avr2, avr3, avr4, avr5. + * Makefile.in: Regenerate. + * configure.tgt (avr-*-*): Add avr[1-5] to targ_extra_emuls. + +2002-05-16 Marek Michalkiewicz + + * emulparams/avr1.sh: New file. + * emulparams/avr2.sh: New file. + * emulparams/avr3.sh: New file. + * emulparams/avr4.sh: New file. + * emulparams/avr5.sh: New file. + * scripttempl/avr.sc: New file. + +2002-05-15 Alan Modra + + * ldlang.c (section_already_linked): Call bfd_link_just_syms. + (lang_place_orphans): Abort if just_syms_flag. + +2002-05-10 Tom Rix + + * emultempl/aix.em: (gld*_set_output_arch): New function. Use + architecture and machine information in the output bfd. + (gld*_before_parse): Remove old arch and machine code. + (choose_target): Rename to gld*_choose_target. + (rtld): Change type to int. + * ldfile.c (ldfile_try_open_bfd): Disable compatiblity check for + objects in XCOFF archives. + * ldfile.h: Update copyright date. + +2002-05-10 Jakub Jelinek + + * ldmain.c (main): Enable -z combreloc by default. + +2002-05-07 Federico G. Schwindt + + * Makefile.am: Honour DESTDIR. + * Makefile.in: Regenerate. + +2002-05-07 Richard Sandiford + + * ldlang.h (lang_output_section_statement_type): Add update_dot_tree. + (lang_enter_overlay): Remove the last two parameters. + (lang_leave_overlay): Take them here instead. + * ldgram.y (memspec_at_opt): Set $$ to null if no region is given. + (section): Pass LMA and crossref flag to lang_leave_overlay rather + than lang_enter_overlay. + * ldlang.c (lang_memory_region_lookup): Return null for null names. + (lang_output_section_statement_lookup): Initialize update_dot_tree. + (lang_size_sections_1): Evaluate it. + (lang_leave_output_section_statement): Rework LMA lookup. + (overlay_lma, overlay_nocrossrefs): Remove. + (lang_enter_overlay): Remove LMA and crossref arguments. + (lang_enter_overlay_section): Don't set the LMA here. + (lang_leave_overlay): Take LMA and crossref arguments. Move the '.' + assignment to the last section's update_dot_tree. Unconditionally + use the load and run-time regions specified in the OVERLAY statement. + Likewise the first section's LMA. Only set the other sections' LMAs + when no load region is given. + +2002-05-06 Nick Clifton + + * po/sv.po: New translation. + +2002-05-04 Alan Modra + + * emultempl/hppaelf.em (build_section_lists): New function. + (gld${EMULATION_NAME}_finish): Call elf32_hppa_setup_section_lists + and build_section_lists. + +2002-05-03 Kazu Hirata + + * ld.h: Fix formatting. + * ldexp.c: Likewise. + * ldfile.c: Likewise. + * ldlang.c: Likewise. + * ldmain.c: Likewise. + * lexsup.c: Likewise. + * pe-dll.c: Likewise. + +2002-05-02 Alan Modra + + * emultempl/ppc64elf.em (gld${EMULATION_NAME}_after_allocation): + Adjust for ppc64_elf_set_toc change. #include libbfd.h. + (build_section_lists): Do output_section tests here. + +2002-04-30 Tom Rix + + * emultempl/aix.em : (gld*_parse_arge): Formatting changes. + +2002-05-01 Alan Modra + + Long branch stubs, multiple stub sections. + * emultempl/ppc64elf.em: Include ldctor.h. + (stub_file): New var. + (group_size): New var. + (ppc_create_output_section_statements): New function. + (struct hook_stub_info): New. + (hook_in_stub): New function. + (ppc_add_stub_section): New function. + (ppc_layout_sections_again): New function. + (build_section_lists): New function. + (gld${EMULATION_NAME}_finish): Rewrite. + (real_func): New var. + (ppc_for_each_input_file_wrapper): New function. + (ppc_lang_for_each_input_file): New function. + (lang_for_each_input_file): Define. + (PARSE_AND_LIST_PROLOGUE): Define. + (PARSE_AND_LIST_LONGOPTS): Define. + (PARSE_AND_LIST_OPTIONS): Define. + (PARSE_AND_LIST_ARGS_CASES): Define. + (LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS): Define. + +2002-04-30 Tom Rix + + * emultempl/aix.em (gld*_parse_arge, gld*_before_allocation): Add + -blibpath, -bnolibpath support. + +2002-04-30 Mark Mitchell + + * Makefile.am (ALL_EMULATIONS): Add elf32ppcwindiss.o. + (eelf32ppcwindiss.c): New target. + * Makefile.in: Regenerated. + * configure.tgt: Add support for powerpc-*-windiss. + * emulparams/elf32ppcwindiss.sh: New file. + +2002-04-30 Richard Sandiford + + * ldlang.c (print_assignment): Update print_dot for assignments to ".". + * ldexp.c (exp_print_token): Add "infix_p" argument. + (exp_print_tree): Update accordingly. + +2002-04-28 Alan Modra + + * Makefile.am (mpw): New maintainer mode rule to make mpw-*.c files. + * Makefile.in: Regenerate. + * mpw-elfmips.c: Delete. + * mpw-eppcmac.c: Delete. + * mpw-esh.c: Delete. + * mpw-idtmips.c: Delete. + Wed Apr 17 19:23:14 2002 J"orn Rennecke * emulparams/shelf32.sh (MACHINE): Now sh5. @@ -2513,7 +2786,7 @@ Mon Mar 18 17:38:39 CET 2002 Jan Hubick * scripttempl/i386go32.sc: Use PROVIDE with _etext, _edata, _end. Set DWARF2 sections to a VMA of zero. -2000-12-01 Joel Sherrill +2000-12-01 Joel Sherrill * configure.tgt (arm-*-rtems*, a29k-*rtems*, h8300-*-rtems*): New targets. @@ -3931,7 +4204,7 @@ Mon Mar 18 17:38:39 CET 2002 Jan Hubick (lang_one_common) Record size changes in octets. (lang_abs_symbol_at_end_of) Section end symbol's value is recorded in target bytes. - * ld.texinfo: Updated description of BYTE, SHORT, LONG, etc. + * ld.texinfo: Updated description of BYTE, SHORT, LONG, etc. to be clear about behavior when an octet is smaller than one byte. 2000-01-27 Alan Modra diff -uprN binutils-2.12.90.0.7/ld/Makefile.am binutils-2.12.90.0.9/ld/Makefile.am --- binutils-2.12.90.0.7/ld/Makefile.am Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/ld/Makefile.am Thu May 23 15:10:11 2002 @@ -120,6 +120,7 @@ ALL_EMULATIONS = \ earmelf_fbsd.o \ earmelf_linux.o \ earmelf_nbsd.o \ + earmelfb_nbsd.o \ earmelf_oabi.o \ earmnbsd.o \ earmpe.o \ @@ -131,6 +132,11 @@ ALL_EMULATIONS = \ eavrmega103.o \ eavrmega161.o \ eavrmega603.o \ + eavr1.o \ + eavr2.o \ + eavr3.o \ + eavr4.o \ + eavr5.o \ ecoff_sparc.o \ ecrisaout.o \ ecriself.o \ @@ -163,6 +169,7 @@ ALL_EMULATIONS = \ eelf32ppc_fbsd.o \ eelf32ppclinux.o \ eelf32ppcsim.o \ + eelf32ppcwindiss.o \ eelf32xstormy16.o \ eelf_i386.o \ eelf_i386_be.o \ @@ -392,6 +399,12 @@ earmelf_nbsd.c: $(srcdir)/emulparams/arm $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} armelf_nbsd "$(tdir_armelf_nbsd)" +earmelfb_nbsd.c: $(srcdir)/emulparams/armelfb_nbsd.sh \ + $(srcdir)/emulparams/armelf_nbsd.sh \ + $(srcdir)/emulparams/armelf.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} armelfb_nbsd "$(tdir_armelfb_nbsd)" earmaoutb.c: $(srcdir)/emulparams/armaoutb.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/armaout.sc ${GEN_DEPENDS} ${GENSCRIPTS} armaoutb "$(tdir_armaoutb)" @@ -442,6 +455,26 @@ eavrmega161.c: $(srcdir)/emulparams/avrm $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32avr.sc \ ${GEN_DEPENDS} ${GENSCRIPTS} avrmega161 "$(tdir_avr85xx)" +eavr1.c: $(srcdir)/emulparams/avr1.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr1 "$(tdir_avr85xx)" +eavr2.c: $(srcdir)/emulparams/avr2.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr2 "$(tdir_avr85xx)" +eavr3.c: $(srcdir)/emulparams/avr3.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr3 "$(tdir_avr85xx)" +eavr4.c: $(srcdir)/emulparams/avr4.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr4 "$(tdir_avr85xx)" +eavr5.c: $(srcdir)/emulparams/avr5.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr5 "$(tdir_avr85xx)" ecoff_sparc.c: $(srcdir)/emulparams/coff_sparc.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/sparccoff.sc ${GEN_DEPENDS} ${GENSCRIPTS} coff_sparc "$(tdir_coff_sparc)" @@ -540,6 +573,8 @@ eelf32lppcsim.c: $(srcdir)/emulparams/el $(srcdir)/emulparams/elf32lppc.sh $(srcdir)/emulparams/elf32ppc.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32lppcsim "$(tdir_elf32lppcsim)" +eelf32ppcwindiss.c: $(srcdir)/emulparams/elf32ppcwindiss.sh ${GEN_DEPENDS} + ${GENSCRIPTS} elf32ppcwindiss "$(tdir_elf32ppcwindiss)" eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \ $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1124,24 +1159,24 @@ CLEANFILES = dep.sed DEP DEPA DEP1 DEP2 .PHONY: install-exec-local install-data-local install-exec-local: ld-new$(EXEEXT) - $(mkinstalldirs) $(bindir) $(tooldir)/bin + $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin @list='$(noinst_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done n=`echo ld | sed '$(transform)'`; \ if [ "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/ld$(EXEEXT)" ]; then \ - rm -f $(tooldir)/bin/ld$(EXEEXT); \ - ln $(bindir)/$$n$(EXEEXT) $(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(tooldir)/bin/ld$(EXEEXT); \ + rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ fi install-data-local: - $(mkinstalldirs) $(scriptdir)/ldscripts + $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts for f in ldscripts/*; do \ - $(INSTALL_DATA) $$f $(scriptdir)/$$f ; \ + $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \ done # We want install to imply install-info as per GNU standards, despite the @@ -1202,6 +1237,29 @@ dep-am: DEP .PHONY: dep dep-in dep-am +@MAINT@.PHONY: mpw +@MAINT@mpw: $(srcdir)/mpw-ei386go32.c $(srcdir)/mpw-elfmips.c \ +@MAINT@ $(srcdir)/mpw-em68kcoff.c $(srcdir)/mpw-eppcmac.c \ +@MAINT@ $(srcdir)/mpw-esh.c $(srcdir)/mpw-idtmips.c +@MAINT@ +@MAINT@$(srcdir)/mpw-ei386go32.c: ei386go32.c +@MAINT@ $(srcdir)/../move-if-change $< $@ +@MAINT@ +@MAINT@$(srcdir)/mpw-elfmips.c: eelf32ebmip.c +@MAINT@ $(srcdir)/../move-if-change $< $@ +@MAINT@ +@MAINT@$(srcdir)/mpw-em68kcoff.c: em68kcoff.c +@MAINT@ $(srcdir)/../move-if-change $< $@ +@MAINT@ +@MAINT@$(srcdir)/mpw-eppcmac.c: eppcmacos.c +@MAINT@ $(srcdir)/../move-if-change $< $@ +@MAINT@ +@MAINT@$(srcdir)/mpw-esh.c: esh.c +@MAINT@ $(srcdir)/../move-if-change $< $@ +@MAINT@ +@MAINT@$(srcdir)/mpw-idtmips.c: emipsidt.c +@MAINT@ $(srcdir)/../move-if-change $< $@ + # What appears below is generated by a hacked mkdep using gcc -MM. # DO NOT DELETE THIS LINE -- mkdep uses it. diff -uprN binutils-2.12.90.0.7/ld/Makefile.in binutils-2.12.90.0.9/ld/Makefile.in --- binutils-2.12.90.0.7/ld/Makefile.in Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/ld/Makefile.in Thu May 23 15:10:11 2002 @@ -229,6 +229,7 @@ ALL_EMULATIONS = \ earmelf_fbsd.o \ earmelf_linux.o \ earmelf_nbsd.o \ + earmelfb_nbsd.o \ earmelf_oabi.o \ earmnbsd.o \ earmpe.o \ @@ -240,6 +241,11 @@ ALL_EMULATIONS = \ eavrmega103.o \ eavrmega161.o \ eavrmega603.o \ + eavr1.o \ + eavr2.o \ + eavr3.o \ + eavr4.o \ + eavr5.o \ ecoff_sparc.o \ ecrisaout.o \ ecriself.o \ @@ -272,6 +278,7 @@ ALL_EMULATIONS = \ eelf32ppc_fbsd.o \ eelf32ppclinux.o \ eelf32ppcsim.o \ + eelf32ppcwindiss.o \ eelf32xstormy16.o \ eelf_i386.o \ eelf_i386_be.o \ @@ -507,7 +514,7 @@ deffilep.c ldgram.c ldlex.c DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = tar +TAR = gtar GZIP_ENV = --best SOURCES = $(ld_new_SOURCES) $(EXTRA_ld_new_SOURCES) OBJECTS = $(ld_new_OBJECTS) @@ -1113,6 +1120,12 @@ earmelf_nbsd.c: $(srcdir)/emulparams/arm $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} armelf_nbsd "$(tdir_armelf_nbsd)" +earmelfb_nbsd.c: $(srcdir)/emulparams/armelfb_nbsd.sh \ + $(srcdir)/emulparams/armelf_nbsd.sh \ + $(srcdir)/emulparams/armelf.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} armelfb_nbsd "$(tdir_armelfb_nbsd)" earmaoutb.c: $(srcdir)/emulparams/armaoutb.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/armaout.sc ${GEN_DEPENDS} ${GENSCRIPTS} armaoutb "$(tdir_armaoutb)" @@ -1163,6 +1176,26 @@ eavrmega161.c: $(srcdir)/emulparams/avrm $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32avr.sc \ ${GEN_DEPENDS} ${GENSCRIPTS} avrmega161 "$(tdir_avr85xx)" +eavr1.c: $(srcdir)/emulparams/avr1.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr1 "$(tdir_avr85xx)" +eavr2.c: $(srcdir)/emulparams/avr2.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr2 "$(tdir_avr85xx)" +eavr3.c: $(srcdir)/emulparams/avr3.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr3 "$(tdir_avr85xx)" +eavr4.c: $(srcdir)/emulparams/avr4.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr4 "$(tdir_avr85xx)" +eavr5.c: $(srcdir)/emulparams/avr5.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr5 "$(tdir_avr85xx)" ecoff_sparc.c: $(srcdir)/emulparams/coff_sparc.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/sparccoff.sc ${GEN_DEPENDS} ${GENSCRIPTS} coff_sparc "$(tdir_coff_sparc)" @@ -1261,6 +1294,8 @@ eelf32lppcsim.c: $(srcdir)/emulparams/el $(srcdir)/emulparams/elf32lppc.sh $(srcdir)/emulparams/elf32ppc.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32lppcsim "$(tdir_elf32lppcsim)" +eelf32ppcwindiss.c: $(srcdir)/emulparams/elf32ppcwindiss.sh ${GEN_DEPENDS} + ${GENSCRIPTS} elf32ppcwindiss "$(tdir_elf32ppcwindiss)" eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \ $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1825,24 +1860,24 @@ mostlyclean-local: .PHONY: install-exec-local install-data-local install-exec-local: ld-new$(EXEEXT) - $(mkinstalldirs) $(bindir) $(tooldir)/bin + $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin @list='$(noinst_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done n=`echo ld | sed '$(transform)'`; \ if [ "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/ld$(EXEEXT)" ]; then \ - rm -f $(tooldir)/bin/ld$(EXEEXT); \ - ln $(bindir)/$$n$(EXEEXT) $(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(tooldir)/bin/ld$(EXEEXT); \ + rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ fi install-data-local: - $(mkinstalldirs) $(scriptdir)/ldscripts + $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts for f in ldscripts/*; do \ - $(INSTALL_DATA) $$f $(scriptdir)/$$f ; \ + $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \ done # We want install to imply install-info as per GNU standards, despite the @@ -1897,6 +1932,29 @@ dep-am: DEP .PHONY: dep dep-in dep-am +@MAINT@.PHONY: mpw +@MAINT@mpw: $(srcdir)/mpw-ei386go32.c $(srcdir)/mpw-elfmips.c \ +@MAINT@ $(srcdir)/mpw-em68kcoff.c $(srcdir)/mpw-eppcmac.c \ +@MAINT@ $(srcdir)/mpw-esh.c $(srcdir)/mpw-idtmips.c +@MAINT@ +@MAINT@$(srcdir)/mpw-ei386go32.c: ei386go32.c +@MAINT@ $(srcdir)/../move-if-change $< $@ +@MAINT@ +@MAINT@$(srcdir)/mpw-elfmips.c: eelf32ebmip.c +@MAINT@ $(srcdir)/../move-if-change $< $@ +@MAINT@ +@MAINT@$(srcdir)/mpw-em68kcoff.c: em68kcoff.c +@MAINT@ $(srcdir)/../move-if-change $< $@ +@MAINT@ +@MAINT@$(srcdir)/mpw-eppcmac.c: eppcmacos.c +@MAINT@ $(srcdir)/../move-if-change $< $@ +@MAINT@ +@MAINT@$(srcdir)/mpw-esh.c: esh.c +@MAINT@ $(srcdir)/../move-if-change $< $@ +@MAINT@ +@MAINT@$(srcdir)/mpw-idtmips.c: emipsidt.c +@MAINT@ $(srcdir)/../move-if-change $< $@ + # What appears below is generated by a hacked mkdep using gcc -MM. # DO NOT DELETE THIS LINE -- mkdep uses it. diff -uprN binutils-2.12.90.0.7/ld/configure binutils-2.12.90.0.9/ld/configure --- binutils-2.12.90.0.7/ld/configure Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/ld/configure Thu May 23 15:10:11 2002 @@ -3139,7 +3139,7 @@ EOF fi -for ac_hdr in unistd.h +for ac_hdr in stdlib.h unistd.h sys/stat.h sys/types.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 @@ -3271,11 +3271,24 @@ else #include #include +#if HAVE_SYS_TYPES_H +# include +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#if HAVE_SYS_STAT_H +# include +#endif + +#if HAVE_UNISTD_H +# include +#endif + /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE -# ifdef HAVE_UNISTD_H -# include -# endif /* Assume that all systems that can run configure have sys/param.h. */ # ifndef HAVE_SYS_PARAM_H @@ -3383,7 +3396,7 @@ main() } EOF -if { (eval echo configure:3387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3400: \"$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 @@ -3411,17 +3424,17 @@ unistd.h values.h sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3415: checking for $ac_hdr" >&5 +echo "configure:3428: 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:3425: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3438: \"$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* @@ -3451,12 +3464,12 @@ done __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3455: checking for $ac_func" >&5 +echo "configure:3468: 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:3496: \"$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 @@ -3508,12 +3521,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3512: checking for $ac_func" >&5 +echo "configure:3525: 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:3553: \"$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 @@ -3570,19 +3583,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:3574: checking for LC_MESSAGES" >&5 +echo "configure:3587: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:3586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -3603,7 +3616,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:3607: checking whether NLS is requested" >&5 +echo "configure:3620: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -3623,7 +3636,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:3627: checking whether included gettext is requested" >&5 +echo "configure:3640: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -3642,17 +3655,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:3646: checking for libintl.h" >&5 +echo "configure:3659: checking for libintl.h" >&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:3656: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3669: \"$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* @@ -3669,19 +3682,19 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:3673: checking for gettext in libc" >&5 +echo "configure:3686: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:3685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else @@ -3697,7 +3710,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1 if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:3701: checking for bindtextdomain in -lintl" >&5 +echo "configure:3714: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3705,7 +3718,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3732,19 +3745,19 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:3736: checking for gettext in libintl" >&5 +echo "configure:3749: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+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:3761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libintl=yes else @@ -3772,7 +3785,7 @@ EOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3776: checking for $ac_word" >&5 +echo "configure:3789: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3806,12 +3819,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3810: checking for $ac_func" >&5 +echo "configure:3823: 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:3851: \"$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 @@ -3861,7 +3874,7 @@ done # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3865: checking for $ac_word" >&5 +echo "configure:3878: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3897,7 +3910,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3901: checking for $ac_word" >&5 +echo "configure:3914: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3929,7 +3942,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -3969,7 +3982,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3973: checking for $ac_word" >&5 +echo "configure:3986: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4003,7 +4016,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4007: checking for $ac_word" >&5 +echo "configure:4020: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4039,7 +4052,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4043: checking for $ac_word" >&5 +echo "configure:4056: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4129,7 +4142,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:4133: checking for catalogs to be installed" >&5 +echo "configure:4146: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -4157,17 +4170,17 @@ echo "configure:4133: checking for catal if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:4161: checking for linux/version.h" >&5 +echo "configure:4174: checking for linux/version.h" >&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:4171: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4184: \"$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* @@ -4232,7 +4245,7 @@ fi echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:4236: checking for executable suffix" >&5 +echo "configure:4249: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4242,7 +4255,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:4246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:4259: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -4268,7 +4281,7 @@ 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:4272: checking for $ac_word" >&5 +echo "configure:4285: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4304,7 +4317,7 @@ 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:4308: checking for $ac_word" >&5 +echo "configure:4321: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4337,7 +4350,7 @@ test -n "$LEX" || LEX=""$missing_dir/mis # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4341: checking for $ac_word" >&5 +echo "configure:4354: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4371,7 +4384,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:4375: checking for yywrap in -l$ac_lib" >&5 +echo "configure:4388: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4379,7 +4392,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4413,7 +4426,7 @@ fi fi echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:4417: checking lex output file root" >&5 +echo "configure:4430: checking lex output file root" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4434,7 +4447,7 @@ echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 -echo "configure:4438: checking whether yytext is a pointer" >&5 +echo "configure:4451: checking whether yytext is a pointer" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4446,14 +4459,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPU ac_save_LIBS="$LIBS" LIBS="$LIBS $LEXLIB" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_prog_lex_yytext_pointer=yes else @@ -4476,7 +4489,7 @@ fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:4480: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:4493: 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" @@ -4510,17 +4523,17 @@ for ac_hdr in string.h strings.h stdlib. do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4514: checking for $ac_hdr" >&5 +echo "configure:4527: 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:4524: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4537: \"$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* @@ -4549,12 +4562,12 @@ done for ac_func in sbrk do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4553: checking for $ac_func" >&5 +echo "configure:4566: 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:4594: \"$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 @@ -4606,12 +4619,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/di do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:4610: checking for $ac_hdr that defines DIR" >&5 +echo "configure:4623: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -4619,7 +4632,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:4623: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -4644,7 +4657,7 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:4648: checking for opendir in -ldir" >&5 +echo "configure:4661: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4652,7 +4665,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4685,7 +4698,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:4689: checking for opendir in -lx" >&5 +echo "configure:4702: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4693,7 +4706,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4728,12 +4741,12 @@ fi echo $ac_n "checking whether weak symbol works""... $ac_c" 1>&6 -echo "configure:4732: checking whether weak symbol works" >&5 +echo "configure:4745: checking whether weak symbol works" >&5 if eval "test \"`echo '$''{'libiberty_cv_have_weak_symbol'+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:4759: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libiberty_cv_have_weak_symbol=no else @@ -4766,14 +4779,14 @@ if test $libiberty_cv_have_weak_symbol = # demangler may use dlopen. echo $ac_n "checking for library containing dlopen""... $ac_c" 1>&6 -echo "configure:4770: checking for library containing dlopen" >&5 +echo "configure:4783: checking for library containing dlopen" >&5 if eval "test \"`echo '$''{'ac_cv_search_dlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_func_search_save_LIBS="$LIBS" ac_cv_search_dlopen="no" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_dlopen="none required" else @@ -4795,7 +4808,7 @@ rm -f conftest* test "$ac_cv_search_dlopen" = "no" && for i in dl; do LIBS="-l$i $ac_func_search_save_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_dlopen="-l$i" break @@ -4838,12 +4851,12 @@ EOF esac echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6 -echo "configure:4842: checking whether strstr must be declared" >&5 +echo "configure:4855: checking whether strstr must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_strstr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4864,7 +4877,7 @@ int main() { char *(*pfn) = (char *(*)) strstr ; return 0; } EOF -if { (eval echo configure:4868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4881: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_strstr=no else @@ -4885,12 +4898,12 @@ EOF fi echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6 -echo "configure:4889: checking whether free must be declared" >&5 +echo "configure:4902: checking whether free must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_free'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4911,7 +4924,7 @@ int main() { char *(*pfn) = (char *(*)) free ; return 0; } EOF -if { (eval echo configure:4915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_free=no else @@ -4932,12 +4945,12 @@ EOF fi echo $ac_n "checking whether sbrk must be declared""... $ac_c" 1>&6 -echo "configure:4936: checking whether sbrk must be declared" >&5 +echo "configure:4949: checking whether sbrk must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_sbrk'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4958,7 +4971,7 @@ int main() { char *(*pfn) = (char *(*)) sbrk ; return 0; } EOF -if { (eval echo configure:4962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4975: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_sbrk=no else @@ -4979,12 +4992,12 @@ EOF fi echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6 -echo "configure:4983: checking whether getenv must be declared" >&5 +echo "configure:4996: checking whether getenv must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_getenv'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5005,7 +5018,7 @@ int main() { char *(*pfn) = (char *(*)) getenv ; return 0; } EOF -if { (eval echo configure:5009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_getenv=no else @@ -5026,12 +5039,12 @@ EOF fi echo $ac_n "checking whether environ must be declared""... $ac_c" 1>&6 -echo "configure:5030: checking whether environ must be declared" >&5 +echo "configure:5043: checking whether environ must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_environ'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5052,7 +5065,7 @@ int main() { char *(*pfn) = (char *(*)) environ ; return 0; } EOF -if { (eval echo configure:5056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5069: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_environ=no else @@ -5080,19 +5093,19 @@ fi # constants, while still supporting pre-ANSI compilers which do not # support string concatenation. echo $ac_n "checking whether ANSI C string concatenation works""... $ac_c" 1>&6 -echo "configure:5084: checking whether ANSI C string concatenation works" >&5 +echo "configure:5097: checking whether ANSI C string concatenation works" >&5 if eval "test \"`echo '$''{'ld_cv_string_concatenation'+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:5109: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ld_cv_string_concatenation=yes else diff -uprN binutils-2.12.90.0.7/ld/configure.host binutils-2.12.90.0.9/ld/configure.host --- binutils-2.12.90.0.7/ld/configure.host Mon Apr 8 10:37:22 2002 +++ binutils-2.12.90.0.9/ld/configure.host Thu May 23 15:10:11 2002 @@ -12,7 +12,7 @@ HDEFINES= HOSTING_CRT0=/lib/crt0.o HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ]; then libgcc=../gcc/libgcc.a; else libgcc=\`${CC} -print-libgcc-file-name\`; fi; if [ -f ../gcc/libgcc_eh.a ]; then libgcc="$libgcc ../gcc/libgcc_eh.a"; else libgcc_eh=\`${CC} -print-file-name=libgcc_eh.a\`; if [ x"$libgcc_eh" != xlibgcc_eh.a ]; then libgcc="$libgcc $libgcc_eh"; fi; fi; echo $libgcc -lc $libgcc`' -NATIVE_LIB_DIRS= +NATIVE_LIB_DIRS='/usr/local/lib /lib /usr/lib' # # Generic configurations: @@ -21,7 +21,7 @@ NATIVE_LIB_DIRS= case "${host}" in *-*-freebsd*) - NATIVE_LIB_DIRS=/usr/lib + NATIVE_LIB_DIRS='/lib /usr/lib /usr/local/lib' # Older versions of gcc do not use a specs file. In those cases, # gcc -print-file-name=specs will simply print specs. We create a # dummy specs files to handle this. @@ -57,11 +57,6 @@ case "${host}" in ;; alpha*-*-netbsd*) - # The new BSD `make' has a bug: it doesn't pass empty arguments in - # shell commands. So we need to make this value non-empty in order - # for the genscripts.sh call to work. There's nothing magic about - # the value `/lib'; it's just a dummy. - NATIVE_LIB_DIRS=/lib HOSTING_CRT0=/usr/lib/crt0.o ;; @@ -70,18 +65,13 @@ arm*-*-linux-gnu*) ;; i[3456]86-*-bsd* | i[34567]86-*-freebsd[12] | i[34567]86-*-freebsd[12]\.* | i[34567]86-*-freebsd*aout* | i[3456]86-*-netbsd*) - # The new BSD `make' has a bug: it doesn't pass empty arguments in - # shell commands. So we need to make this value non-empty in order - # for the genscripts.sh call to work. There's nothing magic about - # the value `/lib'; it's just a dummy. - NATIVE_LIB_DIRS=/lib HOSTING_CRT0=/usr/lib/crt0.o ;; i[3456]86-*-sysv4*) HOSTING_CRT0='/usr/ccs/lib/crt1.o /usr/ccs/lib/crti.o /usr/ccs/lib/values-Xa.o `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else ${CC} -print-file-name=crtbegin.o; fi`' HOSTING_LIBS="$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} -print-file-name=crtend.o; fi` /usr/ccs/lib/crtn.o' - NATIVE_LIB_DIRS=/usr/ccs/lib + NATIVE_LIB_DIRS='/usr/local/lib /usr/ccs/lib /lib /usr/lib' ;; i[3456]86-sequent-ptx* | i[3456]86-sequent-sysv*) @@ -97,7 +87,7 @@ i[3456]86-*-sysv*) i[3456]86-*-solaris*) HOSTING_CRT0='`if [ -f ../gcc/crt1.o ]; then echo ../gcc/crt1.o; else ${CC} -print-file-name=crt1.o; fi` `if [ -f ../gcc/crti.o ]; then echo ../gcc/crti.o; else ${CC} -print-file-name=crti.o; fi` /usr/ccs/lib/values-Xa.o `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else ${CC} -print-file-name=crtbegin.o; fi`' HOSTING_LIBS="$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} -print-file-name=crtend.o; fi` `if [ -f ../gcc/crtn.o ]; then echo ../gcc/crtn.o; else ${CC} -print-file-name=crtn.o; fi`' - NATIVE_LIB_DIRS=/usr/ccs/lib + NATIVE_LIB_DIRS='/usr/local/lib /usr/ccs/lib /lib /usr/lib' ;; i[3456]86-*-sco* | i[3456]86-*-isc*) @@ -122,7 +112,7 @@ i[3456]86-*-lynxos*) i[3456]86-pc-interix*) HOSTING_CRT0='$$INTERIX_ROOT/usr/lib/crt0.o' - NATIVE_LIB_DIRS='$$INTERIX_ROOT/usr/lib/' + NATIVE_LIB_DIRS='/usr/local/lib $$INTERIX_ROOT/usr/lib /lib /usr/lib' HOSTING_LIBS='-L $$X/local_bin -L $$INTERIX_ROOT/usr/lib '"$HOSTING_LIBS"' -lcpsx -lc -lcpsx $$INTERIX_ROOT/usr/lib/psxdll.a $$INTERIX_ROOT/usr/lib/psxdll2.a' ;; @@ -137,7 +127,7 @@ ia64-*-linux-gnu*) ia64-*-aix*) HOSTING_CRT0='-dynamic-linker `egrep "libc.so" \`${CC} --print-file-name=specs\` | sed -e "s,.*-dynamic-linker[ ][ ]*\(.*/libc.so..\).*,\1,"` `${CC} --print-file-name=crt1.o` `${CC} --print-file-name=crti.o` `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else ${CC} --print-file-name=crtbegin.o; fi`' HOSTING_LIBS='-L`dirname \`${CC} --print-file-name=libc.so\`` '"$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} --print-file-name=crtend.o; fi` `${CC} --print-file-name=crtn.o`' - NATIVE_LIB_DIRS=/usr/lib/ia64l64 + NATIVE_LIB_DIRS='/usr/local/lib /usr/lib/ia64l64 /lib /usr/lib' ;; mips*-dec-bsd*) @@ -202,7 +192,7 @@ s390-*-linux-gnu*) sparc*-*-solaris2*) HOSTING_CRT0='`if [ -f ../gcc/crt1.o ]; then echo ../gcc/crt1.o; else ${CC} -print-file-name=crt1.o; fi` `if [ -f ../gcc/crti.o ]; then echo ../gcc/crti.o; else ${CC} -print-file-name=crti.o; fi` /usr/ccs/lib/values-Xa.o `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else ${CC} -print-file-name=crtbegin.o; fi`' HOSTING_LIBS="$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} -print-file-name=crtend.o; fi` `if [ -f ../gcc/crtn.o ]; then echo ../gcc/crtn.o; else ${CC} -print-file-name=crtn.o; fi`' - NATIVE_LIB_DIRS=/usr/ccs/lib + NATIVE_LIB_DIRS='/usr/local/lib /usr/ccs/lib /lib /usr/lib' ;; sparc-*-linux-gnu*) @@ -224,7 +214,6 @@ x86_64-*-linux-gnu*) ;; *-*-netbsd*) - NATIVE_LIB_DIRS=/usr/lib # NetBSD typically does not use the GCC crtstuff, so ignore it. HOSTING_CRT0='-dynamic-linker /usr/libexec/ld.elf_so /usr/lib/crt0.o /usr/lib/crtbegin.o' HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` -lc `if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` /usr/lib/crtend.o' @@ -232,7 +221,7 @@ x86_64-*-linux-gnu*) alpha*-*-*) HOSTING_CRT0=/usr/ccs/lib/crt0.o - NATIVE_LIB_DIRS=/usr/ccs/lib + NATIVE_LIB_DIRS='/usr/local/lib /usr/ccs/lib /lib /usr/lib' ;; romp-*-*) diff -uprN binutils-2.12.90.0.7/ld/configure.in binutils-2.12.90.0.9/ld/configure.in --- binutils-2.12.90.0.7/ld/configure.in Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/ld/configure.in Thu May 23 15:10:11 2002 @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script dnl -AC_PREREG(2.13) +AC_PREREQ(2.13) AC_INIT(ldmain.c) AC_CANONICAL_SYSTEM diff -uprN binutils-2.12.90.0.7/ld/configure.tgt binutils-2.12.90.0.9/ld/configure.tgt --- binutils-2.12.90.0.7/ld/configure.tgt Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/ld/configure.tgt Sun May 26 09:57:12 2002 @@ -22,7 +22,7 @@ arm-*-pe) targ_emul=armpe ; targ_extra_ofiles="deffilep.o pe-dll.o" ;; arc-*-elf*) targ_emul=arcelf ;; avr-*-*) targ_emul=avr85xx - targ_extra_emuls="avr1200 avr23xx avr44x4 avr4433 avrmega603 avrmega103 avrmega161" ;; + targ_extra_emuls="avr1200 avr23xx avr44x4 avr4433 avrmega603 avrmega103 avrmega161 avr1 avr2 avr3 avr4 avr5" ;; cris-*-*aout*) targ_emul=crisaout targ_extra_emuls="criself crislinux" targ_extra_libpath=$targ_extra_emuls ;; @@ -160,6 +160,9 @@ i[3456]86-*-solaris*) targ_emul=elf_i3 i[3456]86-*-netbsdelf*) targ_emul=elf_i386 targ_extra_emuls=i386nbsd ;; +i[3456]86-*-netbsdpe*) targ_emul=i386pe + targ_extra_ofiles="deffilep.o pe-dll.o" + ;; i[3456]86-*-netbsd*) targ_emul=i386nbsd targ_extra_emuls=elf_i386 ;; @@ -217,10 +220,12 @@ arm-*-coff) targ_emul=armcoff ;; arm-*-vxworks) targ_emul=armcoff ;; arm-*-freebsd*) targ_emul=armelf_fbsd targ_extra_emuls="armelf" ;; +armeb-*-netbsdelf*) targ_emul=armelfb_nbsd; + targ_extra_emuls="armelf_nbsd armelf armnbsd" ;; arm-*-netbsdelf*) targ_emul=armelf_nbsd; - targ_extra_emuls="armelf armnbsd" ;; + targ_extra_emuls="armelfb_nbsd armelf armnbsd" ;; arm-*-netbsd*) targ_emul=armnbsd; - targ_extra_emuls="armelf armelf_nbsd" ;; + targ_extra_emuls="armelf armelf_nbsd armelfb_nbsd" ;; arm-*-openbsd*) targ_emul=armnbsd ;; arm-*-rtems*) targ_emul=armelf ;; arm-*-elf) targ_emul=armelf ;; @@ -394,7 +399,11 @@ powerpc-*-freebsd*) targ_emul=elf32ppc_f powerpc*-*-linux*) case "${targ}" in *64*) targ_emul=elf64ppc - targ_extra_emuls="elf32ppclinux elf32ppc elf32ppcsim" ;; + targ_extra_emuls="elf32ppclinux elf32ppc elf32ppcsim" + targ_extra_libpath=elf32ppclinux + tdir_elf32ppc=`echo "${targ_alias}" | sed -e 's/64//'` + tdir_elf32ppclinux=$tdir_elf32ppc + tdir_elf32ppcsim=$tdir_elf32ppc ;; *) targ_emul=elf32ppclinux targ_extra_emuls="elf32ppc elf32ppcsim" targ_extra_libpath=elf32ppc ;; @@ -403,7 +412,9 @@ powerpc*le-*-elf* | powerpc*le-*-eabi* | | powerpc*le-*-sysv* | powerpc*le-*-vxworks*) case "${targ}" in *64*) targ_emul=elf64lppc - targ_extra_emuls="elf32lppc elf32ppcsim" ;; + targ_extra_emuls="elf32lppc elf32lppcsim" + tdir_elf32lppc=`echo "${targ_alias}" | sed -e 's/64//'` + tdir_elf32lppcsim=$tdir_elf32lppc ;; *) targ_emul=elf32lppc targ_extra_emuls="elf32ppcsim" ;; esac ;; @@ -411,7 +422,10 @@ powerpc*-*-elf* | powerpc*-*-eabi* | pow | powerpc*-*-netbsd* | powerpc*-*-vxworks*) case "${targ}" in *64*) targ_emul=elf64ppc - targ_extra_emuls="elf32ppc elf32ppclinux elf32ppcsim" ;; + targ_extra_emuls="elf32ppc elf32ppclinux elf32ppcsim" + tdir_elf32ppc=`echo "${targ_alias}" | sed -e 's/64//'` + tdir_elf32ppclinux=$tdir_elf32ppc + tdir_elf32ppcsim=$tdir_elf32ppc ;; *) targ_emul=elf32ppc targ_extra_emuls="elf32ppclinux elf32ppcsim" ;; esac ;; @@ -425,6 +439,7 @@ powerpcle-*-cygwin*) targ_emul=ppcpe powerpc-*-aix5*) targ_emul=aix5ppc ;; powerpc-*-aix*) targ_emul=aixppc ;; powerpc-*-beos*) targ_emul=aixppc ;; +powerpc-*-windiss*) targ_emul=elf32ppcwindiss ;; rs6000-*-aix5*) targ_emul=aix5rs6 ;; rs6000-*-aix*) targ_emul=aixrs6 ;; tic30-*-*aout*) targ_emul=tic30aout ;; diff -uprN binutils-2.12.90.0.7/ld/emulparams/armelfb_nbsd.sh binutils-2.12.90.0.9/ld/emulparams/armelfb_nbsd.sh --- binutils-2.12.90.0.7/ld/emulparams/armelfb_nbsd.sh Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/emulparams/armelfb_nbsd.sh Thu May 23 15:10:11 2002 @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/armelf_nbsd.sh +OUTPUT_FORMAT="elf32-bigarm" diff -uprN binutils-2.12.90.0.7/ld/emulparams/avr1.sh binutils-2.12.90.0.9/ld/emulparams/avr1.sh --- binutils-2.12.90.0.7/ld/emulparams/avr1.sh Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/emulparams/avr1.sh Thu May 23 15:10:11 2002 @@ -0,0 +1,10 @@ +ARCH=avr:1 +MACHINE= +SCRIPT_NAME=avr +OUTPUT_FORMAT="elf32-avr" +MAXPAGESIZE=1 +EMBEDDED=yes +TEMPLATE_NAME=generic + +TEXT_LENGTH=8K +DATA_LENGTH=0 diff -uprN binutils-2.12.90.0.7/ld/emulparams/avr2.sh binutils-2.12.90.0.9/ld/emulparams/avr2.sh --- binutils-2.12.90.0.7/ld/emulparams/avr2.sh Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/emulparams/avr2.sh Thu May 23 15:10:11 2002 @@ -0,0 +1,10 @@ +ARCH=avr:2 +MACHINE= +SCRIPT_NAME=avr +OUTPUT_FORMAT="elf32-avr" +MAXPAGESIZE=1 +EMBEDDED=yes +TEMPLATE_NAME=generic + +TEXT_LENGTH=8K +DATA_LENGTH=0xffa0 diff -uprN binutils-2.12.90.0.7/ld/emulparams/avr3.sh binutils-2.12.90.0.9/ld/emulparams/avr3.sh --- binutils-2.12.90.0.7/ld/emulparams/avr3.sh Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/emulparams/avr3.sh Thu May 23 15:10:11 2002 @@ -0,0 +1,10 @@ +ARCH=avr:3 +MACHINE= +SCRIPT_NAME=avr +OUTPUT_FORMAT="elf32-avr" +MAXPAGESIZE=1 +EMBEDDED=yes +TEMPLATE_NAME=generic + +TEXT_LENGTH=128K +DATA_LENGTH=0xffa0 diff -uprN binutils-2.12.90.0.7/ld/emulparams/avr4.sh binutils-2.12.90.0.9/ld/emulparams/avr4.sh --- binutils-2.12.90.0.7/ld/emulparams/avr4.sh Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/emulparams/avr4.sh Thu May 23 15:10:11 2002 @@ -0,0 +1,10 @@ +ARCH=avr:4 +MACHINE= +SCRIPT_NAME=avr +OUTPUT_FORMAT="elf32-avr" +MAXPAGESIZE=1 +EMBEDDED=yes +TEMPLATE_NAME=generic + +TEXT_LENGTH=8K +DATA_LENGTH=0xffa0 diff -uprN binutils-2.12.90.0.7/ld/emulparams/avr5.sh binutils-2.12.90.0.9/ld/emulparams/avr5.sh --- binutils-2.12.90.0.7/ld/emulparams/avr5.sh Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/emulparams/avr5.sh Thu May 23 15:10:11 2002 @@ -0,0 +1,10 @@ +ARCH=avr:5 +MACHINE= +SCRIPT_NAME=avr +OUTPUT_FORMAT="elf32-avr" +MAXPAGESIZE=1 +EMBEDDED=yes +TEMPLATE_NAME=generic + +TEXT_LENGTH=128K +DATA_LENGTH=0xffa0 diff -uprN binutils-2.12.90.0.7/ld/emulparams/elf32ppc.sh binutils-2.12.90.0.9/ld/emulparams/elf32ppc.sh --- binutils-2.12.90.0.7/ld/emulparams/elf32ppc.sh Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/ld/emulparams/elf32ppc.sh Thu May 23 15:10:11 2002 @@ -17,3 +17,22 @@ OTHER_READWRITE_SECTIONS=" .got1 ${RELOCATING-0} : { *(.got1) } .got2 ${RELOCATING-0} : { *(.got2) } " + +# Treat a host that matches the target with the possible exception of "64" +# in the name as if it were native. +if test `echo "$host" | sed -e s/64//` = `echo "$target" | sed -e s/64//`; then + case " $EMULATION_LIBPATH " in + *" ${EMULATION_NAME} "*) + LIB_PATH=${libdir} + for lib in ${NATIVE_LIB_DIRS}; do + case :${LIB_PATH}: in + *:${lib}:*) ;; + *) LIB_PATH=${LIB_PATH}:${lib} ;; + esac + done + # Look for 64 bit target libraries in /lib64, /usr/lib64 etc., first. + case "$EMULATION_NAME" in + *64*) LIB_PATH=`echo ${LIB_PATH}: | sed -e s,:,64:,g`$LIB_PATH + esac + esac +fi diff -uprN binutils-2.12.90.0.7/ld/emulparams/elf32ppcwindiss.sh binutils-2.12.90.0.9/ld/emulparams/elf32ppcwindiss.sh --- binutils-2.12.90.0.7/ld/emulparams/elf32ppcwindiss.sh Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/emulparams/elf32ppcwindiss.sh Thu May 23 15:10:11 2002 @@ -0,0 +1,23 @@ +TEMPLATE_NAME=elf32 +SCRIPT_NAME=elf +OUTPUT_FORMAT="elf32-powerpc" +ARCH=powerpc +MACHINE= +EMBEDDED=yes +MAXPAGESIZE=0x10000 + +# The data below is taken from the windiss.dld linker script that comes with +# the Diab linker. +TEXT_START_ADDR=0x100000 +DATA_START_SYMBOLS='__DATA_ROM = .; __DATA_RAM = .;' +EXECUTABLE_SYMBOLS='__HEAP_START = .; __SP_INIT = 0x800000; __SP_END = __SP_INIT - 0x20000; __HEAP_END = __SP_END; __DATA_END = _edata; __BSS_START = __bss_start; __BSS_END = _end; __HEAP_START = _end;' + +# The Diab tools use a different init/fini convention. Initialization code +# is place in sections named ".init$NN". These sections are then concatenated +# into the .init section. It is important that .init$00 be first and .init$99 +# be last. The other sections should be sorted, but the current linker script +# parse does not seem to allow that with the SORT keyword in this context. +INIT_START='*(.init$00); *(.init$0[1-9]); *(.init$[1-8][0-9]); *(.init$9[0-8])' +INIT_END='*(.init$99)' +FINI_START='*(.fini$00); *(.fini$0[1-9]); *(.fini$[1-8][0-9]); *(.fini$9[0-8])' +FINI_END='*(.fini$99)' diff -uprN binutils-2.12.90.0.7/ld/emulparams/elf64ppc.sh binutils-2.12.90.0.9/ld/emulparams/elf64ppc.sh --- binutils-2.12.90.0.7/ld/emulparams/elf64ppc.sh Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/ld/emulparams/elf64ppc.sh Thu May 23 15:10:11 2002 @@ -28,3 +28,22 @@ OTHER_GOT_RELOC_SECTIONS=" OTHER_READWRITE_SECTIONS=" .toc1 ${RELOCATING-0}${RELOCATING+ALIGN(8)} : { *(.toc1) } .opd ${RELOCATING-0}${RELOCATING+ALIGN(8)} : { *(.opd) }" + +# Treat a host that matches the target with the possible exception of "64" +# in the name as if it were native. +if test `echo "$host" | sed -e s/64//` = `echo "$target" | sed -e s/64//`; then + case " $EMULATION_LIBPATH " in + *" ${EMULATION_NAME} "*) + LIB_PATH=${libdir} + for lib in ${NATIVE_LIB_DIRS}; do + case :${LIB_PATH}: in + *:${lib}:*) ;; + *) LIB_PATH=${LIB_PATH}:${lib} ;; + esac + done + # Look for 64 bit target libraries in /lib64, /usr/lib64 etc., first. + case "$EMULATION_NAME" in + *64*) LIB_PATH=`echo ${LIB_PATH}: | sed -e s,:,64:,g`$LIB_PATH + esac + esac +fi diff -uprN binutils-2.12.90.0.7/ld/emultempl/aix.em binutils-2.12.90.0.9/ld/emultempl/aix.em --- binutils-2.12.90.0.7/ld/emultempl/aix.em Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/ld/emultempl/aix.em Thu May 23 15:10:11 2002 @@ -53,11 +53,13 @@ Foundation, Inc., 59 Temple Place - Suit #include "coff/internal.h" #include "coff/xcoff.h" +#include "libcoff.h" +#include "libxcoff.h" static void gld${EMULATION_NAME}_before_parse PARAMS ((void)); static int gld${EMULATION_NAME}_parse_args PARAMS ((int, char **)); static void gld${EMULATION_NAME}_after_open PARAMS ((void)); -static char *choose_target PARAMS ((int, char **)); +static char *gld${EMULATION_NAME}_choose_target PARAMS ((int, char **)); static void gld${EMULATION_NAME}_before_allocation PARAMS ((void)); static void gld${EMULATION_NAME}_read_file PARAMS ((const char *, boolean)); static void gld${EMULATION_NAME}_free PARAMS ((PTR)); @@ -68,7 +70,9 @@ static char *gld${EMULATION_NAME}_get_sc static boolean gld${EMULATION_NAME}_unrecognized_file PARAMS ((lang_input_statement_type *)); static void gld${EMULATION_NAME}_create_output_section_statements - PARAMS((void)); + PARAMS ((void)); +static void gld${EMULATION_NAME}_set_output_arch PARAMS ((void)); + static int is_syscall PARAMS ((char *, unsigned int *)); static int change_symbol_mode PARAMS ((char *)); @@ -131,25 +135,19 @@ static unsigned int syscall_mask = 0x77; /* fake file for -binitfini support */ static lang_input_statement_type *initfini_file; -/* Whether to do run time linking */ -static boolean rtld; +/* Whether to do run time linking + -brtl enables, -bnortl and -bnortllib disable. */ +static int rtld; + +/* Explicit command line library path, -blibpath */ +static char *command_line_blibpath = NULL; /* This routine is called before anything else is done. */ static void gld${EMULATION_NAME}_before_parse () { -#ifndef TARGET_ /* I.e., if not generic. */ - const bfd_arch_info_type *arch = bfd_scan_arch ("${OUTPUT_ARCH}"); - if (arch) - { - ldfile_output_architecture = arch->arch; - ldfile_output_machine = arch->mach; - ldfile_output_machine_name = arch->printable_name; - } - else - ldfile_output_architecture = bfd_arch_${ARCH}; -#endif /* not TARGET_ */ + config.has_shared = true; /* The link_info.[init|fini]_functions are initialized in ld/lexsup.c. @@ -196,6 +194,8 @@ gld${EMULATION_NAME}_parse_args (argc, a OPTION_UNIX, OPTION_32, OPTION_64, + OPTION_LIBPATH, + OPTION_NOLIBPATH, }; /* -binitfini has special handling in the linker backend. The native linker @@ -244,6 +244,8 @@ gld${EMULATION_NAME}_parse_args (argc, a {"bpT", required_argument, NULL, OPTION_PT}, {"bro", no_argument, &textro, 1}, {"brtl", no_argument, &rtld, 1}, + {"bnortl", no_argument, &rtld, 0}, + {"bnortllib", no_argument, &rtld, 0}, {"bS", required_argument, NULL, OPTION_MAXSTACK}, {"bso", no_argument, NULL, OPTION_AUTOIMP}, {"bstrcmpct", no_argument, NULL, OPTION_STRCMPCT}, @@ -252,6 +254,8 @@ gld${EMULATION_NAME}_parse_args (argc, a {"b64", no_argument, NULL, OPTION_64}, {"static", no_argument, NULL, OPTION_NOAUTOIMP}, {"unix", no_argument, NULL, OPTION_UNIX}, + {"blibpath", required_argument, NULL, OPTION_LIBPATH}, + {"bnolibpath", required_argument, NULL, OPTION_NOLIBPATH}, {NULL, no_argument, NULL, 0} }; @@ -518,6 +522,14 @@ gld${EMULATION_NAME}_parse_args (argc, a symbol_mode_mask = 0x0e; break; + case OPTION_LIBPATH: + command_line_blibpath = optarg; + break; + + case OPTION_NOLIBPATH: + command_line_blibpath = NULL; + break; + } return 1; @@ -638,10 +650,13 @@ gld${EMULATION_NAME}_before_allocation ( .loader relocs for them. */ lang_for_each_statement (gld${EMULATION_NAME}_find_relocs); - /* We need to build LIBPATH from the -L arguments. If any -rpath - arguments were used, though, we use -rpath instead, as a GNU - extension. */ - if (command_line.rpath != NULL) + /* Precedence of LIBPATH + -blibpath: native support always first + -rpath: gnu extension + -L build from command line -L's */ + if (command_line_blibpath != NULL) + libpath = command_line_blibpath; + else if (command_line.rpath != NULL) libpath = command_line.rpath; else if (search_head == NULL) libpath = (char *) ""; @@ -669,7 +684,8 @@ gld${EMULATION_NAME}_before_allocation ( if (!bfd_xcoff_size_dynamic_sections (output_bfd, &link_info, libpath, entry_symbol, file_align, maxstack, maxdata, gc && !unix_ld ? true : false, - modtype, textro ? true : false, unix_ld, special_sections, rtld)) + modtype, textro ? true : false, unix_ld, special_sections, + rtld ? true : false)) einfo ("%P%F: failed to set dynamic section sizes: %E\n"); /* Look through the special sections, and put them in the right @@ -788,7 +804,7 @@ gld${EMULATION_NAME}_before_allocation ( } static char * -choose_target (argc, argv) +gld${EMULATION_NAME}_choose_target (argc, argv) int argc; char **argv; { @@ -1286,7 +1302,7 @@ fi cat >>e${EMULATION_NAME}.c <>e${EMULATION_NAME}.c <>e${EMULATION_NAME}.c <header.type == lang_input_section_enum + && !statement->input_section.ifile->just_syms_flag + && statement->input_section.section->output_section != NULL + && statement->input_section.section->output_section->owner == output_bfd) + { + elf32_hppa_next_input_section (&link_info, + statement->input_section.section); + } +} + + /* Final emulation specific call. For the PA we use this opportunity to build linker stubs. */ static void gld${EMULATION_NAME}_finish () { + int ret; + /* If generating a relocatable output file, then we don't have to examine the relocs. */ if (link_info.relocateable) @@ -259,17 +277,29 @@ gld${EMULATION_NAME}_finish () if (bfd_elf${ELFSIZE}_discard_info (output_bfd, &link_info)) need_laying_out = 1; - /* Call into the BFD backend to do the real work. */ - if (! elf32_hppa_size_stubs (output_bfd, - stub_file->the_bfd, - &link_info, - multi_subspace, - group_size, - &hppaelf_add_stub_section, - &hppaelf_layout_sections_again)) + ret = elf32_hppa_setup_section_lists (output_bfd, &link_info); + if (ret != 0) { - einfo ("%X%P: can not size stub section: %E\n"); - return; + if (ret < 0) + { + einfo ("%X%P: can not size stub section: %E\n"); + return; + } + + lang_for_each_statement (build_section_lists); + + /* Call into the BFD backend to do the real work. */ + if (! elf32_hppa_size_stubs (output_bfd, + stub_file->the_bfd, + &link_info, + multi_subspace, + group_size, + &hppaelf_add_stub_section, + &hppaelf_layout_sections_again)) + { + einfo ("%X%P: can not size stub section: %E\n"); + return; + } } if (need_laying_out) diff -uprN binutils-2.12.90.0.7/ld/emultempl/linux.em binutils-2.12.90.0.9/ld/emultempl/linux.em --- binutils-2.12.90.0.7/ld/emultempl/linux.em Thu May 24 22:45:30 2001 +++ binutils-2.12.90.0.9/ld/emultempl/linux.em Thu May 23 15:10:11 2002 @@ -221,6 +221,7 @@ struct ld_emulation_xfer_struct ld_${EMU NULL, /* unrecognized file */ NULL, /* list options */ NULL, /* recognized file */ - NULL /* find_potential_libraries */ + NULL, /* find_potential_libraries */ + NULL /* new_vers_pattern */ }; EOF diff -uprN binutils-2.12.90.0.7/ld/emultempl/lnk960.em binutils-2.12.90.0.9/ld/emultempl/lnk960.em --- binutils-2.12.90.0.7/ld/emultempl/lnk960.em Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/ld/emultempl/lnk960.em Thu May 23 15:10:11 2002 @@ -346,6 +346,7 @@ struct ld_emulation_xfer_struct ld_lnk96 NULL, /* unrecognized file */ NULL, /* list options */ NULL, /* recognized file */ - NULL /* find_potential_libraries */ + NULL, /* find_potential_libraries */ + NULL /* new_vers_pattern */ }; EOF diff -uprN binutils-2.12.90.0.7/ld/emultempl/m68kcoff.em binutils-2.12.90.0.9/ld/emultempl/m68kcoff.em --- binutils-2.12.90.0.7/ld/emultempl/m68kcoff.em Thu Mar 15 14:57:12 2001 +++ binutils-2.12.90.0.9/ld/emultempl/m68kcoff.em Thu May 23 15:10:11 2002 @@ -240,6 +240,7 @@ struct ld_emulation_xfer_struct ld_${EMU NULL, /* unrecognized file */ NULL, /* list options */ NULL, /* recognized file */ - NULL /* find_potential_libraries */ + NULL, /* find_potential_libraries */ + NULL /* new_vers_pattern */ }; EOF diff -uprN binutils-2.12.90.0.7/ld/emultempl/mipsecoff.em binutils-2.12.90.0.9/ld/emultempl/mipsecoff.em --- binutils-2.12.90.0.7/ld/emultempl/mipsecoff.em Thu May 24 22:45:30 2001 +++ binutils-2.12.90.0.9/ld/emultempl/mipsecoff.em Thu May 23 15:10:11 2002 @@ -255,6 +255,7 @@ struct ld_emulation_xfer_struct ld_${EMU NULL, /* unrecognized file */ NULL, /* list options */ NULL, /* recognized file */ - NULL /* find_potential_libraries */ + NULL, /* find_potential_libraries */ + NULL /* new_vers_pattern */ }; EOF diff -uprN binutils-2.12.90.0.7/ld/emultempl/pe.em binutils-2.12.90.0.9/ld/emultempl/pe.em --- binutils-2.12.90.0.7/ld/emultempl/pe.em Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/ld/emultempl/pe.em Thu May 23 15:10:11 2002 @@ -221,6 +221,7 @@ gld_${EMULATION_NAME}_before_parse() #define OPTION_DLL_ENABLE_AUTO_IMPORT (OPTION_NO_DEFAULT_EXCLUDES + 1) #define OPTION_DLL_DISABLE_AUTO_IMPORT (OPTION_DLL_ENABLE_AUTO_IMPORT + 1) #define OPTION_ENABLE_EXTRA_PE_DEBUG (OPTION_DLL_DISABLE_AUTO_IMPORT + 1) +#define OPTION_EXCLUDE_LIBS (OPTION_ENABLE_EXTRA_PE_DEBUG + 1) static struct option longopts[] = { /* PE options */ @@ -247,6 +248,7 @@ static struct option longopts[] = { {"output-def", required_argument, NULL, OPTION_OUT_DEF}, {"export-all-symbols", no_argument, NULL, OPTION_EXPORT_ALL}, {"exclude-symbols", required_argument, NULL, OPTION_EXCLUDE_SYMBOLS}, + {"exclude-libs", required_argument, NULL, OPTION_EXCLUDE_LIBS}, {"kill-at", no_argument, NULL, OPTION_KILL_ATS}, {"add-stdcall-alias", no_argument, NULL, OPTION_STDCALL_ALIASES}, {"enable-stdcall-fixup", no_argument, NULL, OPTION_ENABLE_STDCALL_FIXUP}, @@ -333,6 +335,7 @@ gld_${EMULATION_NAME}_list_options (file fprintf (file, _(" --disable-stdcall-fixup Don't link _sym to _sym@nn\n")); fprintf (file, _(" --enable-stdcall-fixup Link _sym to _sym@nn without warnings\n")); fprintf (file, _(" --exclude-symbols sym,sym,... Exclude symbols from automatic export\n")); + fprintf (file, _(" --exclude-libs lib,lib,... Exclude libraries from automatic export\n")); fprintf (file, _(" --export-all-symbols Automatically export all globals to DLL\n")); fprintf (file, _(" --kill-at Remove @nn from exported symbols\n")); fprintf (file, _(" --out-implib Generate import library\n")); @@ -448,7 +451,7 @@ set_pe_subsystem () entry = alc_entry; } - lang_add_entry (entry, 1); + lang_add_entry (entry, 0); return; } @@ -586,7 +589,10 @@ gld_${EMULATION_NAME}_parse_args(argc, a pe_dll_export_everything = 1; break; case OPTION_EXCLUDE_SYMBOLS: - pe_dll_add_excludes (optarg); + pe_dll_add_excludes (optarg, 0); + break; + case OPTION_EXCLUDE_LIBS: + pe_dll_add_excludes (optarg, 1); break; case OPTION_KILL_ATS: pe_dll_kill_ats = 1; @@ -1937,6 +1943,7 @@ struct ld_emulation_xfer_struct ld_${EMU gld_${EMULATION_NAME}_unrecognized_file, gld_${EMULATION_NAME}_list_options, gld_${EMULATION_NAME}_recognized_file, - gld_${EMULATION_NAME}_find_potential_libraries + gld_${EMULATION_NAME}_find_potential_libraries, + NULL /* new_vers_pattern */ }; EOF diff -uprN binutils-2.12.90.0.7/ld/emultempl/ppc64elf.em binutils-2.12.90.0.9/ld/emultempl/ppc64elf.em --- binutils-2.12.90.0.7/ld/emultempl/ppc64elf.em Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/ld/emultempl/ppc64elf.em Thu May 23 15:10:11 2002 @@ -23,30 +23,238 @@ # cat >>e${EMULATION_NAME}.c <the_bfd = bfd_create ("linker stubs", output_bfd); + if (stub_file->the_bfd == NULL + || !bfd_set_arch_mach (stub_file->the_bfd, + bfd_get_arch (output_bfd), + bfd_get_mach (output_bfd))) + { + einfo ("%X%P: can not create BFD %E\n"); + return; + } + + ldlang_add_file (stub_file); +} + + +struct hook_stub_info +{ + lang_statement_list_type add; + asection *input_section; +}; + +/* Traverse the linker tree to find the spot where the stub goes. */ + +static boolean hook_in_stub + PARAMS ((struct hook_stub_info *, lang_statement_union_type **)); + +static boolean +hook_in_stub (info, lp) + struct hook_stub_info *info; + lang_statement_union_type **lp; +{ + lang_statement_union_type *l; + boolean ret; + + for (; (l = *lp) != NULL; lp = &l->header.next) + { + switch (l->header.type) + { + case lang_constructors_statement_enum: + ret = hook_in_stub (info, &constructor_list.head); + if (ret) + return ret; + break; + + case lang_output_section_statement_enum: + ret = hook_in_stub (info, + &l->output_section_statement.children.head); + if (ret) + return ret; + break; + + case lang_wild_statement_enum: + ret = hook_in_stub (info, &l->wild_statement.children.head); + if (ret) + return ret; + break; + + case lang_group_statement_enum: + ret = hook_in_stub (info, &l->group_statement.children.head); + if (ret) + return ret; + break; + + case lang_input_section_enum: + if (l->input_section.section == info->input_section) + { + /* We've found our section. Insert the stub immediately + before its associated input section. */ + *lp = info->add.head; + *(info->add.tail) = l; + return true; + } + break; + + case lang_data_statement_enum: + case lang_reloc_statement_enum: + case lang_object_symbols_statement_enum: + case lang_output_statement_enum: + case lang_target_statement_enum: + case lang_input_statement_enum: + case lang_assignment_statement_enum: + case lang_padding_statement_enum: + case lang_address_statement_enum: + case lang_fill_statement_enum: + break; + + default: + FAIL (); + break; + } + } + return false; +} + + +/* Call-back for ppc64_elf_size_stubs. */ + +/* Create a new stub section, and arrange for it to be linked + immediately before INPUT_SECTION. */ + +static asection * +ppc_add_stub_section (stub_sec_name, input_section) + const char *stub_sec_name; + asection *input_section; +{ + asection *stub_sec; + flagword flags; + asection *output_section; + const char *secname; + lang_output_section_statement_type *os; + struct hook_stub_info info; + + stub_sec = bfd_make_section_anyway (stub_file->the_bfd, stub_sec_name); + if (stub_sec == NULL) + goto err_ret; + + flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE + | SEC_HAS_CONTENTS | SEC_RELOC | SEC_IN_MEMORY | SEC_KEEP); + if (!bfd_set_section_flags (stub_file->the_bfd, stub_sec, flags)) + goto err_ret; + + output_section = input_section->output_section; + secname = bfd_get_section_name (output_section->owner, output_section); + os = lang_output_section_find (secname); + + info.input_section = input_section; + lang_list_init (&info.add); + lang_add_section (&info.add, stub_sec, os, stub_file); + + if (info.add.head == NULL) + goto err_ret; + + if (hook_in_stub (&info, &os->children.head)) + return stub_sec; + + err_ret: + einfo ("%X%P: can not make stub section: %E\n"); + return NULL; +} + + +/* Another call-back for ppc64_elf_size_stubs. */ + +static void +ppc_layout_sections_again () +{ + /* If we have changed sizes of the stub sections, then we need + to recalculate all the section offsets. This may mean we need to + add even more stubs. */ + need_laying_out = 0; + + lang_reset_memory_regions (); + + /* Resize the sections. */ + lang_size_sections (stat_ptr->head, abs_output_section, + &stat_ptr->head, 0, (bfd_vma) 0, NULL); + + /* Recalculate TOC base. */ + ldemul_after_allocation (); + + /* Do the assignments again. */ + lang_do_assignments (stat_ptr->head, abs_output_section, + (fill_type *) 0, (bfd_vma) 0); +} + /* Call the back-end function to set TOC base after we have placed all the sections. */ static void gld${EMULATION_NAME}_after_allocation () { - if (!ppc64_elf_set_toc (output_bfd, &link_info)) - einfo ("%X%P: can not set TOC base: %E\n"); + if (!link_info.relocateable) + _bfd_set_gp_value (output_bfd, ppc64_elf_toc (output_bfd)); +} + + +static void +build_section_lists (statement) + lang_statement_union_type *statement; +{ + if (statement->header.type == lang_input_section_enum + && !statement->input_section.ifile->just_syms_flag + && statement->input_section.section->output_section != NULL + && statement->input_section.section->output_section->owner == output_bfd) + { + ppc64_elf_next_input_section (&link_info, + statement->input_section.section); + } } -/* Final emulation specific call. PowerPC64 has 24 byte .plt entries, - and needs different call stubs for any entries that cross a 64k - boundary relative to the TOC. That means we need to wait until all - sections have been laid out to initialise the stubs. */ + +/* Final emulation specific call. */ static void gld${EMULATION_NAME}_finish () { + int ret; + /* e_entry on PowerPC64 points to the function descriptor for _start. If _start is missing, default to the first function descriptor in the .opd section. */ @@ -60,47 +268,212 @@ gld${EMULATION_NAME}_finish () /* bfd_elf64_discard_info just plays with debugging sections, ie. doesn't affect any code, so we can delay resizing the sections. It's likely we'll resize everything in the process of - adjusting stub sizes. */ + adding stubs. */ if (bfd_elf${ELFSIZE}_discard_info (output_bfd, &link_info)) need_laying_out = 1; - while (1) + ret = ppc64_elf_setup_section_lists (output_bfd, &link_info); + if (ret != 0) { + if (ret < 0) + { + einfo ("%X%P: can not size stub section: %E\n"); + return; + } + + lang_for_each_statement (build_section_lists); + /* Call into the BFD backend to do the real work. */ - if (! ppc64_elf_size_stubs (output_bfd, &link_info, &need_laying_out)) + if (!ppc64_elf_size_stubs (output_bfd, + stub_file->the_bfd, + &link_info, + group_size, + &ppc_add_stub_section, + &ppc_layout_sections_again)) { einfo ("%X%P: can not size stub section: %E\n"); return; } + } - if (!need_laying_out) - break; + if (need_laying_out) + ppc_layout_sections_again (); - /* If we have changed the size of the stub section, then we need - to recalculate all the section offsets. After this, we may - need to adjust the stub size again. */ - need_laying_out = 0; + if (stub_file->the_bfd->sections != NULL) + { + if (!ppc64_elf_build_stubs (&link_info)) + einfo ("%X%P: can not build stubs: %E\n"); + } +} - lang_reset_memory_regions (); - /* Resize the sections. */ - lang_size_sections (stat_ptr->head, abs_output_section, - &stat_ptr->head, 0, (bfd_vma) 0, NULL); +/* Add a pattern matching ".foo" for every "foo" in a version script. - /* Recalculate TOC base. */ - ldemul_after_allocation (); + The reason for doing this is that many shared library version + scripts export a selected set of functions or data symbols, forcing + others local. eg. + + . VERS_1 { + . global: + . this; that; some; thing; + . local: + . *; + . }; + + To make the above work for PowerPC64, we need to export ".this", + ".that" and so on, otherwise only the function descriptor syms are + exported. Lack of an exported function code sym may cause a + definition to be pulled in from a static library. */ + +struct bfd_elf_version_expr * +gld${EMULATION_NAME}_new_vers_pattern (entry) + struct bfd_elf_version_expr *entry; +{ + struct bfd_elf_version_expr *dot_entry; + struct bfd_elf_version_expr *next; + unsigned int len; + char *dot_pat; - /* Do the assignments again. */ - lang_do_assignments (stat_ptr->head, abs_output_section, - (fill_type *) 0, (bfd_vma) 0); + if (!dotsyms || entry->pattern[0] == '*') + return entry; + + /* Is the script adding ".foo" explicitly? */ + if (entry->pattern[0] == '.') + { + /* We may have added this pattern automatically. Don't add it + again. Quadratic behaviour here is acceptable as the list + may be traversed for each input bfd symbol. */ + for (next = entry->next; next != NULL; next = next->next) + { + if (strcmp (next->pattern, entry->pattern) == 0 + && next->match == entry->match) + { + next = entry->next; + free (entry->pattern); + free (entry); + return next; + } + } + return entry; } - if (! ppc64_elf_build_stubs (output_bfd, &link_info)) - einfo ("%X%P: can not build stubs: %E\n"); + /* Don't add ".foo" if the script has already done so. */ + for (next = entry->next; next != NULL; next = next->next) + { + if (next->pattern[0] == '.' + && strcmp (next->pattern + 1, entry->pattern) == 0 + && next->match == entry->match) + return entry; + } + + dot_entry = (struct bfd_elf_version_expr *) xmalloc (sizeof *dot_entry); + dot_entry->next = entry; + len = strlen (entry->pattern) + 2; + dot_pat = xmalloc (len); + dot_pat[0] = '.'; + memcpy (dot_pat + 1, entry->pattern, len - 1); + dot_entry->pattern = dot_pat; + dot_entry->match = entry->match; + return dot_entry; +} + + +/* Avoid processing the fake stub_file in vercheck, stat_needed and + check_needed routines. */ + +static void ppc_for_each_input_file_wrapper + PARAMS ((lang_input_statement_type *)); +static void ppc_lang_for_each_input_file + PARAMS ((void (*) (lang_input_statement_type *))); + +static void (*real_func) PARAMS ((lang_input_statement_type *)); + +static void ppc_for_each_input_file_wrapper (l) + lang_input_statement_type *l; +{ + if (l != stub_file) + (*real_func) (l); +} + +static void +ppc_lang_for_each_input_file (func) + void (*func) PARAMS ((lang_input_statement_type *)); +{ + real_func = func; + lang_for_each_input_file (&ppc_for_each_input_file_wrapper); } + +#define lang_for_each_input_file ppc_lang_for_each_input_file + EOF +# Define some shell vars to insert bits of code into the standard elf +# parse_args and list_options functions. +# +PARSE_AND_LIST_PROLOGUE=' +#define OPTION_STUBGROUP_SIZE 301 +#define OPTION_DOTSYMS (OPTION_STUBGROUP_SIZE + 1) +#define OPTION_NO_DOTSYMS (OPTION_DOTSYMS + 1) +' + +# The options are repeated below so that no abbreviations are allowed. +# Otherwise -s matches stub-group-size +PARSE_AND_LIST_LONGOPTS=' + { "stub-group-size", required_argument, NULL, OPTION_STUBGROUP_SIZE }, + { "stub-group-size", required_argument, NULL, OPTION_STUBGROUP_SIZE }, + { "dotsyms", no_argument, NULL, OPTION_DOTSYMS }, + { "dotsyms", no_argument, NULL, OPTION_DOTSYMS }, + { "no-dotsyms", no_argument, NULL, OPTION_NO_DOTSYMS }, + { "no-dotsyms", no_argument, NULL, OPTION_NO_DOTSYMS }, +' + +PARSE_AND_LIST_OPTIONS=' + fprintf (file, _("\ + --stub-group-size=N Maximum size of a group of input sections that can be\n\ + handled by one stub section. A negative value\n\ + locates all stubs before their branches (with a\n\ + group size of -N), while a positive value allows\n\ + two groups of input sections, one before, and one\n\ + after each stub section. Values of +/-1 indicate\n\ + the linker should choose suitable defaults.\n" + )); + fprintf (file, _("\ + --dotsyms For every version pattern \"foo\" in a version script,\n\ + add \".foo\" so that function code symbols are\n\ + treated the same as function descriptor symbols.\n\ + Defaults to on.\n" + )); + fprintf (file, _("\ + --no-dotsyms Don'\''t do anything special in version scripts.\n" + )); +' + +PARSE_AND_LIST_ARGS_CASES=' + case OPTION_STUBGROUP_SIZE: + { + const char *end; + group_size = bfd_scan_vma (optarg, &end, 0); + if (*end) + einfo (_("%P%F: invalid number `%s'\''\n"), optarg); + } + break; + + case OPTION_DOTSYMS: + { + dotsyms = 1; + } + break; + + case OPTION_NO_DOTSYMS: + { + dotsyms = 0; + } + break; +' + # Put these extra ppc64elf routines in ld_${EMULATION_NAME}_emulation # LDEMUL_AFTER_ALLOCATION=gld${EMULATION_NAME}_after_allocation LDEMUL_FINISH=gld${EMULATION_NAME}_finish +LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=ppc_create_output_section_statements +LDEMUL_NEW_VERS_PATTERN=gld${EMULATION_NAME}_new_vers_pattern diff -uprN binutils-2.12.90.0.7/ld/emultempl/sunos.em binutils-2.12.90.0.9/ld/emultempl/sunos.em --- binutils-2.12.90.0.7/ld/emultempl/sunos.em Mon Oct 1 15:25:25 2001 +++ binutils-2.12.90.0.9/ld/emultempl/sunos.em Thu May 23 15:10:11 2002 @@ -1050,6 +1050,7 @@ struct ld_emulation_xfer_struct ld_${EMU NULL, /* unrecognized file */ NULL, /* list options */ NULL, /* recognized file */ - NULL /* find_potential_libraries */ + NULL, /* find_potential_libraries */ + NULL /* new_vers_pattern */ }; EOF diff -uprN binutils-2.12.90.0.7/ld/emultempl/ticoff.em binutils-2.12.90.0.9/ld/emultempl/ticoff.em --- binutils-2.12.90.0.7/ld/emultempl/ticoff.em Tue Sep 5 17:21:49 2000 +++ binutils-2.12.90.0.9/ld/emultempl/ticoff.em Thu May 23 15:10:11 2002 @@ -197,6 +197,7 @@ struct ld_emulation_xfer_struct ld_${EMU NULL, /* unrecognized_file */ gld_${EMULATION_NAME}_list_options, NULL, /* recognized file */ - NULL /* find_potential_libraries */ + NULL, /* find_potential_libraries */ + NULL /* new_vers_pattern */ }; EOF diff -uprN binutils-2.12.90.0.7/ld/emultempl/vanilla.em binutils-2.12.90.0.9/ld/emultempl/vanilla.em --- binutils-2.12.90.0.7/ld/emultempl/vanilla.em Mon Oct 1 15:25:25 2001 +++ binutils-2.12.90.0.9/ld/emultempl/vanilla.em Thu May 23 15:10:11 2002 @@ -82,6 +82,7 @@ struct ld_emulation_xfer_struct ld_vanil NULL, /* unrecognized file */ NULL, /* list options */ NULL, /* recognized file */ - NULL /* find_potential_libraries */ + NULL, /* find_potential_libraries */ + NULL /* new_vers_pattern */ }; EOF diff -uprN binutils-2.12.90.0.7/ld/genscripts.sh binutils-2.12.90.0.9/ld/genscripts.sh --- binutils-2.12.90.0.7/ld/genscripts.sh Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/ld/genscripts.sh Thu May 23 15:10:11 2002 @@ -45,31 +45,25 @@ fi # To force a logically empty LIB_PATH, do LIBPATH=":". if [ "x${LIB_PATH}" = "x" ] ; then - # Cross, or native non-default emulation not requesting LIB_PATH. - LIB_PATH= - if [ "x${host}" = "x${target}" ] ; then case " $EMULATION_LIBPATH " in *" ${EMULATION_NAME} "*) # Native, and default or emulation requesting LIB_PATH. - LIB_PATH=/lib:/usr/lib - if [ -n "${NATIVE_LIB_DIRS}" ]; then - LIB_PATH=${LIB_PATH}:${NATIVE_LIB_DIRS} - fi - if [ "${libdir}" != /usr/lib ]; then - LIB_PATH=${LIB_PATH}:${libdir} - fi - if [ "${libdir}" != /usr/local/lib ] ; then - LIB_PATH=${LIB_PATH}:/usr/local/lib - fi + LIB_PATH=${libdir} + for lib in ${NATIVE_LIB_DIRS}; do + case :${LIB_PATH}: in + *:${lib}:*) ;; + *) LIB_PATH=${LIB_PATH}:${lib} ;; + esac + done esac fi fi # Always search $(tooldir)/lib, aka /usr/local/TARGET/lib. -LIB_PATH=${LIB_PATH}:${tool_lib} +LIB_PATH=${tool_lib}:${LIB_PATH} -LIB_SEARCH_DIRS=`echo ${LIB_PATH} | tr ':' ' ' | sed -e 's/\([^ ][^ ]*\)/SEARCH_DIR(\\"\1\\");/g'` +LIB_SEARCH_DIRS=`echo ${LIB_PATH} | sed -e 's/:/ /g' -e 's/\([^ ][^ ]*\)/SEARCH_DIR(\\"\1\\");/g'` # Generate 5 or 6 script files from a master script template in # ${srcdir}/scripttempl/${SCRIPT_NAME}.sh. Which one of the 5 or 6 @@ -181,9 +175,9 @@ if test -n "$GENERATE_SHLIB_SCRIPT"; the fi fi -for i in $EMULATION_LIBPATH ; do - test "$i" = "$EMULATION_NAME" && COMPILE_IN=true -done +case " $EMULATION_LIBPATH " in + *" ${EMULATION_NAME} "*) COMPILE_IN=true;; +esac # Generate e${EMULATION_NAME}.c. . ${srcdir}/emultempl/${TEMPLATE_NAME-generic}.em diff -uprN binutils-2.12.90.0.7/ld/ld.h binutils-2.12.90.0.9/ld/ld.h --- binutils-2.12.90.0.7/ld/ld.h Fri Nov 16 14:05:53 2001 +++ binutils-2.12.90.0.9/ld/ld.h Thu May 23 15:10:11 2002 @@ -1,5 +1,5 @@ /* ld.h -- general linker header file - Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 + Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. This file is part of GLD, the Gnu Linker. @@ -103,7 +103,7 @@ typedef struct { /* 1 => assign space to common symbols even if `relocatable_output'. */ boolean force_common_definition; - /* 1 => do not assign addresses to common symbols. */ + /* 1 => do not assign addresses to common symbols. */ boolean inhibit_common_definition; boolean relax; diff -uprN binutils-2.12.90.0.7/ld/ld.texinfo binutils-2.12.90.0.9/ld/ld.texinfo --- binutils-2.12.90.0.7/ld/ld.texinfo Mon Apr 8 10:37:22 2002 +++ binutils-2.12.90.0.9/ld/ld.texinfo Thu May 23 15:10:11 2002 @@ -859,6 +859,7 @@ of this object will ignore any default l @code{now} marks the object with the non-lazy runtime binding. @code{origin} marks the object may contain $ORIGIN. @code{defs} disallows undefined symbols. +@code{muldefs} allows multiple definitions. @code{combreloc} combines multiple reloc sections and sorts them to make dynamic symbol lookup caching possible. @code{nocombreloc} disables multiple reloc sections combining. @@ -1080,6 +1081,14 @@ Normally when creating a non-symbolic sh are allowed and left to be resolved by the runtime loader. These options disallows such undefined symbols. +@kindex --allow-multiple-definition +@kindex -z muldefs +@item --allow-multiple-definition +@itemx -z muldefs +Normally when a symbol is defined multiple times, the linker will +report a fatal error. These options allow multiple definitions and the +first definition will be used. + @kindex --allow-shlib-undefined @item --allow-shlib-undefined Allow undefined symbols in shared objects even when --no-undefined is @@ -1656,6 +1665,14 @@ These cygwin-excludes are: @code{_cygwin Specifies a list of symbols which should not be automatically exported. The symbol names may be delimited by commas or colons. +@kindex --exclude-libs +@item --exclude-libs @var{lib},@var{lib},... +Specifies a list of archive libraries from which symbols should not be automatically +exported. The library names may be delimited by commas or colons. Specifying +@code{--exclude-libs ALL} excludes symbols in all archive libraries from +automatic export. Symbols explicitly listed in a .def file are still exported, +regardless of this option. + @kindex --file-alignment @item --file-alignment Specify the file alignment. Sections in the file will always begin at diff -uprN binutils-2.12.90.0.7/ld/ldemul.c binutils-2.12.90.0.9/ld/ldemul.c --- binutils-2.12.90.0.7/ld/ldemul.c Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/ld/ldemul.c Sun May 26 09:57:12 2002 @@ -170,8 +170,8 @@ ldemul_recognized_file (entry) char * ldemul_choose_target (argc, argv) - int argc; - char **argv; + int argc; + char **argv; { return ld_emulation->choose_target (argc, argv); } @@ -308,3 +308,12 @@ ldemul_find_potential_libraries (name, e return 0; } + +struct bfd_elf_version_expr * +ldemul_new_vers_pattern (entry) + struct bfd_elf_version_expr *entry; +{ + if (ld_emulation->new_vers_pattern) + entry = (*ld_emulation->new_vers_pattern) (entry); + return entry; +} diff -uprN binutils-2.12.90.0.7/ld/ldemul.h binutils-2.12.90.0.9/ld/ldemul.h --- binutils-2.12.90.0.7/ld/ldemul.h Sun Feb 3 11:22:32 2002 +++ binutils-2.12.90.0.9/ld/ldemul.h Thu May 23 15:10:11 2002 @@ -53,6 +53,8 @@ extern void syslib_default PARAMS ((char extern void hll_default PARAMS ((char*)); extern int ldemul_find_potential_libraries PARAMS ((char *, struct lang_input_statement_struct *)); +extern struct bfd_elf_version_expr *ldemul_new_vers_pattern + PARAMS ((struct bfd_elf_version_expr *)); typedef struct ld_emulation_xfer_struct { /* Run before parsing the command line and script file. @@ -139,6 +141,11 @@ typedef struct ld_emulation_xfer_struct int (* find_potential_libraries) PARAMS ((char *, struct lang_input_statement_struct *)); + /* Called when adding a new version pattern. PowerPC64-ELF uses + this hook to add a pattern matching ".foo" for every "foo". */ + struct bfd_elf_version_expr * (*new_vers_pattern) + PARAMS ((struct bfd_elf_version_expr *)); + } ld_emulation_xfer_type; typedef enum { diff -uprN binutils-2.12.90.0.7/ld/ldexp.c binutils-2.12.90.0.9/ld/ldexp.c --- binutils-2.12.90.0.7/ld/ldexp.c Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/ld/ldexp.c Thu May 23 15:10:11 2002 @@ -41,7 +41,7 @@ Software Foundation, 59 Temple Place - S #include "libiberty.h" #include "safe-ctype.h" -static void exp_print_token PARAMS ((token_code_type code)); +static void exp_print_token PARAMS ((token_code_type code, int infix_p)); static void make_abs PARAMS ((etree_value_type *ptr)); static etree_value_type new_abs PARAMS ((bfd_vma value)); static void check PARAMS ((lang_output_section_statement_type *os, @@ -67,9 +67,13 @@ static etree_value_type exp_fold_tree_no struct exp_data_seg exp_data_seg; +/* Print the string representation of the given token. Surround it + with spaces if INFIX_P is true. */ + static void -exp_print_token (code) +exp_print_token (code, infix_p) token_code_type code; + int infix_p; { static CONST struct { @@ -122,20 +126,22 @@ exp_print_token (code) }; unsigned int idx; - for (idx = ARRAY_SIZE (table); idx--;) - { - if (table[idx].code == code) - { - fprintf (config.map_file, " %s ", table[idx].name); - return; - } - } + for (idx = 0; idx < ARRAY_SIZE (table); idx++) + if (table[idx].code == code) + break; + + if (infix_p) + fputc (' ', config.map_file); - /* Not in table, just print it alone. */ - if (code < 127) - fprintf (config.map_file, " %c ", code); + if (idx < ARRAY_SIZE (table)) + fputs (table[idx].name, config.map_file); + else if (code < 127) + fputc (code, config.map_file); else - fprintf (config.map_file, " ", code); + fprintf (config.map_file, "", code); + + if (infix_p) + fputc (' ', config.map_file); } static void @@ -929,13 +935,13 @@ exp_print_tree (tree) { if (config.map_file == NULL) config.map_file = stderr; - + if (tree == NULL) { minfo ("NULL TREE\n"); return; } - + switch (tree->type.node_class) { case etree_value: @@ -955,7 +961,7 @@ exp_print_tree (tree) fprintf (config.map_file, "%s (UNDEFINED)", tree->assign.dst->name); #endif fprintf (config.map_file, "%s", tree->assign.dst); - exp_print_token (tree->type.node_code); + exp_print_token (tree->type.node_code, true); exp_print_tree (tree->assign.src); break; case etree_provide: @@ -967,7 +973,7 @@ exp_print_tree (tree) case etree_binary: fprintf (config.map_file, "("); exp_print_tree (tree->binary.lhs); - exp_print_token (tree->type.node_code); + exp_print_token (tree->type.node_code, true); exp_print_tree (tree->binary.rhs); fprintf (config.map_file, ")"); break; @@ -979,10 +985,10 @@ exp_print_tree (tree) exp_print_tree (tree->trinary.rhs); break; case etree_unary: - exp_print_token (tree->unary.type.node_code); + exp_print_token (tree->unary.type.node_code, false); if (tree->unary.child) { - fprintf (config.map_file, "("); + fprintf (config.map_file, " ("); exp_print_tree (tree->unary.child); fprintf (config.map_file, ")"); } @@ -1004,9 +1010,9 @@ exp_print_tree (tree) } else { - exp_print_token (tree->type.node_code); + exp_print_token (tree->type.node_code, false); if (tree->name.name) - fprintf (config.map_file, "(%s)", tree->name.name); + fprintf (config.map_file, " (%s)", tree->name.name); } break; default: diff -uprN binutils-2.12.90.0.7/ld/ldfile.c binutils-2.12.90.0.9/ld/ldfile.c --- binutils-2.12.90.0.7/ld/ldfile.c Fri Nov 16 14:05:53 2001 +++ binutils-2.12.90.0.9/ld/ldfile.c Sun May 26 09:57:12 2002 @@ -1,5 +1,5 @@ /* Linker file opening and searching. - Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001 + Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GLD, the Gnu Linker. @@ -147,7 +147,13 @@ ldfile_try_open_bfd (attempt, entry) { if (! bfd_check_format (check, bfd_object)) return true; - if (bfd_arch_get_compatible (check, output_bfd) == NULL) + + if ((bfd_arch_get_compatible (check, output_bfd) == NULL) + /* XCOFF archives can have 32 and 64 bit objects */ + && ! (bfd_get_flavour (check) == bfd_target_xcoff_flavour + && bfd_get_flavour (output_bfd) == + bfd_target_xcoff_flavour + && bfd_check_format (entry->the_bfd, bfd_archive))) { einfo (_("%P: skipping incompatible %s when searching for %s\n"), attempt, entry->local_sym_name); @@ -412,7 +418,7 @@ ldfile_open_command_file (name) ldfile_input_filename = name; lineno = 1; - + saved_script_handle = ldlex_input_stack; } diff -uprN binutils-2.12.90.0.7/ld/ldfile.h binutils-2.12.90.0.9/ld/ldfile.h --- binutils-2.12.90.0.7/ld/ldfile.h Wed Aug 22 08:52:10 2001 +++ binutils-2.12.90.0.9/ld/ldfile.h Thu May 23 15:10:11 2002 @@ -1,5 +1,5 @@ /* ldfile.h - - Copyright 1991, 1992, 1993, 1994, 1995, 2000 + Copyright 1991, 1992, 1993, 1994, 1995, 2000, 2002 Free Software Foundation, Inc. This file is part of GLD, the Gnu Linker. diff -uprN binutils-2.12.90.0.7/ld/ldgram.y binutils-2.12.90.0.9/ld/ldgram.y --- binutils-2.12.90.0.7/ld/ldgram.y Sun Apr 21 01:09:26 2002 +++ binutils-2.12.90.0.9/ld/ldgram.y Thu May 23 15:10:11 2002 @@ -820,7 +820,7 @@ exp : memspec_at_opt: AT '>' NAME { $$ = $3; } - | { $$ = "*default*"; } + | { $$ = 0; } ; opt_at: @@ -851,7 +851,7 @@ section: NAME { ldlex_expression(); } { ldlex_popstate (); ldlex_script (); } '{' { - lang_enter_overlay ($3, $5, (int) $4); + lang_enter_overlay ($3); } overlay_section '}' @@ -859,7 +859,8 @@ section: NAME { ldlex_expression(); } memspec_opt memspec_at_opt phdr_opt fill_opt { ldlex_popstate (); - lang_leave_overlay ($15, $12, $14, $13); + lang_leave_overlay ($5, (int) $4, + $15, $12, $14, $13); } opt_comma | /* The GROUP case is just enough to support the gcc diff -uprN binutils-2.12.90.0.7/ld/ldlang.c binutils-2.12.90.0.9/ld/ldlang.c --- binutils-2.12.90.0.7/ld/ldlang.c Mon Apr 8 10:37:22 2002 +++ binutils-2.12.90.0.9/ld/ldlang.c Sun May 26 09:57:13 2002 @@ -617,6 +617,10 @@ lang_memory_region_lookup (name) { lang_memory_region_type *p; + /* NAME is NULL for LMA memspecs if no region was specified. */ + if (name == NULL) + return NULL; + for (p = lang_memory_region_list; p != (lang_memory_region_type *) NULL; p = p->next) @@ -738,6 +742,7 @@ lang_output_section_statement_lookup (na lookup->subsection_alignment = -1; lookup->section_alignment = -1; lookup->load_base = (union etree_union *) NULL; + lookup->update_dot_tree = NULL; lookup->phdrs = NULL; lang_statement_append (&lang_output_section_statement, @@ -954,8 +959,7 @@ section_already_linked (abfd, sec, data) discard all sections. */ if (entry->just_syms_flag) { - sec->output_section = bfd_abs_section_ptr; - sec->output_offset = sec->vma; + bfd_link_just_syms (sec, &link_info); return; } @@ -1206,6 +1210,10 @@ lang_add_section (ptr, section, output, flags &= ~ (SEC_MERGE | SEC_STRINGS); } + /* For now make .tbss normal section. */ + if (flags & SEC_THREAD_LOCAL) + flags |= SEC_LOAD; + section->output_section->flags |= flags; if (flags & SEC_MERGE) @@ -1474,7 +1482,7 @@ load_symbols (entry, place) bfd_error_type err; lang_statement_list_type *hold; boolean bad_load = true; - + err = bfd_get_error (); /* See if the emulation has some special knowledge. */ @@ -1496,7 +1504,7 @@ load_symbols (entry, place) einfo (_("%F%B: file not recognized: %E\n"), entry->the_bfd); else bad_load = false; - + bfd_close (entry->the_bfd); entry->the_bfd = NULL; @@ -1537,7 +1545,7 @@ load_symbols (entry, place) case bfd_archive: if (entry->whole_archive) { - bfd * member = NULL; + bfd *member = NULL; boolean loaded = true; for (;;) @@ -1546,7 +1554,7 @@ load_symbols (entry, place) if (member == NULL) break; - + if (! bfd_check_format (member, bfd_object)) { einfo (_("%F%B: member %B in archive is not an object\n"), @@ -1602,7 +1610,7 @@ wild (s, target, output) if (sec->spec.name != NULL && strcmp (sec->spec.name, "COMMON") == 0) { /* Remember the section that common is going to in case we - later get something which doesn't know where to put it. */ + later get something which doesn't know where to put it. */ default_common_section = output; } } @@ -2211,7 +2219,17 @@ print_assignment (assignment, output_sec result = exp_fold_tree (assignment->exp->assign.src, output_section, lang_final_phase_enum, print_dot, &print_dot); if (result.valid_p) - minfo ("0x%V", result.value + result.section->bfd_section->vma); + { + const char *dst; + bfd_vma value; + + value = result.value + result.section->bfd_section->vma; + dst = assignment->exp->assign.dst; + + minfo ("0x%V", value); + if (dst[0] == '.' && dst[1] == 0) + print_dot = value; + } else { minfo ("*undef* "); @@ -2832,23 +2850,23 @@ os_region_check (os, region, tree, base) if ((region->current < region->origin || (region->current - region->origin > region->length)) && ((region->current != region->origin + region->length) - || base == 0)) + || base == 0)) { if (tree != (etree_type *) NULL) - { - einfo (_("%X%P: address 0x%v of %B section %s is not within region %s\n"), - region->current, - os->bfd_section->owner, - os->bfd_section->name, - region->name); - } + { + einfo (_("%X%P: address 0x%v of %B section %s is not within region %s\n"), + region->current, + os->bfd_section->owner, + os->bfd_section->name, + region->name); + } else - { - einfo (_("%X%P: region %s is full (%B section %s)\n"), - region->name, - os->bfd_section->owner, - os->bfd_section->name); - } + { + einfo (_("%X%P: region %s is full (%B section %s)\n"), + region->name, + os->bfd_section->owner, + os->bfd_section->name); + } /* Reset the region pointer. */ region->current = region->origin; } @@ -2996,12 +3014,20 @@ lang_size_sections_1 (s, output_section_ if (bfd_is_abs_section (os->bfd_section)) ASSERT (after == os->bfd_section->vma); + else if ((os->bfd_section->flags & SEC_HAS_CONTENTS) == 0 + && (os->bfd_section->flags & SEC_THREAD_LOCAL)) + os->bfd_section->_raw_size = 0; else os->bfd_section->_raw_size = (after - os->bfd_section->vma) * opb; + dot = os->bfd_section->vma + os->bfd_section->_raw_size / opb; os->processed = true; + if (os->update_dot_tree != 0) + exp_fold_tree (os->update_dot_tree, abs_output_section, + lang_allocating_phase_enum, dot, &dot); + /* Update dot in the region ? We only do this if the section is going to be allocated, since unallocated sections do not contribute to the region's @@ -3343,8 +3369,8 @@ lang_do_assignments (s, output_section_s if (value.valid_p == false) einfo (_("%F%P: invalid data statement\n")); } - { - unsigned int size; + { + unsigned int size; switch (s->data_statement.type) { default: @@ -3468,9 +3494,9 @@ lang_set_startof () h = bfd_link_hash_lookup (link_info.hash, buf, false, false, true); if (h != NULL && h->type == bfd_link_hash_undefined) { - unsigned opb; + unsigned opb; - opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture, + opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture, ldfile_output_machine); h->type = bfd_link_hash_defined; if (s->_cooked_size != 0) @@ -3617,7 +3643,7 @@ lang_check () else if (bfd_count_sections (input_bfd)) { /* If the input bfd has no contents, it shouldn't set the - private data of the output bfd. */ + private data of the output bfd. */ bfd_error_handler_type pfn = NULL; @@ -3783,11 +3809,7 @@ lang_place_orphans () if (file->just_syms_flag) { - /* We are only retrieving symbol values from this - file. We want the symbols to act as though the - values in the file are absolute. */ - s->output_section = bfd_abs_section_ptr; - s->output_offset = s->vma; + abort (); } else if (strcmp (s->name, "COMMON") == 0) { @@ -4267,10 +4289,10 @@ lang_process () (fill_type *) 0, (bfd_vma) 0); /* Perform another relax pass - this time we know where the - globals are, so can make better guess. */ + globals are, so can make a better guess. */ lang_size_sections (statement_list.head, abs_output_section, - &(statement_list.head), 0, (bfd_vma) 0, + &statement_list.head, 0, (bfd_vma) 0, &relax_again); } while (relax_again); @@ -4504,14 +4526,13 @@ lang_leave_output_section_statement (fil { current_section->fill = fill; current_section->region = lang_memory_region_lookup (memspec); - if (strcmp (lma_memspec, "*default*") != 0) - { - current_section->lma_region = lang_memory_region_lookup (lma_memspec); - /* If no runtime region has been given, but the load region has - been, use the load region. */ - if (strcmp (memspec, "*default*") == 0) - current_section->region = lang_memory_region_lookup (lma_memspec); - } + current_section->lma_region = lang_memory_region_lookup (lma_memspec); + + /* If no runtime region has been given, but the load region has + been, use the load region. */ + if (current_section->lma_region != 0 && strcmp (memspec, "*default*") == 0) + current_section->region = current_section->lma_region; + current_section->phdrs = phdrs; stat_ptr = &statement_list; } @@ -4793,12 +4814,6 @@ lang_add_nocrossref (l) /* The overlay virtual address. */ static etree_type *overlay_vma; -/* The overlay load address. */ -static etree_type *overlay_lma; - -/* Whether nocrossrefs is set for this overlay. */ -static int overlay_nocrossrefs; - /* An expression for the maximum section size seen so far. */ static etree_type *overlay_max; @@ -4814,24 +4829,18 @@ static struct overlay_list *overlay_list /* Start handling an overlay. */ void -lang_enter_overlay (vma_expr, lma_expr, nocrossrefs) +lang_enter_overlay (vma_expr) etree_type *vma_expr; - etree_type *lma_expr; - int nocrossrefs; { /* The grammar should prevent nested overlays from occurring. */ - ASSERT (overlay_vma == NULL - && overlay_lma == NULL - && overlay_list == NULL - && overlay_max == NULL); + ASSERT (overlay_vma == NULL && overlay_max == NULL); overlay_vma = vma_expr; - overlay_lma = lma_expr; - overlay_nocrossrefs = nocrossrefs; } /* Start a section in an overlay. We handle this by calling - lang_enter_output_section_statement with the correct VMA and LMA. */ + lang_enter_output_section_statement with the correct VMA. + lang_leave_overlay sets up the LMA and memory regions. */ void lang_enter_overlay_section (name) @@ -4841,16 +4850,13 @@ lang_enter_overlay_section (name) etree_type *size; lang_enter_output_section_statement (name, overlay_vma, normal_section, - 0, 0, 0, overlay_lma); + 0, 0, 0, 0); - /* If this is the first section, then base the VMA and LMA of future + /* If this is the first section, then base the VMA of future sections on this one. This will work correctly even if `.' is used in the addresses. */ if (overlay_list == NULL) - { - overlay_vma = exp_nameop (ADDR, name); - overlay_lma = exp_nameop (LOADADDR, name); - } + overlay_vma = exp_nameop (ADDR, name); /* Remember the section. */ n = (struct overlay_list *) xmalloc (sizeof *n); @@ -4860,9 +4866,6 @@ lang_enter_overlay_section (name) size = exp_nameop (SIZEOF, name); - /* Adjust the LMA for the next section. */ - overlay_lma = exp_binop ('+', overlay_lma, size); - /* Arrange to work out the maximum section end address. */ if (overlay_max == NULL) overlay_max = size; @@ -4885,8 +4888,10 @@ lang_leave_overlay_section (fill, phdrs) name = current_section->name; - lang_leave_output_section_statement (fill, "*default*", - phdrs, "*default*"); + /* For now, assume that "*default*" is the run-time memory region and + that no load-time region has been specified. It doesn't really + matter what we say here, since lang_leave_overlay will override it. */ + lang_leave_output_section_statement (fill, "*default*", phdrs, 0); /* Define the magic symbols. */ @@ -4916,32 +4921,30 @@ lang_leave_overlay_section (fill, phdrs) looks through all the sections in the overlay and sets them. */ void -lang_leave_overlay (fill, memspec, phdrs, lma_memspec) +lang_leave_overlay (lma_expr, nocrossrefs, fill, memspec, phdrs, lma_memspec) + etree_type *lma_expr; + int nocrossrefs; fill_type *fill; const char *memspec; struct lang_output_section_phdr_list *phdrs; const char *lma_memspec; { lang_memory_region_type *region; - lang_memory_region_type * default_region; lang_memory_region_type *lma_region; struct overlay_list *l; struct lang_nocrossref *nocrossref; - default_region = lang_memory_region_lookup ("*default*"); - - if (memspec == NULL) - region = NULL; - else - region = lang_memory_region_lookup (memspec); - - if (lma_memspec == NULL) - lma_region = NULL; - else - lma_region = lang_memory_region_lookup (lma_memspec); + region = lang_memory_region_lookup (memspec); + lma_region = lang_memory_region_lookup (lma_memspec); nocrossref = NULL; + /* After setting the size of the last section, set '.' to end of the + overlay region. */ + if (overlay_list != NULL) + overlay_list->os->update_dot_tree + = exp_assop ('=', ".", exp_binop ('+', overlay_vma, overlay_max)); + l = overlay_list; while (l != NULL) { @@ -4950,28 +4953,24 @@ lang_leave_overlay (fill, memspec, phdrs if (fill != (fill_type *) 0 && l->os->fill == (fill_type *) 0) l->os->fill = fill; - /* Assign a region to the sections, if one has been specified. - Override the assignment of the default section, but not - other sections. */ - if (region != NULL && - (l->os->region == NULL || - l->os->region == default_region)) - l->os->region = region; - - /* We only set lma_region for the first overlay section, as - subsequent overlay sections will have load_base set relative - to the first section. Also, don't set lma_region if - load_base is specified. FIXME: There should really be a test - that `AT ( LDADDR )' doesn't conflict with `AT >LMA_REGION' - rather than letting LDADDR simply override LMA_REGION. */ - if (lma_region != NULL && l->os->lma_region == NULL - && l->next == NULL && l->os->load_base == NULL) - l->os->lma_region = lma_region; + l->os->region = region; + l->os->lma_region = lma_region; + + /* The first section has the load address specified in the + OVERLAY statement. The rest are worked out from that. + The base address is not needed (and should be null) if + an LMA region was specified. */ + if (l->next == 0) + l->os->load_base = lma_expr; + else if (lma_region == 0) + l->os->load_base = exp_binop ('+', + exp_nameop (LOADADDR, l->next->os->name), + exp_nameop (SIZEOF, l->next->os->name)); if (phdrs != NULL && l->os->phdrs == NULL) l->os->phdrs = phdrs; - if (overlay_nocrossrefs) + if (nocrossrefs) { struct lang_nocrossref *nc; @@ -4989,13 +4988,7 @@ lang_leave_overlay (fill, memspec, phdrs if (nocrossref != NULL) lang_add_nocrossref (nocrossref); - /* Update . for the end of the overlay. */ - lang_add_assignment (exp_assop ('=', ".", - exp_binop ('+', overlay_vma, overlay_max))); - overlay_vma = NULL; - overlay_lma = NULL; - overlay_nocrossrefs = 0; overlay_list = NULL; overlay_max = NULL; } @@ -5097,7 +5090,7 @@ lang_new_vers_pattern (orig, new, lang) ret->match = lang_vers_match_lang_c; } - return ret; + return ldemul_new_vers_pattern (ret); } /* This is called for each set of variable names and match @@ -5236,7 +5229,7 @@ lang_do_version_exports_section () bfd_size_type len; if (sec == NULL) - continue; + continue; len = bfd_section_size (is->the_bfd, sec); contents = xmalloc (len); diff -uprN binutils-2.12.90.0.7/ld/ldlang.h binutils-2.12.90.0.9/ld/ldlang.h --- binutils-2.12.90.0.7/ld/ldlang.h Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/ld/ldlang.h Thu May 23 15:10:11 2002 @@ -135,6 +135,12 @@ typedef struct lang_output_section_state union etree_union *load_base; + /* If non-null, an expression to evaluate after setting the section's + size. The expression is evaluated inside REGION (above) with '.' + set to the end of the section. Used in the last overlay section + to move '.' past all the overlaid sections. */ + union etree_union *update_dot_tree; + struct lang_output_section_phdr_list *phdrs; } lang_output_section_statement_type; @@ -456,13 +462,13 @@ extern void lang_new_phdr PARAMS ((const char *, etree_type *, boolean, boolean, etree_type *, etree_type *)); extern void lang_add_nocrossref PARAMS ((struct lang_nocrossref *)); -extern void lang_enter_overlay PARAMS ((etree_type *, etree_type *, int)); +extern void lang_enter_overlay PARAMS ((etree_type *)); extern void lang_enter_overlay_section PARAMS ((const char *)); extern void lang_leave_overlay_section PARAMS ((fill_type *, struct lang_output_section_phdr_list *)); extern void lang_leave_overlay - PARAMS ((fill_type *, const char *, struct lang_output_section_phdr_list *, - const char *)); + PARAMS ((etree_type *, int, fill_type *, const char *, + struct lang_output_section_phdr_list *, const char *)); extern struct bfd_elf_version_tree *lang_elf_version_info; diff -uprN binutils-2.12.90.0.7/ld/ldlex.l binutils-2.12.90.0.9/ld/ldlex.l --- binutils-2.12.90.0.7/ld/ldlex.l Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/ld/ldlex.l Sun May 26 09:57:13 2002 @@ -26,7 +26,7 @@ This was written by steve chamberlain */ -#include +#include "ansidecl.h" #include #ifdef MPW diff -uprN binutils-2.12.90.0.7/ld/ldmain.c binutils-2.12.90.0.9/ld/ldmain.c --- binutils-2.12.90.0.7/ld/ldmain.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/ld/ldmain.c Thu May 23 15:10:11 2002 @@ -240,6 +240,7 @@ main (argc, argv) link_info.optimize = false; link_info.no_undefined = false; link_info.allow_shlib_undefined = false; + link_info.allow_multiple_definition = false; link_info.strip = strip_none; link_info.discard = discard_sec_merge; link_info.keep_memory = true; @@ -319,7 +320,7 @@ main (argc, argv) if (saved_script_handle == NULL) { int isfile; - char *s = ldemul_get_script (& isfile); + char *s = ldemul_get_script (&isfile); if (isfile) { @@ -372,7 +373,7 @@ main (argc, argv) rewind (saved_script_handle); while ((n = fread (buf, 1, ld_bufsz - 1, saved_script_handle)) > 0) { - buf [n] = 0; + buf[n] = 0; info_msg (buf); } rewind (saved_script_handle); @@ -382,9 +383,9 @@ main (argc, argv) { int isfile; - info_msg (ldemul_get_script (& isfile)); + info_msg (ldemul_get_script (&isfile)); } - + info_msg ("\n==================================================\n"); } diff -uprN binutils-2.12.90.0.7/ld/ldwrite.c binutils-2.12.90.0.9/ld/ldwrite.c --- binutils-2.12.90.0.7/ld/ldwrite.c Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/ld/ldwrite.c Thu May 23 15:10:11 2002 @@ -233,7 +233,9 @@ build_link_order (statement) ASSERT (output_section->owner == output_bfd); - if ((output_section->flags & SEC_HAS_CONTENTS) != 0) + if ((output_section->flags & SEC_HAS_CONTENTS) != 0 + || ((output_section->flags & SEC_LOAD) != 0 + && (output_section->flags & SEC_THREAD_LOCAL))) { struct bfd_link_order *link_order; diff -uprN binutils-2.12.90.0.7/ld/lexsup.c binutils-2.12.90.0.9/ld/lexsup.c --- binutils-2.12.90.0.7/ld/lexsup.c Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/ld/lexsup.c Thu May 23 15:10:11 2002 @@ -127,7 +127,8 @@ int parsing_defsym = 0; #define OPTION_UNIQUE (OPTION_SECTION_START + 1) #define OPTION_TARGET_HELP (OPTION_UNIQUE + 1) #define OPTION_ALLOW_SHLIB_UNDEFINED (OPTION_TARGET_HELP + 1) -#define OPTION_DISCARD_NONE (OPTION_ALLOW_SHLIB_UNDEFINED + 1) +#define OPTION_ALLOW_MULTIPLE_DEFINITION (OPTION_ALLOW_SHLIB_UNDEFINED + 1) +#define OPTION_DISCARD_NONE (OPTION_ALLOW_MULTIPLE_DEFINITION + 1) #define OPTION_SPARE_DYNAMIC_TAGS (OPTION_DISCARD_NONE + 1) #define OPTION_NO_DEFINE_COMMON (OPTION_SPARE_DYNAMIC_TAGS + 1) #define OPTION_NOSTDLIB (OPTION_NO_DEFINE_COMMON + 1) @@ -325,6 +326,8 @@ static const struct ld_option ld_options '\0', NULL, N_("Allow no undefined symbols"), TWO_DASHES }, { {"allow-shlib-undefined", no_argument, NULL, OPTION_ALLOW_SHLIB_UNDEFINED}, '\0', NULL, N_("Allow undefined symbols in shared objects"), TWO_DASHES }, + { {"allow-multiple-definition", no_argument, NULL, OPTION_ALLOW_MULTIPLE_DEFINITION}, + '\0', NULL, N_("Allow multiple definitions"), TWO_DASHES }, { {"no-warn-mismatch", no_argument, NULL, OPTION_NO_WARN_MISMATCH}, '\0', NULL, N_("Don't warn about mismatched input files"), TWO_DASHES}, { {"no-whole-archive", no_argument, NULL, OPTION_NO_WHOLE_ARCHIVE}, @@ -763,6 +766,9 @@ parse_args (argc, argv) case OPTION_ALLOW_SHLIB_UNDEFINED: link_info.allow_shlib_undefined = true; break; + case OPTION_ALLOW_MULTIPLE_DEFINITION: + link_info.allow_multiple_definition = true; + break; case OPTION_NO_WARN_MISMATCH: command_line.warn_mismatch = false; break; @@ -806,7 +812,7 @@ parse_args (argc, argv) increment optind, and continue because getopt is too confused and will seg-fault the next time around. */ einfo(_("%P%F: bad -rpath option\n")); - + link_info.relocateable = true; config.build_constructors = false; config.magic_demand_paged = false; @@ -959,8 +965,8 @@ parse_args (argc, argv) break; case OPTION_TARGET_HELP: /* Mention any target specific options. */ - ldemul_list_emulation_options (stdout); - exit (0); + ldemul_list_emulation_options (stdout); + exit (0); case OPTION_TBSS: set_section_start (".bss", optarg); break; @@ -1014,7 +1020,7 @@ parse_args (argc, argv) version information. Read it, but don't assume that we've seen a linker script. */ { - FILE * hold_script_handle; + FILE *hold_script_handle; hold_script_handle = saved_script_handle; ldfile_open_command_file (optarg); @@ -1231,7 +1237,7 @@ help () int two_dashes = (ld_options[j].control == TWO_DASHES || ld_options[j].control == EXACTLY_TWO_DASHES); - + printf ("%s-%s%s", comma ? ", " : "", two_dashes ? "-" : "", diff -uprN binutils-2.12.90.0.7/ld/mpw-elfmips.c binutils-2.12.90.0.9/ld/mpw-elfmips.c --- binutils-2.12.90.0.7/ld/mpw-elfmips.c Mon Oct 1 15:25:25 2001 +++ binutils-2.12.90.0.9/ld/mpw-elfmips.c Wed Dec 31 16:00:00 1969 @@ -1,1441 +0,0 @@ -/* This file is is generated by a shell script. DO NOT EDIT! */ - -/* 32 bit ELF emulation code for elf32ebmip - Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001 - Free Software Foundation, Inc. - Written by Steve Chamberlain - ELF support by Ian Lance Taylor - -This file is part of GLD, the Gnu Linker. - -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. */ - -#define TARGET_IS_elf32ebmip - -#include "bfd.h" -#include "sysdep.h" -#include "safe-ctype.h" - -#include "bfdlink.h" - -#include "ld.h" -#include "ldmain.h" -#include "ldmisc.h" -#include "ldexp.h" -#include "ldlang.h" -#include "ldgram.h" -#include "ldfile.h" -#include "ldemul.h" - -static void gldelf32ebmip_before_parse PARAMS ((void)); -static boolean gldelf32ebmip_open_dynamic_archive - PARAMS ((const char *, search_dirs_type *, lang_input_statement_type *)); -static void gldelf32ebmip_after_open PARAMS ((void)); -static void gldelf32ebmip_check_needed - PARAMS ((lang_input_statement_type *)); -static void gldelf32ebmip_stat_needed - PARAMS ((lang_input_statement_type *)); -static boolean gldelf32ebmip_search_needed - PARAMS ((const char *, const char *)); -static boolean gldelf32ebmip_try_needed PARAMS ((const char *)); -static void gldelf32ebmip_before_allocation PARAMS ((void)); -static void gldelf32ebmip_find_statement_assignment - PARAMS ((lang_statement_union_type *)); -static void gldelf32ebmip_find_exp_assignment PARAMS ((etree_type *)); -static boolean gldelf32ebmip_place_orphan - PARAMS ((lang_input_statement_type *, asection *)); -static void gldelf32ebmip_place_section - PARAMS ((lang_statement_union_type *)); -static char *gldelf32ebmip_get_script PARAMS ((int *isfile)); - -static void -gldelf32ebmip_before_parse() -{ - ldfile_output_architecture = bfd_arch_mips; - config.dynamic_link = true; -} - -/* Try to open a dynamic archive. This is where we know that ELF - dynamic libraries have an extension of .so. */ - -static boolean -gldelf32ebmip_open_dynamic_archive (arch, search, entry) - const char *arch; - search_dirs_type *search; - lang_input_statement_type *entry; -{ - const char *filename; - char *string; - - if (! entry->is_archive) - return false; - - filename = entry->filename; - - string = (char *) xmalloc (strlen (search->name) - + strlen (filename) - + strlen (arch) - + sizeof "/lib.so"); - - sprintf (string, "%s/lib%s%s.so", search->name, filename, arch); - - if (! ldfile_try_open_bfd (string, entry)) - { - free (string); - return false; - } - - entry->filename = string; - - /* We have found a dynamic object to include in the link. The ELF - backend linker will create a DT_NEEDED entry in the .dynamic - section naming this file. If this file includes a DT_SONAME - entry, it will be used. Otherwise, the ELF linker will just use - the name of the file. For an archive found by searching, like - this one, the DT_NEEDED entry should consist of just the name of - the file, without the path information used to find it. Note - that we only need to do this if we have a dynamic object; an - archive will never be referenced by a DT_NEEDED entry. - - FIXME: This approach--using bfd_elf_set_dt_needed_name--is not - very pretty. I haven't been able to think of anything that is - pretty, though. */ - if (bfd_check_format (entry->the_bfd, bfd_object) - && (entry->the_bfd->flags & DYNAMIC) != 0) - { - char *needed_name; - - ASSERT (entry->is_archive && entry->search_dirs_flag); - needed_name = (char *) xmalloc (strlen (filename) - + strlen (arch) - + sizeof "lib.so"); - sprintf (needed_name, "lib%s%s.so", filename, arch); - bfd_elf_set_dt_needed_name (entry->the_bfd, needed_name); - } - - return true; -} - - -/* These variables are required to pass information back and forth - between after_open and check_needed and stat_needed. */ - -static struct bfd_link_needed_list *global_needed; -static struct stat global_stat; -static boolean global_found; - -/* This is called after all the input files have been opened. */ - -static void -gldelf32ebmip_after_open () -{ - struct bfd_link_needed_list *needed, *l; - - /* We only need to worry about this when doing a final link. */ - if (link_info.relocateable || link_info.shared) - return; - - /* Get the list of files which appear in DT_NEEDED entries in - dynamic objects included in the link (often there will be none). - For each such file, we want to track down the corresponding - library, and include the symbol table in the link. This is what - the runtime dynamic linker will do. Tracking the files down here - permits one dynamic object to include another without requiring - special action by the person doing the link. Note that the - needed list can actually grow while we are stepping through this - loop. */ - needed = bfd_elf_get_needed_list (output_bfd, &link_info); - for (l = needed; l != NULL; l = l->next) - { - struct bfd_link_needed_list *ll; - const char *lib_path; - size_t len; - search_dirs_type *search; - - /* If we've already seen this file, skip it. */ - for (ll = needed; ll != l; ll = ll->next) - if (strcmp (ll->name, l->name) == 0) - break; - if (ll != l) - continue; - - /* See if this file was included in the link explicitly. */ - global_needed = l; - global_found = false; - lang_for_each_input_file (gldelf32ebmip_check_needed); - if (global_found) - continue; - - /* We need to find this file and include the symbol table. We - want to search for the file in the same way that the dynamic - linker will search. That means that we want to use - rpath_link, rpath, then the environment variable - LD_LIBRARY_PATH (native only), then the linker script - LIB_SEARCH_DIRS. We do not search using the -L arguments. */ - if (gldelf32ebmip_search_needed (command_line.rpath_link, - l->name)) - continue; - if (gldelf32ebmip_search_needed (command_line.rpath, l->name)) - continue; - if (command_line.rpath_link == NULL - && command_line.rpath == NULL) - { - lib_path = (const char *) getenv ("LD_RUN_PATH"); - if (gldelf32ebmip_search_needed (lib_path, l->name)) - continue; - } - len = strlen (l->name); - for (search = search_head; search != NULL; search = search->next) - { - char *filename; - - if (search->cmdline) - continue; - filename = (char *) xmalloc (strlen (search->name) + len + 2); - sprintf (filename, "%s/%s", search->name, l->name); - if (gldelf32ebmip_try_needed (filename)) - break; - free (filename); - } - if (search != NULL) - continue; - - einfo (_("%P: warning: %s, needed by %B, not found\n"), - l->name, l->by); - } -} - -/* Search for a needed file in a path. */ - -static boolean -gldelf32ebmip_search_needed (path, name) - const char *path; - const char *name; -{ - const char *s; - size_t len; - - if (path == NULL || *path == '\0') - return false; - len = strlen (name); - while (1) - { - char *filename, *sset; - - s = strchr (path, ':'); - if (s == NULL) - s = path + strlen (path); - - filename = (char *) xmalloc (s - path + len + 2); - if (s == path) - sset = filename; - else - { - memcpy (filename, path, s - path); - filename[s - path] = '/'; - sset = filename + (s - path) + 1; - } - strcpy (sset, name); - - if (gldelf32ebmip_try_needed (filename)) - return true; - - free (filename); - - if (*s == '\0') - break; - path = s + 1; - } - - return false; -} - -/* This function is called for each possible name for a dynamic object - named by a DT_NEEDED entry. */ - -static boolean -gldelf32ebmip_try_needed (name) - const char *name; -{ - bfd *abfd; - - abfd = bfd_openr (name, bfd_get_target (output_bfd)); - if (abfd == NULL) - return false; - if (! bfd_check_format (abfd, bfd_object)) - { - (void) bfd_close (abfd); - return false; - } - if ((bfd_get_file_flags (abfd) & DYNAMIC) == 0) - { - (void) bfd_close (abfd); - return false; - } - - /* We've found a dynamic object matching the DT_NEEDED entry. */ - - /* We have already checked that there is no other input file of the - same name. We must now check again that we are not including the - same file twice. We need to do this because on many systems - libc.so is a symlink to, e.g., libc.so.1. The SONAME entry will - reference libc.so.1. If we have already included libc.so, we - don't want to include libc.so.1 if they are the same file, and we - can only check that using stat. */ - - if (bfd_stat (abfd, &global_stat) != 0) - einfo (_("%F%P:%B: bfd_stat failed: %E\n"), abfd); - global_found = false; - lang_for_each_input_file (gldelf32ebmip_stat_needed); - if (global_found) - { - /* Return true to indicate that we found the file, even though - we aren't going to do anything with it. */ - return true; - } - - /* Tell the ELF backend that don't want the output file to have a - DT_NEEDED entry for this file. */ - bfd_elf_set_dt_needed_name (abfd, ""); - - /* Add this file into the symbol table. */ - if (! bfd_link_add_symbols (abfd, &link_info)) - einfo (_("%F%B: could not read symbols: %E\n"), abfd); - - return true; -} - -/* See if an input file matches a DT_NEEDED entry by name. */ - -static void -gldelf32ebmip_check_needed (s) - lang_input_statement_type *s; -{ - if (global_found) - return; - - if (s->filename != NULL - && strcmp (s->filename, global_needed->name) == 0) - { - global_found = true; - return; - } - - if (s->the_bfd != NULL) - { - const char *soname; - - soname = bfd_elf_get_dt_soname (s->the_bfd); - if (soname != NULL - && strcmp (soname, global_needed->name) == 0) - { - global_found = true; - return; - } - } - - if (s->search_dirs_flag - && s->filename != NULL - && strchr (global_needed->name, '/') == NULL) - { - const char *f; - - f = strrchr (s->filename, '/'); - if (f != NULL - && strcmp (f + 1, global_needed->name) == 0) - { - global_found = true; - return; - } - } -} - -/* See if an input file matches a DT_NEEDED entry by running stat on - the file. */ - -static void -gldelf32ebmip_stat_needed (s) - lang_input_statement_type *s; -{ - struct stat st; - const char *suffix; - const char *soname; - const char *f; - - if (global_found) - return; - if (s->the_bfd == NULL) - return; - - if (bfd_stat (s->the_bfd, &st) != 0) - { - einfo (_("%P:%B: bfd_stat failed: %E\n"), s->the_bfd); - return; - } - - if (st.st_dev == global_stat.st_dev - && st.st_ino == global_stat.st_ino) - { - global_found = true; - return; - } - - /* We issue a warning if it looks like we are including two - different versions of the same shared library. For example, - there may be a problem if -lc picks up libc.so.6 but some other - shared library has a DT_NEEDED entry of libc.so.5. This is a - hueristic test, and it will only work if the name looks like - NAME.so.VERSION. FIXME: Depending on file names is error-prone. - If we really want to issue warnings about mixing version numbers - of shared libraries, we need to find a better way. */ - - if (strchr (global_needed->name, '/') != NULL) - return; - suffix = strstr (global_needed->name, ".so."); - if (suffix == NULL) - return; - suffix += sizeof ".so." - 1; - - soname = bfd_elf_get_dt_soname (s->the_bfd); - if (soname == NULL) - soname = s->filename; - - f = strrchr (soname, '/'); - if (f != NULL) - ++f; - else - f = soname; - - if (strncmp (f, global_needed->name, suffix - global_needed->name) == 0) - einfo (_("%P: warning: %s, needed by %B, may conflict with %s\n"), - global_needed->name, global_needed->by, f); -} - -/* This is called after the sections have been attached to output - sections, but before any sizes or addresses have been set. */ - -static void -gldelf32ebmip_before_allocation () -{ - const char *rpath; - asection *sinterp; - - /* If we are going to make any variable assignments, we need to let - the ELF backend know about them in case the variables are - referred to by dynamic objects. */ - lang_for_each_statement (gldelf32ebmip_find_statement_assignment); - - /* Let the ELF backend work out the sizes of any sections required - by dynamic linking. */ - rpath = command_line.rpath; - if (rpath == NULL) - rpath = (const char *) getenv ("LD_RUN_PATH"); - if (! (bfd_elf32_size_dynamic_sections - (output_bfd, command_line.soname, rpath, - command_line.filter_shlib, - (const char * const *) command_line.auxiliary_filters, - &link_info, &sinterp, lang_elf_version_info))) - einfo (_("%P%F: failed to set dynamic section sizes: %E\n")); - - /* Let the user override the dynamic linker we are using. */ - if (command_line.interpreter != NULL - && sinterp != NULL) - { - sinterp->contents = (bfd_byte *) command_line.interpreter; - sinterp->_raw_size = strlen (command_line.interpreter) + 1; - } - - /* Look for any sections named .gnu.warning. As a GNU extensions, - we treat such sections as containing warning messages. We print - out the warning message, and then zero out the section size so - that it does not get copied into the output file. */ - - { - LANG_FOR_EACH_INPUT_STATEMENT (is) - { - asection *s; - bfd_size_type sz; - char *msg; - boolean ret; - - if (is->just_syms_flag) - continue; - - s = bfd_get_section_by_name (is->the_bfd, ".gnu.warning"); - if (s == NULL) - continue; - - sz = bfd_section_size (is->the_bfd, s); - msg = xmalloc ((size_t) sz + 1); - if (! bfd_get_section_contents (is->the_bfd, s, msg, (file_ptr) 0, sz)) - einfo (_("%F%B: Can't read contents of section .gnu.warning: %E\n"), - is->the_bfd); - msg[sz] = '\0'; - ret = link_info.callbacks->warning (&link_info, msg, - (const char *) NULL, - is->the_bfd, (asection *) NULL, - (bfd_vma) 0); - ASSERT (ret); - free (msg); - - /* Clobber the section size, so that we don't waste copying the - warning into the output file. */ - s->_raw_size = 0; - } - } -} - -/* This is called by the before_allocation routine via - lang_for_each_statement. It locates any assignment statements, and - tells the ELF backend about them, in case they are assignments to - symbols which are referred to by dynamic objects. */ - -static void -gldelf32ebmip_find_statement_assignment (s) - lang_statement_union_type *s; -{ - if (s->header.type == lang_assignment_statement_enum) - gldelf32ebmip_find_exp_assignment (s->assignment_statement.exp); -} - -/* Look through an expression for an assignment statement. */ - -static void -gldelf32ebmip_find_exp_assignment (exp) - etree_type *exp; -{ - struct bfd_link_hash_entry *h; - - switch (exp->type.node_class) - { - case etree_provide: - case etree_provided: - h = bfd_link_hash_lookup (link_info.hash, exp->assign.dst, - false, false, false); - if (h == NULL) - break; - - /* We call record_link_assignment even if the symbol is defined. - This is because if it is defined by a dynamic object, we - actually want to use the value defined by the linker script, - not the value from the dynamic object (because we are setting - symbols like etext). If the symbol is defined by a regular - object, then, as it happens, calling record_link_assignment - will do no harm. */ - - /* Fall through. */ - case etree_assign: - if (strcmp (exp->assign.dst, ".") != 0) - { - if (! (bfd_elf32_record_link_assignment - (output_bfd, &link_info, exp->assign.dst, - exp->type.node_class != etree_assign ? true : false))) - einfo (_("%P%F: failed to record assignment to %s: %E\n"), - exp->assign.dst); - } - gldelf32ebmip_find_exp_assignment (exp->assign.src); - break; - - case etree_binary: - gldelf32ebmip_find_exp_assignment (exp->binary.lhs); - gldelf32ebmip_find_exp_assignment (exp->binary.rhs); - break; - - case etree_trinary: - gldelf32ebmip_find_exp_assignment (exp->trinary.cond); - gldelf32ebmip_find_exp_assignment (exp->trinary.lhs); - gldelf32ebmip_find_exp_assignment (exp->trinary.rhs); - break; - - case etree_unary: - gldelf32ebmip_find_exp_assignment (exp->unary.child); - break; - - default: - break; - } -} - -/* Place an orphan section. We use this to put random SHF_ALLOC - sections in the right segment. */ - -static asection *hold_section; -static lang_output_section_statement_type *hold_use; -static lang_output_section_statement_type *hold_text; -static lang_output_section_statement_type *hold_rodata; -static lang_output_section_statement_type *hold_data; -static lang_output_section_statement_type *hold_bss; -static lang_output_section_statement_type *hold_rel; - -/*ARGSUSED*/ -static boolean -gldelf32ebmip_place_orphan (file, s) - lang_input_statement_type *file; - asection *s; -{ - lang_output_section_statement_type *place; - asection *snew, **pps; - lang_statement_list_type *old; - lang_statement_list_type add; - etree_type *address; - const char *secname, *ps; - lang_output_section_statement_type *os; - - if ((s->flags & SEC_ALLOC) == 0) - return false; - - /* Look through the script to see where to place this section. */ - hold_section = s; - hold_use = NULL; - lang_for_each_statement (gldelf32ebmip_place_section); - - if (hold_use != NULL) - { - /* We have already placed a section with this name. */ - lang_add_section (&hold_use->children, s, hold_use, file); - return true; - } - - secname = bfd_get_section_name (s->owner, s); - - /* If this is a final link, then always put .gnu.warning.SYMBOL - sections into the .text section to get them out of the way. */ - if (! link_info.shared - && ! link_info.relocateable - && strncmp (secname, ".gnu.warning.", sizeof ".gnu.warning." - 1) == 0 - && hold_text != NULL) - { - lang_add_section (&hold_text->children, s, hold_text, file); - return true; - } - - /* Decide which segment the section should go in based on the - section name and section flags. */ - place = NULL; - if ((s->flags & SEC_HAS_CONTENTS) == 0 - && hold_bss != NULL) - place = hold_bss; - else if ((s->flags & SEC_READONLY) == 0 - && hold_data != NULL) - place = hold_data; - else if (strncmp (secname, ".rel", 4) == 0 - && hold_rel != NULL) - place = hold_rel; - else if ((s->flags & SEC_CODE) == 0 - && (s->flags & SEC_READONLY) != 0 - && hold_rodata != NULL) - place = hold_rodata; - else if ((s->flags & SEC_READONLY) != 0 - && hold_text != NULL) - place = hold_text; - if (place == NULL) - return false; - - /* Create the section in the output file, and put it in the right - place. This shuffling is to make the output file look neater. */ - snew = bfd_make_section (output_bfd, secname); - if (snew == NULL) - einfo (_("%P%F: output format %s cannot represent section called %s\n"), - output_bfd->xvec->name, secname); - if (place->bfd_section != NULL) - { - for (pps = &output_bfd->sections; *pps != snew; pps = &(*pps)->next) - ; - *pps = snew->next; - snew->next = place->bfd_section->next; - place->bfd_section->next = snew; - } - - /* Start building a list of statements for this section. */ - old = stat_ptr; - stat_ptr = &add; - lang_list_init (stat_ptr); - - /* If the name of the section is representable in C, then create - symbols to mark the start and the end of the section. */ - for (ps = secname; *ps != '\0'; ps++) - if (! ISALNUM (*ps) && *ps != '_') - break; - if (*ps == '\0' && config.build_constructors) - { - char *symname; - - symname = (char *) xmalloc (ps - secname + sizeof "__start_"); - sprintf (symname, "__start_%s", secname); - lang_add_assignment (exp_assop ('=', symname, - exp_unop (ALIGN_K, - exp_intop ((bfd_vma) 1 - << s->alignment_power)))); - } - - if (! link_info.relocateable) - address = NULL; - else - address = exp_intop ((bfd_vma) 0); - - lang_enter_output_section_statement (secname, address, 0, - (bfd_vma) 0, - (etree_type *) NULL, - (etree_type *) NULL, - (etree_type *) NULL); - - os = lang_output_section_statement_lookup (secname); - lang_add_section (&os->children, s, os, file); - - lang_leave_output_section_statement - ((bfd_vma) 0, "*default*", - (struct lang_output_section_phdr_list *) NULL, "*default*"); - stat_ptr = &add; - - if (*ps == '\0' && config.build_constructors) - { - char *symname; - - symname = (char *) xmalloc (ps - secname + sizeof "__stop_"); - sprintf (symname, "__stop_%s", secname); - lang_add_assignment (exp_assop ('=', symname, - exp_nameop (NAME, "."))); - } - - /* Now stick the new statement list right after PLACE. */ - *add.tail = place->header.next; - place->header.next = add.head; - - stat_ptr = old; - - return true; -} - -static void -gldelf32ebmip_place_section (s) - lang_statement_union_type *s; -{ - lang_output_section_statement_type *os; - - if (s->header.type != lang_output_section_statement_enum) - return; - - os = &s->output_section_statement; - - if (strcmp (os->name, hold_section->name) == 0) - hold_use = os; - - if (strcmp (os->name, ".text") == 0) - hold_text = os; - else if (strcmp (os->name, ".rodata") == 0) - hold_rodata = os; - else if (strcmp (os->name, ".data") == 0) - hold_data = os; - else if (strcmp (os->name, ".bss") == 0) - hold_bss = os; - else if (hold_rel == NULL - && os->bfd_section != NULL - && strncmp (os->name, ".rel", 4) == 0) - hold_rel = os; -} - -static char * -gldelf32ebmip_get_script(isfile) - int *isfile; -{ - *isfile = 0; - - if (link_info.relocateable == true && config.build_constructors == true) - return "OUTPUT_FORMAT(\"elf32-bigmips\", \"elf32-bigmips\",\n\ - \"elf32-littlemips\")\n\ -OUTPUT_ARCH(mips)\n\ -ENTRY(_start)\n\ - /* For some reason, the Solaris linker makes bad executables\n\ - if gld -r is used and the intermediate file has sections starting\n\ - at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld\n\ - bug. But for now assigning the zero vmas works. */\n\ -SECTIONS\n\ -{\n\ - /* Read-only sections, merged into text segment: */\n\ - .interp 0 : { *(.interp) }\n\ - .reginfo 0 : { *(.reginfo) }\n\ - .dynamic 0 : { *(.dynamic) }\n\ - .dynstr 0 : { *(.dynstr) }\n\ - .dynsym 0 : { *(.dynsym) }\n\ - .hash 0 : { *(.hash) }\n\ - .rel.text 0 : { *(.rel.text) }\n\ - .rela.text 0 : { *(.rela.text) }\n\ - .rel.data 0 : { *(.rel.data) }\n\ - .rela.data 0 : { *(.rela.data) }\n\ - .rel.rodata 0 : { *(.rel.rodata) }\n\ - .rela.rodata 0 : { *(.rela.rodata) }\n\ - .rel.got 0 : { *(.rel.got) }\n\ - .rela.got 0 : { *(.rela.got) }\n\ - .rel.ctors 0 : { *(.rel.ctors) }\n\ - .rela.ctors 0 : { *(.rela.ctors) }\n\ - .rel.dtors 0 : { *(.rel.dtors) }\n\ - .rela.dtors 0 : { *(.rela.dtors) }\n\ - .rel.init 0 : { *(.rel.init) }\n\ - .rela.init 0 : { *(.rela.init) }\n\ - .rel.fini 0 : { *(.rel.fini) }\n\ - .rela.fini 0 : { *(.rela.fini) }\n\ - .rel.bss 0 : { *(.rel.bss) }\n\ - .rela.bss 0 : { *(.rela.bss) }\n\ - .rel.plt 0 : { *(.rel.plt) }\n\ - .rela.plt 0 : { *(.rela.plt) }\n\ - .rodata 0 : { *(.rodata) }\n\ - .rodata1 0 : { *(.rodata1) }\n\ - .init 0 : { *(.init) } =0\n\ - .text 0 :\n\ - {\n\ - *(.text)\n\ - *(.stub)\n\ - /* .gnu.warning sections are handled specially by elf32.em. */\n\ - *(.gnu.warning)\n\ - } =0\n\ - .fini 0 : { *(.fini) } =0\n\ - /* Adjust the address for the data segment. We want to adjust up to\n\ - the same address within the page on the next page up. It would\n\ - be more correct to do this:\n\ - The current expression does not correctly handle the case of a\n\ - text segment ending precisely at the end of a page; it causes the\n\ - data segment to skip a page. The above expression does not have\n\ - this problem, but it will currently (2/95) cause BFD to allocate\n\ - a single segment, combining both text and data, for this case.\n\ - This will prevent the text segment from being shared among\n\ - multiple executions of the program; I think that is more\n\ - important than losing a page of the virtual address space (note\n\ - that no actual memory is lost; the page which is skipped can not\n\ - be referenced). */\n\ - .data 0 :\n\ - {\n\ - *(.data)\n\ - CONSTRUCTORS\n\ - }\n\ - .data1 0 : { *(.data1) }\n\ - .ctors 0 : { *(.ctors) }\n\ - .dtors 0 : { *(.dtors) }\n\ - .got 0 :\n\ - {\n\ - *(.got.plt) *(.got)\n\ - }\n\ - /* We want the small data sections together, so single-instruction offsets\n\ - can access them all, and initialized data all before uninitialized, so\n\ - we can shorten the on-disk segment size. */\n\ - .sdata 0 : { *(.sdata) }\n\ - .sbss 0 : { *(.sbss) *(.scommon) }\n\ - .bss 0 :\n\ - {\n\ - *(.dynbss)\n\ - *(.bss)\n\ - *(COMMON)\n\ - }\n\ - /* These are needed for ELF backends which have not yet been\n\ - converted to the new style linker. */\n\ - .stab 0 : { *(.stab) }\n\ - .stabstr 0 : { *(.stabstr) }\n\ - /* DWARF debug sections.\n\ - Symbols in the .debug DWARF section are relative to the beginning of the\n\ - section so we begin .debug at 0. It's not clear yet what needs to happen\n\ - for the others. */\n\ - .debug 0 : { *(.debug) }\n\ - .debug_srcinfo 0 : { *(.debug_srcinfo) }\n\ - .debug_aranges 0 : { *(.debug_aranges) }\n\ - .debug_pubnames 0 : { *(.debug_pubnames) }\n\ - .debug_sfnames 0 : { *(.debug_sfnames) }\n\ - .line 0 : { *(.line) }\n\ - /* These must appear regardless of . */\n\ - .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }\n\ - .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }\n\ -}\n\n"; - else if (link_info.relocateable == true) - return "OUTPUT_FORMAT(\"elf32-bigmips\", \"elf32-bigmips\",\n\ - \"elf32-littlemips\")\n\ -OUTPUT_ARCH(mips)\n\ -ENTRY(_start)\n\ - /* For some reason, the Solaris linker makes bad executables\n\ - if gld -r is used and the intermediate file has sections starting\n\ - at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld\n\ - bug. But for now assigning the zero vmas works. */\n\ -SECTIONS\n\ -{\n\ - /* Read-only sections, merged into text segment: */\n\ - .interp 0 : { *(.interp) }\n\ - .reginfo 0 : { *(.reginfo) }\n\ - .dynamic 0 : { *(.dynamic) }\n\ - .dynstr 0 : { *(.dynstr) }\n\ - .dynsym 0 : { *(.dynsym) }\n\ - .hash 0 : { *(.hash) }\n\ - .rel.text 0 : { *(.rel.text) }\n\ - .rela.text 0 : { *(.rela.text) }\n\ - .rel.data 0 : { *(.rel.data) }\n\ - .rela.data 0 : { *(.rela.data) }\n\ - .rel.rodata 0 : { *(.rel.rodata) }\n\ - .rela.rodata 0 : { *(.rela.rodata) }\n\ - .rel.got 0 : { *(.rel.got) }\n\ - .rela.got 0 : { *(.rela.got) }\n\ - .rel.ctors 0 : { *(.rel.ctors) }\n\ - .rela.ctors 0 : { *(.rela.ctors) }\n\ - .rel.dtors 0 : { *(.rel.dtors) }\n\ - .rela.dtors 0 : { *(.rela.dtors) }\n\ - .rel.init 0 : { *(.rel.init) }\n\ - .rela.init 0 : { *(.rela.init) }\n\ - .rel.fini 0 : { *(.rel.fini) }\n\ - .rela.fini 0 : { *(.rela.fini) }\n\ - .rel.bss 0 : { *(.rel.bss) }\n\ - .rela.bss 0 : { *(.rela.bss) }\n\ - .rel.plt 0 : { *(.rel.plt) }\n\ - .rela.plt 0 : { *(.rela.plt) }\n\ - .rodata 0 : { *(.rodata) }\n\ - .rodata1 0 : { *(.rodata1) }\n\ - .init 0 : { *(.init) } =0\n\ - .text 0 :\n\ - {\n\ - *(.text)\n\ - *(.stub)\n\ - /* .gnu.warning sections are handled specially by elf32.em. */\n\ - *(.gnu.warning)\n\ - } =0\n\ - .fini 0 : { *(.fini) } =0\n\ - /* Adjust the address for the data segment. We want to adjust up to\n\ - the same address within the page on the next page up. It would\n\ - be more correct to do this:\n\ - The current expression does not correctly handle the case of a\n\ - text segment ending precisely at the end of a page; it causes the\n\ - data segment to skip a page. The above expression does not have\n\ - this problem, but it will currently (2/95) cause BFD to allocate\n\ - a single segment, combining both text and data, for this case.\n\ - This will prevent the text segment from being shared among\n\ - multiple executions of the program; I think that is more\n\ - important than losing a page of the virtual address space (note\n\ - that no actual memory is lost; the page which is skipped can not\n\ - be referenced). */\n\ - .data 0 :\n\ - {\n\ - *(.data)\n\ - }\n\ - .data1 0 : { *(.data1) }\n\ - .ctors 0 : { *(.ctors) }\n\ - .dtors 0 : { *(.dtors) }\n\ - .got 0 :\n\ - {\n\ - *(.got.plt) *(.got)\n\ - }\n\ - /* We want the small data sections together, so single-instruction offsets\n\ - can access them all, and initialized data all before uninitialized, so\n\ - we can shorten the on-disk segment size. */\n\ - .sdata 0 : { *(.sdata) }\n\ - .sbss 0 : { *(.sbss) *(.scommon) }\n\ - .bss 0 :\n\ - {\n\ - *(.dynbss)\n\ - *(.bss)\n\ - *(COMMON)\n\ - }\n\ - /* These are needed for ELF backends which have not yet been\n\ - converted to the new style linker. */\n\ - .stab 0 : { *(.stab) }\n\ - .stabstr 0 : { *(.stabstr) }\n\ - /* DWARF debug sections.\n\ - Symbols in the .debug DWARF section are relative to the beginning of the\n\ - section so we begin .debug at 0. It's not clear yet what needs to happen\n\ - for the others. */\n\ - .debug 0 : { *(.debug) }\n\ - .debug_srcinfo 0 : { *(.debug_srcinfo) }\n\ - .debug_aranges 0 : { *(.debug_aranges) }\n\ - .debug_pubnames 0 : { *(.debug_pubnames) }\n\ - .debug_sfnames 0 : { *(.debug_sfnames) }\n\ - .line 0 : { *(.line) }\n\ - /* These must appear regardless of . */\n\ - .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }\n\ - .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }\n\ -}\n\n"; - else if (!config.text_read_only) - return "OUTPUT_FORMAT(\"elf32-bigmips\", \"elf32-bigmips\",\n\ - \"elf32-littlemips\")\n\ -OUTPUT_ARCH(mips)\n\ -ENTRY(_start)\n\ - SEARCH_DIR(/usr/local/mips-elf/lib);\n\ -/* Do we need any of these for elf?\n\ - __DYNAMIC = 0; */\n\ -SECTIONS\n\ -{\n\ - /* Read-only sections, merged into text segment: */\n\ - . = 0x0400000;\n\ - .interp : { *(.interp) }\n\ - .reginfo : { *(.reginfo) }\n\ - .dynamic : { *(.dynamic) }\n\ - .dynstr : { *(.dynstr) }\n\ - .dynsym : { *(.dynsym) }\n\ - .hash : { *(.hash) }\n\ - .rel.text : { *(.rel.text) }\n\ - .rela.text : { *(.rela.text) }\n\ - .rel.data : { *(.rel.data) }\n\ - .rela.data : { *(.rela.data) }\n\ - .rel.rodata : { *(.rel.rodata) }\n\ - .rela.rodata : { *(.rela.rodata) }\n\ - .rel.got : { *(.rel.got) }\n\ - .rela.got : { *(.rela.got) }\n\ - .rel.ctors : { *(.rel.ctors) }\n\ - .rela.ctors : { *(.rela.ctors) }\n\ - .rel.dtors : { *(.rel.dtors) }\n\ - .rela.dtors : { *(.rela.dtors) }\n\ - .rel.init : { *(.rel.init) }\n\ - .rela.init : { *(.rela.init) }\n\ - .rel.fini : { *(.rel.fini) }\n\ - .rela.fini : { *(.rela.fini) }\n\ - .rel.bss : { *(.rel.bss) }\n\ - .rela.bss : { *(.rela.bss) }\n\ - .rel.plt : { *(.rel.plt) }\n\ - .rela.plt : { *(.rela.plt) }\n\ - .rodata : { *(.rodata) }\n\ - .rodata1 : { *(.rodata1) }\n\ - .init : { *(.init) } =0\n\ - .text :\n\ - {\n\ - _ftext = . ;\n\ - *(.text)\n\ - *(.stub)\n\ - /* .gnu.warning sections are handled specially by elf32.em. */\n\ - *(.gnu.warning)\n\ - } =0\n\ - _etext = .;\n\ - PROVIDE (etext = .);\n\ - .fini : { *(.fini) } =0\n\ - /* Adjust the address for the data segment. We want to adjust up to\n\ - the same address within the page on the next page up. It would\n\ - be more correct to do this:\n\ - . = .;\n\ - The current expression does not correctly handle the case of a\n\ - text segment ending precisely at the end of a page; it causes the\n\ - data segment to skip a page. The above expression does not have\n\ - this problem, but it will currently (2/95) cause BFD to allocate\n\ - a single segment, combining both text and data, for this case.\n\ - This will prevent the text segment from being shared among\n\ - multiple executions of the program; I think that is more\n\ - important than losing a page of the virtual address space (note\n\ - that no actual memory is lost; the page which is skipped can not\n\ - be referenced). */\n\ - . += . - 0x0400000;\n\ - .data :\n\ - {\n\ - _fdata = . ;\n\ - *(.data)\n\ - CONSTRUCTORS\n\ - }\n\ - .data1 : { *(.data1) }\n\ - .ctors : { *(.ctors) }\n\ - .dtors : { *(.dtors) }\n\ - _gp = ALIGN(16) + 0x7ff0;\n\ - .got :\n\ - {\n\ - *(.got.plt) *(.got)\n\ - }\n\ - /* We want the small data sections together, so single-instruction offsets\n\ - can access them all, and initialized data all before uninitialized, so\n\ - we can shorten the on-disk segment size. */\n\ - .sdata : { *(.sdata) }\n\ - .lit8 : { *(.lit8) }\n\ - .lit4 : { *(.lit4) }\n\ - _edata = .;\n\ - PROVIDE (edata = .);\n\ - __bss_start = .;\n\ - _fbss = .;\n\ - .sbss : { *(.sbss) *(.scommon) }\n\ - .bss :\n\ - {\n\ - *(.dynbss)\n\ - *(.bss)\n\ - *(COMMON)\n\ - }\n\ - _end = . ;\n\ - PROVIDE (end = .);\n\ - /* These are needed for ELF backends which have not yet been\n\ - converted to the new style linker. */\n\ - .stab 0 : { *(.stab) }\n\ - .stabstr 0 : { *(.stabstr) }\n\ - /* DWARF debug sections.\n\ - Symbols in the .debug DWARF section are relative to the beginning of the\n\ - section so we begin .debug at 0. It's not clear yet what needs to happen\n\ - for the others. */\n\ - .debug 0 : { *(.debug) }\n\ - .debug_srcinfo 0 : { *(.debug_srcinfo) }\n\ - .debug_aranges 0 : { *(.debug_aranges) }\n\ - .debug_pubnames 0 : { *(.debug_pubnames) }\n\ - .debug_sfnames 0 : { *(.debug_sfnames) }\n\ - .line 0 : { *(.line) }\n\ - /* These must appear regardless of . */\n\ - .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }\n\ - .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }\n\ -}\n\n"; - else if (!config.magic_demand_paged) - return "OUTPUT_FORMAT(\"elf32-bigmips\", \"elf32-bigmips\",\n\ - \"elf32-littlemips\")\n\ -OUTPUT_ARCH(mips)\n\ -ENTRY(_start)\n\ - SEARCH_DIR(/usr/local/mips-elf/lib);\n\ -/* Do we need any of these for elf?\n\ - __DYNAMIC = 0; */\n\ -SECTIONS\n\ -{\n\ - /* Read-only sections, merged into text segment: */\n\ - . = 0x0400000;\n\ - .interp : { *(.interp) }\n\ - .reginfo : { *(.reginfo) }\n\ - .dynamic : { *(.dynamic) }\n\ - .dynstr : { *(.dynstr) }\n\ - .dynsym : { *(.dynsym) }\n\ - .hash : { *(.hash) }\n\ - .rel.text : { *(.rel.text) }\n\ - .rela.text : { *(.rela.text) }\n\ - .rel.data : { *(.rel.data) }\n\ - .rela.data : { *(.rela.data) }\n\ - .rel.rodata : { *(.rel.rodata) }\n\ - .rela.rodata : { *(.rela.rodata) }\n\ - .rel.got : { *(.rel.got) }\n\ - .rela.got : { *(.rela.got) }\n\ - .rel.ctors : { *(.rel.ctors) }\n\ - .rela.ctors : { *(.rela.ctors) }\n\ - .rel.dtors : { *(.rel.dtors) }\n\ - .rela.dtors : { *(.rela.dtors) }\n\ - .rel.init : { *(.rel.init) }\n\ - .rela.init : { *(.rela.init) }\n\ - .rel.fini : { *(.rel.fini) }\n\ - .rela.fini : { *(.rela.fini) }\n\ - .rel.bss : { *(.rel.bss) }\n\ - .rela.bss : { *(.rela.bss) }\n\ - .rel.plt : { *(.rel.plt) }\n\ - .rela.plt : { *(.rela.plt) }\n\ - .rodata : { *(.rodata) }\n\ - .rodata1 : { *(.rodata1) }\n\ - .init : { *(.init) } =0\n\ - .text :\n\ - {\n\ - _ftext = . ;\n\ - *(.text)\n\ - *(.stub)\n\ - /* .gnu.warning sections are handled specially by elf32.em. */\n\ - *(.gnu.warning)\n\ - } =0\n\ - _etext = .;\n\ - PROVIDE (etext = .);\n\ - .fini : { *(.fini) } =0\n\ - /* Adjust the address for the data segment. We want to adjust up to\n\ - the same address within the page on the next page up. It would\n\ - be more correct to do this:\n\ - . = 0x10000000;\n\ - The current expression does not correctly handle the case of a\n\ - text segment ending precisely at the end of a page; it causes the\n\ - data segment to skip a page. The above expression does not have\n\ - this problem, but it will currently (2/95) cause BFD to allocate\n\ - a single segment, combining both text and data, for this case.\n\ - This will prevent the text segment from being shared among\n\ - multiple executions of the program; I think that is more\n\ - important than losing a page of the virtual address space (note\n\ - that no actual memory is lost; the page which is skipped can not\n\ - be referenced). */\n\ - . += 0x10000000 - 0x0400000;\n\ - .data :\n\ - {\n\ - _fdata = . ;\n\ - *(.data)\n\ - CONSTRUCTORS\n\ - }\n\ - .data1 : { *(.data1) }\n\ - .ctors : { *(.ctors) }\n\ - .dtors : { *(.dtors) }\n\ - _gp = ALIGN(16) + 0x7ff0;\n\ - .got :\n\ - {\n\ - *(.got.plt) *(.got)\n\ - }\n\ - /* We want the small data sections together, so single-instruction offsets\n\ - can access them all, and initialized data all before uninitialized, so\n\ - we can shorten the on-disk segment size. */\n\ - .sdata : { *(.sdata) }\n\ - .lit8 : { *(.lit8) }\n\ - .lit4 : { *(.lit4) }\n\ - _edata = .;\n\ - PROVIDE (edata = .);\n\ - __bss_start = .;\n\ - _fbss = .;\n\ - .sbss : { *(.sbss) *(.scommon) }\n\ - .bss :\n\ - {\n\ - *(.dynbss)\n\ - *(.bss)\n\ - *(COMMON)\n\ - }\n\ - _end = . ;\n\ - PROVIDE (end = .);\n\ - /* These are needed for ELF backends which have not yet been\n\ - converted to the new style linker. */\n\ - .stab 0 : { *(.stab) }\n\ - .stabstr 0 : { *(.stabstr) }\n\ - /* DWARF debug sections.\n\ - Symbols in the .debug DWARF section are relative to the beginning of the\n\ - section so we begin .debug at 0. It's not clear yet what needs to happen\n\ - for the others. */\n\ - .debug 0 : { *(.debug) }\n\ - .debug_srcinfo 0 : { *(.debug_srcinfo) }\n\ - .debug_aranges 0 : { *(.debug_aranges) }\n\ - .debug_pubnames 0 : { *(.debug_pubnames) }\n\ - .debug_sfnames 0 : { *(.debug_sfnames) }\n\ - .line 0 : { *(.line) }\n\ - /* These must appear regardless of . */\n\ - .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }\n\ - .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }\n\ -}\n\n"; - else if (link_info.shared) - return "OUTPUT_FORMAT(\"elf32-bigmips\", \"elf32-bigmips\",\n\ - \"elf32-littlemips\")\n\ -OUTPUT_ARCH(mips)\n\ -ENTRY(_start)\n\ - SEARCH_DIR(/usr/local/mips-elf/lib);\n\ -/* Do we need any of these for elf?\n\ - __DYNAMIC = 0; */\n\ -SECTIONS\n\ -{\n\ - /* Read-only sections, merged into text segment: */\n\ - . = 0x5ffe0000 + SIZEOF_HEADERS;\n\ - .reginfo : { *(.reginfo) }\n\ - .dynamic : { *(.dynamic) }\n\ - .dynstr : { *(.dynstr) }\n\ - .dynsym : { *(.dynsym) }\n\ - .hash : { *(.hash) }\n\ - .rel.text : { *(.rel.text) }\n\ - .rela.text : { *(.rela.text) }\n\ - .rel.data : { *(.rel.data) }\n\ - .rela.data : { *(.rela.data) }\n\ - .rel.rodata : { *(.rel.rodata) }\n\ - .rela.rodata : { *(.rela.rodata) }\n\ - .rel.got : { *(.rel.got) }\n\ - .rela.got : { *(.rela.got) }\n\ - .rel.ctors : { *(.rel.ctors) }\n\ - .rela.ctors : { *(.rela.ctors) }\n\ - .rel.dtors : { *(.rel.dtors) }\n\ - .rela.dtors : { *(.rela.dtors) }\n\ - .rel.init : { *(.rel.init) }\n\ - .rela.init : { *(.rela.init) }\n\ - .rel.fini : { *(.rel.fini) }\n\ - .rela.fini : { *(.rela.fini) }\n\ - .rel.bss : { *(.rel.bss) }\n\ - .rela.bss : { *(.rela.bss) }\n\ - .rel.plt : { *(.rel.plt) }\n\ - .rela.plt : { *(.rela.plt) }\n\ - .rodata : { *(.rodata) }\n\ - .rodata1 : { *(.rodata1) }\n\ - .init : { *(.init) } =0\n\ - .text :\n\ - {\n\ - *(.text)\n\ - *(.stub)\n\ - /* .gnu.warning sections are handled specially by elf32.em. */\n\ - *(.gnu.warning)\n\ - } =0\n\ - .fini : { *(.fini) } =0\n\ - /* Adjust the address for the data segment. We want to adjust up to\n\ - the same address within the page on the next page up. It would\n\ - be more correct to do this:\n\ - . = 0x10000000;\n\ - The current expression does not correctly handle the case of a\n\ - text segment ending precisely at the end of a page; it causes the\n\ - data segment to skip a page. The above expression does not have\n\ - this problem, but it will currently (2/95) cause BFD to allocate\n\ - a single segment, combining both text and data, for this case.\n\ - This will prevent the text segment from being shared among\n\ - multiple executions of the program; I think that is more\n\ - important than losing a page of the virtual address space (note\n\ - that no actual memory is lost; the page which is skipped can not\n\ - be referenced). */\n\ - . += 0x10000;\n\ - .data :\n\ - {\n\ - *(.data)\n\ - CONSTRUCTORS\n\ - }\n\ - .data1 : { *(.data1) }\n\ - .ctors : { *(.ctors) }\n\ - .dtors : { *(.dtors) }\n\ - _gp = ALIGN(16) + 0x7ff0;\n\ - .got :\n\ - {\n\ - *(.got.plt) *(.got)\n\ - }\n\ - /* We want the small data sections together, so single-instruction offsets\n\ - can access them all, and initialized data all before uninitialized, so\n\ - we can shorten the on-disk segment size. */\n\ - .sdata : { *(.sdata) }\n\ - .lit8 : { *(.lit8) }\n\ - .lit4 : { *(.lit4) }\n\ - .sbss : { *(.sbss) *(.scommon) }\n\ - .bss :\n\ - {\n\ - *(.dynbss)\n\ - *(.bss)\n\ - *(COMMON)\n\ - }\n\ - /* These are needed for ELF backends which have not yet been\n\ - converted to the new style linker. */\n\ - .stab 0 : { *(.stab) }\n\ - .stabstr 0 : { *(.stabstr) }\n\ - /* DWARF debug sections.\n\ - Symbols in the .debug DWARF section are relative to the beginning of the\n\ - section so we begin .debug at 0. It's not clear yet what needs to happen\n\ - for the others. */\n\ - .debug 0 : { *(.debug) }\n\ - .debug_srcinfo 0 : { *(.debug_srcinfo) }\n\ - .debug_aranges 0 : { *(.debug_aranges) }\n\ - .debug_pubnames 0 : { *(.debug_pubnames) }\n\ - .debug_sfnames 0 : { *(.debug_sfnames) }\n\ - .line 0 : { *(.line) }\n\ - /* These must appear regardless of . */\n\ - .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }\n\ - .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }\n\ -}\n\n"; - else - return "OUTPUT_FORMAT(\"elf32-bigmips\", \"elf32-bigmips\",\n\ - \"elf32-littlemips\")\n\ -OUTPUT_ARCH(mips)\n\ -ENTRY(_start)\n\ - SEARCH_DIR(/usr/local/mips-elf/lib);\n\ -/* Do we need any of these for elf?\n\ - __DYNAMIC = 0; */\n\ -SECTIONS\n\ -{\n\ - /* Read-only sections, merged into text segment: */\n\ - . = 0x0400000;\n\ - .interp : { *(.interp) }\n\ - .reginfo : { *(.reginfo) }\n\ - .dynamic : { *(.dynamic) }\n\ - .dynstr : { *(.dynstr) }\n\ - .dynsym : { *(.dynsym) }\n\ - .hash : { *(.hash) }\n\ - .rel.text : { *(.rel.text) }\n\ - .rela.text : { *(.rela.text) }\n\ - .rel.data : { *(.rel.data) }\n\ - .rela.data : { *(.rela.data) }\n\ - .rel.rodata : { *(.rel.rodata) }\n\ - .rela.rodata : { *(.rela.rodata) }\n\ - .rel.got : { *(.rel.got) }\n\ - .rela.got : { *(.rela.got) }\n\ - .rel.ctors : { *(.rel.ctors) }\n\ - .rela.ctors : { *(.rela.ctors) }\n\ - .rel.dtors : { *(.rel.dtors) }\n\ - .rela.dtors : { *(.rela.dtors) }\n\ - .rel.init : { *(.rel.init) }\n\ - .rela.init : { *(.rela.init) }\n\ - .rel.fini : { *(.rel.fini) }\n\ - .rela.fini : { *(.rela.fini) }\n\ - .rel.bss : { *(.rel.bss) }\n\ - .rela.bss : { *(.rela.bss) }\n\ - .rel.plt : { *(.rel.plt) }\n\ - .rela.plt : { *(.rela.plt) }\n\ - .rodata : { *(.rodata) }\n\ - .rodata1 : { *(.rodata1) }\n\ - .init : { *(.init) } =0\n\ - .text :\n\ - {\n\ - _ftext = . ;\n\ - *(.text)\n\ - *(.stub)\n\ - /* .gnu.warning sections are handled specially by elf32.em. */\n\ - *(.gnu.warning)\n\ - } =0\n\ - _etext = .;\n\ - PROVIDE (etext = .);\n\ - .fini : { *(.fini) } =0\n\ - /* Adjust the address for the data segment. We want to adjust up to\n\ - the same address within the page on the next page up. It would\n\ - be more correct to do this:\n\ - . = 0x10000000;\n\ - The current expression does not correctly handle the case of a\n\ - text segment ending precisely at the end of a page; it causes the\n\ - data segment to skip a page. The above expression does not have\n\ - this problem, but it will currently (2/95) cause BFD to allocate\n\ - a single segment, combining both text and data, for this case.\n\ - This will prevent the text segment from being shared among\n\ - multiple executions of the program; I think that is more\n\ - important than losing a page of the virtual address space (note\n\ - that no actual memory is lost; the page which is skipped can not\n\ - be referenced). */\n\ - . += 0x10000000 - 0x0400000;\n\ - .data :\n\ - {\n\ - _fdata = . ;\n\ - *(.data)\n\ - CONSTRUCTORS\n\ - }\n\ - .data1 : { *(.data1) }\n\ - .ctors : { *(.ctors) }\n\ - .dtors : { *(.dtors) }\n\ - _gp = ALIGN(16) + 0x7ff0;\n\ - .got :\n\ - {\n\ - *(.got.plt) *(.got)\n\ - }\n\ - /* We want the small data sections together, so single-instruction offsets\n\ - can access them all, and initialized data all before uninitialized, so\n\ - we can shorten the on-disk segment size. */\n\ - .sdata : { *(.sdata) }\n\ - .lit8 : { *(.lit8) }\n\ - .lit4 : { *(.lit4) }\n\ - _edata = .;\n\ - PROVIDE (edata = .);\n\ - __bss_start = .;\n\ - _fbss = .;\n\ - .sbss : { *(.sbss) *(.scommon) }\n\ - .bss :\n\ - {\n\ - *(.dynbss)\n\ - *(.bss)\n\ - *(COMMON)\n\ - }\n\ - _end = . ;\n\ - PROVIDE (end = .);\n\ - /* These are needed for ELF backends which have not yet been\n\ - converted to the new style linker. */\n\ - .stab 0 : { *(.stab) }\n\ - .stabstr 0 : { *(.stabstr) }\n\ - /* DWARF debug sections.\n\ - Symbols in the .debug DWARF section are relative to the beginning of the\n\ - section so we begin .debug at 0. It's not clear yet what needs to happen\n\ - for the others. */\n\ - .debug 0 : { *(.debug) }\n\ - .debug_srcinfo 0 : { *(.debug_srcinfo) }\n\ - .debug_aranges 0 : { *(.debug_aranges) }\n\ - .debug_pubnames 0 : { *(.debug_pubnames) }\n\ - .debug_sfnames 0 : { *(.debug_sfnames) }\n\ - .line 0 : { *(.line) }\n\ - /* These must appear regardless of . */\n\ - .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }\n\ - .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }\n\ -}\n\n"; -} - -struct ld_emulation_xfer_struct ld_elf32ebmip_emulation = -{ - gldelf32ebmip_before_parse, - syslib_default, - hll_default, - after_parse_default, - gldelf32ebmip_after_open, - after_allocation_default, - set_output_arch_default, - ldemul_default_target, - gldelf32ebmip_before_allocation, - gldelf32ebmip_get_script, - "elf32ebmip", - "elf32-bigmips", - NULL, - NULL, - gldelf32ebmip_open_dynamic_archive, - gldelf32ebmip_place_orphan -}; diff -uprN binutils-2.12.90.0.7/ld/mpw-eppcmac.c binutils-2.12.90.0.9/ld/mpw-eppcmac.c --- binutils-2.12.90.0.7/ld/mpw-eppcmac.c Mon Oct 1 15:25:25 2001 +++ binutils-2.12.90.0.9/ld/mpw-eppcmac.c Wed Dec 31 16:00:00 1969 @@ -1,1224 +0,0 @@ -/* This file is is generated by a shell script. DO NOT EDIT! */ - -/* AIX emulation code for ppcmacos - Copyright 1991, 1993, 1995, 1996, 1997, 2000, 2001 - Free Software Foundation, Inc. - Written by Steve Chamberlain - AIX support by Ian Lance Taylor - -This file is part of GLD, the Gnu Linker. - -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. */ - -#define TARGET_IS_ppcmacos - -#include "bfd.h" -#include "sysdep.h" -#include "libiberty.h" -#include "safe-ctype.h" -#include "getopt.h" -#include "bfdlink.h" - -#include "ld.h" -#include "ldmain.h" -#include "ldmisc.h" -#include "ldexp.h" -#include "ldlang.h" -#include "ldctor.h" -#include "ldgram.h" -#include "ldfile.h" -#include "ldemul.h" - -static void gldppcmacos_before_parse PARAMS ((void)); -static int gldppcmacos_parse_args PARAMS ((int, char **)); -static void gldppcmacos_after_open PARAMS ((void)); -static void gldppcmacos_before_allocation PARAMS ((void)); -static void gldppcmacos_read_file PARAMS ((const char *, boolean)); -static void gldppcmacos_free PARAMS ((PTR)); -static void gldppcmacos_find_relocs - PARAMS ((lang_statement_union_type *)); -static void gldppcmacos_find_exp_assignment PARAMS ((etree_type *)); -static char *gldppcmacos_get_script PARAMS ((int *isfile)); - -/* The file alignment required for each section. */ -static unsigned long file_align; - -/* The maximum size the stack is permitted to grow. This is stored in - the a.out header. */ -static unsigned long maxstack; - -/* The maximum data size. This is stored in the a.out header. */ -static unsigned long maxdata; - -/* Whether to perform garbage collection. */ -static int gc = 1; - -/* The module type to use. */ -static unsigned short modtype = ('1' << 8) | 'L'; - -/* Whether the .text section must be read-only (i.e., no relocs - permitted). */ -static int textro; - -/* Whether to implement Unix like linker semantics. */ -static int unix_ld; - -/* Structure used to hold import file list. */ - -struct filelist -{ - struct filelist *next; - const char *name; -}; - -/* List of import files. */ -static struct filelist *import_files; - -/* List of export symbols read from the export files. */ - -struct export_symbol_list -{ - struct export_symbol_list *next; - const char *name; - boolean syscall; -}; - -static struct export_symbol_list *export_symbols; - -/* This routine is called before anything else is done. */ - -static void -gldppcmacos_before_parse() -{ -#ifndef TARGET_ /* I.e., if not generic. */ - ldfile_output_architecture = bfd_arch_powerpc; -#endif /* not TARGET_ */ -} - -/* Handle AIX specific options. */ - -static int -gldppcmacos_parse_args (argc, argv) - int argc; - char **argv; -{ - int prevoptind = optind; - int prevopterr = opterr; - int indx; - int longind; - int optc; - long val; - char *end; - -#define OPTION_IGNORE (300) -#define OPTION_AUTOIMP (OPTION_IGNORE + 1) -#define OPTION_ERNOTOK (OPTION_AUTOIMP + 1) -#define OPTION_EROK (OPTION_ERNOTOK + 1) -#define OPTION_EXPORT (OPTION_EROK + 1) -#define OPTION_IMPORT (OPTION_EXPORT + 1) -#define OPTION_LOADMAP (OPTION_IMPORT + 1) -#define OPTION_MAXDATA (OPTION_LOADMAP + 1) -#define OPTION_MAXSTACK (OPTION_MAXDATA + 1) -#define OPTION_MODTYPE (OPTION_MAXSTACK + 1) -#define OPTION_NOAUTOIMP (OPTION_MODTYPE + 1) -#define OPTION_NOSTRCMPCT (OPTION_NOAUTOIMP + 1) -#define OPTION_PD (OPTION_NOSTRCMPCT + 1) -#define OPTION_PT (OPTION_PD + 1) -#define OPTION_STRCMPCT (OPTION_PT + 1) -#define OPTION_UNIX (OPTION_STRCMPCT + 1) - - static struct option longopts[] = { - {"basis", no_argument, NULL, OPTION_IGNORE}, - {"bautoimp", no_argument, NULL, OPTION_AUTOIMP}, - {"bcomprld", no_argument, NULL, OPTION_IGNORE}, - {"bcrld", no_argument, NULL, OPTION_IGNORE}, - {"bcror31", no_argument, NULL, OPTION_IGNORE}, - {"bD", required_argument, NULL, OPTION_MAXDATA}, - {"bE", required_argument, NULL, OPTION_EXPORT}, - {"bernotok", no_argument, NULL, OPTION_ERNOTOK}, - {"berok", no_argument, NULL, OPTION_EROK}, - {"berrmsg", no_argument, NULL, OPTION_IGNORE}, - {"bexport", required_argument, NULL, OPTION_EXPORT}, - {"bf", no_argument, NULL, OPTION_ERNOTOK}, - {"bgc", no_argument, &gc, 1}, - {"bh", required_argument, NULL, OPTION_IGNORE}, - {"bhalt", required_argument, NULL, OPTION_IGNORE}, - {"bI", required_argument, NULL, OPTION_IMPORT}, - {"bimport", required_argument, NULL, OPTION_IMPORT}, - {"bl", required_argument, NULL, OPTION_LOADMAP}, - {"bloadmap", required_argument, NULL, OPTION_LOADMAP}, - {"bmaxdata", required_argument, NULL, OPTION_MAXDATA}, - {"bmaxstack", required_argument, NULL, OPTION_MAXSTACK}, - {"bM", required_argument, NULL, OPTION_MODTYPE}, - {"bmodtype", required_argument, NULL, OPTION_MODTYPE}, - {"bnoautoimp", no_argument, NULL, OPTION_NOAUTOIMP}, - {"bnodelcsect", no_argument, NULL, OPTION_IGNORE}, - {"bnoentry", no_argument, NULL, OPTION_IGNORE}, - {"bnogc", no_argument, &gc, 0}, - {"bnso", no_argument, NULL, OPTION_NOAUTOIMP}, - {"bnostrcmpct", no_argument, NULL, OPTION_NOSTRCMPCT}, - {"bnotextro", no_argument, &textro, 0}, - {"bnro", no_argument, &textro, 0}, - {"bpD", required_argument, NULL, OPTION_PD}, - {"bpT", required_argument, NULL, OPTION_PT}, - {"bro", no_argument, &textro, 1}, - {"bS", required_argument, NULL, OPTION_MAXSTACK}, - {"bso", no_argument, NULL, OPTION_AUTOIMP}, - {"bstrcmpct", no_argument, NULL, OPTION_STRCMPCT}, - {"btextro", no_argument, &textro, 1}, - {"static", no_argument, NULL, OPTION_NOAUTOIMP}, - {"unix", no_argument, NULL, OPTION_UNIX}, - {NULL, no_argument, NULL, 0} - }; - - /* Options supported by the AIX linker which we do not support: -f, - -S, -v, -Z, -bbindcmds, -bbinder, -bbindopts, -bcalls, -bcaps, - -bcror15, -bdebugopt, -bdbg, -bdelcsect, -bex?, -bfilelist, -bfl, - -bgcbypass, -bglink, -binsert, -bi, -bloadmap, -bl, -bmap, -bnl, - -bnobind, -bnocomprld, -bnocrld, -bnoerrmsg, -bnoglink, - -bnoloadmap, -bnl, -bnoobjreorder, -bnoquiet, -bnoreorder, - -bnotypchk, -bnox, -bquiet, -bR, -brename, -breorder, -btypchk, - -bx, -bX, -bxref. */ - - /* If the current option starts with -b, change the first : to an =. - The AIX linker uses : to separate the option from the argument; - changing it to = lets us treat it as a getopt option. */ - indx = optind; - if (indx == 0) - indx = 1; - if (indx < argc && strncmp (argv[indx], "-b", 2) == 0) - { - char *s; - - for (s = argv[indx]; *s != '\0'; s++) - { - if (*s == ':') - { - *s = '='; - break; - } - } - } - - opterr = 0; - optc = getopt_long_only (argc, argv, "-D:H:KT:z", longopts, &longind); - opterr = prevopterr; - - switch (optc) - { - default: - optind = prevoptind; - return 0; - - case 0: - /* Long option which just sets a flag. */ - break; - - case 'D': - val = strtol (optarg, &end, 0); - if (*end != '\0') - einfo (_("%P: warning: ignoring invalid -D number %s\n"), optarg); - else if (val != -1) - lang_section_start (".data", exp_intop (val)); - break; - - case 'H': - val = strtoul (optarg, &end, 0); - if (*end != '\0' - || (val & (val - 1)) != 0) - einfo (_("%P: warning: ignoring invalid -H number %s\n"), optarg); - else - file_align = val; - break; - - case 'K': - case 'z': - /* FIXME: This should use the page size for the target system. */ - file_align = 4096; - break; - - case 'T': - /* On AIX this is the same as GNU ld -Ttext. When we see -T - number, we assume the AIX option is intended. Otherwise, we - assume the usual GNU ld -T option is intended. We can't just - ignore the AIX option, because gcc passes it to the linker. */ - val = strtoul (optarg, &end, 0); - if (*end != '\0') - { - optind = prevoptind; - return 0; - } - lang_section_start (".text", exp_intop (val)); - break; - - case OPTION_IGNORE: - break; - - case OPTION_AUTOIMP: - link_info.static_link = false; - break; - - case OPTION_ERNOTOK: - force_make_executable = false; - break; - - case OPTION_EROK: - force_make_executable = true; - break; - - case OPTION_EXPORT: - gldppcmacos_read_file (optarg, false); - break; - - case OPTION_IMPORT: - { - struct filelist *n; - struct filelist **flpp; - - n = (struct filelist *) xmalloc (sizeof (struct filelist)); - n->next = NULL; - n->name = optarg; - flpp = &import_files; - while (*flpp != NULL) - flpp = &(*flpp)->next; - *flpp = n; - } - break; - - case OPTION_LOADMAP: - config.map_filename = optarg; - break; - - case OPTION_MAXDATA: - val = strtoul (optarg, &end, 0); - if (*end != '\0') - einfo (_("%P: warning: ignoring invalid -bmaxdata number %s\n"), - optarg); - else - maxdata = val; - break; - - case OPTION_MAXSTACK: - val = strtoul (optarg, &end, 0); - if (*end != '\0') - einfo (_("%P: warning: ignoring invalid -bmaxstack number %s\n"), - optarg); - else - maxstack = val; - break; - - case OPTION_MODTYPE: - if (*optarg == 'S') - { - link_info.shared = true; - ++optarg; - } - if (*optarg == '\0' || optarg[1] == '\0') - einfo (_("%P: warning: ignoring invalid module type %s\n"), optarg); - else - modtype = (*optarg << 8) | optarg[1]; - break; - - case OPTION_NOAUTOIMP: - link_info.static_link = true; - break; - - case OPTION_NOSTRCMPCT: - link_info.traditional_format = true; - break; - - case OPTION_PD: - /* This sets the page that the .data section is supposed to - start on. The offset within the page should still be the - offset within the file, so we need to build an appropriate - expression. */ - val = strtoul (optarg, &end, 0); - if (*end != '\0') - einfo (_("%P: warning: ignoring invalid -pD number %s\n"), optarg); - else - { - etree_type *t; - - t = exp_binop ('+', - exp_intop (val), - exp_binop ('&', - exp_nameop (NAME, "."), - exp_intop (0xfff))); - t = exp_binop ('&', - exp_binop ('+', t, exp_intop (7)), - exp_intop (~ (bfd_vma) 7)); - lang_section_start (".data", t); - } - break; - - case OPTION_PT: - /* This set the page that the .text section is supposed to start - on. The offset within the page should still be the offset - within the file. */ - val = strtoul (optarg, &end, 0); - if (*end != '\0') - einfo (_("%P: warning: ignoring invalid -pT number %s\n"), optarg); - else - { - etree_type *t; - - t = exp_binop ('+', - exp_intop (val), - exp_nameop (SIZEOF_HEADERS, NULL)); - t = exp_binop ('&', - exp_binop ('+', t, exp_intop (7)), - exp_intop (~ (bfd_vma) 7)); - lang_section_start (".text", t); - } - break; - - case OPTION_STRCMPCT: - link_info.traditional_format = false; - break; - - case OPTION_UNIX: - unix_ld = true; - break; - } - - return 1; -} - -/* This is called when an input file can not be recognized as a BFD - object or an archive. If the file starts with #!, we must treat it - as an import file. This is for AIX compatibility. */ - -static boolean -gldppcmacos_unrecognized_file (entry) - lang_input_statement_type *entry; -{ - FILE *e; - boolean ret; - - e = fopen (entry->filename, FOPEN_RT); - if (e == NULL) - return false; - - ret = false; - - if (getc (e) == '#' && getc (e) == '!') - { - struct filelist *n; - struct filelist **flpp; - - n = (struct filelist *) xmalloc (sizeof (struct filelist)); - n->next = NULL; - n->name = entry->filename; - flpp = &import_files; - while (*flpp != NULL) - flpp = &(*flpp)->next; - *flpp = n; - - ret = true; - entry->loaded = true; - } - - fclose (e); - - return ret; -} - -/* This is called after the input files have been opened. */ - -static void -gldppcmacos_after_open () -{ - boolean r; - struct set_info *p; - - /* Call ldctor_build_sets, after pretending that this is a - relocateable link. We do this because AIX requires relocation - entries for all references to symbols, even in a final - executable. Of course, we only want to do this if we are - producing an XCOFF output file. */ - r = link_info.relocateable; - if (strstr (bfd_get_target (output_bfd), "xcoff") != NULL) - link_info.relocateable = true; - ldctor_build_sets (); - link_info.relocateable = r; - - /* For each set, record the size, so that the XCOFF backend can - output the correct csect length. */ - for (p = sets; p != (struct set_info *) NULL; p = p->next) - { - bfd_size_type size; - - /* If the symbol is defined, we may have been invoked from - collect, and the sets may already have been built, so we do - not do anything. */ - if (p->h->type == bfd_link_hash_defined - || p->h->type == bfd_link_hash_defweak) - continue; - - if (p->reloc != BFD_RELOC_CTOR) - { - /* Handle this if we need to. */ - abort (); - } - - size = (p->count + 2) * 4; - if (! bfd_xcoff_link_record_set (output_bfd, &link_info, p->h, size)) - einfo (_("%F%P: bfd_xcoff_link_record_set failed: %E\n")); - } -} - -/* This is called after the sections have been attached to output - sections, but before any sizes or addresses have been set. */ - -static void -gldppcmacos_before_allocation () -{ - struct filelist *fl; - struct export_symbol_list *el; - char *libpath; - asection *special_sections[6]; - int i; - - /* Handle the import and export files, if any. */ - for (fl = import_files; fl != NULL; fl = fl->next) - gldppcmacos_read_file (fl->name, true); - for (el = export_symbols; el != NULL; el = el->next) - { - struct bfd_link_hash_entry *h; - - h = bfd_link_hash_lookup (link_info.hash, el->name, false, false, false); - if (h == NULL) - einfo (_("%P%F: bfd_link_hash_lookup of export symbol failed: %E\n")); - if (! bfd_xcoff_export_symbol (output_bfd, &link_info, h, el->syscall)) - einfo (_("%P%F: bfd_xcoff_export_symbol failed: %E\n")); - } - - /* Track down all relocations called for by the linker script (these - are typically constructor/destructor entries created by - CONSTRUCTORS) and let the backend know it will need to create - .loader relocs for them. */ - lang_for_each_statement (gldppcmacos_find_relocs); - - /* We need to build LIBPATH from the -L arguments. If any -rpath - arguments were used, though, we use -rpath instead, as a GNU - extension. */ - if (command_line.rpath != NULL) - libpath = command_line.rpath; - else if (search_head == NULL) - libpath = (char *) ""; - else - { - size_t len; - search_dirs_type *search; - - len = strlen (search_head->name); - libpath = xmalloc (len + 1); - strcpy (libpath, search_head->name); - for (search = search_head->next; search != NULL; search = search->next) - { - size_t nlen; - - nlen = strlen (search->name); - libpath = xrealloc (libpath, len + nlen + 2); - libpath[len] = ':'; - strcpy (libpath + len + 1, search->name); - len += nlen + 1; - } - } - - /* Let the XCOFF backend set up the .loader section. */ - if (! bfd_xcoff_size_dynamic_sections (output_bfd, &link_info, libpath, - entry_symbol, file_align, - maxstack, maxdata, - gc && ! unix_ld ? true : false, - modtype, - textro ? true : false, - unix_ld, - special_sections)) - einfo (_("%P%F: failed to set dynamic section sizes: %E\n")); - - /* Look through the special sections, and put them in the right - place in the link ordering. This is especially magic. */ - for (i = 0; i < 6; i++) - { - asection *sec; - lang_output_section_statement_type *os; - lang_statement_union_type **pls; - lang_input_section_type *is; - const char *oname; - boolean start; - - sec = special_sections[i]; - if (sec == NULL) - continue; - - /* Remove this section from the list of the output section. - This assumes we know what the script looks like. */ - is = NULL; - os = lang_output_section_find (sec->output_section->name); - if (os == NULL) - einfo (_("%P%F: can't find output section %s\n"), - sec->output_section->name); - for (pls = &os->children.head; *pls != NULL; pls = &(*pls)->header.next) - { - if ((*pls)->header.type == lang_input_section_enum - && (*pls)->input_section.section == sec) - { - is = (lang_input_section_type *) *pls; - *pls = (*pls)->header.next; - break; - } - if ((*pls)->header.type == lang_wild_statement_enum) - { - lang_statement_union_type **pwls; - - for (pwls = &(*pls)->wild_statement.children.head; - *pwls != NULL; - pwls = &(*pwls)->header.next) - { - if ((*pwls)->header.type == lang_input_section_enum - && (*pwls)->input_section.section == sec) - { - is = (lang_input_section_type *) *pwls; - *pwls = (*pwls)->header.next; - break; - } - } - if (is != NULL) - break; - } - } - - if (is == NULL) - einfo (_("%P%F: can't find %s in output section\n"), - bfd_get_section_name (sec->owner, sec)); - - /* Now figure out where the section should go. */ - switch (i) - { - default: /* to avoid warnings */ - case 0: - /* _text */ - oname = ".text"; - start = true; - break; - case 1: - /* _etext */ - oname = ".text"; - start = false; - break; - case 2: - /* _data */ - oname = ".data"; - start = true; - break; - case 3: - /* _edata */ - oname = ".data"; - start = false; - break; - case 4: - case 5: - /* _end and end */ - oname = ".bss"; - start = false; - break; - } - - os = lang_output_section_find (oname); - - if (start) - { - is->header.next = os->children.head; - os->children.head = (lang_statement_union_type *) is; - } - else - { - is->header.next = NULL; - lang_statement_append (&os->children, - (lang_statement_union_type *) is, - &is->header.next); - } - } -} - -/* Read an import or export file. For an import file, this is called - by the before_allocation emulation routine. For an export file, - this is called by the parse_args emulation routine. */ - -static void -gldppcmacos_read_file (filename, import) - const char *filename; - boolean import; -{ - struct obstack *o; - FILE *f; - int lineno; - int c; - boolean keep; - const char *imppath; - const char *impfile; - const char *impmember; - - o = (struct obstack *) xmalloc (sizeof (struct obstack)); - obstack_specify_allocation (o, 0, 0, xmalloc, gldppcmacos_free); - - f = fopen (filename, FOPEN_RT); - if (f == NULL) - { - bfd_set_error (bfd_error_system_call); - einfo ("%F%s: %E\n", filename); - } - - keep = false; - - imppath = NULL; - impfile = NULL; - impmember = NULL; - - lineno = 0; - while ((c = getc (f)) != EOF) - { - char *s; - char *symname; - boolean syscall; - bfd_vma address; - struct bfd_link_hash_entry *h; - - if (c != '\n') - { - obstack_1grow (o, c); - continue; - } - - obstack_1grow (o, '\0'); - ++lineno; - - s = (char *) obstack_base (o); - while (ISSPACE (*s)) - ++s; - if (*s == '\0' - || *s == '*' - || (*s == '#' && s[1] == ' ') - || (! import && *s == '#' && s[1] == '!')) - { - obstack_free (o, obstack_base (o)); - continue; - } - - if (*s == '#' && s[1] == '!') - { - s += 2; - while (ISSPACE (*s)) - ++s; - if (*s == '\0') - { - imppath = NULL; - impfile = NULL; - impmember = NULL; - obstack_free (o, obstack_base (o)); - } - else if (*s == '(') - einfo (_("%F%s%d: #! ([member]) is not supported in import files\n"), - filename, lineno); - else - { - char cs; - char *file; - - (void) obstack_finish (o); - keep = true; - imppath = s; - file = NULL; - while (! ISSPACE (*s) && *s != '(' && *s != '\0') - { - if (*s == '/') - file = s + 1; - ++s; - } - if (file != NULL) - { - file[-1] = '\0'; - impfile = file; - if (imppath == file - 1) - imppath = "/"; - } - else - { - impfile = imppath; - imppath = ""; - } - cs = *s; - *s = '\0'; - while (ISSPACE (cs)) - { - ++s; - cs = *s; - } - if (cs != '(') - { - impmember = ""; - if (cs != '\0') - einfo (_("%s:%d: warning: syntax error in import file\n"), - filename, lineno); - } - else - { - ++s; - impmember = s; - while (*s != ')' && *s != '\0') - ++s; - if (*s == ')') - *s = '\0'; - else - einfo (_("%s:%d: warning: syntax error in import file\n"), - filename, lineno); - } - } - - continue; - } - - /* This is a symbol to be imported or exported. */ - symname = s; - syscall = false; - address = (bfd_vma) -1; - - while (! ISSPACE (*s) && *s != '\0') - ++s; - if (*s != '\0') - { - char *se; - - *s++ = '\0'; - - while (ISSPACE (*s)) - ++s; - - se = s; - while (! ISSPACE (*se) && *se != '\0') - ++se; - if (*se != '\0') - { - *se++ = '\0'; - while (ISSPACE (*se)) - ++se; - if (*se != '\0') - einfo (_("%s%d: warning: syntax error in import/export file\n"), - filename, lineno); - } - - if (strcasecmp (s, "svc") == 0 - || strcasecmp (s, "syscall") == 0) - syscall = true; - else - { - char *end; - - address = strtoul (s, &end, 0); - if (*end != '\0') - einfo (_("%s:%d: warning: syntax error in import/export file\n"), - filename, lineno); - } - } - - if (! import) - { - struct export_symbol_list *n; - - ldlang_add_undef (symname); - n = ((struct export_symbol_list *) - xmalloc (sizeof (struct export_symbol_list))); - n->next = export_symbols; - n->name = xstrdup (symname); - n->syscall = syscall; - export_symbols = n; - } - else - { - h = bfd_link_hash_lookup (link_info.hash, symname, false, false, - true); - if (h == NULL || h->type == bfd_link_hash_new) - { - /* We can just ignore attempts to import an unreferenced - symbol. */ - } - else - { - if (! bfd_xcoff_import_symbol (output_bfd, &link_info, h, - address, imppath, impfile, - impmember)) - einfo (_("%X%s:%d: failed to import symbol %s: %E\n"), - filename, lineno, symname); - } - } - - obstack_free (o, obstack_base (o)); - } - - if (obstack_object_size (o) > 0) - { - einfo (_("%s:%d: warning: ignoring unterminated last line\n"), - filename, lineno); - obstack_free (o, obstack_base (o)); - } - - if (! keep) - { - obstack_free (o, NULL); - free (o); - } -} - -/* This routine saves us from worrying about declaring free. */ - -static void -gldppcmacos_free (p) - PTR p; -{ - free (p); -} - -/* This is called by the before_allocation routine via - lang_for_each_statement. It looks for relocations and assignments - to symbols. */ - -static void -gldppcmacos_find_relocs (s) - lang_statement_union_type *s; -{ - if (s->header.type == lang_reloc_statement_enum) - { - lang_reloc_statement_type *rs; - - rs = &s->reloc_statement; - if (rs->name == NULL) - einfo (_("%F%P: only relocations against symbols are permitted\n")); - if (! bfd_xcoff_link_count_reloc (output_bfd, &link_info, rs->name)) - einfo (_("%F%P: bfd_xcoff_link_count_reloc failed: %E\n")); - } - - if (s->header.type == lang_assignment_statement_enum) - gldppcmacos_find_exp_assignment (s->assignment_statement.exp); -} - -/* Look through an expression for an assignment statement. */ - -static void -gldppcmacos_find_exp_assignment (exp) - etree_type *exp; -{ - struct bfd_link_hash_entry *h; - - switch (exp->type.node_class) - { - case etree_provide: - h = bfd_link_hash_lookup (link_info.hash, exp->assign.dst, - false, false, false); - if (h == NULL) - break; - /* Fall through. */ - case etree_assign: - if (strcmp (exp->assign.dst, ".") != 0) - { - if (! bfd_xcoff_record_link_assignment (output_bfd, &link_info, - exp->assign.dst)) - einfo (_("%P%F: failed to record assignment to %s: %E\n"), - exp->assign.dst); - } - gldppcmacos_find_exp_assignment (exp->assign.src); - break; - - case etree_binary: - gldppcmacos_find_exp_assignment (exp->binary.lhs); - gldppcmacos_find_exp_assignment (exp->binary.rhs); - break; - - case etree_trinary: - gldppcmacos_find_exp_assignment (exp->trinary.cond); - gldppcmacos_find_exp_assignment (exp->trinary.lhs); - gldppcmacos_find_exp_assignment (exp->trinary.rhs); - break; - - case etree_unary: - gldppcmacos_find_exp_assignment (exp->unary.child); - break; - - default: - break; - } -} - -static char * -gldppcmacos_get_script(isfile) - int *isfile; -{ - *isfile = 0; - - if (link_info.relocateable == true && config.build_constructors == true) - return -"OUTPUT_FORMAT(\"xcoff-powermac\")\n\ -OUTPUT_ARCH(powerpc)\n\ -ENTRY(__start)\n\ -SECTIONS\n\ -{\n\ - .pad 0 : { *(.pad) }\n\ - .text 0 : {\n\ - *(.text)\n\ - *(.pr)\n\ - *(.ro)\n\ - *(.db)\n\ - *(.gl)\n\ - *(.xo)\n\ - *(.ti)\n\ - *(.tb)\n\ - }\n\ - .data 0 : {\n\ - *(.data)\n\ - *(.rw)\n\ - *(.sv)\n\ - *(.ua)\n\ - . = ALIGN(4);\n\ - CONSTRUCTORS\n\ - *(.ds)\n\ - *(.tc0)\n\ - *(.tc)\n\ - *(.td)\n\ - }\n\ - .bss : {\n\ - *(.bss)\n\ - *(.bs)\n\ - *(.uc)\n\ - *(COMMON)\n\ - }\n\ - .loader 0 : {\n\ - *(.loader)\n\ - }\n\ - .debug 0 : {\n\ - *(.debug)\n\ - }\n\ -}\n\n" - ; else if (link_info.relocateable == true) return -"OUTPUT_FORMAT(\"xcoff-powermac\")\n\ -OUTPUT_ARCH(powerpc)\n\ -ENTRY(__start)\n\ -SECTIONS\n\ -{\n\ - .pad 0 : { *(.pad) }\n\ - .text 0 : {\n\ - *(.text)\n\ - *(.pr)\n\ - *(.ro)\n\ - *(.db)\n\ - *(.gl)\n\ - *(.xo)\n\ - *(.ti)\n\ - *(.tb)\n\ - }\n\ - .data 0 : {\n\ - *(.data)\n\ - *(.rw)\n\ - *(.sv)\n\ - *(.ua)\n\ - . = ALIGN(4);\n\ - *(.ds)\n\ - *(.tc0)\n\ - *(.tc)\n\ - *(.td)\n\ - }\n\ - .bss : {\n\ - *(.bss)\n\ - *(.bs)\n\ - *(.uc)\n\ - *(COMMON)\n\ - }\n\ - .loader 0 : {\n\ - *(.loader)\n\ - }\n\ - .debug 0 : {\n\ - *(.debug)\n\ - }\n\ -}\n\n" - ; else if (!config.text_read_only) return -"OUTPUT_FORMAT(\"xcoff-powermac\")\n\ -OUTPUT_ARCH(powerpc)\n\ - SEARCH_DIR(/usr/local/powerpc-apple-macos/lib);\n\ -ENTRY(__start)\n\ -SECTIONS\n\ -{\n\ - .pad 0 : { *(.pad) }\n\ - .text : {\n\ - PROVIDE (_text = .);\n\ - *(.text)\n\ - *(.pr)\n\ - *(.ro)\n\ - *(.db)\n\ - *(.gl)\n\ - *(.xo)\n\ - *(.ti)\n\ - *(.tb)\n\ - PROVIDE (_etext = .);\n\ - }\n\ - .data 0 : {\n\ - PROVIDE (_data = .);\n\ - *(.data)\n\ - *(.rw)\n\ - *(.sv)\n\ - *(.ua)\n\ - . = ALIGN(4);\n\ - CONSTRUCTORS\n\ - *(.ds)\n\ - *(.tc0)\n\ - *(.tc)\n\ - *(.td)\n\ - PROVIDE (_edata = .);\n\ - }\n\ - .bss : {\n\ - *(.bss)\n\ - *(.bs)\n\ - *(.uc)\n\ - *(COMMON)\n\ - PROVIDE (_end = .);\n\ - PROVIDE (end = .);\n\ - }\n\ - .loader 0 : {\n\ - *(.loader)\n\ - }\n\ - .debug 0 : {\n\ - *(.debug)\n\ - }\n\ -}\n\n" - ; else if (!config.magic_demand_paged) return -"OUTPUT_FORMAT(\"xcoff-powermac\")\n\ -OUTPUT_ARCH(powerpc)\n\ - SEARCH_DIR(/usr/local/powerpc-apple-macos/lib);\n\ -ENTRY(__start)\n\ -SECTIONS\n\ -{\n\ - .pad 0 : { *(.pad) }\n\ - .text : {\n\ - PROVIDE (_text = .);\n\ - *(.text)\n\ - *(.pr)\n\ - *(.ro)\n\ - *(.db)\n\ - *(.gl)\n\ - *(.xo)\n\ - *(.ti)\n\ - *(.tb)\n\ - PROVIDE (_etext = .);\n\ - }\n\ - .data 0 : {\n\ - PROVIDE (_data = .);\n\ - *(.data)\n\ - *(.rw)\n\ - *(.sv)\n\ - *(.ua)\n\ - . = ALIGN(4);\n\ - CONSTRUCTORS\n\ - *(.ds)\n\ - *(.tc0)\n\ - *(.tc)\n\ - *(.td)\n\ - PROVIDE (_edata = .);\n\ - }\n\ - .bss : {\n\ - *(.bss)\n\ - *(.bs)\n\ - *(.uc)\n\ - *(COMMON)\n\ - PROVIDE (_end = .);\n\ - PROVIDE (end = .);\n\ - }\n\ - .loader 0 : {\n\ - *(.loader)\n\ - }\n\ - .debug 0 : {\n\ - *(.debug)\n\ - }\n\ -}\n\n" - ; else return -"OUTPUT_FORMAT(\"xcoff-powermac\")\n\ -OUTPUT_ARCH(powerpc)\n\ - SEARCH_DIR(/usr/local/powerpc-apple-macos/lib);\n\ -ENTRY(__start)\n\ -SECTIONS\n\ -{\n\ - .pad 0 : { *(.pad) }\n\ - .text : {\n\ - PROVIDE (_text = .);\n\ - *(.text)\n\ - *(.pr)\n\ - *(.ro)\n\ - *(.db)\n\ - *(.gl)\n\ - *(.xo)\n\ - *(.ti)\n\ - *(.tb)\n\ - PROVIDE (_etext = .);\n\ - }\n\ - .data 0 : {\n\ - PROVIDE (_data = .);\n\ - *(.data)\n\ - *(.rw)\n\ - *(.sv)\n\ - *(.ua)\n\ - . = ALIGN(4);\n\ - CONSTRUCTORS\n\ - *(.ds)\n\ - *(.tc0)\n\ - *(.tc)\n\ - *(.td)\n\ - PROVIDE (_edata = .);\n\ - }\n\ - .bss : {\n\ - *(.bss)\n\ - *(.bs)\n\ - *(.uc)\n\ - *(COMMON)\n\ - PROVIDE (_end = .);\n\ - PROVIDE (end = .);\n\ - }\n\ - .loader 0 : {\n\ - *(.loader)\n\ - }\n\ - .debug 0 : {\n\ - *(.debug)\n\ - }\n\ -}\n\n" -; } - -struct ld_emulation_xfer_struct ld_ppcmacos_emulation = -{ - gldppcmacos_before_parse, - syslib_default, - hll_default, - after_parse_default, - gldppcmacos_after_open, - after_allocation_default, - set_output_arch_default, - ldemul_default_target, - gldppcmacos_before_allocation, - gldppcmacos_get_script, - "ppcmacos", - "xcoff-powermac", - 0, /* finish */ - 0, /* create_output_section_statements */ - 0, /* open_dynamic_archive */ - 0, /* place_orphan */ - 0, /* set_symbols */ - gldppcmacos_parse_args, - gldppcmacos_unrecognized_file -}; diff -uprN binutils-2.12.90.0.7/ld/mpw-esh.c binutils-2.12.90.0.9/ld/mpw-esh.c --- binutils-2.12.90.0.7/ld/mpw-esh.c Thu Mar 15 14:56:57 2001 +++ binutils-2.12.90.0.9/ld/mpw-esh.c Wed Dec 31 16:00:00 1969 @@ -1,318 +0,0 @@ -/* This file is is generated by a shell script. DO NOT EDIT! */ - -/* emulate the original gld for the given sh - Copyright 1991, 1993, 1995, 2000 Free Software Foundation, Inc. - Written by Steve Chamberlain steve@cygnus.com - -This file is part of GLD, the Gnu Linker. - -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. */ - -#define TARGET_IS_sh - -#include "libiberty.h" -#include "bfd.h" -#include "sysdep.h" -#include "bfdlink.h" - -#include "ld.h" -#include "ldmain.h" -#include "ldmisc.h" - -#include "ldexp.h" -#include "ldlang.h" -#include "ldfile.h" -#include "ldemul.h" - -static void gldsh_before_parse PARAMS ((void)); -static char *gldsh_get_script PARAMS ((int *isfile)); - -static void -gldsh_before_parse() -{ -#ifndef TARGET_ /* I.e., if not generic. */ - ldfile_output_architecture = bfd_arch_sh; -#endif /* not TARGET_ */ -} - -static char * -gldsh_get_script(isfile) - int *isfile; -{ - *isfile = 0; - - if (link_info.relocateable == true && config.build_constructors == true) - return -concat( -"OUTPUT_FORMAT(\"coff-sh\")\n\ -OUTPUT_ARCH(sh)\n\ -MEMORY\n\ -{\n\ - ram : o = 0x1000, l = 512k\n\ -}\n\ - "," SECTIONS\n\ -{\n\ - "," .text :\n\ - {\n\ - *(.text)\n\ - *(.strings)\n\ - } \n\ - .tors :\n\ - {\n\ - ___ctors = . ;\n\ - *(.ctors)\n\ - ___ctors_end = . ;\n\ - ___dtors = . ;\n\ - *(.dtors)\n\ - ___dtors_end = . ;\n\ - } \n\ - "," .data :\n\ - {\n\ - *(.data)\n\ - } \n\ - "," .bss :\n\ - {\n\ - *(.bss)\n\ - *(COMMON)\n\ - } \n\ - "," .stack :\n\ - {\n\ - *(.stack)\n\ - } \n\ - "," .stab 0 :\n\ - {\n\ - *(.stab)\n\ - }\n\ - "," .stabstr 0 :\n\ - {\n\ - *(.stabstr)\n\ - }\n\ -}\n\n", NULL) - ; else if (link_info.relocateable == true) return -concat ( -"OUTPUT_FORMAT(\"coff-sh\")\n\ -OUTPUT_ARCH(sh)\n\ - "," MEMORY\n\ -{\n\ - ram : o = 0x1000, l = 512k\n\ -}\n\ - "," SECTIONS\n\ -{\n\ - "," .text :\n\ - {\n\ - *(.text)\n\ - *(.strings)\n\ - } \n\ - "," .tors :\n\ - {\n\ - ___ctors = . ;\n\ - *(.ctors)\n\ - ___ctors_end = . ;\n\ - ___dtors = . ;\n\ - *(.dtors)\n\ - ___dtors_end = . ;\n\ - } \n\ - "," .data :\n\ - {\n\ - *(.data)\n\ - } \n\ - "," .bss :\n\ - {\n\ - *(.bss)\n\ - *(COMMON)\n\ - } \n\ - "," .stack :\n\ - {\n\ - *(.stack)\n\ - } \n\ - "," .stab 0 :\n\ - {\n\ - *(.stab)\n\ - }\n\ - "," .stabstr 0 :\n\ - {\n\ - *(.stabstr)\n\ - }\n\ -}\n\n", NULL) - ; else if (!config.text_read_only) return -concat ( -"OUTPUT_FORMAT(\"coff-sh\")\n\ -OUTPUT_ARCH(sh)\n\ -MEMORY\n\ -{\n\ - ram : o = 0x1000, l = 512k\n\ -}\n\ -SECTIONS\n\ -{\n\ - "," .text :\n\ - {\n\ - *(.text)\n\ - *(.strings)\n\ - _etext = . ; \n\ - } > ram\n\ - "," .tors :\n\ - {\n\ - ___ctors = . ;\n\ - *(.ctors)\n\ - ___ctors_end = . ;\n\ - ___dtors = . ;\n\ - *(.dtors)\n\ - ___dtors_end = . ;\n\ - } > ram\n\ - "," .data :\n\ - {\n\ - *(.data)\n\ - _edata = . ; \n\ - } > ram\n\ - "," .bss :\n\ - {\n\ - _bss_start = . ; \n\ - *(.bss)\n\ - *(COMMON)\n\ - _end = . ; \n\ - } > ram\n\ - "," .stack 0x30000 :\n\ - {\n\ - _stack = . ; \n\ - *(.stack)\n\ - } > ram\n\ - "," .stab 0 (NOLOAD) :\n\ - {\n\ - *(.stab)\n\ - }\n\ - "," .stabstr 0 (NOLOAD) :\n\ - {\n\ - *(.stabstr)\n\ - }\n\ -}\n\n", NULL) - ; else if (!config.magic_demand_paged) return -concat ( -"OUTPUT_FORMAT(\"coff-sh\")\n\ -OUTPUT_ARCH(sh)\n\ -MEMORY\n\ -{\n\ - ram : o = 0x1000, l = 512k\n\ -}\n\ -SECTIONS\n\ -{\n\ - "," .text :\n\ - {\n\ - *(.text)\n\ - *(.strings)\n\ - _etext = . ; \n\ - } > ram\n\ - "," .tors :\n\ - {\n\ - ___ctors = . ;\n\ - *(.ctors)\n\ - ___ctors_end = . ;\n\ - ___dtors = . ;\n\ - *(.dtors)\n\ - ___dtors_end = . ;\n\ - } > ram\n\ - "," .data :\n\ - {\n\ - *(.data)\n\ - _edata = . ; \n\ - } > ram\n\ - "," .bss :\n\ - {\n\ - _bss_start = . ; \n\ - *(.bss)\n\ - *(COMMON)\n\ - _end = . ; \n\ - } > ram\n\ - "," .stack 0x30000 :\n\ - {\n\ - _stack = . ; \n\ - *(.stack)\n\ - } > ram\n\ - "," .stab 0 (NOLOAD) :\n\ - {\n\ - *(.stab)\n\ - }\n\ - "," .stabstr 0 (NOLOAD) :\n\ - {\n\ - *(.stabstr)\n\ - }\n\ -}\n\n", NULL) - ; else return -concat ( -"OUTPUT_FORMAT(\"coff-sh\")\n\ -OUTPUT_ARCH(sh)\n\ -MEMORY\n\ -{\n\ - ram : o = 0x1000, l = 512k\n\ -}\n\ -SECTIONS\n\ -{\n\ - "," .text :\n\ - {\n\ - *(.text)\n\ - *(.strings)\n\ - _etext = . ; \n\ - } > ram\n\ - "," .tors :\n\ - {\n\ - ___ctors = . ;\n\ - *(.ctors)\n\ - ___ctors_end = . ;\n\ - ___dtors = . ;\n\ - *(.dtors)\n\ - ___dtors_end = . ;\n\ - } > ram\n\ - "," .data :\n\ - {\n\ - *(.data)\n\ - _edata = . ; \n\ - } > ram\n\ - "," .bss :\n\ - {\n\ - _bss_start = . ; \n\ - *(.bss)\n\ - *(COMMON)\n\ - _end = . ; \n\ - } > ram\n\ - "," .stack 0x30000 :\n\ - {\n\ - _stack = . ; \n\ - *(.stack)\n\ - } > ram\n\ - "," .stab 0 (NOLOAD) :\n\ - {\n\ - *(.stab)\n\ - }\n\ - "," .stabstr 0 (NOLOAD) :\n\ - {\n\ - *(.stabstr)\n\ - }\n\ -}\n\n", NULL) -; } - -struct ld_emulation_xfer_struct ld_sh_emulation = -{ - gldsh_before_parse, - syslib_default, - hll_default, - after_parse_default, - after_open_default, - after_allocation_default, - set_output_arch_default, - ldemul_default_target, - before_allocation_default, - gldsh_get_script, - "sh", - "coff-sh" -}; diff -uprN binutils-2.12.90.0.7/ld/mpw-idtmips.c binutils-2.12.90.0.9/ld/mpw-idtmips.c --- binutils-2.12.90.0.7/ld/mpw-idtmips.c Thu Mar 15 14:56:57 2001 +++ binutils-2.12.90.0.9/ld/mpw-idtmips.c Wed Dec 31 16:00:00 1969 @@ -1,433 +0,0 @@ -/* This file is is generated by a shell script. DO NOT EDIT! */ - -/* Handle embedded relocs for MIPS. - Copyright 1994, 1997, 2000 Free Software Foundation, Inc. - Written by Ian Lance Taylor based on generic.em. - -This file is part of GLD, the Gnu Linker. - -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. */ - -#define TARGET_IS_mipsidt - -#include "libiberty.h" -#include "bfd.h" -#include "sysdep.h" -#include "bfdlink.h" - -#include "ld.h" -#include "ldmain.h" -#include "ldmisc.h" - -#include "ldexp.h" -#include "ldlang.h" -#include "ldfile.h" -#include "ldemul.h" - -static void gldmipsidt_before_parse PARAMS ((void)); -static void gldmipsidt_after_open PARAMS ((void)); -static void check_sections PARAMS ((bfd *, asection *, PTR)); -static void gldmipsidt_after_allocation PARAMS ((void)); -static char *gldmipsidt_get_script PARAMS ((int *isfile)); - -static void -gldmipsidt_before_parse() -{ -#ifndef TARGET_ /* I.e., if not generic. */ - ldfile_output_architecture = bfd_arch_mips; -#endif /* not TARGET_ */ -} - -/* This function is run after all the input files have been opened. - We create a .rel.sdata section for each input file with a non zero - .sdata section. The BFD backend will fill in these sections with - magic numbers which can be used to relocate the data section at run - time. This will only do the right thing if all the input files - have been compiled using -membedded-pic. */ - -static void -gldmipsidt_after_open () -{ - bfd *abfd; - - if (! command_line.embedded_relocs - || link_info.relocateable) - return; - - for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link_next) - { - asection *datasec; - - datasec = bfd_get_section_by_name (abfd, ".sdata"); - - /* Note that we assume that the reloc_count field has already - been set up. We could call bfd_get_reloc_upper_bound, but - that returns the size of a memory buffer rather than a reloc - count. We do not want to call bfd_canonicalize_reloc, - because although it would always work it would force us to - read in the relocs into BFD canonical form, which would waste - a significant amount of time and memory. */ - if (datasec != NULL && datasec->reloc_count > 0) - { - asection *relsec; - - relsec = bfd_make_section (abfd, ".rel.sdata"); - if (relsec == NULL - || ! bfd_set_section_flags (abfd, relsec, - (SEC_ALLOC - | SEC_LOAD - | SEC_HAS_CONTENTS - | SEC_IN_MEMORY)) - || ! bfd_set_section_alignment (abfd, relsec, 2) - || ! bfd_set_section_size (abfd, relsec, - datasec->reloc_count * 4)) - einfo (_("%F%B: can not create .rel.sdata section: %E\n")); - } - - /* Double check that all other data sections are empty, as is - required for embedded PIC code. */ - bfd_map_over_sections (abfd, check_sections, (PTR) datasec); - } -} - -/* Check that of the data sections, only the .sdata section has - relocs. This is called via bfd_map_over_sections. */ - -static void -check_sections (abfd, sec, sdatasec) - bfd *abfd; - asection *sec; - PTR sdatasec; -{ - if ((bfd_get_section_flags (abfd, sec) & SEC_CODE) == 0 - && sec != (asection *) sdatasec - && sec->reloc_count != 0) - einfo (_("%F%X: section %s has relocs; can not use --embedded-relocs\n"), - abfd, bfd_get_section_name (abfd, sec)); -} - -/* This function is called after the section sizes and offsets have - been set. If we are generating embedded relocs, it calls a special - BFD backend routine to do the work. */ - -static void -gldmipsidt_after_allocation () -{ - bfd *abfd; - - if (! command_line.embedded_relocs - || link_info.relocateable) - return; - - for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link_next) - { - asection *datasec, *relsec; - char *errmsg; - - datasec = bfd_get_section_by_name (abfd, ".sdata"); - - if (datasec == NULL || datasec->reloc_count == 0) - continue; - - relsec = bfd_get_section_by_name (abfd, ".rel.sdata"); - ASSERT (relsec != NULL); - - if (! bfd_mips_ecoff_create_embedded_relocs (abfd, &link_info, - datasec, relsec, - &errmsg)) - { - if (errmsg == NULL) - einfo (_("%B%X: can not create runtime reloc information: %E\n"), - abfd); - else - einfo (_("%X%B: can not create runtime reloc information: %s\n"), - abfd, errmsg); - } - } -} - -static char * -gldmipsidt_get_script(isfile) - int *isfile; -{ - *isfile = 0; - - if (link_info.relocateable == true && config.build_constructors == true) - return -concat( -"OUTPUT_FORMAT(\"ecoff-bigmips\", \"ecoff-bigmips\",\n\ - \"ecoff-littlemips\")\n\ - SEARCH_DIR(/usr/local/mips-idt-ecoff/lib);\n\ -ENTRY(start)\n\ -SECTIONS\n\ -{\n\ - .text : {\n\ - ;\n\ - *(.init)\n\ - ;\n\ - *(.text)\n\ - *(.rel.sdata)\n\ - *(.fini)\n\ - ;\n\ - ;\n\ - }\n\ - "," .rdata : {\n\ - *(.rdata)\n\ - }\n\ - .data : {\n\ - *(.data)\n\ - CONSTRUCTORS\n\ - }\n\ - .lit8 : {\n\ - *(.lit8)\n\ - }\n\ - .lit4 : {\n\ - *(.lit4)\n\ - }\n\ - "," .sdata : {\n\ - *(.sdata)\n\ - }\n\ - .sbss : {\n\ - *(.sbss)\n\ - *(.scommon)\n\ - }\n\ - .bss : {\n\ - *(.bss)\n\ - *(COMMON)\n\ - }\n\ -}\n\n", NULL) - ; else if (link_info.relocateable == true) return -"OUTPUT_FORMAT(\"ecoff-bigmips\", \"ecoff-bigmips\",\n\ - \"ecoff-littlemips\")\n\ - SEARCH_DIR(/usr/local/mips-idt-ecoff/lib);\n\ -ENTRY(start)\n\ -SECTIONS\n\ -{\n\ - .text : {\n\ - ;\n\ - *(.init)\n\ - ;\n\ - *(.text)\n\ - *(.rel.sdata)\n\ - *(.fini)\n\ - ;\n\ - ;\n\ - }\n\ - .rdata : {\n\ - *(.rdata)\n\ - }\n\ - .data : {\n\ - *(.data)\n\ - }\n\ - .lit8 : {\n\ - *(.lit8)\n\ - }\n\ - .lit4 : {\n\ - *(.lit4)\n\ - }\n\ - .sdata : {\n\ - *(.sdata)\n\ - }\n\ - .sbss : {\n\ - *(.sbss)\n\ - *(.scommon)\n\ - }\n\ - .bss : {\n\ - *(.bss)\n\ - *(COMMON)\n\ - }\n\ -}\n\n" - ; else if (!config.text_read_only) return -concat( -"OUTPUT_FORMAT(\"ecoff-bigmips\", \"ecoff-bigmips\",\n\ - \"ecoff-littlemips\")\n\ - SEARCH_DIR(/usr/local/mips-idt-ecoff/lib);\n\ -ENTRY(start)\n\ -SECTIONS\n\ -{\n\ - . = 0xa0012000;\n\ - .text : {\n\ - _ftext = . ;\n\ - *(.init)\n\ - eprol = .;\n\ - *(.text)\n\ - PROVIDE (__runtime_reloc_start = .);\n\ - *(.rel.sdata)\n\ - PROVIDE (__runtime_reloc_stop = .);\n\ - *(.fini)\n\ - etext = .;\n\ - _etext = .;\n\ -"," }\n\ - . = .;\n\ - .rdata : {\n\ - *(.rdata)\n\ - }\n\ - _fdata = ALIGN(16);\n\ - .data : {\n\ - *(.data)\n\ - CONSTRUCTORS\n\ - }\n\ - _gp = ALIGN(16) + 0x8000;\n\ - .lit8 : {\n\ - *(.lit8)\n\ - }\n\ - .lit4 : {\n\ - *(.lit4)\n\ - }\n\ - .sdata : {\n\ - *(.sdata)\n\ - }\n\ -"," edata = .;\n\ - _edata = .;\n\ - _fbss = .;\n\ - .sbss : {\n\ - *(.sbss)\n\ - *(.scommon)\n\ - }\n\ - .bss : {\n\ - *(.bss)\n\ - *(COMMON)\n\ - }\n\ - end = .;\n\ - _end = .;\n\ -}\n\n" -, NULL) - ; else if (!config.magic_demand_paged) return -concat ( -"OUTPUT_FORMAT(\"ecoff-bigmips\", \"ecoff-bigmips\",\n\ - \"ecoff-littlemips\")\n\ - SEARCH_DIR(/usr/local/mips-idt-ecoff/lib);\n\ -ENTRY(start)\n\ -SECTIONS\n\ -{\n\ - . = 0xa0012000;\n\ - .text : {\n\ - _ftext = . ;\n\ - *(.init)\n\ - eprol = .;\n\ - *(.text)\n\ - PROVIDE (__runtime_reloc_start = .);\n\ - *(.rel.sdata)\n\ - PROVIDE (__runtime_reloc_stop = .);\n\ - *(.fini)\n\ - etext = .;\n\ - _etext = .;\n\ - "," }\n\ - . = .;\n\ - .rdata : {\n\ - *(.rdata)\n\ - }\n\ - _fdata = ALIGN(16);\n\ - .data : {\n\ - *(.data)\n\ - CONSTRUCTORS\n\ - }\n\ - _gp = ALIGN(16) + 0x8000;\n\ - .lit8 : {\n\ - *(.lit8)\n\ - "," }\n\ - .lit4 : {\n\ - *(.lit4)\n\ - }\n\ - .sdata : {\n\ - *(.sdata)\n\ - }\n\ - edata = .;\n\ - _edata = .;\n\ - _fbss = .;\n\ - .sbss : {\n\ - *(.sbss)\n\ - *(.scommon)\n\ - "," }\n\ - .bss : {\n\ - *(.bss)\n\ - *(COMMON)\n\ - }\n\ - end = .;\n\ - _end = .;\n\ -}\n\n" -, NULL) - ; else return -concat ( -"OUTPUT_FORMAT(\"ecoff-bigmips\", \"ecoff-bigmips\",\n\ - \"ecoff-littlemips\")\n\ - SEARCH_DIR(/usr/local/mips-idt-ecoff/lib);\n\ -ENTRY(start)\n\ -SECTIONS\n\ -{\n\ - . = 0xa0012000;\n\ - .text : {\n\ - _ftext = . ;\n\ - *(.init)\n\ - eprol = .;\n\ - *(.text)\n\ - PROVIDE (__runtime_reloc_start = .);\n\ - *(.rel.sdata)\n\ - PROVIDE (__runtime_reloc_stop = .);\n\ - *(.fini)\n\ - etext = .;\n\ - _etext = .;\n\ - "," }\n\ - . = .;\n\ - .rdata : {\n\ - *(.rdata)\n\ - }\n\ - _fdata = ALIGN(16);\n\ - .data : {\n\ - *(.data)\n\ - CONSTRUCTORS\n\ - }\n\ - _gp = ALIGN(16) + 0x8000;\n\ - .lit8 : {\n\ - *(.lit8)\n\ - }\n\ - .lit4 : {\n\ - *(.lit4)\n\ - "," }\n\ - .sdata : {\n\ - *(.sdata)\n\ - }\n\ - edata = .;\n\ - _edata = .;\n\ - _fbss = .;\n\ - .sbss : {\n\ - *(.sbss)\n\ - *(.scommon)\n\ - }\n\ - .bss : {\n\ - *(.bss)\n\ - *(COMMON)\n\ - }\n\ - end = .;\n\ - _end = .;\n\ -}\n\n" -, NULL) -; } - -struct ld_emulation_xfer_struct ld_mipsidt_emulation = -{ - gldmipsidt_before_parse, - syslib_default, - hll_default, - after_parse_default, - gldmipsidt_after_open, - gldmipsidt_after_allocation, - set_output_arch_default, - ldemul_default_target, - before_allocation_default, - gldmipsidt_get_script, - "mipsidt", - "ecoff-bigmips" -}; diff -uprN binutils-2.12.90.0.7/ld/pe-dll.c binutils-2.12.90.0.9/ld/pe-dll.c --- binutils-2.12.90.0.7/ld/pe-dll.c Thu Mar 7 11:52:39 2002 +++ binutils-2.12.90.0.9/ld/pe-dll.c Sun May 26 09:57:13 2002 @@ -47,7 +47,7 @@ at the end of this file. This function is not re-entrant and is normally only called once, so static variables are used to reduce the number of parameters and return values required. - + See also: ld/emultempl/pe.em. */ /* Auto-import feature by Paul Sokolovsky @@ -231,6 +231,9 @@ static autofilter_entry_type autofilter_ { "libgcc.", 7 }, { "libstdc++.", 10 }, { "libmingw32.", 11 }, + { "libg2c.", 7 }, + { "libsupc++.", 10 }, + { "libobjc.", 8 }, { NULL, 0 } }; @@ -243,7 +246,9 @@ static autofilter_entry_type autofilter_ { "dllcrt2.o", 9 }, { "gcrt0.o", 7 }, { "gcrt1.o", 7 }, - { "gcrt2.o", 7 }, + { "gcrt2.o", 7 }, + { "crtbegin.o", 10 }, + { "crtend.o", 8 }, { NULL, 0 } }; @@ -317,7 +322,7 @@ pe_dll_id_target (target) exit (1); } -/* Helper functions for qsort. Relocs must be sorted so that we can write +/* Helper functions for qsort. Relocs must be sorted so that we can write them out by pages. */ typedef struct @@ -368,14 +373,16 @@ typedef struct exclude_list_struct { char *string; struct exclude_list_struct *next; + int type; } exclude_list_struct; static struct exclude_list_struct *excludes = 0; void -pe_dll_add_excludes (new_excludes) +pe_dll_add_excludes (new_excludes, type) const char *new_excludes; + const int type; { char *local_copy; char *exclude_string; @@ -391,6 +398,7 @@ pe_dll_add_excludes (new_excludes) xmalloc (sizeof (struct exclude_list_struct))); new_exclude->string = (char *) xmalloc (strlen (exclude_string) + 1); strcpy (new_exclude->string, exclude_string); + new_exclude->type = type; new_exclude->next = excludes; excludes = new_exclude; } @@ -398,6 +406,7 @@ pe_dll_add_excludes (new_excludes) free (local_copy); } + /* abfd is a bfd containing n (or NULL) It can be used for contextual checks. */ @@ -410,6 +419,9 @@ auto_export (abfd, d, n) int i; struct exclude_list_struct *ex; autofilter_entry_type *afptr; + const char * libname = 0; + if (abfd && abfd->my_archive) + libname = lbasename (abfd->my_archive->filename); /* We should not re-export imported stuff. */ if (strncmp (n, "_imp__", 6) == 0) @@ -429,14 +441,14 @@ auto_export (abfd, d, n) n, abfd, abfd->my_archive); /* First of all, make context checks: - Don't export anything from libgcc. */ - if (abfd && abfd->my_archive) + Don't export anything from standard libs. */ + if (libname) { afptr = autofilter_liblist; while (afptr->name) { - if (strstr (abfd->my_archive->filename, afptr->name)) + if (strncmp (libname, afptr->name, afptr->len) == 0 ) return 0; afptr++; } @@ -446,11 +458,11 @@ auto_export (abfd, d, n) if (abfd && (p = lbasename (abfd->filename))) { - afptr = autofilter_objlist; - while (afptr->name) + afptr = autofilter_objlist; + while (afptr->name) { - if ( strcmp (p, afptr->name) == 0 ) - return 0; + if (strcmp (p, afptr->name) == 0) + return 0; afptr++; } } @@ -466,7 +478,7 @@ auto_export (abfd, d, n) if (strcmp (n, afptr->name) == 0) return 0; - afptr ++; + afptr++; } /* Next, exclude symbols starting with ... */ @@ -476,7 +488,7 @@ auto_export (abfd, d, n) if (strncmp (n, afptr->name, afptr->len) == 0) return 0; - afptr ++; + afptr++; } /* Finally, exclude symbols ending with ... */ @@ -484,19 +496,28 @@ auto_export (abfd, d, n) afptr = autofilter_symbolsuffixlist; while (afptr->name) { - if ((len >= afptr->len) && + if ((len >= afptr->len) /* Add 1 to insure match with trailing '\0'. */ - strncmp (n + len - afptr->len, afptr->name, - afptr->len + 1) == 0) + && strncmp (n + len - afptr->len, afptr->name, + afptr->len + 1) == 0) return 0; - afptr ++; + afptr++; } } for (ex = excludes; ex; ex = ex->next) - if (strcmp (n, ex->string) == 0) - return 0; + { + if (ex->type == 1) /* exclude-libs */ + { + if (libname + && ((strcmp (libname, ex->string) == 0) + || (strcasecmp ("ALL", ex->string) == 0))) + return 0; + } + else if (strcmp (n, ex->string) == 0) + return 0; + } return 1; } @@ -560,10 +581,10 @@ process_def_file (abfd, info) sprintf (name, "%s%s", U("_imp_"), sn); blhe = bfd_link_hash_lookup (info->hash, name, - false, false, false); + false, false, false); free (name); - if (blhe && blhe->type == bfd_link_hash_defined) + if (blhe && blhe->type == bfd_link_hash_defined) continue; } @@ -863,7 +884,7 @@ generate_edata (abfd, info) if (pe_def_file->exports[i].ordinal == -1) { while (exported_symbols[next_ordinal - min_ordinal] != -1) - next_ordinal ++; + next_ordinal++; exported_symbols[next_ordinal - min_ordinal] = i; pe_def_file->exports[i].ordinal = next_ordinal; @@ -1112,9 +1133,9 @@ generate_reloc (abfd, info) for (i = 0; i < nrelocs; i++) { if (pe_dll_extra_pe_debug) - { + { struct symbol_cache_entry *sym = *relocs[i]->sym_ptr_ptr; - printf("rel: %s\n",sym->name); + printf ("rel: %s\n", sym->name); } if (!relocs[i]->howto->pc_relative && relocs[i]->howto->type != pe_details->imagebase_reloc) @@ -1193,7 +1214,7 @@ generate_reloc (abfd, info) if (reloc_data[i].type == 4) reloc_sz += 2; } - + reloc_sz = (reloc_sz + 3) & ~3; /* 4-byte align. */ reloc_d = (unsigned char *) xmalloc (reloc_sz); sec_page = (unsigned long) (-1); @@ -1551,11 +1572,11 @@ save_relocs (asection *sec) .long 0 .rva __my_dll_iname .rva fthunk - + .section .idata$5 .long 0 fthunk: - + .section .idata$4 .long 0 hname: */ @@ -1695,10 +1716,10 @@ make_tail (parent) .global __imp__function _function: jmp *__imp__function: - + .section idata$7 .long __head_my_dll - + .section .idata$5 ___imp_function: __imp__function: @@ -1949,9 +1970,9 @@ make_import_fixup_mark (rel) static int counter; static char *fixup_name = NULL; static size_t buffer_len = 0; - + struct symbol_cache_entry *sym = *rel->sym_ptr_ptr; - + bfd *abfd = bfd_asymbol_bfd (sym); struct coff_link_hash_entry *myh = NULL; @@ -1962,7 +1983,7 @@ make_import_fixup_mark (rel) } if (strlen (sym->name) + 25 > buffer_len) - /* Assume 25 chars for "__fu" + counter + "_". If counter is + /* Assume 25 chars for "__fu" + counter + "_". If counter is bigger than 20 digits long, we've got worse problems than overflowing this buffer... */ { @@ -1972,17 +1993,17 @@ make_import_fixup_mark (rel) buffer_len = ((strlen (sym->name) + 25) + 127) & ~127; fixup_name = (char *) xmalloc (buffer_len); } - + sprintf (fixup_name, "__fu%d_%s", counter++, sym->name); - bfd_coff_link_add_one_symbol (&link_info, abfd, fixup_name, BSF_GLOBAL, + bfd_coff_link_add_one_symbol (&link_info, abfd, fixup_name, BSF_GLOBAL, current_sec, /* sym->section, */ rel->address, NULL, true, false, (struct bfd_link_hash_entry **) &myh); #if 0 - printf ("type:%d\n", myh->type); - printf ("%s\n", myh->root.u.def.section->name); + printf ("type:%d\n", myh->type); + printf ("%s\n", myh->root.u.def.section->name); #endif return fixup_name; } @@ -1995,7 +2016,7 @@ make_import_fixup_mark (rel) .rva __fuNN_SYM (pointer to reference (address) in text) */ static bfd * -make_import_fixup_entry (name, fixup_name, dll_symname,parent) +make_import_fixup_entry (name, fixup_name, dll_symname, parent) const char *name; const char *fixup_name; const char *dll_symname; @@ -2021,8 +2042,8 @@ make_import_fixup_entry (name, fixup_nam symtab = (asymbol **) xmalloc (6 * sizeof (asymbol *)); id3 = quick_section (abfd, ".idata$3", SEC_HAS_CONTENTS, 2); -#if 0 - quick_symbol (abfd, U ("_head_"), dll_symname, "", id2, BSF_GLOBAL, 0); +#if 0 + quick_symbol (abfd, U ("_head_"), dll_symname, "", id2, BSF_GLOBAL, 0); #endif quick_symbol (abfd, U ("_nm_thnk_"), name, "", UNDSEC, BSF_GLOBAL, 0); quick_symbol (abfd, U (""), dll_symname, "_iname", UNDSEC, BSF_GLOBAL, 0); diff -uprN binutils-2.12.90.0.7/ld/pe-dll.h binutils-2.12.90.0.9/ld/pe-dll.h --- binutils-2.12.90.0.7/ld/pe-dll.h Mon Oct 1 15:25:25 2001 +++ binutils-2.12.90.0.9/ld/pe-dll.h Sun May 26 09:57:13 2002 @@ -36,7 +36,7 @@ extern int pe_dll_compat_implib; extern int pe_dll_extra_pe_debug; extern void pe_dll_id_target PARAMS ((const char *)); -extern void pe_dll_add_excludes PARAMS ((const char *)); +extern void pe_dll_add_excludes PARAMS ((const char *, const int)); extern void pe_dll_generate_def_file PARAMS ((const char *)); extern void pe_dll_generate_implib PARAMS ((def_file *, const char *)); extern void pe_process_import_defs PARAMS ((bfd *, struct bfd_link_info *)); @@ -47,8 +47,8 @@ extern void pe_dll_fill_sections PARAMS extern void pe_exe_fill_sections PARAMS ((bfd *, struct bfd_link_info *)); extern void pe_walk_relocs_of_symbol PARAMS ((struct bfd_link_info * info, - CONST char *name, - int (*cb) (arelent *, asection *))); + CONST char *name, + int (*cb) (arelent *, asection *))); extern void pe_create_import_fixup PARAMS ((arelent * rel)); #endif /* PE_DLL_H */ diff -uprN binutils-2.12.90.0.7/ld/po/sv.po binutils-2.12.90.0.9/ld/po/sv.po --- binutils-2.12.90.0.7/ld/po/sv.po Fri Nov 16 14:05:53 2001 +++ binutils-2.12.90.0.9/ld/po/sv.po Thu May 23 15:10:11 2002 @@ -1,238 +1,270 @@ # Swedish messages for ld. -# Copyright (C) 2001 Free Software Foundation, Inc. -# Christian Rose , 2001. +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +# Christian Rose , 2001, 2002. # msgid "" msgstr "" -"Project-Id-Version: ld 2.11\n" -"POT-Creation-Date: 2000-12-26 12:54-0800\n" -"PO-Revision-Date: 2001-10-28 13:36+0100\n" +"Project-Id-Version: ld 2.12-pre020121\n" +"POT-Creation-Date: 2002-01-17 13:58+0000\n" +"PO-Revision-Date: 2002-05-05 20:29+0200\n" "Last-Translator: Christian Rose \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -#: emultempl/armcoff.em:70 +#: emultempl/armcoff.em:71 msgid " --support-old-code Support interworking with old code\n" msgstr " --support-old-code Stöd interaktion med gammal kod\n" -#: emultempl/armcoff.em:71 +#: emultempl/armcoff.em:72 msgid " --thumb-entry= Set the entry point to be Thumb symbol \n" msgstr " --thumb-entry= Ställ in ingångspunkten till att vara tumsymbolen \n" -#: emultempl/armcoff.em:140 +#: emultempl/armcoff.em:141 #, c-format msgid "Errors encountered processing file %s" msgstr "Fel inträffade vid bearbetning av filen %s" -#: emultempl/armcoff.em:206 emultempl/pe.em:1211 +#: emultempl/armcoff.em:207 emultempl/pe.em:1414 msgid "%P: warning: '--thumb-entry %s' is overriding '-e %s'\n" msgstr "%P: varning: \"--thumb-entry %s\" åsidosätter \"-e %s\"\n" -#: emultempl/armcoff.em:211 emultempl/pe.em:1216 +#: emultempl/armcoff.em:212 emultempl/pe.em:1419 msgid "%P: warning: connot find thumb start symbol %s\n" msgstr "%P: varning: kan inte hitta tumstartsymbol %s\n" -#: emultempl/pe.em:266 +#: emultempl/pe.em:315 msgid " --base_file Generate a base file for relocatable DLLs\n" msgstr "" " --base_file Generera en basfil för\n" " omlokaliseringsbara DLL:er\n" -#: emultempl/pe.em:267 +#: emultempl/pe.em:316 msgid " --dll Set image base to the default for DLLs\n" msgstr " --dll Ställ in bildbas till standard för DLL:er\n" -#: emultempl/pe.em:268 +#: emultempl/pe.em:317 msgid " --file-alignment Set file alignment\n" msgstr " --file-alignment Ställ in filjustering\n" -#: emultempl/pe.em:269 +#: emultempl/pe.em:318 msgid " --heap Set initial size of the heap\n" msgstr " --heap Ställ in initial storlek på högen\n" -#: emultempl/pe.em:270 +#: emultempl/pe.em:319 msgid " --image-base
Set start address of the executable\n" msgstr " --image-base Ställ in startadressen för det körbara\n" -#: emultempl/pe.em:271 +#: emultempl/pe.em:320 msgid " --major-image-version Set version number of the executable\n" msgstr " --major-image-version Ställ in versionsnummer för det körbara\n" -#: emultempl/pe.em:272 +#: emultempl/pe.em:321 msgid " --major-os-version Set minimum required OS version\n" msgstr " --major-os-version Ställ in lägsta nödvändiga OS-version\n" -#: emultempl/pe.em:273 +#: emultempl/pe.em:322 msgid " --major-subsystem-version Set minimum required OS subsystem version\n" msgstr "" " --major-subsystem-version Ställ in lägsta nödvändiga\n" " OS-undersystemsversion\n" -#: emultempl/pe.em:274 +#: emultempl/pe.em:323 msgid " --minor-image-version Set revision number of the executable\n" msgstr "" " --minor-image-version Ställ in underrevisionsnummer för det\n" " körbara\n" -#: emultempl/pe.em:275 +#: emultempl/pe.em:324 msgid " --minor-os-version Set minimum required OS revision\n" msgstr " --minor-os-version Ställ in lägsta nödvändiga OS-revision\n" -#: emultempl/pe.em:276 +#: emultempl/pe.em:325 msgid " --minor-subsystem-version Set minimum required OS subsystem revision\n" msgstr "" " --minor-subsystem-version Ställ in lägsta nödvändiga\n" " OS-undersystemsrevision\n" -#: emultempl/pe.em:277 +#: emultempl/pe.em:326 msgid " --section-alignment Set section alignment\n" msgstr " --section-alignment Ställ in sektionsjustering\n" -#: emultempl/pe.em:278 +#: emultempl/pe.em:327 msgid " --stack Set size of the initial stack\n" msgstr " --stack Ställ in storlek på initiala stacken\n" -#: emultempl/pe.em:279 +#: emultempl/pe.em:328 msgid " --subsystem [:] Set required OS subsystem [& version]\n" msgstr "" " --subsystem [:] Ställ in nödvändigt OS-undersystem\n" " [och nödvändig version]\n" -#: emultempl/pe.em:280 +#: emultempl/pe.em:329 msgid " --support-old-code Support interworking with old code\n" msgstr " --support-old-code Stöd interaktion med gammal kod\n" -#: emultempl/pe.em:281 +#: emultempl/pe.em:330 msgid " --thumb-entry= Set the entry point to be Thumb \n" msgstr "" " --thumb-entry= Ställ in ingångspunkten till att vara\n" " tummen \n" -#: emultempl/pe.em:283 +#: emultempl/pe.em:332 msgid " --add-stdcall-alias Export symbols with and without @nn\n" msgstr " --add-stdcall-alias Exportera symboler med och utan @nn\n" -#: emultempl/pe.em:284 +#: emultempl/pe.em:333 msgid " --disable-stdcall-fixup Don't link _sym to _sym@nn\n" msgstr " --disable-stdcall-fixup Länka inte _sym till _sym@nn\n" -#: emultempl/pe.em:285 +#: emultempl/pe.em:334 msgid " --enable-stdcall-fixup Link _sym to _sym@nn without warnings\n" msgstr " --enable-stdcall-fixup Länka _sym till _sym@nn utan varningar\n" -#: emultempl/pe.em:286 +#: emultempl/pe.em:335 msgid " --exclude-symbols sym,sym,... Exclude symbols from automatic export\n" msgstr " --exclude-symbols sym,sym,... Exkludera symboler från automatisk export\n" -#: emultempl/pe.em:287 +#: emultempl/pe.em:336 msgid " --export-all-symbols Automatically export all globals to DLL\n" msgstr " --export-all-symbols Exportera automatiskt alla symboler till DLL\n" -#: emultempl/pe.em:288 +#: emultempl/pe.em:337 msgid " --kill-at Remove @nn from exported symbols\n" msgstr " --kill-at Ta bort @nn från exporterade symboler\n" -#: emultempl/pe.em:289 +#: emultempl/pe.em:338 msgid " --out-implib Generate import library\n" msgstr " --out-implib Generera importbibliotek\n" -#: emultempl/pe.em:290 +#: emultempl/pe.em:339 msgid " --output-def Generate a .DEF file for the built DLL\n" msgstr " --output-def Generera en .DEF-fil för byggd DLL\n" -#: emultempl/pe.em:291 +#: emultempl/pe.em:340 msgid " --warn-duplicate-exports Warn about duplicate exports.\n" msgstr " --warn-duplicate-exports Varna för dubbla exporter.\n" -#: emultempl/pe.em:292 -msgid " --compat-implib Create backward compatible import libs;\n" -msgstr " --compat-implib Skapa bakåtkompatibla importbibliotek;\n" - -#: emultempl/pe.em:293 -msgid " create __imp_ as well.\n" -msgstr " skapa även __imp_.\n" - -#: emultempl/pe.em:294 -msgid " --enable-auto-image-base Automatically choose image base for DLLs\n" -msgstr " --enable-auto-image-base Välj automatiskt bildbas för DLL:er\n" - -#: emultempl/pe.em:295 -msgid " unless user specifies one\n" -msgstr " såvida användaren inte anger en\n" +#: emultempl/pe.em:341 +msgid "" +" --compat-implib Create backward compatible import libs;\n" +" create __imp_ as well.\n" +msgstr "" +" --compat-implib Skapa bakåtkompatibla importbibliotek;\n" +" och skapa även __imp_.\n" + +#: emultempl/pe.em:343 +msgid "" +" --enable-auto-image-base Automatically choose image base for DLLs\n" +" unless user specifies one\n" +msgstr "" +" --enable-auto-image-base Välj automatiskt bildbas för DLL:er\n" +" såvida inte användaren anger en\n" -#: emultempl/pe.em:296 +#: emultempl/pe.em:345 msgid " --disable-auto-image-base Do not auto-choose image base. (default)\n" msgstr " --disable-auto-image-base Välj inte bildbas automatiskt. (standard)\n" -#: emultempl/pe.em:297 -msgid " --dll-search-prefix= When linking dynamically to a dll witout an\n" -msgstr " --dll-search-prefix= Använd hellre .dll\n" +#: emultempl/pe.em:346 +msgid "" +" --dll-search-prefix= When linking dynamically to a dll without an\n" +" importlib, use .dll \n" +" in preference to lib.dll \n" +msgstr "" +" --dll-search-prefix= Använd .dll istället\n" +" för lib.dll vid dynamisk\n" +" länkning utan ett importbibliotek\n" + +#: emultempl/pe.em:349 +msgid "" +" --enable-auto-import Do sophistcated linking of _sym to \n" +" __imp_sym for DATA references\n" +msgstr "" +" --enable-auto-import Utför sofistikerad länkning av _sym till\n" +" __imp_sym för DATA-referenser\n" -#: emultempl/pe.em:298 -msgid " importlib, use .dll \n" -msgstr " än lib.dll vid dynamisk\n" +#: emultempl/pe.em:351 +msgid " --disable-auto-import Do not auto-import DATA items from DLLs\n" +msgstr "" +" --disable-auto-import Importera inte DATA-objekt från DLL:er\n" +" automatiskt\n" -#: emultempl/pe.em:299 -msgid " in preference to lib.dll \n" +#: emultempl/pe.em:352 +msgid "" +" --enable-extra-pe-debug Enable verbose debug output when building\n" +" or linking to DLLs (esp. auto-import)\n" msgstr "" -" länkning till en dll utan ett\n" -" importbibliotek.\n" +" --enable-extra-pe-debug Använd utförlig felsökningsutdata vid\n" +" bygge av eller länkning till DLL:er\n" +" (särskilt automatisk import)\n" -#: emultempl/pe.em:367 +#: emultempl/pe.em:421 msgid "%P: warning: bad version number in -subsystem option\n" msgstr "%P: varning: felaktigt nummer i flaggan -subsystem\n" -#: emultempl/pe.em:403 +#: emultempl/pe.em:457 msgid "%P%F: invalid subsystem type %s\n" msgstr "%P%F: ogiltig typ av undersystem %s\n" -#: emultempl/pe.em:418 +#: emultempl/pe.em:472 msgid "%P%F: invalid hex number for PE parameter '%s'\n" msgstr "%P%F: ogiltigt hexadecimalt tal för PE-parametern \"%s\"\n" -#: emultempl/pe.em:436 +#: emultempl/pe.em:490 msgid "%P%F: strange hex info for PE parameter '%s'\n" msgstr "%P%F: konstig hexadecimal information för PE-parametern \"%s\"\n" -#: emultempl/pe.em:475 +#: emultempl/pe.em:529 #, c-format msgid "%s: Can't open base file %s\n" msgstr "%s: Kan inte öppna basfilen %s\n" -#: emultempl/pe.em:668 +#: emultempl/pe.em:731 msgid "%P: warning, file alignment > section alignment.\n" msgstr "%P: varning, filjusteringen > sektionsjusteringen.\n" -#: emultempl/pe.em:739 emultempl/pe.em:765 +#: emultempl/pe.em:815 emultempl/pe.em:841 #, c-format msgid "Warning: resolving %s by linking to %s\n" msgstr "Varning: löser upp %s genom att länka till %s\n" -#: emultempl/pe.em:744 emultempl/pe.em:770 +#: emultempl/pe.em:820 emultempl/pe.em:846 msgid "Use --enable-stdcall-fixup to disable these warnings\n" msgstr "Använd --enable-stdcall-fixup för att stänga av dessa varningar\n" -#: emultempl/pe.em:745 emultempl/pe.em:771 +#: emultempl/pe.em:821 emultempl/pe.em:847 msgid "Use --disable-stdcall-fixup to disable these fixups\n" msgstr "Använd --disable-stdcall-fixup för att stänga av dessa korrigeringar\n" -#: emultempl/pe.em:788 +#: emultempl/pe.em:872 +msgid "%C: Cannot get section contents - auto-import exception\n" +msgstr "%C: Kan inte få tag i sektionsinnehåll - undantag i automatisk import\n" + +#: emultempl/pe.em:880 +msgid "%C: variable '%T' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details.\n" +msgstr "%C: variabeln \"%T\" kan inte importeras automatiskt. Läs dokumentationen för ld:s --enable-auto-import för detaljer.\n" + +#: emultempl/pe.em:908 +#, c-format +msgid "Warning: resolving %s by linking to %s (auto-import)\n" +msgstr "Varning: löser upp %s genom att länka till %s (automatisk import)\n" + +#: emultempl/pe.em:989 msgid "%F%P: PE operations on non PE file.\n" msgstr "%F%P: PE-operationer på fil som inte är PE.\n" -#: emultempl/pe.em:1015 +#: emultempl/pe.em:1218 #, c-format msgid "Errors encountered processing file %s\n" msgstr "Fel uppstod vid behandling av filen %s\n" -#: emultempl/pe.em:1038 +#: emultempl/pe.em:1241 #, c-format msgid "Errors encountered processing file %s for interworking" msgstr "Fel uppstod vid behandling av filen %s för interaktion" -#: emultempl/pe.em:1094 ldlang.c:1981 ldlang.c:4347 ldlang.c:4380 ldmain.c:1016 +#: emultempl/pe.em:1297 ldlang.c:2050 ldlang.c:4441 ldlang.c:4474 ldmain.c:1067 msgid "%P%F: bfd_link_hash_lookup failed: %E\n" msgstr "%P%F: bfd_link_hash_lookup misslyckades: %E\n" @@ -245,8 +277,14 @@ msgid "%X%P: cref_hash_lookup failed: %E msgstr "%X%P: cref_hash_lookup misslyckades: %E\n" #: ldcref.c:235 -msgid "\nCross Reference Table\n\n" -msgstr "\nKorsreferenstabell\n\n" +msgid "" +"\n" +"Cross Reference Table\n" +"\n" +msgstr "" +"\n" +"Korsreferenstabell\n" +"\n" #: ldcref.c:236 msgid "Symbol" @@ -260,19 +298,19 @@ msgstr "Fil\n" msgid "No symbols\n" msgstr "Inga symboler\n" -#: ldcref.c:364 +#: ldcref.c:400 msgid "%P: symbol `%T' missing from main hash table\n" msgstr "%P: symbolen \"%T\" saknas från hastabellen\n" -#: ldcref.c:435 +#: ldcref.c:465 msgid "%B%F: could not read symbols; %E\n" msgstr "%B%F: kunde inte läsa symboler; %E\n" -#: ldcref.c:439 ldmain.c:1082 ldmain.c:1086 +#: ldcref.c:469 ldmain.c:1133 ldmain.c:1137 msgid "%B%F: could not read symbols: %E\n" msgstr "%B%F: kunde inte läsa symboler: %E\n" -#: ldcref.c:511 ldcref.c:518 ldmain.c:1132 ldmain.c:1139 +#: ldcref.c:537 ldcref.c:544 ldmain.c:1183 ldmain.c:1190 msgid "%B%F: could not read relocs: %E\n" msgstr "%B%F: kunde inte läsa omlokaliseringar: %E\n" @@ -280,629 +318,691 @@ msgstr "%B%F: kunde inte läsa omlokalise #. in OUTSECNAME. This reloc is from a section which is #. mapped into a section from which references to OUTSECNAME #. are prohibited. We must report an error. -#: ldcref.c:536 +#: ldcref.c:563 msgid "%X%C: prohibited cross reference from %s to `%T' in %s\n" msgstr "%X%C: förbjuden korsreferens från %s till \"%T\" i %s\n" -#: ldctor.c:89 +#: ldctor.c:88 msgid "%P%X: Different relocs used in set %s\n" msgstr "%P%X: Olika omlokaliseringar använda i gruppen %s\n" -#: ldctor.c:107 +#: ldctor.c:106 msgid "%P%X: Different object file formats composing set %s\n" msgstr "%P%X: Olika objektfilformat utgör gruppen %s\n" -#: ldctor.c:289 ldctor.c:303 +#: ldctor.c:288 ldctor.c:302 msgid "%P%X: %s does not support reloc %s for set %s\n" msgstr "%P%X: %s stöder inte omlokaliseringen %s för gruppen %s\n" -#: ldctor.c:324 +#: ldctor.c:323 msgid "%P%X: Unsupported size %d for set %s\n" msgstr "%P%X: Storleken %d för gruppen %s stöds inte\n" -#: ldctor.c:345 -msgid "\nSet Symbol\n\n" -msgstr "\nGrupp Symbol\n\n" +#: ldctor.c:344 +msgid "" +"\n" +"Set Symbol\n" +"\n" +msgstr "" +"\n" +"Grupp Symbol\n" +"\n" -#: ldemul.c:220 +#: ldemul.c:225 msgid "%S SYSLIB ignored\n" msgstr "%S SYSLIB ignorerades\n" -#: ldemul.c:227 +#: ldemul.c:232 msgid "%S HLL ignored\n" msgstr "%S HLL ignorerades\n" -#: ldemul.c:248 +#: ldemul.c:253 msgid "%P: unrecognised emulation mode: %s\n" msgstr "%P: okänt emuleringsläge: %s\n" -#: ldemul.c:249 +#: ldemul.c:254 msgid "Supported emulations: " msgstr "Emuleringar som stöds: " -#: ldemul.c:293 +#: ldemul.c:298 msgid " no emulation specific options.\n" msgstr " inga emuleringsspecifika flaggor.\n" -#: ldexp.c:154 +#: ldexp.c:163 msgid "%F%P: %s uses undefined section %s\n" msgstr "%F%P: %s använder odefinierad sektion %s\n" -#: ldexp.c:156 +#: ldexp.c:165 msgid "%F%P: %s forward reference of section %s\n" msgstr "%F%P: %s framåtreferens av sektionen %s\n" -#: ldexp.c:268 +#: ldexp.c:277 msgid "%F%S %% by zero\n" msgstr "%F%S %% med noll\n" -#: ldexp.c:275 +#: ldexp.c:284 msgid "%F%S / by zero\n" msgstr "%F%S / med noll\n" -#: ldexp.c:398 +#: ldexp.c:408 msgid "%X%S: unresolvable symbol `%s' referenced in expression\n" msgstr "%X%S: oupplösningsbara symbolen \"%s\" refererades i uttrycket\n" -#: ldexp.c:417 +#: ldexp.c:427 msgid "%F%S: undefined symbol `%s' referenced in expression\n" msgstr "%F%S: odefinierade symbolen \"%s\" refererades i uttrycket\n" -#: ldexp.c:600 +#: ldexp.c:611 msgid "%F%S can not PROVIDE assignment to location counter\n" msgstr "%F%S kan inte TILLHANDAHÅLLA tilldelning till platsräknare\n" -#: ldexp.c:610 +#: ldexp.c:621 msgid "%F%S invalid assignment to location counter\n" msgstr "%F%S ogiltig tilldelning till platsräknare\n" -#: ldexp.c:614 +#: ldexp.c:625 msgid "%F%S assignment to location counter invalid outside of SECTION\n" msgstr "%F%S tilldelning till platsräknare som är ogiltig utanför SEKTION\n" -#: ldexp.c:624 +#: ldexp.c:634 msgid "%F%S cannot move location counter backwards (from %V to %V)\n" msgstr "%F%S kan inte flytta platsräknare bakåt (från %V till %V)\n" -#: ldexp.c:652 +#: ldexp.c:661 msgid "%P%F:%s: hash creation failed\n" msgstr "%P%F:%s: skapande av hash misslyckades\n" -#: ldexp.c:951 +#: ldexp.c:963 msgid "%F%S nonconstant expression for %s\n" msgstr "%F%S ickekonstant uttryck för %s\n" -#: ldexp.c:984 +#: ldexp.c:993 msgid "%F%S non constant expression for %s\n" msgstr "%F%S ickekonstant uttryck för %s\n" -#: ldfile.c:102 +#: ldfile.c:105 #, c-format msgid "attempt to open %s failed\n" msgstr "försök att öppna %s misslyckades\n" -#: ldfile.c:104 +#: ldfile.c:107 #, c-format msgid "attempt to open %s succeeded\n" msgstr "försök att öppna %s lyckades\n" -#: ldfile.c:110 +#: ldfile.c:113 msgid "%F%P: invalid BFD target `%s'\n" msgstr "%F%P: ogiltigt BFD-mål \"%s\"\n" -#: ldfile.c:134 +#: ldfile.c:137 msgid "%P: skipping incompatible %s when searching for %s\n" msgstr "%P: hoppar över inkompatibel %s vid sökning av %s\n" -#: ldfile.c:226 +#: ldfile.c:229 msgid "%F%P: cannot open %s for %s: %E\n" msgstr "%F%P: kan inte öppna %s för %s: %E\n" -#: ldfile.c:229 +#: ldfile.c:232 msgid "%F%P: cannot open %s: %E\n" msgstr "%F%P: kan inte öppna %s: %E\n" -#: ldfile.c:250 +#: ldfile.c:262 msgid "%F%P: cannot find %s\n" msgstr "%F%P: kan inte hitta %s\n" -#: ldfile.c:269 ldfile.c:285 +#: ldfile.c:281 ldfile.c:297 #, c-format msgid "cannot find script file %s\n" msgstr "kan inte hitta skriptfilen %s\n" -#: ldfile.c:271 ldfile.c:287 +#: ldfile.c:283 ldfile.c:299 #, c-format msgid "opened script file %s\n" msgstr "öppnade skriptfilen %s\n" -#: ldfile.c:336 +#: ldfile.c:348 msgid "%P%F: cannot open linker script file %s: %E\n" msgstr "%P%F: kan inte öppna länkskriptfilen %s: %E\n" -#: ldfile.c:373 +#: ldfile.c:386 msgid "%P%F: unknown architecture: %s\n" msgstr "%P%F: okänd arkitektur: %s\n" -#: ldfile.c:389 +#: ldfile.c:402 msgid "%P%F: target architecture respecified\n" msgstr "%P%F: målarkitekturen specifierades om\n" -#: ldfile.c:444 +#: ldfile.c:456 msgid "%P%F: cannot represent machine `%s'\n" msgstr "%P%F: kan inte representera maskinen \"%s\"\n" -#: ldlang.c:736 -msgid "\nMemory Configuration\n\n" -msgstr "\nMinneskonfiguration\n\n" +#: ldlang.c:771 +msgid "" +"\n" +"Memory Configuration\n" +"\n" +msgstr "" +"\n" +"Minneskonfiguration\n" +"\n" -#: ldlang.c:738 +#: ldlang.c:773 msgid "Name" msgstr "Namn" -#: ldlang.c:738 +#: ldlang.c:773 msgid "Origin" msgstr "Början" -#: ldlang.c:738 +#: ldlang.c:773 msgid "Length" msgstr "Längd" -#: ldlang.c:738 +#: ldlang.c:773 msgid "Attributes" msgstr "Attribut" -#: ldlang.c:780 -msgid "\nLinker script and memory map\n\n" -msgstr "\nLänkskript och minnestabell\n\n" - -#: ldlang.c:797 -msgid "%P%F: Illegal use of `%s' section" -msgstr "%P%F: Otillåten användning av sektionen \"%s\"" +#: ldlang.c:815 +msgid "" +"\n" +"Linker script and memory map\n" +"\n" +msgstr "" +"\n" +"Länkskript och minnestabell\n" +"\n" + +#: ldlang.c:832 +msgid "%P%F: Illegal use of `%s' section\n" +msgstr "%P%F: Otillåten användning av sektionen \"%s\"\n" -#: ldlang.c:807 +#: ldlang.c:842 msgid "%P%F: output format %s cannot represent section called %s\n" msgstr "%P%F: utdataformatet %s kan inte representera sektionen kallad %s\n" -#: ldlang.c:969 +#: ldlang.c:1004 msgid "%P: %B: warning: ignoring duplicate section `%s'\n" msgstr "%P: %B: varning: ignorerar dubbel sektion \"%s\"\n" -#: ldlang.c:972 +#: ldlang.c:1007 msgid "%P: %B: warning: ignoring duplicate `%s' section symbol `%s'\n" msgstr "%P: %B: varning: ignorerar dubbla \"%s\"-sektionssymbolen \"%s\"\n" -#: ldlang.c:986 +#: ldlang.c:1021 msgid "%P: %B: warning: duplicate section `%s' has different size\n" msgstr "%P: %B: varning: dubbla sektionen \"%s\" har annan storlek\n" -#: ldlang.c:1037 +#: ldlang.c:1069 msgid "%P%F: Failed to create hash table\n" msgstr "%P%F: Misslyckades med att skapa hashtabell\n" -#: ldlang.c:1427 +#: ldlang.c:1484 msgid "%B: file not recognized: %E\n" msgstr "%B: filen inte igenkänd: %E\n" -#: ldlang.c:1428 +#: ldlang.c:1485 msgid "%B: matching formats:" msgstr "%B: matchande format:" -#: ldlang.c:1435 +#: ldlang.c:1492 msgid "%F%B: file not recognized: %E\n" msgstr "%F%B: filen inte igenkänd: %E\n" -#: ldlang.c:1488 -msgid "%F%B: object %B in archive is not object\n" -msgstr "%F%B: objektet %B i arkivet är inte i objektformat\n" +#: ldlang.c:1548 +msgid "%F%B: member %B in archive is not an object\n" +msgstr "%F%B: medlem %B i arkivet är inte ett objekt\n" -#: ldlang.c:1494 ldlang.c:1506 +#: ldlang.c:1559 ldlang.c:1573 msgid "%F%B: could not read symbols: %E\n" msgstr "%F%B: kunde inte läsa symboler: %E\n" -#: ldlang.c:1766 +#: ldlang.c:1834 msgid "%P: warning: could not find any targets that match endianness requirement\n" msgstr "%P: varning: kunde inte hitta några mål som matchar kravet på endianess\n" -#: ldlang.c:1779 +#: ldlang.c:1847 msgid "%P%F: target %s not found\n" msgstr "%P%F: målet %s hittades inte\n" -#: ldlang.c:1781 +#: ldlang.c:1849 msgid "%P%F: cannot open output file %s: %E\n" msgstr "%P%F: kan inte öppna utdatafilen %s: %E\n" -#: ldlang.c:1791 +#: ldlang.c:1859 msgid "%P%F:%s: can not make object file: %E\n" msgstr "%P%F:%s: kan inte skapa objektfilen: %E\n" -#: ldlang.c:1795 +#: ldlang.c:1863 msgid "%P%F:%s: can not set architecture: %E\n" msgstr "%P%F:%s: kan inte ställa in arkitektur: %E\n" -#: ldlang.c:1799 +#: ldlang.c:1867 msgid "%P%F: can not create link hash table: %E\n" msgstr "%P%F: kan inte skapa hashtabell över länkar: %E\n" -#: ldlang.c:2104 +#: ldlang.c:2169 msgid " load address 0x%V" msgstr " inläsningsadress 0x%V" -#: ldlang.c:2234 +#: ldlang.c:2299 msgid "%W (size before relaxing)\n" msgstr "%W (storlek innan avslappning)\n" -#: ldlang.c:2316 +#: ldlang.c:2381 #, c-format msgid "Address of section %s set to " msgstr "Adressen på sektionen %s ställd till " -#: ldlang.c:2465 +#: ldlang.c:2535 #, c-format msgid "Fail with %d\n" msgstr "Misslyckas med %d\n" -#: ldlang.c:2703 +#: ldlang.c:2777 msgid "%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n" msgstr "%X%P: sektionen %s [%V -> %V] överlappar med sektionen %s [%V -> %V]\n" -#: ldlang.c:2737 +#: ldlang.c:2806 msgid "%X%P: address 0x%v of %B section %s is not within region %s\n" msgstr "%X%P: adressen 0x%v i %B-sektionen %s är inte inom området %s\n" -#: ldlang.c:2745 +#: ldlang.c:2814 msgid "%X%P: region %s is full (%B section %s)\n" msgstr "%X%P: området %s är fullt (%B-sektion %s)\n" -#: ldlang.c:2794 +#: ldlang.c:2864 msgid "%P%X: Internal error on COFF shared library section %s\n" msgstr "%P%X: Internt fel i delat COFF-bibliotek sektion %s\n" -#: ldlang.c:2835 +#: ldlang.c:2906 msgid "%P: warning: no memory region specified for section `%s'\n" msgstr "%P: varning: inget minnesområde angivet för sektionen \"%s\"\n" -#: ldlang.c:2848 +#: ldlang.c:2921 msgid "%P: warning: changing start of section %s by %u bytes\n" msgstr "%P: varning: ändrar start på sektionen %s med %u byte\n" -#: ldlang.c:2862 +#: ldlang.c:2935 msgid "%F%S: non constant address expression for section %s\n" msgstr "%F%S: ickekonstant adressuttryck för sektionen %s\n" -#: ldlang.c:2927 +#: ldlang.c:2999 msgid "%X%P: use an absolute load address or a load memory region, not both\n" msgstr "%X%P: använd en absolut inläsningsadress eller ett minnesinläsningsområde, inte både och\n" -#: ldlang.c:3043 +#: ldlang.c:3114 msgid "%P%F: can't relax section: %E\n" msgstr "%P%F: kan inte slappna av sektion: %E\n" -#: ldlang.c:3210 +#: ldlang.c:3273 msgid "%F%P: invalid data statement\n" msgstr "%F%P: ogiltig datasats\n" -#: ldlang.c:3247 +#: ldlang.c:3310 msgid "%F%P: invalid reloc statement\n" msgstr "%F%P: ogiltig omlokaliseringssats\n" -#: ldlang.c:3383 +#: ldlang.c:3448 msgid "%P%F:%s: can't set start address\n" msgstr "%P%F:%s: kan inte ställa in startadress\n" -#: ldlang.c:3396 ldlang.c:3413 +#: ldlang.c:3461 ldlang.c:3478 msgid "%P%F: can't set start address\n" msgstr "%P%F: kan inte ställa in startadress\n" -#: ldlang.c:3408 +#: ldlang.c:3473 msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n" msgstr "%P: varning: kan inte hitta ingångssymbolen %s; använder som standard %V\n" -#: ldlang.c:3418 +#: ldlang.c:3483 msgid "%P: warning: cannot find entry symbol %s; not setting start address\n" msgstr "%P: varning: kan inte hitta ingångssymbolen %s; ställer inte in startadress\n" -#: ldlang.c:3460 +#: ldlang.c:3525 msgid "%P: warning: %s architecture of input file `%B' is incompatible with %s output\n" msgstr "%P: varning: %s-arkitekturen i indatafilen \"%B\" är inkompatibel med %s-utdata\n" -#: ldlang.c:3478 +#: ldlang.c:3538 +msgid "%P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported\n" +msgstr "%P%F: Omlokaliseringsbar länkning med omlänkningar från formatet %s (%B) till formatet %s (%B) stöds inte\n" + +#: ldlang.c:3558 msgid "%E%X: failed to merge target specific data of file %B\n" msgstr "%E%X: misslyckades med att slå samman målspecifik data i filen %B\n" -#: ldlang.c:3565 -msgid "\nAllocating common symbols\n" -msgstr "\nAllokerar gemensamma symboler\n" - -#: ldlang.c:3566 -msgid "Common symbol size file\n\n" -msgstr "Gemensam symbol storlek fil\n\n" +#: ldlang.c:3647 +msgid "" +"\n" +"Allocating common symbols\n" +msgstr "" +"\n" +"Allokerar gemensamma symboler\n" + +#: ldlang.c:3648 +msgid "" +"Common symbol size file\n" +"\n" +msgstr "" +"Gemensam symbol storlek fil\n" +"\n" #. This message happens when using the #. svr3.ifile linker script, so I have #. disabled it. -#: ldlang.c:3648 +#: ldlang.c:3730 msgid "%P: no [COMMON] command, defaulting to .bss\n" msgstr "%P: inget [COMMON]-kommando, använder standardalternativet .bss\n" -#: ldlang.c:3707 +#: ldlang.c:3789 msgid "%P%F: invalid syntax in flags\n" msgstr "%P%F: ogiltig syntax i flaggor\n" -#: ldlang.c:4296 +#: ldlang.c:4390 msgid "%P%Fmultiple STARTUP files\n" msgstr "%P%Fflera samtidiga STARTUP-filer\n" -#: ldlang.c:4566 +#: ldlang.c:4658 msgid "%F%P: bfd_record_phdr failed: %E\n" msgstr "%F%P: bfd_record_phdr misslyckades: %E\n" -#: ldlang.c:4585 +#: ldlang.c:4677 msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n" msgstr "%X%P: sektionen \"%s\" är tilldelad till ickexisterande phvd \"%s\"\n" -#: ldlang.c:4893 +#: ldlang.c:5003 msgid "%X%P: unknown language `%s' in version information\n" msgstr "%X%P: okänt språk i \"%s\" i versionsinformation\n" -#: ldlang.c:4942 +#: ldlang.c:5055 +msgid "%X%P: anonymous version tag cannot be combined with other version tags\n" +msgstr "%X%P: anonym versionstagg kan inte kombineras med andra versionstaggar\n" + +#: ldlang.c:5062 msgid "%X%P: duplicate version tag `%s'\n" msgstr "%X%P: dubbel versionstagg \"%s\"\n" -#: ldlang.c:4955 ldlang.c:4968 +#: ldlang.c:5075 ldlang.c:5088 msgid "%X%P: duplicate expression `%s' in version information\n" msgstr "%X%P: dubbelt uttryck \"%s\" i versionsinformation\n" -#: ldlang.c:5005 +#: ldlang.c:5130 msgid "%X%P: unable to find version dependency `%s'\n" msgstr "%X%P: kan inte hitta versionsberoende \"%s\"\n" -#: ldlang.c:5027 -msgid "%X%P: unable to read .exports section contents" -msgstr "%X%P: kan inte läsa innehållet i .exports-sektionen" +#: ldlang.c:5152 +msgid "%X%P: unable to read .exports section contents\n" +msgstr "%X%P: kan inte läsa innehållet i .exports-sektionen\n" -#: ldmain.c:192 +#: ldmain.c:195 msgid "%X%P: can't set BFD default target to `%s': %E\n" msgstr "%X%P: kan inte ställa in BSD-standardmålet till \"%s\": %E\n" -#: ldmain.c:268 +#: ldmain.c:284 msgid "%P%F: -r and --mpc860c0 may not be used together\n" msgstr "%P%F: -r och --mpc860c0 kan inte användas tillsammans\n" -#: ldmain.c:270 +#: ldmain.c:286 msgid "%P%F: --relax and -r may not be used together\n" msgstr "%P%F: --relax och -r kan inte användas tillsammans\n" -#: ldmain.c:272 +#: ldmain.c:288 msgid "%P%F: -r and -shared may not be used together\n" msgstr "%P%F: -r och -shared kan inte användas tillsammans\n" -#: ldmain.c:301 -msgid "using internal linker script:\n" -msgstr "använder internt länkskript:\n" +#: ldmain.c:294 +msgid "%P%F: -F may not be used without -shared\n" +msgstr "%P%F: -F kan inte användas utan -shared\n" + +#: ldmain.c:296 +msgid "%P%F: -f may not be used without -shared\n" +msgstr "%P%F: -f kan inte användas utan -shared\n" + +# This is broken +# +# info_msg (_("using %s linker script:\n"), +# saved_script_handle ? "external" : "internal"); +# +#: ldmain.c:334 +#, c-format +msgid "using %s linker script:\n" +msgstr "använder %s länkskript:\n" -#: ldmain.c:320 +#: ldmain.c:369 msgid "%P%F: no input files\n" msgstr "%P%F: inga indatafiler\n" -#: ldmain.c:325 +#: ldmain.c:374 msgid "%P: mode %s\n" msgstr "%P: läge %s\n" -#: ldmain.c:342 +#: ldmain.c:391 msgid "%P%F: cannot open map file %s: %E\n" msgstr "%P%F: kan inte öppna tabellfil %s: %E\n" -#: ldmain.c:389 +#: ldmain.c:438 msgid "%P: link errors found, deleting executable `%s'\n" msgstr "%P: länkfel hittades, tar bort den körbara filen \"%s\"\n" -#: ldmain.c:400 +#: ldmain.c:449 msgid "%F%B: final close failed: %E\n" msgstr "%F%B: avslutande stängning misslyckades: %E\n" -#: ldmain.c:424 +#: ldmain.c:473 msgid "%X%P: unable to open for source of copy `%s'\n" msgstr "%X%P: kan inte öppna för källkoden till kopian \"%s\"\n" -#: ldmain.c:426 +#: ldmain.c:475 msgid "%X%P: unable to open for destination of copy `%s'\n" msgstr "%X%P: kan inte öppna för mål av kopian \"%s\"\n" -#: ldmain.c:432 +#: ldmain.c:481 msgid "%P: Error writing file `%s'\n" msgstr "%P: Fel vid skrivning av filen \"%s\"\n" -#: ldmain.c:438 pe-dll.c:1097 +#: ldmain.c:487 pe-dll.c:1442 #, c-format msgid "%P: Error closing file `%s'\n" msgstr "%P: Fel vid stängning av filen \"%s\"\n" -#: ldmain.c:455 +#: ldmain.c:504 #, c-format msgid "%s: total time in link: %ld.%06ld\n" msgstr "%s: total tid i länkning: %ld.%06ld\n" -#: ldmain.c:458 +#: ldmain.c:507 #, c-format msgid "%s: data size %ld\n" msgstr "%s: datastorlek %ld\n" -#: ldmain.c:499 +#: ldmain.c:548 msgid "%P%F: missing argument to -m\n" msgstr "%P%F: argument saknas till -m\n" -#: ldmain.c:624 ldmain.c:645 ldmain.c:676 +#: ldmain.c:676 ldmain.c:697 ldmain.c:728 msgid "%P%F: bfd_hash_table_init failed: %E\n" msgstr "%P%F: bfd_hash_table_init misslyckades: %E\n" -#: ldmain.c:629 ldmain.c:648 +#: ldmain.c:681 ldmain.c:700 msgid "%P%F: bfd_hash_lookup failed: %E\n" msgstr "%P%F: bfd_hash_lookup misslyckades: %E\n" -#: ldmain.c:663 +#: ldmain.c:715 msgid "%X%P: error: duplicate retain-symbols-file\n" msgstr "%X%P: fel: dubbel retain-symbols-file\n" -#: ldmain.c:707 +#: ldmain.c:759 msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n" msgstr "%P%F: bfd_hash_lookup för ingång misslyckades: %E\n" -#: ldmain.c:712 +#: ldmain.c:764 msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n" msgstr "%P: \"-retain-symbols-file\" åsidosätter \"-s\" och \"-S\"\n" -#: ldmain.c:788 -msgid "Archive member included" -msgstr "Inkluderade arkivmedlem" - -#: ldmain.c:789 -msgid "because of file (symbol)" -msgstr "på grund av fil (symbol)" +#: ldmain.c:840 +msgid "" +"Archive member included because of file (symbol)\n" +"\n" +msgstr "" +"Arkivmedlem inkluderad på grund av fil (symbol)\n" +"\n" -#: ldmain.c:860 +#: ldmain.c:911 msgid "%X%C: multiple definition of `%T'\n" msgstr "%X%C: flera defintioner av \"%T\"\n" -#: ldmain.c:863 +#: ldmain.c:914 msgid "%D: first defined here\n" msgstr "%D: först definierad här\n" -#: ldmain.c:867 +#: ldmain.c:918 msgid "%P: Disabling relaxation: it will not work with multiple definitions\n" msgstr "%P: Stänger av avslappning: det kommer inte att fungera med flera definitioner\n" -#: ldmain.c:898 +#: ldmain.c:949 msgid "%B: warning: definition of `%T' overriding common\n" msgstr "%B: varning: definitioner av \"%T\" åsidosätter gemensam\n" -#: ldmain.c:901 +#: ldmain.c:952 msgid "%B: warning: common is here\n" msgstr "%B: varning: gemensam är här\n" -#: ldmain.c:908 +#: ldmain.c:959 msgid "%B: warning: common of `%T' overridden by definition\n" msgstr "%B: varning: gemensam i \"%T\" åsidosattes av definition\n" -#: ldmain.c:911 +#: ldmain.c:962 msgid "%B: warning: defined here\n" msgstr "%B: varning: definierad här\n" -#: ldmain.c:918 +#: ldmain.c:969 msgid "%B: warning: common of `%T' overridden by larger common\n" msgstr "%B: varning: gemensam i \"%T\" åsidosattes av större gemensam\n" -#: ldmain.c:921 +#: ldmain.c:972 msgid "%B: warning: larger common is here\n" msgstr "%B: varning: större gemensam är här\n" -#: ldmain.c:925 +#: ldmain.c:976 msgid "%B: warning: common of `%T' overriding smaller common\n" msgstr "%B: varning: gemensam i \"%T\" åsidosätter mindre gemensam\n" -#: ldmain.c:928 +#: ldmain.c:979 msgid "%B: warning: smaller common is here\n" msgstr "%B: varning: mindre gemensam är här\n" -#: ldmain.c:932 +#: ldmain.c:983 msgid "%B: warning: multiple common of `%T'\n" msgstr "%B: varning: flera gemensamma i \"%T\"\n" -#: ldmain.c:934 +#: ldmain.c:985 msgid "%B: warning: previous common is here\n" msgstr "%B: varning: föregående gemensam är här\n" -#: ldmain.c:955 ldmain.c:994 +#: ldmain.c:1006 ldmain.c:1045 msgid "%P: warning: global constructor %s used\n" msgstr "%P: varning: global konstruktor %s användes\n" -#: ldmain.c:1004 +#: ldmain.c:1055 msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n" msgstr "%P%F: Fel i BFD-backend: BFD_RELOC_CTOR stöds inte\n" -#: ldmain.c:1188 +#: ldmain.c:1239 msgid "%F%P: bfd_hash_table_init failed: %E\n" msgstr "%F%P: bfd_hash_table_init misslyckades: %E\n" -#: ldmain.c:1195 +#: ldmain.c:1246 msgid "%F%P: bfd_hash_lookup failed: %E\n" msgstr "%F%P: bfd_hash_lookup misslyckades: %E\n" -#: ldmain.c:1215 +#: ldmain.c:1266 msgid "%C: undefined reference to `%T'\n" msgstr "%C: odefinierad referens till \"%T\"\n" -#: ldmain.c:1221 +#: ldmain.c:1272 msgid "%D: more undefined references to `%T' follow\n" msgstr "%D: flera odefinierade referenser till \"%T\" följer\n" -#: ldmain.c:1228 +#: ldmain.c:1279 msgid "%B: undefined reference to `%T'\n" msgstr "%B: odefinierad referens till \"%T\"\n" -#: ldmain.c:1234 +#: ldmain.c:1285 msgid "%B: more undefined references to `%T' follow\n" msgstr "%B: flera odefinierade referenser till \"%T\" följer\n" -#: ldmain.c:1254 ldmain.c:1275 ldmain.c:1294 +#: ldmain.c:1305 ldmain.c:1326 ldmain.c:1345 msgid "%P%X: generated" msgstr "%P%X: genererad" -#: ldmain.c:1257 +#: ldmain.c:1308 msgid " relocation truncated to fit: %s %T" msgstr " omlokalisering trunkerad för att passa: %s %T" -#: ldmain.c:1278 +#: ldmain.c:1329 #, c-format msgid "dangerous relocation: %s\n" msgstr "farlig omlokalisering: %s\n" -#: ldmain.c:1297 +#: ldmain.c:1348 msgid " reloc refers to symbol `%T' which is not being output\n" msgstr " omlokalisering refererar till symbolen \"%T\" som inte skrivs ut\n" -#: ldmisc.c:178 +#: ldmisc.c:176 msgid "no symbol" msgstr "ingen symbol" -#: ldmisc.c:242 +#: ldmisc.c:240 #, c-format msgid "built in linker script:%u" msgstr "inbyggt länkskript:%u" -#: ldmisc.c:292 ldmisc.c:296 +#: ldmisc.c:290 ldmisc.c:294 msgid "%B%F: could not read symbols\n" msgstr "%B%F: kunde inte läsa symboler\n" #. We use abfd->filename in this initial line, #. in case filename is a .h file or something #. similarly unhelpful. -#: ldmisc.c:332 +#: ldmisc.c:330 msgid "%B: In function `%T':\n" msgstr "%B: I funktionen \"%T\":\n" -#: ldmisc.c:464 +#: ldmisc.c:439 msgid "%F%P: internal error %s %d\n" msgstr "%F%P: internt fel %s %d\n" -#: ldmisc.c:550 +#: ldmisc.c:489 msgid "%P: internal error: aborting at %s line %d in %s\n" msgstr "%P: internt fel: avbryter vid %s rad %d i %s\n" -#: ldmisc.c:553 +#: ldmisc.c:492 msgid "%P: internal error: aborting at %s line %d\n" msgstr "%P: internt fel: avbryter vid %s rad %d\n" -#: ldmisc.c:555 +#: ldmisc.c:494 msgid "%P%F: please report this bug\n" msgstr "%P%F: rapportera detta fel\n" -#: ldver.c:39 +#. Output for noisy == 2 is intended to follow the GNU standards. +#: ldver.c:38 #, c-format -msgid "GNU ld version %s (with BFD %s)\n" -msgstr "GNU ld version %s (med BFD %s)\n" +msgid "GNU ld version %s\n" +msgstr "GNU ld version %s\n" + +#: ldver.c:42 +msgid "Copyright 2001 Free Software Foundation, Inc.\n" +msgstr "Copyright 2001 Free Software Foundation, Inc.\n" -#: ldver.c:46 lexsup.c:961 +#: ldver.c:43 +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 "" +"Detta program är fri programvara. Du kan vidaredistribuera det under\n" +"villkoren i GNU General Public License. Detta program har ingen som\n" +"helst garanti.\n" + +#: ldver.c:52 msgid " Supported emulations:\n" msgstr " Emuleringar som stöds:\n" @@ -923,424 +1023,452 @@ msgstr "%8x någonting annat\n" msgid "%F%P: final link failed: %E\n" msgstr "%F%P: avslutande länkning misslyckades: %E\n" -#: lexsup.c:159 lexsup.c:250 +#: lexsup.c:175 lexsup.c:270 msgid "KEYWORD" msgstr "NYCKELORD" -#: lexsup.c:159 +#: lexsup.c:175 msgid "Shared library control for HP/UX compatibility" -msgstr "Styrning av delade bibliotek för kompabilitet med HP/UX" +msgstr "Styrning av delade bibliotek för kompatibilitet med HP/UX" -#: lexsup.c:162 +#: lexsup.c:178 msgid "ARCH" msgstr "ARK" -#: lexsup.c:162 +#: lexsup.c:178 msgid "Set architecture" msgstr "Ställ in arkitektur" -#: lexsup.c:164 lexsup.c:315 +#: lexsup.c:180 lexsup.c:337 msgid "TARGET" msgstr "MÅL" -#: lexsup.c:164 +#: lexsup.c:180 msgid "Specify target for following input files" msgstr "Ange mål för följande indatafiler" -#: lexsup.c:166 lexsup.c:205 lexsup.c:217 lexsup.c:226 lexsup.c:297 lexsup.c:322 lexsup.c:360 +#: lexsup.c:182 lexsup.c:223 lexsup.c:235 lexsup.c:244 lexsup.c:315 lexsup.c:344 lexsup.c:384 msgid "FILE" msgstr "FIL" -#: lexsup.c:166 +#: lexsup.c:182 msgid "Read MRI format linker script" msgstr "Läs länkskript i MRI-format" -#: lexsup.c:168 +#: lexsup.c:184 msgid "Force common symbols to be defined" msgstr "Tvinga gemensamma symboler att vara definierade" -#: lexsup.c:172 lexsup.c:350 lexsup.c:352 lexsup.c:354 +#: lexsup.c:188 lexsup.c:374 lexsup.c:376 lexsup.c:378 msgid "ADDRESS" msgstr "ADRESS" -#: lexsup.c:172 +#: lexsup.c:188 msgid "Set start address" msgstr "Ställ in startadress" -#: lexsup.c:174 +#: lexsup.c:190 msgid "Export all dynamic symbols" msgstr "Exportera alla dynamiska symboler" -#: lexsup.c:176 +#: lexsup.c:192 msgid "Link big-endian objects" msgstr "Länka objekt som är big-endian" -#: lexsup.c:178 +#: lexsup.c:194 msgid "Link little-endian objects" msgstr "Länka objekt som är little-endian" -#: lexsup.c:180 lexsup.c:183 +#: lexsup.c:196 lexsup.c:199 msgid "SHLIB" msgstr "DELBIBL" -#: lexsup.c:180 +#: lexsup.c:196 msgid "Auxiliary filter for shared object symbol table" msgstr "Yttre filter för symboltabell över delade objekt" -#: lexsup.c:183 +#: lexsup.c:199 msgid "Filter for shared object symbol table" msgstr "Filter för symboltabell över delade objekt" -#: lexsup.c:185 +#: lexsup.c:201 msgid "Ignored" msgstr "Ignorerad" -#: lexsup.c:187 +#: lexsup.c:203 msgid "SIZE" msgstr "STORLEK" -#: lexsup.c:187 +#: lexsup.c:203 msgid "Small data size (if no size, same as --shared)" msgstr "Liten datastorlek (om ingen storlek, samma som --shared)" -#: lexsup.c:190 +#: lexsup.c:206 msgid "FILENAME" msgstr "FILNAMN" -#: lexsup.c:190 +#: lexsup.c:206 msgid "Set internal name of shared library" msgstr "Ställ in internt namn på delat bibliotek" -#: lexsup.c:192 +#: lexsup.c:208 +msgid "PROGRAM" +msgstr "PROGRAM" + +#: lexsup.c:208 +msgid "Set PROGRAM as the dynamic linker to use" +msgstr "Ställ in PROGRAM som den dynamiska länkare som ska användas" + +#: lexsup.c:210 msgid "LIBNAME" msgstr "BIBLNAMN" -#: lexsup.c:192 +#: lexsup.c:210 msgid "Search for library LIBNAME" msgstr "Sök efter biblioteket BIBLNAMN" -#: lexsup.c:194 +#: lexsup.c:212 msgid "DIRECTORY" msgstr "KATALOG" -#: lexsup.c:194 +#: lexsup.c:212 msgid "Add DIRECTORY to library search path" msgstr "Lägg till KATALOG till bibliotekssökvägen" -#: lexsup.c:196 +#: lexsup.c:214 msgid "EMULATION" msgstr "EMULERING" -#: lexsup.c:196 +#: lexsup.c:214 msgid "Set emulation" msgstr "Ställ in emulering" -#: lexsup.c:198 +#: lexsup.c:216 msgid "Print map file on standard output" msgstr "Visa tabellfil på standard ut" -#: lexsup.c:200 +#: lexsup.c:218 msgid "Do not page align data" msgstr "Justera inte data efter jämna sidor" -#: lexsup.c:202 +#: lexsup.c:220 msgid "Do not page align data, do not make text readonly" msgstr "Justera inte data efter jämna sidor, gör inte texten endast läsbar" -#: lexsup.c:205 +#: lexsup.c:223 msgid "Set output file name" msgstr "Ställ in utdatafilnamnet" -#: lexsup.c:207 +#: lexsup.c:225 msgid "Optimize output file" msgstr "Optimera utdatafil" -#: lexsup.c:209 +#: lexsup.c:227 msgid "Ignored for SVR4 compatibility" -msgstr "Ignorerad för kompabilitet med SVR4" +msgstr "Ignorerad för kompatibilitet med SVR4" -#: lexsup.c:213 +#: lexsup.c:231 msgid "Generate relocateable output" msgstr "Generera omlokaliseringsbar utdata" -#: lexsup.c:217 +#: lexsup.c:235 msgid "Just link symbols (if directory, same as --rpath)" msgstr "Länka bara symboler (om katalog, samma som --rpath)" -#: lexsup.c:220 +#: lexsup.c:238 msgid "Strip all symbols" msgstr "Ta bort alla symboler" -#: lexsup.c:222 +#: lexsup.c:240 msgid "Strip debugging symbols" msgstr "Ta bort felsökningssymboler" -#: lexsup.c:224 +#: lexsup.c:242 msgid "Trace file opens" msgstr "Spåra filöppningar" -#: lexsup.c:226 +#: lexsup.c:244 msgid "Read linker script" msgstr "Läs länkskript" -#: lexsup.c:228 lexsup.c:242 lexsup.c:283 lexsup.c:295 lexsup.c:344 lexsup.c:363 lexsup.c:380 +#: lexsup.c:246 lexsup.c:262 lexsup.c:301 lexsup.c:313 lexsup.c:368 lexsup.c:387 lexsup.c:407 msgid "SYMBOL" msgstr "SYMBOL" -#: lexsup.c:228 +#: lexsup.c:246 msgid "Start with undefined reference to SYMBOL" msgstr "Börja med odefinierad referens till SYMBOL" -#: lexsup.c:230 -msgid "Don't merge orphan sections with the same name" -msgstr "Slå inte samman föräldralösa sektioner med samma namn" +#: lexsup.c:248 +msgid "[=SECTION]" +msgstr "[=SEKTION]" + +#: lexsup.c:248 +msgid "Don't merge input [SECTION | orphan] sections" +msgstr "Slå inte samman [SEKTION | föräldralösa] sektioner" -#: lexsup.c:232 +#: lexsup.c:250 msgid "Build global constructor/destructor tables" msgstr "Bygg globala konstruktors-/destruktorstabeller" -#: lexsup.c:234 +#: lexsup.c:252 msgid "Print version information" msgstr "Visa versionsinformation" -#: lexsup.c:236 +#: lexsup.c:254 msgid "Print version and emulation information" msgstr "Visa versions- och emuleringsinformation" -#: lexsup.c:238 +#: lexsup.c:256 msgid "Discard all local symbols" msgstr "Kasta alla lokala symboler" -#: lexsup.c:240 -msgid "Discard temporary local symbols" -msgstr "Kasta temporära lokala symboler" +#: lexsup.c:258 +msgid "Discard temporary local symbols (default)" +msgstr "Kasta temporära lokala symboler (standard)" -#: lexsup.c:242 +#: lexsup.c:260 +msgid "Don't discard any local symbols" +msgstr "Kasta inte några lokala symboler" + +#: lexsup.c:262 msgid "Trace mentions of SYMBOL" msgstr "Spåra omnämningar av SYMBOL" -#: lexsup.c:244 lexsup.c:324 lexsup.c:326 +#: lexsup.c:264 lexsup.c:346 lexsup.c:348 msgid "PATH" msgstr "SÖKVÄG" -#: lexsup.c:244 +#: lexsup.c:264 msgid "Default search path for Solaris compatibility" -msgstr "Standardsökväg för Solaris-kompabilitet" +msgstr "Standardsökväg för Solaris-kompatibilitet" -#: lexsup.c:246 +#: lexsup.c:266 msgid "Start a group" msgstr "Starta en grupp" -#: lexsup.c:248 +#: lexsup.c:268 msgid "End a group" msgstr "Sluta en grupp" -#: lexsup.c:250 +#: lexsup.c:270 msgid "Ignored for SunOS compatibility" -msgstr "Ignorerad för SunOS-kompabilitet" +msgstr "Ignorerad för SunOS-kompatibilitet" -#: lexsup.c:252 +#: lexsup.c:272 msgid "Link against shared libraries" msgstr "Länka mot delade bibliotek" -#: lexsup.c:258 +#: lexsup.c:278 msgid "Do not link against shared libraries" msgstr "Länka inte mot delade bibliotek" -#: lexsup.c:266 +#: lexsup.c:286 msgid "Bind global references locally" msgstr "Bind globala referenser lokalt" -#: lexsup.c:268 +#: lexsup.c:288 msgid "Check section addresses for overlaps (default)" msgstr "Kontrollera sektionsadresser för överlappningar (standard)" -#: lexsup.c:270 +#: lexsup.c:290 msgid "Do not check section addresses for overlaps" msgstr "Kontrollera inte sektionsadresser för överlappningar" -#: lexsup.c:273 +#: lexsup.c:293 msgid "Output cross reference table" msgstr "Skapa korsreferenstabell" -#: lexsup.c:275 +#: lexsup.c:295 msgid "SYMBOL=EXPRESSION" msgstr "SYMBOL=UTTRYCK" -#: lexsup.c:275 +#: lexsup.c:295 msgid "Define a symbol" msgstr "Definiera en symbol" -#: lexsup.c:277 +#: lexsup.c:297 msgid "[=STYLE]" msgstr "[=STIL]" -#: lexsup.c:277 +#: lexsup.c:297 msgid "Demangle symbol names [using STYLE]" msgstr "Avkoda symbolnamn [använd STIL]" -#: lexsup.c:279 -msgid "PROGRAM" -msgstr "PROGRAM" - -#: lexsup.c:279 -msgid "Set the dynamic linker to use" -msgstr "Ange den dynamiska länkare som ska användas" - -#: lexsup.c:281 +#: lexsup.c:299 msgid "Generate embedded relocs" msgstr "Generera inbäddade omlokaliseringar" -#: lexsup.c:283 +#: lexsup.c:301 msgid "Call SYMBOL at unload-time" msgstr "Anropa SYMBOL vid urladdning" -#: lexsup.c:285 +#: lexsup.c:303 msgid "Force generation of file with .exe suffix" msgstr "Tvinga generering av fil med ändelsen .exe" -#: lexsup.c:287 +#: lexsup.c:305 msgid "Remove unused sections (on some targets)" msgstr "Ta bort oanvända sektioner (på vissa mål)" -#: lexsup.c:290 +#: lexsup.c:308 msgid "Don't remove unused sections (default)" msgstr "Ta inte bort oanvända sektioner (standard)" -#: lexsup.c:293 +#: lexsup.c:311 msgid "Print option help" msgstr "Visa hjälp om flaggor" -#: lexsup.c:295 +#: lexsup.c:313 msgid "Call SYMBOL at load-time" msgstr "Anropa SYMBOL vid inläsning" -#: lexsup.c:297 +#: lexsup.c:315 msgid "Write a map file" msgstr "Skriv en tabellfil" -#: lexsup.c:299 +#: lexsup.c:317 +msgid "Do not define Common storage" +msgstr "Definiera inte gemensam lagring" + +#: lexsup.c:319 msgid "Do not demangle symbol names" msgstr "Avkoda inte symbolnamn" -#: lexsup.c:301 +#: lexsup.c:321 msgid "Use less memory and more disk I/O" msgstr "Använd mindre minne och mer disk-I/O" -#: lexsup.c:303 +#: lexsup.c:323 msgid "Allow no undefined symbols" msgstr "Tillåt inga odefinierade symboler" -#: lexsup.c:305 +#: lexsup.c:325 msgid "Allow undefined symbols in shared objects" msgstr "Tillåt odefinierade symboler i delade objekt" # src/prefs.c:170 -#: lexsup.c:307 +#: lexsup.c:327 msgid "Don't warn about mismatched input files" msgstr "Varna inte om opassande indatafiler" -#: lexsup.c:309 +#: lexsup.c:329 msgid "Turn off --whole-archive" msgstr "Slå av ---whole-archive" -#: lexsup.c:311 +#: lexsup.c:331 msgid "Create an output file even if errors occur" msgstr "Skapa en utdatafil även om fel förekommer" -#: lexsup.c:315 +#: lexsup.c:335 +msgid "" +"Only use library directories specified on\n" +"\t\t\t\tthe command line" +msgstr "" +"Använd endast bibliotekskataloger som anges\n" +"\t\t\t\tpå kommandoraden" + +#: lexsup.c:337 msgid "Specify target of output file" msgstr "Ange mål för utdatafil" -#: lexsup.c:317 +#: lexsup.c:339 msgid "Ignored for Linux compatibility" -msgstr "Ignorerad för kompabilitet med Linux" +msgstr "Ignorerad för kompatibilitet med Linux" -#: lexsup.c:319 +#: lexsup.c:341 msgid "Relax branches on certain targets" msgstr "Slappna av greningar på vissa mål" -#: lexsup.c:322 +#: lexsup.c:344 msgid "Keep only symbols listed in FILE" msgstr "Behåll endast symboler angivna i FIL" -#: lexsup.c:324 +#: lexsup.c:346 msgid "Set runtime shared library search path" msgstr "Ställ in körtidssökväg för delade bibliotek" -#: lexsup.c:326 +#: lexsup.c:348 msgid "Set link time shared library search path" msgstr "Ställ in länkningstidssökväg för delade bibliotek" -#: lexsup.c:328 +#: lexsup.c:350 msgid "Create a shared library" msgstr "Skapa ett delat bibliotek" -#: lexsup.c:332 +#: lexsup.c:354 msgid "Sort common symbols by size" msgstr "Sortera gemensamma symboler efter storlek" -#: lexsup.c:336 +#: lexsup.c:358 +msgid "COUNT" +msgstr "ANTAL" + +#: lexsup.c:358 +msgid "How many tags to reserve in .dynamic section" +msgstr "Hur många taggar som ska reserveras i .dynamic-sektion" + +#: lexsup.c:360 msgid "[=SIZE]" msgstr "[=STORLEK]" -#: lexsup.c:336 +#: lexsup.c:360 msgid "Split output sections every SIZE octets" msgstr "Dela utdatasektioner var STORLEK oktett" -#: lexsup.c:338 +#: lexsup.c:362 msgid "[=COUNT]" msgstr "[=ANTAL]" -#: lexsup.c:338 +#: lexsup.c:362 msgid "Split output sections every COUNT relocs" msgstr "Dela utdatasektioner var ANTAL omlokalisering" -#: lexsup.c:340 +#: lexsup.c:364 msgid "Print memory usage statistics" msgstr "Visa statistik över minnesanvändning" -#: lexsup.c:342 +#: lexsup.c:366 msgid "Display target specific options" msgstr "Visa målspecifika flaggor" -#: lexsup.c:344 +#: lexsup.c:368 msgid "Do task level linking" msgstr "Utför länkning på uppgiftsnivå" -#: lexsup.c:346 +#: lexsup.c:370 msgid "Use same format as native linker" msgstr "Använd samma format som inhemska länkaren" -#: lexsup.c:348 +#: lexsup.c:372 msgid "SECTION=ADDRESS" msgstr "SEKTION=ADRESS" -#: lexsup.c:348 +#: lexsup.c:372 msgid "Set address of named section" msgstr "Ställ in adress på namngiven sektion" -#: lexsup.c:350 +#: lexsup.c:374 msgid "Set address of .bss section" msgstr "Ställ in adress på .bss-sektion" -#: lexsup.c:352 +#: lexsup.c:376 msgid "Set address of .data section" msgstr "Ställ in adress på .data-sektion" -#: lexsup.c:354 +#: lexsup.c:378 msgid "Set address of .text section" msgstr "Ställ in adress på .text-sektion" -#: lexsup.c:356 +#: lexsup.c:380 msgid "Output lots of information during link" msgstr "Visa mycket information under länkning" -#: lexsup.c:360 +#: lexsup.c:384 msgid "Read version information script" msgstr "Läs skript med versionsinformation" -#: lexsup.c:363 +#: lexsup.c:387 msgid "" "Take export symbols list from .exports, using\n" "\t\t\t\tSYMBOL as the version." @@ -1348,39 +1476,43 @@ msgstr "" "Plocka lista med exportsymboler från .exports och\n" "\t\t\t\tanvänd SYMBOL som version." -#: lexsup.c:366 +#: lexsup.c:390 msgid "Warn about duplicate common symbols" msgstr "Varna för dubbla gemensamma symboler" -#: lexsup.c:368 +#: lexsup.c:392 msgid "Warn if global constructors/destructors are seen" msgstr "Varna om globala konstruktorer/destruktorer hittas" -#: lexsup.c:371 +#: lexsup.c:395 msgid "Warn if the multiple GP values are used" msgstr "Varna om flera GP-värden används" -#: lexsup.c:373 +#: lexsup.c:397 msgid "Warn only once per undefined symbol" msgstr "Varna endast en gång per odefinierad symbol" -#: lexsup.c:375 +#: lexsup.c:399 msgid "Warn if start of section changes due to alignment" msgstr "Varna om början på sektionen ändras på grund av justering" -#: lexsup.c:378 +#: lexsup.c:402 +msgid "Treat warnings as errors" +msgstr "Behandla varningar som fel" + +#: lexsup.c:405 msgid "Include all objects from following archives" msgstr "Inkludera alla objekt från följande arkiv" -#: lexsup.c:380 +#: lexsup.c:407 msgid "Use wrapper functions for SYMBOL" msgstr "Använd inkapslingsfunktioner för SYMBOL" -#: lexsup.c:382 +#: lexsup.c:409 msgid "[=WORDS]" msgstr "[=ORD]" -#: lexsup.c:382 +#: lexsup.c:409 msgid "" "Modify problematic branches in last WORDS (1-10,\n" "\t\t\t\tdefault 5) words of a page" @@ -1388,165 +1520,185 @@ msgstr "" "Ändra problematiska greningar i sista ORD (1-10,\n" "\t\t\t\tstandardvärde 5) orden på en sida" -#: lexsup.c:532 -#, c-format -msgid "%s: use the --help option for usage information\n" -msgstr "%s: använd flaggan --help för användningsinformation\n" +#: lexsup.c:575 +msgid "%P: unrecognized option '%s'\n" +msgstr "%P: okänd flagga \"%s\"\n" + +#: lexsup.c:577 +msgid "%P%F: use the --help option for usage information\n" +msgstr "%P%F: använd flaggan --help för användningsinformation\n" -#: lexsup.c:552 +#: lexsup.c:596 msgid "%P%F: unrecognized -a option `%s'\n" msgstr "%P%F: okänd -a-flagga \"%s\"\n" -#: lexsup.c:565 +#: lexsup.c:609 msgid "%P%F: unrecognized -assert option `%s'\n" msgstr "%P%F: okänd -assert-flagga \"%s\"\n" -#: lexsup.c:608 +#: lexsup.c:652 msgid "%F%P: unknown demangling style `%s'" msgstr "%F%P: okänd avkodningsstil \"%s\"" -#: lexsup.c:667 +#: lexsup.c:712 msgid "%P%F: invalid number `%s'\n" msgstr "%P%F: ogiltigt tal \"%s\"\n" -#: lexsup.c:845 +#. This can happen if the user put "-rpath,a" on the command +#. line. (Or something similar. The comma is important). +#. Getopt becomes confused and thinks that this is a -r option +#. but it cannot parse the text after the -r so it refuses to +#. increment the optind counter. Detect this case and issue +#. an error message here. We cannot just make this a warning, +#. increment optind, and continue because getopt is too confused +#. and will seg-fault the next time around. +#: lexsup.c:810 +msgid "%P%F: bad -rpath option\n" +msgstr "%P%F: okänd -rpath-flagga\n" + +#: lexsup.c:908 msgid "%P%F: -shared not supported\n" msgstr "%P%F: -shared stöds inte\n" -#: lexsup.c:879 -#, c-format -msgid "%s: Invalid argument to option \"--section-start\"\n" -msgstr "%s: Ogiltigt argument till flaggan \"--section-start\"\n" +#: lexsup.c:940 +msgid "%P%F: invalid argument to option \"--section-start\"\n" +msgstr "%P%F: ogiltigt argument till flaggan \"--section-start\"\n" + +#: lexsup.c:946 +msgid "%P%F: missing argument(s) to option \"--section-start\"\n" +msgstr "%P%F: argument saknas till flaggan \"--section-start\"\n" + +#: lexsup.c:1095 +msgid "%P%F: may not nest groups (--help for usage)\n" +msgstr "%P%F: får inte nästla grupper (--help för användning)\n" + +#: lexsup.c:1102 +msgid "%P%F: group ended before it began (--help for usage)\n" +msgstr "%P%F: gruppen slutade innan den började (--help för användning)\n" + +#: lexsup.c:1116 +msgid "%P%F: invalid argument to option \"mpc860c0\"\n" +msgstr "%P%F: ogiltigt argument till flaggan \"mpc860c0\"\n" -#: lexsup.c:890 -#, c-format -msgid "%s: Missing argument(s) to option \"--section-start\"\n" -msgstr "%s: Argument saknas till flaggan \"--section-start\"\n" - -#: lexsup.c:954 -msgid "Copyright 2000 Free Software Foundation, Inc.\n" -msgstr "Copyright 2000 Free Software Foundation, Inc.\n" - -#: lexsup.c:955 -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 "" -"Detta program är fri programvara. Du kan vidaredistribuera det under\n" -"villkoren i GNU General Public License. Detta program har ingen som\n" -"helst garanti.\n" - -#: lexsup.c:1047 -#, c-format -msgid "%s: may not nest groups (--help for usage)\n" -msgstr "%s: får inte nästla grupper (--help för användning)\n" - -#: lexsup.c:1058 -#, c-format -msgid "%s: group ended before it began (--help for usage)\n" -msgstr "%s: gruppen slutade innan den började (--help för användning)\n" - -#: lexsup.c:1075 -#, c-format -msgid "%s: Invalid argument to option \"mpc860c0\"\n" -msgstr "%s: Ogiltigt argument till flaggan \"mpc860c0\"\n" - -#: lexsup.c:1131 +#: lexsup.c:1171 msgid "%P%F: invalid hex number `%s'\n" msgstr "%P%F: ogiltigt hexadecimalt tal \"%s\"\n" -#: lexsup.c:1143 +#: lexsup.c:1183 #, c-format msgid "Usage: %s [options] file...\n" msgstr "Användning: %s [flaggor] fil...\n" -#: lexsup.c:1145 +#: lexsup.c:1185 msgid "Options:\n" msgstr "Alternativ:\n" #. Note: Various tools (such as libtool) depend upon the #. format of the listings below - do not change them. -#: lexsup.c:1224 +#: lexsup.c:1268 #, c-format msgid "%s: supported targets:" msgstr "%s: mål som stöds:" -#: lexsup.c:1232 +#: lexsup.c:1276 #, c-format msgid "%s: supported emulations: " msgstr "%s: emuleringar som stöds: " -#: lexsup.c:1237 +#: lexsup.c:1281 #, c-format msgid "%s: emulation specific options:\n" msgstr "%s: emuleringsspecifika flaggor:\n" -#: lexsup.c:1241 +#: lexsup.c:1285 #, c-format msgid "Report bugs to %s\n" msgstr "" "Rapportera fel till %s\n" "Rapportera fel i översättningen till sv@li.org\n" -#: mri.c:321 +#: mri.c:334 msgid "%P%F: unknown format type %s\n" msgstr "%P%F: okänd formattyp %s\n" -#: pe-dll.c:146 +#: pe-dll.c:316 #, c-format msgid "%XUnsupported PEI architecture: %s\n" msgstr "%XPEI-arkitekturen stöds inte: %s\n" -#: pe-dll.c:387 +#: pe-dll.c:650 #, c-format msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n" msgstr "%XFel, dubbel EXPORT med ordinaler: %s (%d gentemot %d)\n" -#: pe-dll.c:394 +#: pe-dll.c:657 #, c-format msgid "Warning, duplicate EXPORT: %s\n" msgstr "Varning, dubbel EXPORT: %s\n" -#: pe-dll.c:456 +#: pe-dll.c:721 #, c-format msgid "%XCannot export %s: symbol not defined\n" msgstr "%XKan inte exportera %s: symbolen är inte definierad\n" -#: pe-dll.c:462 +#: pe-dll.c:727 #, c-format msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n" msgstr "%XKan inte exportera %s: symbolen är av fel typ (%d gentemot %d)\n" -#: pe-dll.c:469 +#: pe-dll.c:734 #, c-format msgid "%XCannot export %s: symbol not found\n" msgstr "%XKan inte exportera %s: symbolen hittades inte\n" -#: pe-dll.c:594 +#: pe-dll.c:849 #, c-format msgid "%XError, ordinal used twice: %d (%s vs %s)\n" msgstr "%XFel, ordinalen användes två gånger: %d (%s gentemot %s)\n" -#: pe-dll.c:844 +#: pe-dll.c:1160 #, c-format msgid "%XError: %d-bit reloc in dll\n" msgstr "%XFel: %d-bitars omlokalisering i dll\n" -#: pe-dll.c:970 +#: pe-dll.c:1295 #, c-format msgid "%s: Can't open output def file %s\n" msgstr "%s: Kan inte öppna utdatadefinitionsfilen %s\n" -#: pe-dll.c:1092 +#: pe-dll.c:1438 msgid "; no contents available\n" msgstr "; inget innehåll är tillgängligt\n" -#: pe-dll.c:1580 +#: pe-dll.c:2107 #, c-format msgid "%XCan't open .lib file: %s\n" msgstr "%XKan inte öppna .lib-filen: %s\n" -#: pe-dll.c:1585 +#: pe-dll.c:2112 #, c-format msgid "Creating library file: %s\n" msgstr "Skapar biblioteksfil: %s\n" + +#~ msgid " create __imp_ as well.\n" +#~ msgstr " skapa även __imp_.\n" + +#~ msgid " unless user specifies one\n" +#~ msgstr " såvida användaren inte anger en\n" + +#~ msgid " --dll-search-prefix= When linking dynamically to a dll witout an\n" +#~ msgstr " --dll-search-prefix= Använd hellre .dll\n" + +#~ msgid " importlib, use .dll \n" +#~ msgstr " än lib.dll vid dynamisk\n" + +#~ msgid " in preference to lib.dll \n" +#~ msgstr "" +#~ " länkning till en dll utan ett\n" +#~ " importbibliotek.\n" + +#~ msgid "Archive member included" +#~ msgstr "Inkluderade arkivmedlem" + +#~ msgid "Don't merge orphan sections with the same name" +#~ msgstr "Slå inte samman föräldralösa sektioner med samma namn" diff -uprN binutils-2.12.90.0.7/ld/scripttempl/avr.sc binutils-2.12.90.0.9/ld/scripttempl/avr.sc --- binutils-2.12.90.0.7/ld/scripttempl/avr.sc Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/scripttempl/avr.sc Thu May 23 15:10:11 2002 @@ -0,0 +1,149 @@ +cat < text} + + .data ${RELOCATING-0} : ${RELOCATING+AT (ADDR (.text) + SIZEOF (.text))} + { + ${RELOCATING+ PROVIDE (__data_start = .) ; } + *(.data) + *(.gnu.linkonce.d*) + ${RELOCATING+. = ALIGN(2);} + ${RELOCATING+ _edata = . ; } + } ${RELOCATING+ > data} + + .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} : + { + ${RELOCATING+ PROVIDE (__bss_start = .) ; } + *(.bss) + *(COMMON) + ${RELOCATING+ PROVIDE (__bss_end = .) ; } + ${RELOCATING+ _end = . ; } + } ${RELOCATING+ > data} + + .eeprom ${RELOCATING-0}: + ${RELOCATING+AT (ADDR (.text) + SIZEOF (.text) + SIZEOF (.data))} + { + *(.eeprom*) + ${RELOCATING+ __eeprom_end = . ; } + } ${RELOCATING+ > eeprom} + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} +EOF + diff -uprN binutils-2.12.90.0.7/ld/scripttempl/elf.sc binutils-2.12.90.0.9/ld/scripttempl/elf.sc --- binutils-2.12.90.0.7/ld/scripttempl/elf.sc Thu Mar 7 11:52:40 2002 +++ binutils-2.12.90.0.9/ld/scripttempl/elf.sc Thu May 23 15:10:11 2002 @@ -60,6 +60,8 @@ # .sdata2 .gnu.linkonce.s2.foo # .sbss2 .gnu.linkonce.sb2.foo # .debug_info .gnu.linkonce.wi.foo +# .tdata .gnu.linkonce.td.foo +# .tbss .gnu.linkonce.tb.foo # # Each of these can also have corresponding .rel.* and .rela.* sections. @@ -208,6 +210,10 @@ eval $COMBRELOCCAT < + + * lib/ld-lib.exp (run_dump_test): Add -L$srcdir/$subdir. + (is_elf_format): New, extracted from... + * ld-scripts/weak.exp: ...here. + * ld-scripts/overlay-size.exp: New test. + * ld-scripts/overlay-size.[tsd], + * ld-scripts/overlay-size-map.d: New files for it. + +2002-05-02 Richard Sandiford + + * ld-scripts/map-address.exp: Quote conditions. + +2002-04-30 Richard Sandiford + + * ld-scripts/map-address.exp: New test. + * ld-scripts/map-address.[td]: New files for it. + 2002-04-19 Richard Henderson * ld-elfvsb/elfvsb.exp: Mirror ia64 non-pic xfails for alpha. diff -uprN binutils-2.12.90.0.7/ld/testsuite/ld-scripts/map-address.d binutils-2.12.90.0.9/ld/testsuite/ld-scripts/map-address.d --- binutils-2.12.90.0.7/ld/testsuite/ld-scripts/map-address.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/testsuite/ld-scripts/map-address.d Thu May 23 15:10:11 2002 @@ -0,0 +1,10 @@ +#... +Linker script and memory map + + *0x0*010001 *\. = 0x10001 + *0x0*010001 *foo = \. + *0x0*010201 *\. = \(\. \+ 0x200\) + *0x0*010201 *bar = \. + *0x0*010204 *\. = ALIGN \(0x4\) + *0x0*010204 *frob = \. +#pass diff -uprN binutils-2.12.90.0.7/ld/testsuite/ld-scripts/map-address.exp binutils-2.12.90.0.9/ld/testsuite/ld-scripts/map-address.exp --- binutils-2.12.90.0.7/ld/testsuite/ld-scripts/map-address.exp Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/testsuite/ld-scripts/map-address.exp Thu May 23 15:10:11 2002 @@ -0,0 +1,37 @@ +# Test address printed by --print-map +# Copyright 2002 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 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. + +set testname "map addresses" + +# The source file doesn't matter. Pinch one from the sizeof test. +if {![ld_assemble $as $srcdir/$subdir/sizeof.s tmpdir/map-address.o]} { + unresolved $testname + return +} + +if {![ld_simple_link $ld tmpdir/map-address \ + "-T $srcdir/$subdir/map-address.t \ + tmpdir/map-address.o \ + -Map tmpdir/map-address.map"]} { + fail $testname +} elseif {[regexp_diff \ + "tmpdir/map-address.map" \ + "$srcdir/$subdir/map-address.d"]} { + fail $testname +} else { + pass $testname +} diff -uprN binutils-2.12.90.0.7/ld/testsuite/ld-scripts/map-address.t binutils-2.12.90.0.9/ld/testsuite/ld-scripts/map-address.t --- binutils-2.12.90.0.7/ld/testsuite/ld-scripts/map-address.t Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/testsuite/ld-scripts/map-address.t Thu May 23 15:10:11 2002 @@ -0,0 +1,9 @@ +SECTIONS +{ + . = 0x10001; + foo = .; + . += 0x200; + bar = .; + . = ALIGN (4); + frob = .; +} diff -uprN binutils-2.12.90.0.7/ld/testsuite/ld-scripts/overlay-size-map.d binutils-2.12.90.0.9/ld/testsuite/ld-scripts/overlay-size-map.d --- binutils-2.12.90.0.7/ld/testsuite/ld-scripts/overlay-size-map.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/testsuite/ld-scripts/overlay-size-map.d Thu May 23 15:10:11 2002 @@ -0,0 +1,23 @@ +#... +\.bss1 *0x0*20000 *0x10 +#... +\.bss2 *0x0*20000 *0x30 load address 0x0*20010 +#... +\.bss3 *0x0*20000 *0x20 load address 0x0*20040 +#... +\.mtext *0x0*10000 *0x20 load address 0x0*30000 +#... +\.mbss *0x0*20030 *0x230 load address 0x0*20060 +#... +\.text1 *0x0*10020 *0x80 load address 0x0*30020 +#... +\.text2 *0x0*10020 *0x40 load address 0x0*300a0 +#... +\.text3 *0x0*10020 *0x20 load address 0x0*300e0 +#... +\.data1 *0x0*20260 *0x30 load address 0x0*30100 +#... +\.data2 *0x0*20260 *0x40 load address 0x0*30130 +#... +\.data3 *0x0*20260 *0x50 load address 0x0*30170 +#pass diff -uprN binutils-2.12.90.0.7/ld/testsuite/ld-scripts/overlay-size.d binutils-2.12.90.0.9/ld/testsuite/ld-scripts/overlay-size.d --- binutils-2.12.90.0.7/ld/testsuite/ld-scripts/overlay-size.d Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/testsuite/ld-scripts/overlay-size.d Thu May 23 15:10:11 2002 @@ -0,0 +1,29 @@ +# ld: -T overlay-size.t -Map tmpdir/overlay-size.map +# name: overlay size +# objdump: --headers +# +# The .bss[123] LMAs are deliberately blanked out. We can't +# reliably map overlaid sections to segments. +#... + 0 \.bss1 +0+010 +0+20000 .* +#... + 1 \.bss2 +0+030 +0+20000 .* +#... + 2 \.bss3 +0+020 +0+20000 .* +#... + 3 \.mtext +0+020 +0+10000 +0+30000 .* +#... + 4 \.mbss +0+230 +0+20030 +0+20060 .* +#... + 5 \.text1 +0+080 +0+10020 +0+30020 .* +#... + 6 \.text2 +0+040 +0+10020 +0+300a0 .* +#... + 7 \.text3 +0+020 +0+10020 +0+300e0 .* +#... + 8 \.data1 +0+030 +0+20260 +0+30100 .* +#... + 9 \.data2 +0+040 +0+20260 +0+30130 .* +#... + 10 \.data3 +0+050 +0+20260 +0+30170 .* +#pass diff -uprN binutils-2.12.90.0.7/ld/testsuite/ld-scripts/overlay-size.exp binutils-2.12.90.0.9/ld/testsuite/ld-scripts/overlay-size.exp --- binutils-2.12.90.0.7/ld/testsuite/ld-scripts/overlay-size.exp Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/testsuite/ld-scripts/overlay-size.exp Thu May 23 15:10:11 2002 @@ -0,0 +1,31 @@ +# Test the OVERLAY statement. +# Copyright 2002 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 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. + +if ![is_elf_format] { + return +} + +run_dump_test overlay-size + +set testname "overlay size (map check)" + +if [regexp_diff "tmpdir/overlay-size.map" \ + "$srcdir/$subdir/overlay-size-map.d"] { + fail $testname +} else { + pass $testname +} diff -uprN binutils-2.12.90.0.7/ld/testsuite/ld-scripts/overlay-size.s binutils-2.12.90.0.9/ld/testsuite/ld-scripts/overlay-size.s --- binutils-2.12.90.0.7/ld/testsuite/ld-scripts/overlay-size.s Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/testsuite/ld-scripts/overlay-size.s Thu May 23 15:10:11 2002 @@ -0,0 +1,25 @@ + .section .bss1, "aw", "nobits" + .space 0x10 + .section .bss2, "aw", "nobits" + .space 0x30 + .section .bss3, "aw", "nobits" + .space 0x20 + + .section .text1, "ax", "progbits" + .space 0x80 + .section .text2, "ax", "progbits" + .space 0x40 + .section .text3, "ax", "progbits" + .space 0x20 + + .section .data1, "aw", "progbits" + .space 0x30 + .section .data2, "aw", "progbits" + .space 0x40 + .section .data3, "aw", "progbits" + .space 0x50 + + .section .mtext, "ax", "progbits" + .space 0x20 + .section .mbss, "aw", "nobits" + .space 0x30 diff -uprN binutils-2.12.90.0.7/ld/testsuite/ld-scripts/overlay-size.t binutils-2.12.90.0.9/ld/testsuite/ld-scripts/overlay-size.t --- binutils-2.12.90.0.7/ld/testsuite/ld-scripts/overlay-size.t Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/ld/testsuite/ld-scripts/overlay-size.t Thu May 23 15:10:11 2002 @@ -0,0 +1,57 @@ +MEMORY +{ + TEXTMEM (ARX) : ORIGIN = 0x10000, LENGTH = 32K + DATAMEM (AW) : ORIGIN = 0x20000, LENGTH = 32K + LOADMEM (AW) : ORIGIN = 0x30000, LENGTH = 32K +} + +/* Map should be: + + SIZE VMA LMA + .bss1 10 20000 20000 + .bss2 30 20000 20010 + .bss3 20 20000 20040 + .mbss 230 20030 20060 + + .mtext 20 10000 30000 + .text1 80 10020 30020 + .text2 40 10020 300a0 + .text3 20 10020 300e0 + + .data1 30 20260 30100 + .data2 40 20260 30130 + .data3 50 20260 30170 */ + +SECTIONS +{ + OVERLAY : + { + .bss1 { *(.bss1) } + .bss2 { *(.bss2) } + .bss3 { *(.bss3) } + } > DATAMEM + + .mtext : { *(.mtext) } > TEXTMEM AT > LOADMEM + + .mbss : AT (__load_stop_bss3) + { + *(.mbss) + . += 0x200; + } > DATAMEM + + OVERLAY : + { + .text1 { *(.text1) } + .text2 { *(.text2) } + .text3 { *(.text3) } + } > TEXTMEM AT > LOADMEM + + OVERLAY : + { + .data1 { *(.data1) } + .data2 { *(.data2) } + .data3 { *(.data3) } + } > DATAMEM AT > LOADMEM + + . = 0x8000; +} diff -uprN binutils-2.12.90.0.7/ld/testsuite/ld-scripts/weak.exp binutils-2.12.90.0.9/ld/testsuite/ld-scripts/weak.exp --- binutils-2.12.90.0.7/ld/testsuite/ld-scripts/weak.exp Thu Mar 15 14:57:29 2001 +++ binutils-2.12.90.0.9/ld/testsuite/ld-scripts/weak.exp Thu May 23 15:10:11 2002 @@ -21,22 +21,10 @@ set testname "weak symbols" # This test only works for ELF targets. It ought to work for some # a.out targets, but it doesn't. - -if { ![istarget *-*-sysv4*] \ - && ![istarget *-*-unixware*] \ - && ![istarget *-*-elf*] \ - && ![istarget *-*-eabi*] \ - && ![istarget *-*-linux*] \ - && ![istarget *-*-irix5*] \ - && ![istarget *-*-irix6*] \ - && ![istarget *-*-solaris2*] } then { +if ![is_elf_format] { return } -if { [istarget *-*-linux*aout*] \ - || [istarget *-*-linux*oldld*] } { - return -} if {! [ld_assemble $as $srcdir/$subdir/weak1.s tmpdir/weak1.o] || ! [ld_assemble $as $srcdir/$subdir/weak2.s tmpdir/weak2.o]} then { diff -uprN binutils-2.12.90.0.7/ld/testsuite/lib/ld-lib.exp binutils-2.12.90.0.9/ld/testsuite/lib/ld-lib.exp --- binutils-2.12.90.0.7/ld/testsuite/lib/ld-lib.exp Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/ld/testsuite/lib/ld-lib.exp Thu May 23 15:10:11 2002 @@ -323,6 +323,29 @@ proc default_ld_nm { nm nmflags object } } # +# is_elf_format +# true if the object format is known to be ELF +# +proc is_elf_format {} { + if { ![istarget *-*-sysv4*] \ + && ![istarget *-*-unixware*] \ + && ![istarget *-*-elf*] \ + && ![istarget *-*-eabi*] \ + && ![istarget *-*-linux*] \ + && ![istarget *-*-irix5*] \ + && ![istarget *-*-irix6*] \ + && ![istarget *-*-solaris2*] } { + return 0 + } + + if { [istarget *-*-linux*aout*] \ + || [istarget *-*-linux*oldld*] } { + return 0 + } + return 1 +} + +# # simple_diff # compares two files line-by-line # returns differences if exist @@ -685,7 +708,11 @@ proc run_dump_test { name } { # Perhaps link the file(s). if { $run_ld } { set objfile "tmpdir/dump" - set cmd "$LD $LDFLAGS $opts(ld) -o $objfile $objfiles" + + # Add -L$srcdir/$subdir so that the linker command can use + # linker scripts in the source directory. + set cmd "$LD $LDFLAGS -L$srcdir/$subdir \ + $opts(ld) -o $objfile $objfiles" send_log "$cmd\n" set cmdret [catch "exec $cmd" comp_output] diff -uprN binutils-2.12.90.0.7/libiberty/ChangeLog binutils-2.12.90.0.9/libiberty/ChangeLog --- binutils-2.12.90.0.7/libiberty/ChangeLog Sun Apr 21 01:09:27 2002 +++ binutils-2.12.90.0.9/libiberty/ChangeLog Thu May 23 15:10:11 2002 @@ -1,3 +1,20 @@ +2002-05-13 Andreas Schwab + + * config.table: Use mh-x86pic also for x86-64. + +2002-05-08 Alexandre Oliva + + * configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at + script entry, and set LD to it when configuring multilibs. + * configure: Rebuilt. + +2002-05-07 Mark Mitchell + + * configure.in (AC_TYPE_PID_T): Use it. + * configure: Regenerated. + * getruntime.c: Include . + * waitpid.c: Likewise. Use pid_t, not int, as the type of "pid". + 2002-04-09 Richard Henderson * hashtab.c (higher_prime_number): Use 7 as minimum. diff -uprN binutils-2.12.90.0.7/libiberty/config.table binutils-2.12.90.0.9/libiberty/config.table --- binutils-2.12.90.0.7/libiberty/config.table Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/libiberty/config.table Thu May 23 15:10:11 2002 @@ -34,7 +34,8 @@ if [ "${shared}" = "yes" ]; then alpha*-*-linux*) frag=mh-elfalphapic ;; arm*-*-*) frag=mh-armpic ;; hppa*-*-*) frag=mh-papic ;; - i[3456]86-*-*) frag=mh-x86pic ;; + i[3456]86-*-* | x86_64-*-*) + frag=mh-x86pic ;; powerpc*-*-aix*) ;; powerpc*-*-*) frag=mh-ppcpic ;; sparc*-*-*) frag=mh-sparcpic ;; diff -uprN binutils-2.12.90.0.7/libiberty/configure binutils-2.12.90.0.9/libiberty/configure --- binutils-2.12.90.0.7/libiberty/configure Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/libiberty/configure Thu May 23 15:10:11 2002 @@ -536,6 +536,12 @@ fi +# 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. We don't use libtool yet, but some day we might, so... +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" @@ -599,7 +605,7 @@ ac_configure=$ac_aux_dir/configure # Thi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:603: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:609: 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" @@ -624,7 +630,7 @@ fi # Extract the first word of "makeinfo", so it can be a program name with args. set dummy makeinfo; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:628: checking for $ac_word" >&5 +echo "configure:634: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -670,7 +676,7 @@ fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:674: checking for $ac_word" >&5 +echo "configure:680: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -710,7 +716,7 @@ else { echo "configure: error: can not r fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:714: checking host system type" >&5 +echo "configure:720: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -733,7 +739,7 @@ echo "$ac_t""$host" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:737: checking build system type" >&5 +echo "configure:743: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -759,7 +765,7 @@ fi # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:763: checking for $ac_word" >&5 +echo "configure:769: 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 @@ -791,7 +797,7 @@ fi # 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:795: checking for $ac_word" >&5 +echo "configure:801: 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 @@ -823,7 +829,7 @@ 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:827: checking for $ac_word" >&5 +echo "configure:833: 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 @@ -860,7 +866,7 @@ fi # 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:864: checking for $ac_word" >&5 +echo "configure:870: 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 @@ -890,7 +896,7 @@ 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:894: checking for $ac_word" >&5 +echo "configure:900: 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 @@ -939,7 +945,7 @@ fi fi echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:943: checking whether we are using GNU C" >&5 +echo "configure:949: 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 @@ -948,7 +954,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:952: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:958: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -964,7 +970,7 @@ if test $ac_cv_prog_gcc = yes; then ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:968: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:974: 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 @@ -995,7 +1001,7 @@ fi echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 -echo "configure:999: checking for POSIXized ISC" >&5 +echo "configure:1005: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then @@ -1016,12 +1022,12 @@ else fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:1020: checking for working const" >&5 +echo "configure:1026: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+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:1080: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -1091,21 +1097,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:1095: checking for inline" >&5 +echo "configure:1101: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -1148,7 +1154,7 @@ esac # 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:1152: checking for a BSD compatible install" >&5 +echo "configure:1158: 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 @@ -1209,7 +1215,7 @@ host_makefile_frag=${frag} # able to link anything, it had better be able to at least compile # something. echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1213: checking how to run the C preprocessor" >&5 +echo "configure:1219: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1224,13 +1230,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1240: \"$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 : @@ -1241,13 +1247,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1251: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1257: \"$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 : @@ -1258,13 +1264,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1268: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1274: \"$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 : @@ -1292,17 +1298,17 @@ for ac_hdr in sys/file.h sys/param.h lim do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1296: checking for $ac_hdr" >&5 +echo "configure:1302: 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:1306: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1312: \"$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* @@ -1329,12 +1335,12 @@ fi done echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:1333: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:1339: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1350,7 +1356,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:1354: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1360: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -1371,12 +1377,12 @@ EOF fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:1375: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:1381: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1385,7 +1391,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:1389: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1395: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -1407,19 +1413,19 @@ fi echo $ac_n "checking whether errno must be declared""... $ac_c" 1>&6 -echo "configure:1411: checking whether errno must be declared" >&5 +echo "configure:1417: checking whether errno must be declared" >&5 if eval "test \"`echo '$''{'libiberty_cv_declare_errno'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { int x = errno; ; return 0; } EOF -if { (eval echo configure:1423: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1429: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libiberty_cv_declare_errno=no else @@ -1441,12 +1447,12 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1445: checking for ANSI C header files" >&5 +echo "configure:1451: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1454,7 +1460,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1464: \"$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* @@ -1471,7 +1477,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1489,7 +1495,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1510,7 +1516,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -1521,7 +1527,7 @@ if (XOR (islower (i), ISLOWER (i)) || to exit (0); } EOF -if { (eval echo configure:1525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -1545,12 +1551,12 @@ EOF fi echo $ac_n "checking for uintptr_t""... $ac_c" 1>&6 -echo "configure:1549: checking for uintptr_t" >&5 +echo "configure:1555: checking for uintptr_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_uintptr_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -1587,12 +1593,12 @@ EOF fi echo $ac_n "checking whether weak symbol works""... $ac_c" 1>&6 -echo "configure:1591: checking whether weak symbol works" >&5 +echo "configure:1597: checking whether weak symbol works" >&5 if eval "test \"`echo '$''{'libiberty_cv_have_weak_symbol'+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:1611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libiberty_cv_have_weak_symbol=no else @@ -1625,14 +1631,14 @@ if test $libiberty_cv_have_weak_symbol = # demangler may use dlopen. echo $ac_n "checking for library containing dlopen""... $ac_c" 1>&6 -echo "configure:1629: checking for library containing dlopen" >&5 +echo "configure:1635: checking for library containing dlopen" >&5 if eval "test \"`echo '$''{'ac_cv_search_dlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_func_search_save_LIBS="$LIBS" ac_cv_search_dlopen="no" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_dlopen="none required" else @@ -1654,7 +1660,7 @@ rm -f conftest* test "$ac_cv_search_dlopen" = "no" && for i in dl; do LIBS="-l$i $ac_func_search_save_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_dlopen="-l$i" break @@ -1693,6 +1699,39 @@ EOF fi fi +echo $ac_n "checking for pid_t""... $ac_c" 1>&6 +echo "configure:1704: checking for pid_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_pid_t=yes +else + rm -rf conftest* + ac_cv_type_pid_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_pid_t" 1>&6 +if test $ac_cv_type_pid_t = no; then + cat >> confdefs.h <<\EOF +#define pid_t int +EOF + +fi + # This is the list of functions which libiberty will provide if they # are not available on the host. @@ -1751,12 +1790,12 @@ if test "x" = "y"; then for ac_func in asprintf atexit basename bcmp bcopy bsearch bzero calloc clock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1755: checking for $ac_func" >&5 +echo "configure:1794: 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:1822: \"$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 @@ -1806,12 +1845,12 @@ done for ac_func in getcwd getpagesize index insque mkstemps memchr memcmp memcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1810: checking for $ac_func" >&5 +echo "configure:1849: 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:1877: \"$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 @@ -1861,12 +1900,12 @@ done for ac_func in memmove memset putenv random rename rindex sigsetmask do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1865: checking for $ac_func" >&5 +echo "configure:1904: 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:1932: \"$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 @@ -1916,12 +1955,12 @@ done for ac_func in strcasecmp setenv strchr strdup strncasecmp strrchr strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1920: checking for $ac_func" >&5 +echo "configure:1959: 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:1987: \"$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 @@ -1971,12 +2010,12 @@ done for ac_func in strtod strtol strtoul tmpnam vasprintf vfprintf vprintf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1975: checking for $ac_func" >&5 +echo "configure:2014: 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:2042: \"$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 @@ -2026,12 +2065,12 @@ done for ac_func in vsprintf waitpid getrusage on_exit psignal strerror strsignal do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2030: checking for $ac_func" >&5 +echo "configure:2069: 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:2097: \"$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 @@ -2081,12 +2120,12 @@ done for ac_func in sysconf times sbrk gettimeofday ffs do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2085: checking for $ac_func" >&5 +echo "configure:2124: 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:2152: \"$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 @@ -2339,7 +2378,7 @@ if test -z "${setobjs}"; then # We haven't set the list of objects yet. Use the standard autoconf # tests. This will only work if the compiler works. echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2343: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:2382: 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. @@ -2350,12 +2389,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 2354 "configure" +#line 2393 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:2359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2398: \"$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 @@ -2381,19 +2420,19 @@ 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:2385: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2424: 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 for ac_func in $funcs do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2392: checking for $ac_func" >&5 +echo "configure:2431: 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:2459: \"$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 @@ -2443,12 +2482,12 @@ done echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:2447: checking whether alloca needs Cray hooks" >&5 +echo "configure:2486: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2477: checking for $ac_func" >&5 +echo "configure:2516: 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:2544: \"$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 @@ -2527,7 +2566,7 @@ fi fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:2531: checking stack direction for C alloca" >&5 +echo "configure:2570: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2535,7 +2574,7 @@ else ac_cv_c_stack_direction=0 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:2597: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -2574,52 +2613,19 @@ cat >> confdefs.h <&6 -echo "configure:2579: checking for pid_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_pid_t=yes -else - rm -rf conftest* - ac_cv_type_pid_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_pid_t" 1>&6 -if test $ac_cv_type_pid_t = no; then - cat >> confdefs.h <<\EOF -#define pid_t int -EOF - -fi - -ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` + ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:2613: checking for vfork.h" >&5 +echo "configure:2619: checking for vfork.h" >&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:2623: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2629: \"$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* @@ -2644,18 +2650,18 @@ else fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:2648: checking for working vfork" >&5 +echo "configure:2654: checking for working vfork" >&5 if eval "test \"`echo '$''{'ac_cv_func_vfork_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then echo $ac_n "checking for vfork""... $ac_c" 1>&6 -echo "configure:2654: checking for vfork" >&5 +echo "configure:2660: checking for vfork" >&5 if eval "test \"`echo '$''{'ac_cv_func_vfork'+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:2688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vfork=yes" else @@ -2700,7 +2706,7 @@ fi ac_cv_func_vfork_works=$ac_cv_func_vfork else cat > conftest.$ac_ext < @@ -2795,7 +2801,7 @@ main() { } } EOF -if { (eval echo configure:2799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_vfork_works=yes else @@ -2827,12 +2833,12 @@ fi for ac_func in _doprnt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2831: checking for $ac_func" >&5 +echo "configure:2837: 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:2865: \"$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 @@ -2885,12 +2891,12 @@ done for ac_func in _doprnt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2889: checking for $ac_func" >&5 +echo "configure:2895: 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:2923: \"$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 @@ -2941,19 +2947,19 @@ done for v in $vars; do echo $ac_n "checking for $v""... $ac_c" 1>&6 -echo "configure:2945: checking for $v" >&5 +echo "configure:2951: checking for $v" >&5 if eval "test \"`echo '$''{'libiberty_cv_var_$v'+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:2963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "libiberty_cv_var_$v=yes" else @@ -2979,12 +2985,12 @@ EOF for ac_func in $checkfuncs do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2983: checking for $ac_func" >&5 +echo "configure:2989: 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:3017: \"$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 @@ -3037,17 +3043,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3041: checking for $ac_hdr" >&5 +echo "configure:3047: 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:3051: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3057: \"$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* @@ -3076,12 +3082,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3080: checking for $ac_func" >&5 +echo "configure:3086: 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:3114: \"$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 @@ -3129,7 +3135,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:3133: checking for working mmap" >&5 +echo "configure:3139: 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 @@ -3137,7 +3143,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:3287: \"$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 @@ -3301,7 +3307,7 @@ fi echo $ac_n "checking for working strncmp""... $ac_c" 1>&6 -echo "configure:3305: checking for working strncmp" >&5 +echo "configure:3311: checking for working strncmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_strncmp_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3309,7 +3315,7 @@ else ac_cv_func_strncmp_works=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:3383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_strncmp_works=yes else @@ -3793,6 +3799,7 @@ if test -n "$CONFIG_FILES"; then if test -n "${with_build_subdir}" || test -n "${with_target_subdir}"; then # FIXME: We shouldn't need to set ac_file ac_file=Makefile + LD="${ORIGINAL_LD_FOR_MULTILIBS}" . ${libiberty_topdir}/config-ml.in fi fi diff -uprN binutils-2.12.90.0.7/libiberty/configure.in binutils-2.12.90.0.9/libiberty/configure.in --- binutils-2.12.90.0.7/libiberty/configure.in Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/libiberty/configure.in Thu May 23 15:10:11 2002 @@ -3,6 +3,12 @@ dnl Process this file with autoconf to p AC_PREREQ(2.13) AC_INIT(pexecute.c) +# 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. We don't use libtool yet, but some day we might, so... +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]) @@ -149,6 +155,7 @@ if test $libiberty_cv_have_weak_symbol = fi fi +AC_TYPE_PID_T # This is the list of functions which libiberty will provide if they # are not available on the host. @@ -437,6 +444,7 @@ if test -n "$CONFIG_FILES"; then if test -n "${with_build_subdir}" || test -n "${with_target_subdir}"; then # FIXME: We shouldn't need to set ac_file ac_file=Makefile + LD="${ORIGINAL_LD_FOR_MULTILIBS}" . ${libiberty_topdir}/config-ml.in fi fi], diff -uprN binutils-2.12.90.0.7/libiberty/getruntime.c binutils-2.12.90.0.9/libiberty/getruntime.c --- binutils-2.12.90.0.7/libiberty/getruntime.c Fri Oct 19 23:57:49 2001 +++ binutils-2.12.90.0.9/libiberty/getruntime.c Thu May 23 15:10:11 2002 @@ -1,5 +1,5 @@ /* Return time used so far, in microseconds. - Copyright (C) 1994, 1999 Free Software Foundation, Inc. + Copyright (C) 1994, 1999, 2002 Free Software Foundation, Inc. This file is part of the libiberty library. Libiberty is free software; you can redistribute it and/or @@ -22,6 +22,10 @@ Boston, MA 02111-1307, USA. */ #include "ansidecl.h" #include "libiberty.h" +/* On some systems (such as WindISS), you must include + to get the definition of "time_t" before you include . */ +#include + /* There are several ways to get elapsed execution time; unfortunately no single way is available for all host systems, nor are there reliable ways to find out which way is correct for a given host. */ diff -uprN binutils-2.12.90.0.7/libiberty/waitpid.c binutils-2.12.90.0.9/libiberty/waitpid.c --- binutils-2.12.90.0.7/libiberty/waitpid.c Mon Oct 1 15:25:26 2001 +++ binutils-2.12.90.0.9/libiberty/waitpid.c Thu May 23 15:10:11 2002 @@ -13,13 +13,19 @@ does the return value. The third argume #ifdef HAVE_CONFIG_H #include "config.h" #endif + +/* On some systems (such as WindISS), you must include + to get the definition of "pid_t" before you include . */ +#include + #ifdef HAVE_SYS_WAIT_H #include #endif -int +pid_t waitpid (pid, stat_loc, options) - int pid, *stat_loc, options; + pid_t pid; + int *stat_loc, options; { for (;;) { diff -uprN binutils-2.12.90.0.7/opcodes/ChangeLog binutils-2.12.90.0.9/opcodes/ChangeLog --- binutils-2.12.90.0.7/opcodes/ChangeLog Sun Apr 21 01:09:27 2002 +++ binutils-2.12.90.0.9/opcodes/ChangeLog Sun May 26 09:57:13 2002 @@ -1,3 +1,121 @@ +2002-05-25 Alan Modra + + * Makefile.am (sh-dis.lo): Don't put make commands in deps. + * Makefile.in: Regenerate. + * arc-dis.c: Use #include "" instead of <> for local header files. + * m68k-dis.c: Likewise. + +Wed May 22 20:11:51 2002 J"orn Rennecke + + * Makefile.am (sh-dis.lo): Compile with @archdefs@. + * Makefile.in: regenerate. + + * sh-dis.c (print_insn_sh): If coff and bfd_mach_sh, use arch_sh4 + for disassembly. + +2002-05-22 Thiemo Seufer + + * mips-opc.c (mips_builtin_opcodes): Add drol, dror macros. + +Fri May 17 14:26:44 2002 J"orn Rennecke + + * disassemble.c (disassembler): Just use print_insn_sh for bfd_arch_sh. + * sh-dis.c (LITTLE_BIT): Delete. + (print_insn_sh, print_insn_shl): Deleted. + (print_insn_shx): Renamed to + (print_insn_sh). No longer static. Handle SHmedia instructions. + Use info->endian to determine endianness. + * sh64-dis.c (print_insn_sh64, print_insn_sh64l): Delete. + (print_insn_sh64x): No longer static. Renamed to + (print_insn_sh64). Removed pfun_compact and endian arguments. + If we got an uneven address to indicate SHmedia, adjust it. + Return -2 for SHcompact instructions. + +2002-05-17 Alan Modra + + * acinclude.m4 (AM_INSTALL_LIBBFD): Fake to fool autotools. + * configure.in: Invoke AM_INSTALL_LIBBFD. + * Makefile.am (install-data-local): Move to.. + (install_libopcodes): .. New target. + (uninstall_libopcodes): 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-15 Nick Clifton + + * fr30-asm.c: Regenerate. + * fr30-desc.c: Regenerate. + * fr30-dis.c: Regenerate. + * m32r-asm.c: Regenerate. + * m32r-desc.c: Regenerate. + * m32r-dis.c: Regenerate. + * openrisc-asm.c: Regenerate. + * openrisc-desc.c: Regenerate. + * openrisc-dis.c: Regenerate. + * xstormy16-asm.c: Regenerate. + * xstormy16-desc.c: Regenerate. + * xstormy16-dis.c: Regenerate. + +2002-05-15 Thiemo Seufer + + * mips-dis.c (is_newabi): EABI is not a NewABI. + +2002-05-13 Jason Thorpe + + * configure.in (shle-*-*elf*): Include sh64 support. + * configure: Regenerate. + +2002-04-28 Jason Thorpe + + * vax-dis.c (print_insn_arg): Pass the insn info to print_insn_mode. + (print_insn_mode): Print some basic info about floating point values. + +2002-05-09 Anton Blanchard + + * ppc-opc.c: Add "tlbiel" for POWER4. + +2002-05-07 Graydon Hoare + + * cgen-dis.in: (print_insn_@arch@): Cache list of opened CPUs rather + than just most-recently-opened. + +2002-05-01 Alan Modra + + * ppc-opc.c: Add "tlbsx." and "tlbsxe." for booke. + +2002-04-24 Christian Groessler + + * z8k-dis.c (print_insn_z8k): Set disassemble_info to 2 + bytes_per_chunk, 6 bytes_per_line for nicer display of the hex + codes. + (z8k_lookup_instr): CLASS_IGNORE case added. + (output_instr): Don't print hex codes, they are already + printed. + (unpack_instr): ARG_NIM4 case added. ARG_NIM8 case + fixed. Support CLASS_BIT_1OR2 and CLASS_IGNORE cases. + (unparse_instr): Fix base and indexed addressing disassembly: + The index is inside the brackets. + * z8kgen.c (gas): Add ARG_NIM4 and CLASS_IGNORE defines. + (opt): Fix shift left/right arithmetic/logical byte defines: + The high byte of the immediate word is ignored by the + processor. + Fix n parameter of ldm opcodes: The opcode contains (n-1). + (args): Fix "n" entry. + (toks): Add "nim4" and "iiii" entries. + * z8k-opc.h: Regenerated with new z8kgen.c. + +2002-04-24 Nick Clifton + + * po/id.po: New Indonesian translation. + * configure.in (ALL_LIGUAS): Add id.po + * configure: Regenerate. + 2002-04-17 matthew green * ppc-opc.c (powerpc_opcode): Fix dssall operand list. diff -uprN binutils-2.12.90.0.7/opcodes/Makefile.am binutils-2.12.90.0.9/opcodes/Makefile.am --- binutils-2.12.90.0.7/opcodes/Makefile.am Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/opcodes/Makefile.am Sun May 26 09:57:13 2002 @@ -11,7 +11,10 @@ MKDEP = gcc -MM WARN_CFLAGS = @WARN_CFLAGS@ AM_CFLAGS = $(WARN_CFLAGS) -lib_LTLIBRARIES = libopcodes.la +bfdlibdir = @bfdlibdir@ +bfdincludedir = @bfdincludedir@ + +bfdlib_LTLIBRARIES = libopcodes.la # This is where bfd.h lives. BFD_H = ../bfd/bfd.h @@ -271,11 +274,29 @@ po/POTFILES.in: @MAINT@ Makefile config.status: $(srcdir)/configure $(srcdir)/../bfd/configure.in $(SHELL) ./config.status --recheck -# Install libopcodes include file. -install-data-local: +install-bfdlibLTLIBRARIES: @INSTALL_LIBBFD_TRUE@install_libopcodes @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(includedir) - $(INSTALL_DATA) $(INCDIR)/dis-asm.h $(DESTDIR)$(includedir)/dis-asm.h + +uninstall-bfdlibLTLIBRARIES: @INSTALL_LIBBFD_TRUE@uninstall_libopcodes + @$(NORMAL_UNINSTALL) + +.PHONY: install_libopcodes uninstall_libopcodes +install_libopcodes: $(bfdlib_LTLIBRARIES) + $(mkinstalldirs) $(DESTDIR)$(bfdlibdir) + $(mkinstalldirs) $(DESTDIR)$(bfdincludedir) + @list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p; \ + else :; fi; \ + done + $(INSTALL_DATA) $(INCDIR)/dis-asm.h $(DESTDIR)$(bfdincludedir)/dis-asm.h + +uninstall_libopcodes: + list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bfdlibdir)/$$p; \ + done + rm -f $(DESTDIR)$(bfdincludedir)/dis-asm.h CLEANFILES = \ stamp-m32r stamp-fr30 stamp-openrisc \ @@ -350,6 +371,9 @@ s390-mkopc: s390-mkopc.c s390-opc.tab: s390-mkopc s390-opc.txt ./s390-mkopc < $(srcdir)/s390-opc.txt > s390-opc.tab +sh-dis.lo: sh-dis.c + $(LIBTOOL) --mode=compile $(COMPILE) -c @archdefs@ $< + Makefile: $(BFDDIR)/configure.in # This dependency stuff is copied from BFD. diff -uprN binutils-2.12.90.0.7/opcodes/Makefile.in binutils-2.12.90.0.9/opcodes/Makefile.in --- binutils-2.12.90.0.7/opcodes/Makefile.in Fri Apr 5 10:03:50 2002 +++ binutils-2.12.90.0.9/opcodes/Makefile.in Sun May 26 09:57:13 2002 @@ -121,7 +121,10 @@ MKDEP = gcc -MM WARN_CFLAGS = @WARN_CFLAGS@ AM_CFLAGS = $(WARN_CFLAGS) -lib_LTLIBRARIES = libopcodes.la +bfdlibdir = @bfdlibdir@ +bfdincludedir = @bfdincludedir@ + +bfdlib_LTLIBRARIES = libopcodes.la # This is where bfd.h lives. BFD_H = ../bfd/bfd.h @@ -402,7 +405,7 @@ LIBS = @LIBS@ libopcodes_a_LIBADD = libopcodes_a_SOURCES = libopcodes.a.c libopcodes_a_OBJECTS = libopcodes.a.$(OBJEXT) -LTLIBRARIES = $(lib_LTLIBRARIES) +LTLIBRARIES = $(bfdlib_LTLIBRARIES) libopcodes_la_OBJECTS = dis-buf.lo disassemble.lo CFLAGS = @CFLAGS@ @@ -517,33 +520,17 @@ distclean-libtool: maintainer-clean-libtool: -mostlyclean-libLTLIBRARIES: - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) +mostlyclean-bfdlibLTLIBRARIES: -distclean-libLTLIBRARIES: +clean-bfdlibLTLIBRARIES: + -test -z "$(bfdlib_LTLIBRARIES)" || rm -f $(bfdlib_LTLIBRARIES) -maintainer-clean-libLTLIBRARIES: +distclean-bfdlibLTLIBRARIES: -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(libdir) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \ - $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \ - else :; fi; \ - done - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ - done +maintainer-clean-bfdlibLTLIBRARIES: libopcodes.la: $(libopcodes_la_OBJECTS) $(libopcodes_la_DEPENDENCIES) - $(LINK) -rpath $(libdir) $(libopcodes_la_LDFLAGS) $(libopcodes_la_OBJECTS) $(libopcodes_la_LIBADD) $(LIBS) + $(LINK) -rpath $(bfdlibdir) $(libopcodes_la_LDFLAGS) $(libopcodes_la_OBJECTS) $(libopcodes_la_LIBADD) $(LIBS) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -705,16 +692,16 @@ install-info: install-info-recursive all-recursive-am: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive -install-exec-am: install-libLTLIBRARIES +install-exec-am: install-exec: install-exec-recursive -install-data-am: install-data-local +install-data-am: install-bfdlibLTLIBRARIES install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-recursive -uninstall-am: uninstall-libLTLIBRARIES +uninstall-am: uninstall-bfdlibLTLIBRARIES uninstall: uninstall-recursive all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) config.h all-redirect: all-recursive-am @@ -722,7 +709,7 @@ install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: installdirs-recursive installdirs-am: - $(mkinstalldirs) $(DESTDIR)$(libdir) + $(mkinstalldirs) $(DESTDIR)$(bfdlibdir) mostlyclean-generic: @@ -737,19 +724,19 @@ distclean-generic: maintainer-clean-generic: mostlyclean-am: mostlyclean-hdr mostlyclean-noinstLIBRARIES \ mostlyclean-compile mostlyclean-libtool \ - mostlyclean-libLTLIBRARIES mostlyclean-tags \ + mostlyclean-bfdlibLTLIBRARIES mostlyclean-tags \ mostlyclean-generic mostlyclean: mostlyclean-recursive clean-am: clean-hdr clean-noinstLIBRARIES clean-compile clean-libtool \ - clean-libLTLIBRARIES clean-tags clean-generic \ + clean-bfdlibLTLIBRARIES clean-tags clean-generic \ mostlyclean-am clean: clean-recursive distclean-am: distclean-hdr distclean-noinstLIBRARIES distclean-compile \ - distclean-libtool distclean-libLTLIBRARIES \ + distclean-libtool distclean-bfdlibLTLIBRARIES \ distclean-tags distclean-generic clean-am -rm -f libtool @@ -759,8 +746,9 @@ distclean: distclean-recursive maintainer-clean-am: maintainer-clean-hdr \ maintainer-clean-noinstLIBRARIES \ maintainer-clean-compile maintainer-clean-libtool \ - maintainer-clean-libLTLIBRARIES maintainer-clean-tags \ - maintainer-clean-generic distclean-am + maintainer-clean-bfdlibLTLIBRARIES \ + 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." @@ -772,22 +760,22 @@ mostlyclean-noinstLIBRARIES distclean-no clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile mostlyclean-libtool distclean-libtool \ -clean-libtool maintainer-clean-libtool mostlyclean-libLTLIBRARIES \ -distclean-libLTLIBRARIES clean-libLTLIBRARIES \ -maintainer-clean-libLTLIBRARIES uninstall-libLTLIBRARIES \ -install-libLTLIBRARIES 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 \ +clean-libtool maintainer-clean-libtool mostlyclean-bfdlibLTLIBRARIES \ +distclean-bfdlibLTLIBRARIES clean-bfdlibLTLIBRARIES \ +maintainer-clean-bfdlibLTLIBRARIES uninstall-bfdlibLTLIBRARIES \ +install-bfdlibLTLIBRARIES 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 all-recursive-am install-exec-am install-exec \ -install-data-local 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 +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 disassemble.lo: disassemble.c $(INCDIR)/dis-asm.h @@ -812,11 +800,29 @@ po/POTFILES.in: @MAINT@ Makefile config.status: $(srcdir)/configure $(srcdir)/../bfd/configure.in $(SHELL) ./config.status --recheck -# Install libopcodes include file. -install-data-local: +install-bfdlibLTLIBRARIES: @INSTALL_LIBBFD_TRUE@install_libopcodes @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(includedir) - $(INSTALL_DATA) $(INCDIR)/dis-asm.h $(DESTDIR)$(includedir)/dis-asm.h + +uninstall-bfdlibLTLIBRARIES: @INSTALL_LIBBFD_TRUE@uninstall_libopcodes + @$(NORMAL_UNINSTALL) + +.PHONY: install_libopcodes uninstall_libopcodes +install_libopcodes: $(bfdlib_LTLIBRARIES) + $(mkinstalldirs) $(DESTDIR)$(bfdlibdir) + $(mkinstalldirs) $(DESTDIR)$(bfdincludedir) + @list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p; \ + else :; fi; \ + done + $(INSTALL_DATA) $(INCDIR)/dis-asm.h $(DESTDIR)$(bfdincludedir)/dis-asm.h + +uninstall_libopcodes: + list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bfdlibdir)/$$p; \ + done + rm -f $(DESTDIR)$(bfdincludedir)/dis-asm.h run-cgen: $(SHELL) $(srcdir)/cgen.sh opcodes $(srcdir) $(CGEN) \ @@ -861,6 +867,9 @@ s390-mkopc: s390-mkopc.c s390-opc.tab: s390-mkopc s390-opc.txt ./s390-mkopc < $(srcdir)/s390-opc.txt > s390-opc.tab +sh-dis.lo: sh-dis.c + $(LIBTOOL) --mode=compile $(COMPILE) -c @archdefs@ $< + Makefile: $(BFDDIR)/configure.in # This dependency stuff is copied from BFD. diff -uprN binutils-2.12.90.0.7/opcodes/acinclude.m4 binutils-2.12.90.0.9/opcodes/acinclude.m4 --- binutils-2.12.90.0.7/opcodes/acinclude.m4 Sat Sep 2 09:57:54 2000 +++ binutils-2.12.90.0.9/opcodes/acinclude.m4 Thu May 23 15:10:11 2002 @@ -15,3 +15,10 @@ ifelse(yes,no,[ AC_DEFUN([CY_WITH_NLS],) AC_SUBST(INTLLIBS) ]) + +dnl AM_INSTALL_LIBBFD already included in bfd/acinclude.m4 +ifelse(yes,no,[ +AC_DEFUN([AM_INSTALL_LIBBFD],) +AC_SUBST(bfdlibdir) +AC_SUBST(bfdincludedir) +]) diff -uprN binutils-2.12.90.0.7/opcodes/aclocal.m4 binutils-2.12.90.0.9/opcodes/aclocal.m4 --- binutils-2.12.90.0.7/opcodes/aclocal.m4 Thu Mar 7 11:52:40 2002 +++ binutils-2.12.90.0.9/opcodes/aclocal.m4 Thu May 23 15:10:11 2002 @@ -28,6 +28,13 @@ AC_DEFUN([CY_WITH_NLS],) AC_SUBST(INTLLIBS) ]) +dnl AM_INSTALL_LIBBFD already included in bfd/acinclude.m4 +ifelse(yes,no,[ +AC_DEFUN([AM_INSTALL_LIBBFD],) +AC_SUBST(bfdlibdir) +AC_SUBST(bfdincludedir) +]) + # 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. diff -uprN binutils-2.12.90.0.7/opcodes/arc-dis.c binutils-2.12.90.0.9/opcodes/arc-dis.c --- binutils-2.12.90.0.7/opcodes/arc-dis.c Mon Oct 1 15:25:26 2001 +++ binutils-2.12.90.0.9/opcodes/arc-dis.c Sun May 26 09:57:13 2002 @@ -1,5 +1,5 @@ /* Instruction printing code for the ARC. - Copyright 1994, 1995, 1997, 1998, 2000, 2001 + Copyright 1994, 1995, 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Doug Evans (dje@cygnus.com). @@ -17,8 +17,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include -#include +#include "ansidecl.h" +#include "libiberty.h" #include "dis-asm.h" #include "opcode/arc.h" #include "elf-bfd.h" diff -uprN binutils-2.12.90.0.7/opcodes/arm-dis.c binutils-2.12.90.0.9/opcodes/arm-dis.c --- binutils-2.12.90.0.7/opcodes/arm-dis.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/arm-dis.c Thu May 23 15:10:11 2002 @@ -1,5 +1,5 @@ /* Instruction printing code for the ARM - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) Modification by James G. Smith (jsmith@cygnus.co.uk) @@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suit #include "libcoff.h" #include "opintl.h" -/* FIXME: This shouldn't be done here */ +/* FIXME: This shouldn't be done here. */ #include "elf-bfd.h" #include "elf/internal.h" #include "elf/arm.h" @@ -99,15 +99,16 @@ int get_arm_regnames (int option, const const char **setdescription, const char ***register_names); -/* Functions. */ +/* Functions. */ int -get_arm_regname_num_options (void) +get_arm_regname_num_options () { return NUM_ARM_REGNAMES; } int -set_arm_regname_option (int option) +set_arm_regname_option (option) + int option; { int old = regname_selected; regname_selected = option; @@ -115,9 +116,11 @@ set_arm_regname_option (int option) } int -get_arm_regnames (int option, const char **setname, - const char **setdescription, - const char ***register_names) +get_arm_regnames (option, setname, setdescription, register_names) + int option; + const char **setname; + const char **setdescription; + const char ***register_names; { *setname = regnames[option].name; *setdescription = regnames[option].description; @@ -161,6 +164,7 @@ arm_decode_shift (given, func, stream) /* Print one instruction from PC on INFO->STREAM. Return the size of the instruction (always 4 on ARM). */ + static int print_insn_arm (pc, info, given) bfd_vma pc; @@ -200,7 +204,7 @@ print_insn_arm (pc, info, given) if ((given & 0x00800000) == 0) offset = - offset; - /* pre-indexed */ + /* Pre-indexed. */ func (stream, ", #%d]", offset); offset += pc + 8; @@ -217,7 +221,8 @@ print_insn_arm (pc, info, given) /* Post indexed. */ func (stream, "], #%d", offset); - offset = pc + 8; /* ie ignore the offset. */ + /* ie ignore the offset. */ + offset = pc + 8; } func (stream, "\t; "); @@ -740,6 +745,7 @@ print_insn_arm (pc, info, given) /* Print one instruction from PC on INFO->STREAM. Return the size of the instruction. */ + static int print_insn_thumb (pc, info, given) bfd_vma pc; @@ -765,26 +771,17 @@ print_insn_thumb (pc, info, given) info->bytes_per_line = 4; offset = BDISP23 (given); - + offset = offset * 2 + pc + 4; + if ((given & 0x10000000) == 0) { func (stream, "blx\t"); - - /* The spec says that bit 1 of the branch's destination - address comes from bit 1 of the instruction's - address and not from the offset in the instruction. */ - if (offset & 0x1) - { - /* func (stream, "*malformed!* "); */ - offset &= ~ 0x1; - } - - offset |= ((pc & 0x2) >> 1); + offset &= 0xfffffffc; } else func (stream, "bl\t"); - info->print_address_func (offset * 2 + pc + 4, info); + info->print_address_func (offset, info); return 4; } else @@ -988,6 +985,7 @@ print_insn_thumb (pc, info, given) } /* Parse an individual disassembler option. */ + void parse_arm_disassembler_option (option) char * option; @@ -1022,6 +1020,7 @@ parse_arm_disassembler_option (option) } /* Parse the string of disassembler options, spliting it at whitespaces. */ + static void parse_disassembler_options (options) char * options; @@ -1050,6 +1049,7 @@ parse_disassembler_options (options) /* NOTE: There are no checks in these routines that the relevant number of data bytes exist. */ + static int print_insn (pc, info, little) bfd_vma pc; diff -uprN binutils-2.12.90.0.7/opcodes/cgen-dis.in binutils-2.12.90.0.9/opcodes/cgen-dis.in --- binutils-2.12.90.0.7/opcodes/cgen-dis.in Thu Feb 7 10:21:04 2002 +++ binutils-2.12.90.0.9/opcodes/cgen-dis.in Thu May 23 15:10:11 2002 @@ -351,11 +351,21 @@ default_print_insn (cd, pc, info) Print one instruction from PC on INFO->STREAM. Return the size of the instruction (in bytes). */ +typedef struct cpu_desc_list { + struct cpu_desc_list *next; + int isa; + int mach; + int endian; + CGEN_CPU_DESC cd; +} cpu_desc_list; + int print_insn_@arch@ (pc, info) bfd_vma pc; disassemble_info *info; { + static cpu_desc_list *cd_list = 0; + cpu_desc_list *cl = 0; static CGEN_CPU_DESC cd = 0; static int prev_isa; static int prev_mach; @@ -389,15 +399,24 @@ print_insn_@arch@ (pc, info) isa = info->insn_sets; #endif - /* If we've switched cpu's, close the current table and open a new one. */ + /* If we've switched cpu's, try to find a handle we've used before */ if (cd && (isa != prev_isa || mach != prev_mach || endian != prev_endian)) { - @arch@_cgen_cpu_close (cd); cd = 0; - } + for (cl = cd_list; cl; cl = cl->next) + { + if (cl->isa == isa && + cl->mach == mach && + cl->endian == endian) + { + cd = cl->cd; + break; + } + } + } /* If we haven't initialized yet, initialize the opcode table. */ if (! cd) @@ -418,6 +437,16 @@ print_insn_@arch@ (pc, info) CGEN_CPU_OPEN_END); if (!cd) abort (); + + /* save this away for future reference */ + cl = xmalloc (sizeof (struct cpu_desc_list)); + cl->cd = cd; + cl->isa = isa; + cl->mach = mach; + cl->endian = endian; + cl->next = cd_list; + cd_list = cl; + @arch@_cgen_init_dis (cd); } diff -uprN binutils-2.12.90.0.7/opcodes/configure binutils-2.12.90.0.9/opcodes/configure --- binutils-2.12.90.0.7/opcodes/configure Thu Mar 7 11:52:40 2002 +++ binutils-2.12.90.0.9/opcodes/configure Thu May 23 15:10:11 2002 @@ -33,6 +33,8 @@ ac_help="$ac_help --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer" ac_help="$ac_help + --install-libbfd controls installation of libbfd and related headers" +ac_help="$ac_help --disable-nls do not use Native Language Support" ac_help="$ac_help --with-included-gettext use the GNU gettext library included here" @@ -548,12 +550,12 @@ else fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:552: checking for Cygwin environment" >&5 +echo "configure:554: 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 +if { (eval echo configure:570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else @@ -581,19 +583,19 @@ 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:585: checking for mingw32 environment" >&5 +echo "configure:587: 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 +if { (eval echo configure:599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else @@ -658,7 +660,7 @@ else { echo "configure: error: can not r fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:662: checking host system type" >&5 +echo "configure:664: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -679,7 +681,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)- echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:683: checking target system type" >&5 +echo "configure:685: checking target system type" >&5 target_alias=$target case "$target_alias" in @@ -697,7 +699,7 @@ target_os=`echo $target | sed 's/^\([^-] echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:701: checking build system type" >&5 +echo "configure:703: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -722,7 +724,7 @@ test "$host_alias" != "$target_alias" && # 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:726: checking for $ac_word" >&5 +echo "configure:728: 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 @@ -752,7 +754,7 @@ 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:756: checking for $ac_word" >&5 +echo "configure:758: 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 @@ -803,7 +805,7 @@ fi # 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:807: checking for $ac_word" >&5 +echo "configure:809: 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 @@ -835,7 +837,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:839: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:841: 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. @@ -846,12 +848,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 850 "configure" +#line 852 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:857: \"$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 @@ -877,12 +879,12 @@ 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:881: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:883: 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:886: checking whether we are using GNU C" >&5 +echo "configure:888: 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 @@ -891,7 +893,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -910,7 +912,7 @@ 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:914: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:916: 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 @@ -942,7 +944,7 @@ else fi echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 -echo "configure:946: checking for POSIXized ISC" >&5 +echo "configure:948: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then @@ -980,7 +982,7 @@ BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOM # 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:984: checking for a BSD compatible install" >&5 +echo "configure:986: 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 @@ -1033,7 +1035,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:1037: checking whether build environment is sane" >&5 +echo "configure:1039: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -1090,7 +1092,7 @@ test "$program_suffix" != NONE && 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:1094: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:1096: 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 @@ -1136,7 +1138,7 @@ EOF missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 -echo "configure:1140: checking for working aclocal" >&5 +echo "configure:1142: checking for working aclocal" >&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. @@ -1149,7 +1151,7 @@ else fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:1153: checking for working autoconf" >&5 +echo "configure:1155: 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. @@ -1162,7 +1164,7 @@ else fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:1166: checking for working automake" >&5 +echo "configure:1168: checking for working automake" >&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. @@ -1175,7 +1177,7 @@ else fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:1179: checking for working autoheader" >&5 +echo "configure:1181: 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. @@ -1188,7 +1190,7 @@ else fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:1192: checking for working makeinfo" >&5 +echo "configure:1194: 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. @@ -1211,7 +1213,7 @@ fi # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1215: checking for $ac_word" >&5 +echo "configure:1217: 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 @@ -1243,7 +1245,7 @@ fi # 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:1247: checking for $ac_word" >&5 +echo "configure:1249: 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 @@ -1275,7 +1277,7 @@ 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:1279: checking for $ac_word" >&5 +echo "configure:1281: 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 @@ -1390,7 +1392,7 @@ 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:1394: checking for ld used by GCC" >&5 +echo "configure:1396: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -1420,10 +1422,10 @@ echo "configure:1394: checking for ld us esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1424: checking for GNU ld" >&5 +echo "configure:1426: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1427: checking for non-GNU ld" >&5 +echo "configure:1429: 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 @@ -1458,7 +1460,7 @@ else 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:1462: checking if the linker ($LD) is GNU ld" >&5 +echo "configure:1464: 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 @@ -1475,7 +1477,7 @@ 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:1479: checking for $LD option to reload object files" >&5 +echo "configure:1481: 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 @@ -1487,7 +1489,7 @@ 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:1491: checking for BSD-compatible nm" >&5 +echo "configure:1493: 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 @@ -1525,7 +1527,7 @@ 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:1529: checking whether ln -s works" >&5 +echo "configure:1531: 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 @@ -1546,7 +1548,7 @@ else fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 -echo "configure:1550: checking how to recognise dependant libraries" >&5 +echo "configure:1552: 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 @@ -1713,13 +1715,13 @@ 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:1717: checking for object suffix" >&5 +echo "configure:1719: 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:1723: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1725: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; @@ -1739,7 +1741,7 @@ ac_objext=$ac_cv_objext echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1743: checking for executable suffix" >&5 +echo "configure:1745: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1749,7 +1751,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:1753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:1755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -1776,7 +1778,7 @@ 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:1780: checking for ${ac_tool_prefix}file" >&5 +echo "configure:1782: 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 @@ -1838,7 +1840,7 @@ 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:1842: checking for file" >&5 +echo "configure:1844: 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 @@ -1909,7 +1911,7 @@ 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:1913: checking for $ac_word" >&5 +echo "configure:1915: 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 @@ -1941,7 +1943,7 @@ 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:1945: checking for $ac_word" >&5 +echo "configure:1947: 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 @@ -1976,7 +1978,7 @@ 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:1980: checking for $ac_word" >&5 +echo "configure:1982: 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 @@ -2008,7 +2010,7 @@ 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:2012: checking for $ac_word" >&5 +echo "configure:2014: 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 @@ -2075,8 +2077,8 @@ test x"$pic_mode" = xno && libtool_flags case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 2079 "configure"' > conftest.$ac_ext - if { (eval echo configure:2080: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 2081 "configure"' > conftest.$ac_ext + if { (eval echo configure:2082: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" @@ -2095,7 +2097,7 @@ case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo configure:2099: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:2101: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *ELF-32*) HPUX_IA64_MODE="32" @@ -2113,7 +2115,7 @@ ia64-*-hpux*) SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:2117: checking whether the C compiler needs -belf" >&5 +echo "configure:2119: 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 @@ -2126,14 +2128,14 @@ ac_link='${CC-cc} -o conftest${ac_exeext cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2139: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else @@ -2301,7 +2303,7 @@ if test -z "$target" ; then fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:2305: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:2307: 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" @@ -2323,10 +2325,45 @@ fi MAINT=$MAINTAINER_MODE_TRUE +echo $ac_n "checking whether to install libbfd""... $ac_c" 1>&6 +echo "configure:2330: checking whether to install libbfd" >&5 + # Check whether --enable-install-libbfd or --disable-install-libbfd was given. +if test "${enable_install_libbfd+set}" = set; then + enableval="$enable_install_libbfd" + install_libbfd_p=$enableval +else + if test "${host}" = "${target}" -o "$enable_shared" = "yes"; then + install_libbfd_p=yes + else + install_libbfd_p=no + fi +fi + + echo "$ac_t""$install_libbfd_p" 1>&6 + + +if test $install_libbfd_p = yes; then + INSTALL_LIBBFD_TRUE= + INSTALL_LIBBFD_FALSE='#' +else + INSTALL_LIBBFD_TRUE='#' + INSTALL_LIBBFD_FALSE= +fi + # libbfd.a is a host library containing target dependent code + bfdlibdir='$(libdir)' + bfdincludedir='$(includedir)' + if test "${host}" != "${target}"; then + bfdlibdir='$(exec_prefix)/$(host_alias)/$(target_alias)/lib' + bfdincludedir='$(exec_prefix)/$(host_alias)/$(target_alias)/include' + fi + + + + echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:2330: checking for executable suffix" >&5 +echo "configure:2367: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2336,7 +2373,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:2340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:2377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -2362,7 +2399,7 @@ ac_exeext=$EXEEXT # 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:2366: checking for $ac_word" >&5 +echo "configure:2403: 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 @@ -2392,7 +2429,7 @@ 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:2396: checking for $ac_word" >&5 +echo "configure:2433: 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 @@ -2443,7 +2480,7 @@ fi # 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:2447: checking for $ac_word" >&5 +echo "configure:2484: 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 @@ -2475,7 +2512,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2479: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:2516: 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. @@ -2486,12 +2523,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 2490 "configure" +#line 2527 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:2495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2532: \"$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 @@ -2517,12 +2554,12 @@ 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:2521: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2558: 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:2526: checking whether we are using GNU C" >&5 +echo "configure:2563: 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 @@ -2531,7 +2568,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2535: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2572: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -2550,7 +2587,7 @@ 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:2554: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2591: 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 @@ -2582,9 +2619,9 @@ else fi -ALL_LINGUAS="fr sv tr es da de" +ALL_LINGUAS="fr sv tr es da de id" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:2588: checking how to run the C preprocessor" >&5 +echo "configure:2625: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2599,13 +2636,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2609: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2646: \"$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 : @@ -2616,13 +2653,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2626: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2663: \"$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 : @@ -2633,13 +2670,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2643: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2680: \"$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 : @@ -2666,7 +2703,7 @@ echo "$ac_t""$CPP" 1>&6 # 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:2670: checking for $ac_word" >&5 +echo "configure:2707: 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 @@ -2694,12 +2731,12 @@ else fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2698: checking for ANSI C header files" >&5 +echo "configure:2735: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2707,7 +2744,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2748: \"$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* @@ -2724,7 +2761,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2742,7 +2779,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2763,7 +2800,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2774,7 +2811,7 @@ if (XOR (islower (i), ISLOWER (i)) || to exit (0); } EOF -if { (eval echo configure:2778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2798,12 +2835,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2802: checking for working const" >&5 +echo "configure:2839: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+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:2893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2873,21 +2910,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:2877: checking for inline" >&5 +echo "configure:2914: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -2913,12 +2950,12 @@ EOF esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:2917: checking for off_t" >&5 +echo "configure:2954: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2946,12 +2983,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:2950: checking for size_t" >&5 +echo "configure:2987: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2981,19 +3018,19 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:2985: checking for working alloca.h" >&5 +echo "configure:3022: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:2997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -3014,12 +3051,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:3018: checking for alloca" >&5 +echo "configure:3055: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+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:3088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -3079,12 +3116,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:3083: checking whether alloca needs Cray hooks" >&5 +echo "configure:3120: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3113: checking for $ac_func" >&5 +echo "configure:3150: 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:3178: \"$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 @@ -3164,7 +3201,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:3168: checking stack direction for C alloca" >&5 +echo "configure:3205: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3172,7 +3209,7 @@ else ac_cv_c_stack_direction=0 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:3232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -3216,17 +3253,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3220: checking for $ac_hdr" >&5 +echo "configure:3257: 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:3230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3267: \"$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* @@ -3255,12 +3292,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3259: checking for $ac_func" >&5 +echo "configure:3296: 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:3324: \"$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 @@ -3308,7 +3345,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:3312: checking for working mmap" >&5 +echo "configure:3349: 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 @@ -3316,7 +3353,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:3497: \"$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 @@ -3484,17 +3521,17 @@ unistd.h values.h sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3488: checking for $ac_hdr" >&5 +echo "configure:3525: 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:3498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3535: \"$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* @@ -3524,12 +3561,12 @@ done __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3528: checking for $ac_func" >&5 +echo "configure:3565: 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:3593: \"$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 @@ -3581,12 +3618,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3585: checking for $ac_func" >&5 +echo "configure:3622: 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:3650: \"$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 @@ -3643,19 +3680,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:3647: checking for LC_MESSAGES" >&5 +echo "configure:3684: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:3659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -3676,7 +3713,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:3680: checking whether NLS is requested" >&5 +echo "configure:3717: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -3696,7 +3733,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:3700: checking whether included gettext is requested" >&5 +echo "configure:3737: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -3715,17 +3752,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:3719: checking for libintl.h" >&5 +echo "configure:3756: checking for libintl.h" >&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:3729: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3766: \"$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* @@ -3742,19 +3779,19 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:3746: checking for gettext in libc" >&5 +echo "configure:3783: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:3758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else @@ -3770,7 +3807,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1 if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:3774: checking for bindtextdomain in -lintl" >&5 +echo "configure:3811: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3778,7 +3815,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3805,19 +3842,19 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:3809: checking for gettext in libintl" >&5 +echo "configure:3846: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+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:3858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libintl=yes else @@ -3845,7 +3882,7 @@ EOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3849: checking for $ac_word" >&5 +echo "configure:3886: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3879,12 +3916,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3883: checking for $ac_func" >&5 +echo "configure:3920: 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:3948: \"$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 @@ -3934,7 +3971,7 @@ done # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3938: checking for $ac_word" >&5 +echo "configure:3975: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3970,7 +4007,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3974: checking for $ac_word" >&5 +echo "configure:4011: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4002,7 +4039,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -4042,7 +4079,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4046: checking for $ac_word" >&5 +echo "configure:4083: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4076,7 +4113,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4080: checking for $ac_word" >&5 +echo "configure:4117: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4112,7 +4149,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4116: checking for $ac_word" >&5 +echo "configure:4153: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4202,7 +4239,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:4206: checking for catalogs to be installed" >&5 +echo "configure:4243: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -4230,17 +4267,17 @@ echo "configure:4206: checking for catal if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:4234: checking for linux/version.h" >&5 +echo "configure:4271: checking for linux/version.h" >&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:4244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4281: \"$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* @@ -4318,7 +4355,7 @@ if test "x$cross_compiling" = "xno"; the EXEEXT_FOR_BUILD='$(EXEEXT)' else echo $ac_n "checking for build system executable suffix""... $ac_c" 1>&6 -echo "configure:4322: checking for build system executable suffix" >&5 +echo "configure:4359: checking for build system executable suffix" >&5 if eval "test \"`echo '$''{'bfd_cv_build_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4355,7 +4392,7 @@ fi # 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:4359: checking for a BSD compatible install" >&5 +echo "configure:4396: 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 @@ -4412,17 +4449,17 @@ for ac_hdr in string.h strings.h stdlib. do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4416: checking for $ac_hdr" >&5 +echo "configure:4453: 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:4426: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4463: \"$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* @@ -4585,7 +4622,8 @@ if test x${all_targets} = xfalse ; then # Include it just for ELF targets, since the SH5 bfd:s are ELF only. for t in $target $canon_targets; do case $t in - all | sh64-* | sh-*-*elf* | shl-*-*elf* | sh-*-linux* | shl-*-linux*) + all | sh64-* | sh-*-*elf* | shl-*-*elf* | shle-*-*elf* | \ + sh-*-linux* | shl-*-linux*) ta="$ta sh64-dis.lo sh64-opc.lo" archdefs="$archdefs -DINCLUDE_SHMEDIA" break;; @@ -4816,6 +4854,10 @@ s%@WARN_CFLAGS@%$WARN_CFLAGS%g s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g s%@MAINT@%$MAINT%g +s%@INSTALL_LIBBFD_TRUE@%$INSTALL_LIBBFD_TRUE%g +s%@INSTALL_LIBBFD_FALSE@%$INSTALL_LIBBFD_FALSE%g +s%@bfdlibdir@%$bfdlibdir%g +s%@bfdincludedir@%$bfdincludedir%g s%@CPP@%$CPP%g s%@ALLOCA@%$ALLOCA%g s%@USE_NLS@%$USE_NLS%g diff -uprN binutils-2.12.90.0.7/opcodes/configure.in binutils-2.12.90.0.9/opcodes/configure.in --- binutils-2.12.90.0.7/opcodes/configure.in Thu Mar 7 11:52:40 2002 +++ binutils-2.12.90.0.9/opcodes/configure.in Thu May 23 15:10:11 2002 @@ -71,13 +71,14 @@ if test -z "$target" ; then fi AM_MAINTAINER_MODE +AM_INSTALL_LIBBFD AC_EXEEXT # host-specific stuff: AC_PROG_CC -ALL_LINGUAS="fr sv tr es da de" +ALL_LINGUAS="fr sv tr es da de id" CY_GNU_GETTEXT . ${srcdir}/../bfd/configure.host @@ -215,7 +216,8 @@ if test x${all_targets} = xfalse ; then # Include it just for ELF targets, since the SH5 bfd:s are ELF only. for t in $target $canon_targets; do case $t in - all | sh64-* | sh-*-*elf* | shl-*-*elf* | sh-*-linux* | shl-*-linux*) + all | sh64-* | sh-*-*elf* | shl-*-*elf* | shle-*-*elf* | \ + sh-*-linux* | shl-*-linux*) ta="$ta sh64-dis.lo sh64-opc.lo" archdefs="$archdefs -DINCLUDE_SHMEDIA" break;; diff -uprN binutils-2.12.90.0.7/opcodes/disassemble.c binutils-2.12.90.0.9/opcodes/disassemble.c --- binutils-2.12.90.0.7/opcodes/disassemble.c Thu Mar 7 11:52:40 2002 +++ binutils-2.12.90.0.9/opcodes/disassemble.c Thu May 23 15:10:11 2002 @@ -278,20 +278,7 @@ disassembler (abfd) #endif #ifdef ARCH_sh case bfd_arch_sh: -#ifdef INCLUDE_SHMEDIA - if (bfd_get_mach (abfd) == bfd_mach_sh5) - { - if (bfd_big_endian (abfd)) - disassemble = print_insn_sh64; - else - disassemble = print_insn_sh64l; - break; - } -#endif - if (bfd_big_endian (abfd)) - disassemble = print_insn_sh; - else - disassemble = print_insn_shl; + disassemble = print_insn_sh; break; #endif #ifdef ARCH_sparc diff -uprN binutils-2.12.90.0.7/opcodes/fr30-asm.c binutils-2.12.90.0.9/opcodes/fr30-asm.c --- binutils-2.12.90.0.7/opcodes/fr30-asm.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/fr30-asm.c Thu May 23 15:10:11 2002 @@ -571,7 +571,7 @@ parse_insn_normal (cd, insn, strp, field } /* We have an operand of some sort. */ - errmsg = fr30_cgen_parse_operand (cd, CGEN_SYNTAX_FIELD (*syn), + errmsg = cd->parse_operand (cd, CGEN_SYNTAX_FIELD (*syn), &str, fields); if (errmsg) return errmsg; diff -uprN binutils-2.12.90.0.7/opcodes/fr30-desc.c binutils-2.12.90.0.9/opcodes/fr30-desc.c --- binutils-2.12.90.0.7/opcodes/fr30-desc.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/fr30-desc.c Thu May 23 15:10:11 2002 @@ -1747,10 +1747,43 @@ void fr30_cgen_cpu_close (cd) CGEN_CPU_DESC cd; { + unsigned int i; + CGEN_INSN *insns; + + if (cd->macro_insn_table.init_entries) + { + insns = cd->macro_insn_table.init_entries; + for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns) + { + if (CGEN_INSN_RX ((insns))) + regfree(CGEN_INSN_RX (insns)); + } + } + + if (cd->insn_table.init_entries) + { + insns = cd->insn_table.init_entries; + for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns) + { + if (CGEN_INSN_RX (insns)) + regfree(CGEN_INSN_RX (insns)); + } + } + + + + if (cd->macro_insn_table.init_entries) + free ((CGEN_INSN *) cd->macro_insn_table.init_entries); + if (cd->insn_table.init_entries) free ((CGEN_INSN *) cd->insn_table.init_entries); + if (cd->hw_table.entries) free ((CGEN_HW_ENTRY *) cd->hw_table.entries); + + if (cd->operand_table.entries) + free ((CGEN_HW_ENTRY *) cd->operand_table.entries); + free (cd); } diff -uprN binutils-2.12.90.0.7/opcodes/fr30-dis.c binutils-2.12.90.0.9/opcodes/fr30-dis.c --- binutils-2.12.90.0.7/opcodes/fr30-dis.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/fr30-dis.c Thu May 23 15:10:11 2002 @@ -632,11 +632,21 @@ default_print_insn (cd, pc, info) Print one instruction from PC on INFO->STREAM. Return the size of the instruction (in bytes). */ +typedef struct cpu_desc_list { + struct cpu_desc_list *next; + int isa; + int mach; + int endian; + CGEN_CPU_DESC cd; +} cpu_desc_list; + int print_insn_fr30 (pc, info) bfd_vma pc; disassemble_info *info; { + static cpu_desc_list *cd_list = 0; + cpu_desc_list *cl = 0; static CGEN_CPU_DESC cd = 0; static int prev_isa; static int prev_mach; @@ -667,18 +677,27 @@ print_insn_fr30 (pc, info) #ifdef CGEN_COMPUTE_ISA isa = CGEN_COMPUTE_ISA (info); #else - isa = 0; + isa = info->insn_sets; #endif - /* If we've switched cpu's, close the current table and open a new one. */ + /* If we've switched cpu's, try to find a handle we've used before */ if (cd && (isa != prev_isa || mach != prev_mach || endian != prev_endian)) { - fr30_cgen_cpu_close (cd); cd = 0; - } + for (cl = cd_list; cl; cl = cl->next) + { + if (cl->isa == isa && + cl->mach == mach && + cl->endian == endian) + { + cd = cl->cd; + break; + } + } + } /* If we haven't initialized yet, initialize the opcode table. */ if (! cd) @@ -699,6 +718,16 @@ print_insn_fr30 (pc, info) CGEN_CPU_OPEN_END); if (!cd) abort (); + + /* save this away for future reference */ + cl = xmalloc (sizeof (struct cpu_desc_list)); + cl->cd = cd; + cl->isa = isa; + cl->mach = mach; + cl->endian = endian; + cl->next = cd_list; + cd_list = cl; + fr30_cgen_init_dis (cd); } diff -uprN binutils-2.12.90.0.7/opcodes/m32r-asm.c binutils-2.12.90.0.9/opcodes/m32r-asm.c --- binutils-2.12.90.0.7/opcodes/m32r-asm.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/m32r-asm.c Thu May 23 15:10:11 2002 @@ -573,7 +573,7 @@ parse_insn_normal (cd, insn, strp, field } /* We have an operand of some sort. */ - errmsg = m32r_cgen_parse_operand (cd, CGEN_SYNTAX_FIELD (*syn), + errmsg = cd->parse_operand (cd, CGEN_SYNTAX_FIELD (*syn), &str, fields); if (errmsg) return errmsg; diff -uprN binutils-2.12.90.0.7/opcodes/m32r-desc.c binutils-2.12.90.0.9/opcodes/m32r-desc.c --- binutils-2.12.90.0.7/opcodes/m32r-desc.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/m32r-desc.c Thu May 23 15:10:11 2002 @@ -1441,10 +1441,43 @@ void m32r_cgen_cpu_close (cd) CGEN_CPU_DESC cd; { + unsigned int i; + CGEN_INSN *insns; + + if (cd->macro_insn_table.init_entries) + { + insns = cd->macro_insn_table.init_entries; + for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns) + { + if (CGEN_INSN_RX ((insns))) + regfree(CGEN_INSN_RX (insns)); + } + } + + if (cd->insn_table.init_entries) + { + insns = cd->insn_table.init_entries; + for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns) + { + if (CGEN_INSN_RX (insns)) + regfree(CGEN_INSN_RX (insns)); + } + } + + + + if (cd->macro_insn_table.init_entries) + free ((CGEN_INSN *) cd->macro_insn_table.init_entries); + if (cd->insn_table.init_entries) free ((CGEN_INSN *) cd->insn_table.init_entries); + if (cd->hw_table.entries) free ((CGEN_HW_ENTRY *) cd->hw_table.entries); + + if (cd->operand_table.entries) + free ((CGEN_HW_ENTRY *) cd->operand_table.entries); + free (cd); } diff -uprN binutils-2.12.90.0.7/opcodes/m32r-dis.c binutils-2.12.90.0.9/opcodes/m32r-dis.c --- binutils-2.12.90.0.7/opcodes/m32r-dis.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/m32r-dis.c Thu May 23 15:10:11 2002 @@ -563,11 +563,21 @@ default_print_insn (cd, pc, info) Print one instruction from PC on INFO->STREAM. Return the size of the instruction (in bytes). */ +typedef struct cpu_desc_list { + struct cpu_desc_list *next; + int isa; + int mach; + int endian; + CGEN_CPU_DESC cd; +} cpu_desc_list; + int print_insn_m32r (pc, info) bfd_vma pc; disassemble_info *info; { + static cpu_desc_list *cd_list = 0; + cpu_desc_list *cl = 0; static CGEN_CPU_DESC cd = 0; static int prev_isa; static int prev_mach; @@ -598,18 +608,27 @@ print_insn_m32r (pc, info) #ifdef CGEN_COMPUTE_ISA isa = CGEN_COMPUTE_ISA (info); #else - isa = 0; + isa = info->insn_sets; #endif - /* If we've switched cpu's, close the current table and open a new one. */ + /* If we've switched cpu's, try to find a handle we've used before */ if (cd && (isa != prev_isa || mach != prev_mach || endian != prev_endian)) { - m32r_cgen_cpu_close (cd); cd = 0; - } + for (cl = cd_list; cl; cl = cl->next) + { + if (cl->isa == isa && + cl->mach == mach && + cl->endian == endian) + { + cd = cl->cd; + break; + } + } + } /* If we haven't initialized yet, initialize the opcode table. */ if (! cd) @@ -630,6 +649,16 @@ print_insn_m32r (pc, info) CGEN_CPU_OPEN_END); if (!cd) abort (); + + /* save this away for future reference */ + cl = xmalloc (sizeof (struct cpu_desc_list)); + cl->cd = cd; + cl->isa = isa; + cl->mach = mach; + cl->endian = endian; + cl->next = cd_list; + cd_list = cl; + m32r_cgen_init_dis (cd); } diff -uprN binutils-2.12.90.0.7/opcodes/m68k-dis.c binutils-2.12.90.0.9/opcodes/m68k-dis.c --- binutils-2.12.90.0.7/opcodes/m68k-dis.c Thu Jul 26 18:02:55 2001 +++ binutils-2.12.90.0.9/opcodes/m68k-dis.c Sun May 26 09:57:13 2002 @@ -1,6 +1,6 @@ /* Print Motorola 68k instructions. Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2001 + 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify @@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suit #include "sysdep.h" #include "dis-asm.h" #include "floatformat.h" -#include +#include "libiberty.h" #include "opintl.h" #include "opcode/m68k.h" diff -uprN binutils-2.12.90.0.7/opcodes/mips-dis.c binutils-2.12.90.0.9/opcodes/mips-dis.c --- binutils-2.12.90.0.7/opcodes/mips-dis.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/opcodes/mips-dis.c Thu May 23 15:10:11 2002 @@ -407,10 +407,8 @@ is_newabi (header) if (header->e_ident[EI_CLASS] == ELFCLASS64) return 1; - /* If a 32-bit ELF file, N32, EABI32, and EABI64 are new-style ABIs. */ - if ((header->e_flags & EF_MIPS_ABI2) != 0 - || (header->e_flags & EF_MIPS_ABI) == E_MIPS_ABI_EABI32 - || (header->e_flags & EF_MIPS_ABI) == E_MIPS_ABI_EABI64) + /* If a 32-bit ELF file, n32 is a new-style ABI. */ + if ((header->e_flags & EF_MIPS_ABI2) != 0) return 1; return 0; diff -uprN binutils-2.12.90.0.7/opcodes/mips-opc.c binutils-2.12.90.0.9/opcodes/mips-opc.c --- binutils-2.12.90.0.7/opcodes/mips-opc.c Fri Mar 22 14:06:16 2002 +++ binutils-2.12.90.0.9/opcodes/mips-opc.c Thu May 23 15:10:11 2002 @@ -492,6 +492,10 @@ const struct mips_opcode mips_builtin_op {"dremu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO, I3 }, {"dremu", "d,v,t", 3, (int) M_DREMU_3, INSN_MACRO, I3 }, {"dremu", "d,v,I", 3, (int) M_DREMU_3I, INSN_MACRO, I3 }, +{"drol", "d,v,t", 0, (int) M_DROL, INSN_MACRO, I3 }, +{"drol", "d,v,I", 0, (int) M_DROL_I, INSN_MACRO, I3 }, +{"dror", "d,v,t", 0, (int) M_DROR, INSN_MACRO, I3 }, +{"dror", "d,v,I", 0, (int) M_DROR_I, INSN_MACRO, I3 }, {"dsllv", "d,t,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s, I3 }, {"dsll32", "d,w,<", 0x0000003c, 0xffe0003f, WR_d|RD_t, I3 }, {"dsll", "d,w,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s, I3 }, /* dsllv */ diff -uprN binutils-2.12.90.0.7/opcodes/openrisc-asm.c binutils-2.12.90.0.9/opcodes/openrisc-asm.c --- binutils-2.12.90.0.7/opcodes/openrisc-asm.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/openrisc-asm.c Thu May 23 15:10:11 2002 @@ -492,7 +492,7 @@ parse_insn_normal (cd, insn, strp, field } /* We have an operand of some sort. */ - errmsg = openrisc_cgen_parse_operand (cd, CGEN_SYNTAX_FIELD (*syn), + errmsg = cd->parse_operand (cd, CGEN_SYNTAX_FIELD (*syn), &str, fields); if (errmsg) return errmsg; diff -uprN binutils-2.12.90.0.7/opcodes/openrisc-desc.c binutils-2.12.90.0.9/opcodes/openrisc-desc.c --- binutils-2.12.90.0.7/opcodes/openrisc-desc.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/openrisc-desc.c Thu May 23 15:10:11 2002 @@ -1017,10 +1017,43 @@ void openrisc_cgen_cpu_close (cd) CGEN_CPU_DESC cd; { + unsigned int i; + CGEN_INSN *insns; + + if (cd->macro_insn_table.init_entries) + { + insns = cd->macro_insn_table.init_entries; + for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns) + { + if (CGEN_INSN_RX ((insns))) + regfree(CGEN_INSN_RX (insns)); + } + } + + if (cd->insn_table.init_entries) + { + insns = cd->insn_table.init_entries; + for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns) + { + if (CGEN_INSN_RX (insns)) + regfree(CGEN_INSN_RX (insns)); + } + } + + + + if (cd->macro_insn_table.init_entries) + free ((CGEN_INSN *) cd->macro_insn_table.init_entries); + if (cd->insn_table.init_entries) free ((CGEN_INSN *) cd->insn_table.init_entries); + if (cd->hw_table.entries) free ((CGEN_HW_ENTRY *) cd->hw_table.entries); + + if (cd->operand_table.entries) + free ((CGEN_HW_ENTRY *) cd->operand_table.entries); + free (cd); } diff -uprN binutils-2.12.90.0.7/opcodes/openrisc-dis.c binutils-2.12.90.0.9/opcodes/openrisc-dis.c --- binutils-2.12.90.0.7/opcodes/openrisc-dis.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/openrisc-dis.c Thu May 23 15:10:11 2002 @@ -450,11 +450,21 @@ default_print_insn (cd, pc, info) Print one instruction from PC on INFO->STREAM. Return the size of the instruction (in bytes). */ +typedef struct cpu_desc_list { + struct cpu_desc_list *next; + int isa; + int mach; + int endian; + CGEN_CPU_DESC cd; +} cpu_desc_list; + int print_insn_openrisc (pc, info) bfd_vma pc; disassemble_info *info; { + static cpu_desc_list *cd_list = 0; + cpu_desc_list *cl = 0; static CGEN_CPU_DESC cd = 0; static int prev_isa; static int prev_mach; @@ -485,18 +495,27 @@ print_insn_openrisc (pc, info) #ifdef CGEN_COMPUTE_ISA isa = CGEN_COMPUTE_ISA (info); #else - isa = 0; + isa = info->insn_sets; #endif - /* If we've switched cpu's, close the current table and open a new one. */ + /* If we've switched cpu's, try to find a handle we've used before */ if (cd && (isa != prev_isa || mach != prev_mach || endian != prev_endian)) { - openrisc_cgen_cpu_close (cd); cd = 0; - } + for (cl = cd_list; cl; cl = cl->next) + { + if (cl->isa == isa && + cl->mach == mach && + cl->endian == endian) + { + cd = cl->cd; + break; + } + } + } /* If we haven't initialized yet, initialize the opcode table. */ if (! cd) @@ -517,6 +536,16 @@ print_insn_openrisc (pc, info) CGEN_CPU_OPEN_END); if (!cd) abort (); + + /* save this away for future reference */ + cl = xmalloc (sizeof (struct cpu_desc_list)); + cl->cd = cd; + cl->isa = isa; + cl->mach = mach; + cl->endian = endian; + cl->next = cd_list; + cd_list = cl; + openrisc_cgen_init_dis (cd); } diff -uprN binutils-2.12.90.0.7/opcodes/po/id.po binutils-2.12.90.0.9/opcodes/po/id.po --- binutils-2.12.90.0.7/opcodes/po/id.po Wed Dec 31 16:00:00 1969 +++ binutils-2.12.90.0.9/opcodes/po/id.po Thu May 23 15:10:11 2002 @@ -0,0 +1,395 @@ +# opcodes 2.12-pre020121 (Indonesian) +# Copyright (C) 2002 Free Software Foundation, Inc. +# Tedi Heriyanto , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: opcodes 2.12-pre020121\n" +"POT-Creation-Date: 2002-01-17 13:58+0000\n" +"PO-Revision-Date: 2002-04-02 08:20GMT+0700\n" +"Last-Translator: Tedi Heriyanto \n" +"Language-Team: Indonesian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.9.5\n" + +#: alpha-opc.c:335 +msgid "branch operand unaligned" +msgstr "operand cabang tidak rata" + +#: alpha-opc.c:358 alpha-opc.c:380 +msgid "jump hint unaligned" +msgstr "petunjuk lompat tidak rata" + +#: arc-dis.c:52 +msgid "Illegal limm reference in last instruction!\n" +msgstr "referensi limm ilegal dalam instruksi terakhir!\n" + +#: arm-dis.c:509 +msgid "" +msgstr "" + +#: arm-dis.c:1019 +#, c-format +msgid "Unrecognised register name set: %s\n" +msgstr "Set nama register tidak dikenal: %s\n" + +#: arm-dis.c:1026 +#, c-format +msgid "Unrecognised disassembler option: %s\n" +msgstr "Option disasembler tidak dikenal: %s\n" + +#: arm-dis.c:1198 +msgid "" +"\n" +"The following ARM specific disassembler options are supported for use with\n" +"the -M switch:\n" +msgstr "" +"\n" +"Option disablembler khusus ARM berikut ini didukung untuk digunakan dengan\n" +"switch -M:\n" + +#: avr-dis.c:118 avr-dis.c:128 +msgid "undefined" +msgstr "tidak didefinisikan" + +#: avr-dis.c:180 +msgid "Internal disassembler error" +msgstr "Kesalahan disasembler internal" + +#: avr-dis.c:228 +#, c-format +msgid "unknown constraint `%c'" +msgstr "konstrain tidak dikenal `%c'" + +#: cgen-asm.c:346 fr30-ibld.c:195 m32r-ibld.c:195 openrisc-ibld.c:195 +#, c-format +msgid "operand out of range (%ld not between %ld and %ld)" +msgstr "operand keluar batas (%ld tidak antara %ld dan %ld)" + +#: cgen-asm.c:367 +#, c-format +msgid "operand out of range (%lu not between %lu and %lu)" +msgstr "operand keluar batas (%lu tidak antara %lu dan %lu)" + +#: d30v-dis.c:312 +#, c-format +msgid "" +msgstr "" + +#. Can't happen. +#: dis-buf.c:57 +#, c-format +msgid "Unknown error %d\n" +msgstr "Kesalahan tidak dikenal %d\n" + +#: dis-buf.c:62 +#, c-format +msgid "Address 0x%x is out of bounds.\n" +msgstr "Alamat 0x%x di luar batas.\n" + +#: fr30-asm.c:324 m32r-asm.c:326 openrisc-asm.c:245 +#, c-format +msgid "Unrecognized field %d while parsing.\n" +msgstr "Field tidak dikenal %d saat parsing.\n" + +#: fr30-asm.c:374 m32r-asm.c:376 openrisc-asm.c:295 +msgid "missing mnemonic in syntax string" +msgstr "mnemonik hilang dalam string sintaks" + +#. We couldn't parse it. +#: fr30-asm.c:510 fr30-asm.c:514 fr30-asm.c:601 fr30-asm.c:703 m32r-asm.c:512 m32r-asm.c:516 m32r-asm.c:603 m32r-asm.c:705 openrisc-asm.c:431 openrisc-asm.c:435 openrisc-asm.c:522 openrisc-asm.c:624 +msgid "unrecognized instruction" +msgstr "instruksti tidak dikenal" + +#: fr30-asm.c:557 m32r-asm.c:559 openrisc-asm.c:478 +#, c-format +msgid "syntax error (expected char `%c', found `%c')" +msgstr "kesalahan sintaks (diharapkan karakter `%c', ditemukan `%c')" + +#: fr30-asm.c:567 m32r-asm.c:569 openrisc-asm.c:488 +#, c-format +msgid "syntax error (expected char `%c', found end of instruction)" +msgstr "kesalahan sintaks (diharapkan karakter `%c', ditemukan akhir instruksi)" + +#: fr30-asm.c:595 m32r-asm.c:597 openrisc-asm.c:516 +msgid "junk at end of line" +msgstr "sampah di akhir baris" + +#: fr30-asm.c:702 m32r-asm.c:704 openrisc-asm.c:623 +msgid "unrecognized form of instruction" +msgstr "bentuk instruksi tidak dikenal" + +#: fr30-asm.c:714 m32r-asm.c:716 openrisc-asm.c:635 +#, c-format +msgid "bad instruction `%.50s...'" +msgstr "instruksi buruk `%.50s...'" + +#: fr30-asm.c:717 m32r-asm.c:719 openrisc-asm.c:638 +#, c-format +msgid "bad instruction `%.50s'" +msgstr "instruksi buruk `%.50s'" + +#. Default text to print if an instruction isn't recognized. +#: fr30-dis.c:39 m32r-dis.c:39 mmix-dis.c:282 openrisc-dis.c:39 +msgid "*unknown*" +msgstr "*tidak dikenal*" + +#: fr30-dis.c:319 m32r-dis.c:250 openrisc-dis.c:137 +#, c-format +msgid "Unrecognized field %d while printing insn.\n" +msgstr "Field tidak dikenal %d saat mencetak insn.\n" + +#: fr30-ibld.c:166 m32r-ibld.c:166 openrisc-ibld.c:166 +#, c-format +msgid "operand out of range (%ld not between %ld and %lu)" +msgstr "operand di luar batas (%ld tidak antara %ld dan %lu)" + +#: fr30-ibld.c:179 m32r-ibld.c:179 openrisc-ibld.c:179 +#, c-format +msgid "operand out of range (%lu not between 0 and %lu)" +msgstr "operand di luar batas (%lu tidak antara 0 dan %lu)" + +#: fr30-ibld.c:731 m32r-ibld.c:660 openrisc-ibld.c:634 +#, c-format +msgid "Unrecognized field %d while building insn.\n" +msgstr "Field tidak dikenal %d saat membuild insn.\n" + +#: fr30-ibld.c:939 m32r-ibld.c:794 openrisc-ibld.c:737 +#, c-format +msgid "Unrecognized field %d while decoding insn.\n" +msgstr "Field tidak dikenal %d saat mendekode insn.\n" + +#: fr30-ibld.c:1088 m32r-ibld.c:904 openrisc-ibld.c:817 +#, c-format +msgid "Unrecognized field %d while getting int operand.\n" +msgstr "Field tidak dikenal %d saat memperoleh operand int.\n" + +#: fr30-ibld.c:1217 m32r-ibld.c:994 openrisc-ibld.c:877 +#, c-format +msgid "Unrecognized field %d while getting vma operand.\n" +msgstr "Field tidak dikenal %d saat memperoleh operand vma.\n" + +#: fr30-ibld.c:1351 m32r-ibld.c:1092 openrisc-ibld.c:946 +#, c-format +msgid "Unrecognized field %d while setting int operand.\n" +msgstr "Field tidak dikenal %d saat menset operand int.\n" + +#: fr30-ibld.c:1473 m32r-ibld.c:1178 openrisc-ibld.c:1003 +#, c-format +msgid "Unrecognized field %d while setting vma operand.\n" +msgstr "Field tidak dikenal %d saat menset operand vma.\n" + +#: h8300-dis.c:384 +#, c-format +msgid "Hmmmm %x" +msgstr "Hmmmm %x" + +#: h8300-dis.c:395 +#, c-format +msgid "Don't understand %x \n" +msgstr "Tidak mengerti %x \n" + +#: h8500-dis.c:143 +#, c-format +msgid "can't cope with insert %d\n" +msgstr "tidak dapat menangani insert %d\n" + +#. Couldn't understand anything. +#: h8500-dis.c:350 +#, c-format +msgid "%02x\t\t*unknown*" +msgstr "%02x\t\t*tidak dikenal*" + +#: i386-dis.c:1649 +msgid "" +msgstr "" + +#: m10200-dis.c:199 +#, c-format +msgid "unknown\t0x%02x" +msgstr "tidak dikenal\t0x%02x" + +#: m10200-dis.c:339 +#, c-format +msgid "unknown\t0x%04lx" +msgstr "tidak dikenal\t0x%04lx" + +#: m10300-dis.c:685 +#, c-format +msgid "unknown\t0x%04x" +msgstr "tidak dikenal\t0x%04x" + +#: m68k-dis.c:429 +#, c-format +msgid "\n" +msgstr "\n" + +#: m68k-dis.c:1007 +#, c-format +msgid "" +msgstr "" + +#: m88k-dis.c:255 +#, c-format +msgid "# " +msgstr "# " + +#: mips-dis.c:290 +#, c-format +msgid "# internal error, undefined modifier(%c)" +msgstr "# kesalahan internal, modifier tidak didefinisikan(%c)" + +#: mips-dis.c:1154 +#, c-format +msgid "# internal disassembler error, unrecognised modifier (%c)" +msgstr "# kesalahan internal disasembler, modifier tidak dikenal (%c)" + +#: mmix-dis.c:34 +#, c-format +msgid "Bad case %d (%s) in %s:%d\n" +msgstr "Case buruk %d (%s) dalam %s:%d\n" + +#: mmix-dis.c:44 +#, c-format +msgid "Internal: Non-debugged code (test-case missing): %s:%d" +msgstr "Internal: Kode belum didebug (tidak ada test-case): %s:%d" + +#: mmix-dis.c:53 +msgid "(unknown)" +msgstr "(tidak dikenal)" + +#: mmix-dis.c:517 +#, c-format +msgid "*unknown operands type: %d*" +msgstr "*tipe operand tidak dikenal: %d*" + +#. I and Z are output operands and can`t be immediate +#. * A is an address and we can`t have the address of +#. * an immediate either. We don't know how much to increase +#. * aoffsetp by since whatever generated this is broken +#. * anyway! +#. +#: ns32k-dis.c:628 +msgid "$" +msgstr "$" + +#: ppc-opc.c:765 ppc-opc.c:798 +msgid "invalid conditional option" +msgstr "option kondisional tidak valid" + +#: ppc-opc.c:800 +msgid "attempt to set y bit when using + or - modifier" +msgstr "berusaha menset bit y saat menggunakan modifier + atau -" + +#: ppc-opc.c:832 ppc-opc.c:884 +msgid "offset not a multiple of 4" +msgstr "offset bukan kelipatan 4" + +#: ppc-opc.c:857 +msgid "offset not between -2048 and 2047" +msgstr "offset tidak berada antara -2048 dan 2047" + +#: ppc-opc.c:882 +msgid "offset not between -8192 and 8191" +msgstr "offset tidak berada antara -8192 dan 8191" + +#: ppc-opc.c:910 +msgid "ignoring least significant bits in branch offset" +msgstr "mengabaikan least significant bit dalam offset cabang" + +#: ppc-opc.c:944 ppc-opc.c:981 +msgid "illegal bitmask" +msgstr "bitmask ilegal" + +#: ppc-opc.c:1054 +msgid "value out of range" +msgstr "nilai di luar batas" + +#: ppc-opc.c:1130 +msgid "index register in load range" +msgstr "register indeks dalam daerah pemuatan" + +#: ppc-opc.c:1146 +msgid "invalid register operand when updating" +msgstr "operand register tidak valid saat mengupdate" + +#. Mark as non-valid instruction +#: sparc-dis.c:749 +msgid "unknown" +msgstr "tidak dikenal" + +#: sparc-dis.c:824 +#, c-format +msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n" +msgstr "Kesalahan internal: sparc-opcode.h buruk: \"%s\", %#.8lx, %#.8lx\n" + +#: sparc-dis.c:835 +#, c-format +msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n" +msgstr "Kesalahan internal: sparc-opcode.h buruk: \"%s\", %#.8lx, %#.8lx\n" + +#: sparc-dis.c:884 +#, c-format +msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n" +msgstr "Kesalahan internal: sparc-opcode.h buruk: \"%s\" == \"%s\"\n" + +#: v850-dis.c:224 +#, c-format +msgid "unknown operand shift: %x\n" +msgstr "shift operand tidak dikenal: %x\n" + +#: v850-dis.c:236 +#, c-format +msgid "unknown pop reg: %d\n" +msgstr "reg pop tidak dikenal: %d\n" + +#. The functions used to insert and extract complicated operands. +#. Note: There is a conspiracy between these functions and +#. v850_insert_operand() in gas/config/tc-v850.c. Error messages +#. containing the string 'out of range' will be ignored unless a +#. specific command line option is given to GAS. +#: v850-opc.c:68 +msgid "displacement value is not in range and is not aligned" +msgstr "nilai displacement tidak dalam jangkauan dan tidak rata" + +#: v850-opc.c:69 +msgid "displacement value is out of range" +msgstr "nilai displacement di luar batas" + +#: v850-opc.c:70 +msgid "displacement value is not aligned" +msgstr "nilai displacement tidak rata" + +#: v850-opc.c:72 +msgid "immediate value is out of range" +msgstr "nilai langsung di luar batas" + +#: v850-opc.c:83 +msgid "branch value not in range and to odd offset" +msgstr "nilai cabang tidak dalam jangkauan" + +#: v850-opc.c:85 v850-opc.c:117 +msgid "branch value out of range" +msgstr "nilai cabang di luar jangkauan" + +#: v850-opc.c:88 v850-opc.c:120 +msgid "branch to odd offset" +msgstr "cabang offset ganjil" + +#: v850-opc.c:115 +msgid "branch value not in range and to an odd offset" +msgstr "nilai cabang di luar jangkauan dan offset ganjil" + +#: v850-opc.c:346 +msgid "invalid register for stack adjustment" +msgstr "register tidak valid untuk penyesuaian stack" + +#: v850-opc.c:370 +msgid "immediate value not in range and not even" +msgstr "nilai langsung tidak dalam jangkauan dan tidak genap" + +#: v850-opc.c:375 +msgid "immediate value must be even" +msgstr "nilai langsung harus genap" diff -uprN binutils-2.12.90.0.7/opcodes/ppc-opc.c binutils-2.12.90.0.9/opcodes/ppc-opc.c --- binutils-2.12.90.0.7/opcodes/ppc-opc.c Sun Apr 21 01:09:27 2002 +++ binutils-2.12.90.0.9/opcodes/ppc-opc.c Thu May 23 15:10:11 2002 @@ -3065,6 +3065,8 @@ const struct powerpc_opcode powerpc_opco { "addo.", XO(31,266,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, { "caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "tlbiel", X(31,274), XRTRA_MASK, POWER4, { RB } }, + { "mfapidi", X(31,275), X_MASK, BOOKE, { RT, RA } }, { "lscbx", XRC(31,277,0), X_MASK, M601, { RT, RA, RB } }, @@ -3688,7 +3690,9 @@ const struct powerpc_opcode powerpc_opco { "tlbsx.", XRC(31,914,1), X_MASK, PPC403, { RT, RA, RB } }, { "tlbsx", XRC(31,914,0), X_MASK, BOOKE, { RA, RB } }, +{ "tlbsx.", XRC(31,914,1), X_MASK, BOOKE, { RA, RB } }, { "tlbsxe", XRC(31,915,0), X_MASK, BOOKE, { RA, RB } }, +{ "tlbsxe.", XRC(31,915,1), X_MASK, BOOKE, { RA, RB } }, { "slbmfee", X(31,915), XRA_MASK, PPC64, { RT, RB } }, diff -uprN binutils-2.12.90.0.7/opcodes/sh-dis.c binutils-2.12.90.0.9/opcodes/sh-dis.c --- binutils-2.12.90.0.7/opcodes/sh-dis.c Thu Mar 7 11:52:40 2002 +++ binutils-2.12.90.0.9/opcodes/sh-dis.c Thu May 23 15:10:11 2002 @@ -24,14 +24,11 @@ Foundation, Inc., 59 Temple Place - Suit #include "sh-opc.h" #include "dis-asm.h" -#define LITTLE_BIT 2 - static void print_movxy PARAMS ((sh_opcode_info *, int, int, fprintf_ftype, void *)); static void print_insn_ddt PARAMS ((int, struct disassemble_info *)); static void print_dsp_reg PARAMS ((int, fprintf_ftype, void *)); static void print_insn_ppi PARAMS ((int, struct disassemble_info *)); -static int print_insn_shx PARAMS ((bfd_vma, struct disassemble_info *)); static void print_movxy (op, rn, rm, fprintf_fn, stream) @@ -286,8 +283,8 @@ print_insn_ppi (field_b, info) fprintf_fn (stream, ".word 0x%x", field_b); } -static int -print_insn_shx (memaddr, info) +int +print_insn_sh (memaddr, info) bfd_vma memaddr; struct disassemble_info *info; { @@ -304,6 +301,12 @@ print_insn_shx (memaddr, info) { case bfd_mach_sh: target_arch = arch_sh1; + /* SH coff object files lack information about the machine type, so + we end up with bfd_mach_sh unless it was set explicitly (which + could have happended if this is a call from gdb or the simulator.) */ + if (info->symbols + && bfd_asymbol_flavour(*info->symbols) == bfd_target_coff_flavour) + target_arch = arch_sh4; break; case bfd_mach_sh2: target_arch = arch_sh2; @@ -324,6 +327,11 @@ print_insn_shx (memaddr, info) target_arch = arch_sh4; break; case bfd_mach_sh5: +#ifdef INCLUDE_SHMEDIA + status = print_insn_sh64 (memaddr, info); + if (status != -2) + return status; +#endif /* When we get here for sh64, it's because we want to disassemble SHcompact, i.e. arch_sh4. */ target_arch = arch_sh4; @@ -340,7 +348,7 @@ print_insn_shx (memaddr, info) return -1; } - if (info->flags & LITTLE_BIT) + if (info->endian == BFD_ENDIAN_LITTLE) { nibs[0] = (insn[1] >> 4) & 0xf; nibs[1] = insn[1] & 0xf; @@ -371,7 +379,7 @@ print_insn_shx (memaddr, info) return -1; } - if (info->flags & LITTLE_BIT) + if (info->endian == BFD_ENDIAN_LITTLE) field_b = insn[1] << 8 | insn[0]; else field_b = insn[0] << 8 | insn[1]; @@ -677,7 +685,7 @@ print_insn_shx (memaddr, info) { info->flags |= 1; fprintf_fn (stream, "\t(slot "); - print_insn_shx (memaddr + 2, info); + print_insn_sh (memaddr + 2, info); info->flags &= ~1; fprintf_fn (stream, ")"); return 4; @@ -700,14 +708,14 @@ print_insn_shx (memaddr, info) if (size == 2) { - if ((info->flags & LITTLE_BIT) != 0) + if (info->endian == BFD_ENDIAN_LITTLE) val = bfd_getl16 (bytes); else val = bfd_getb16 (bytes); } else { - if ((info->flags & LITTLE_BIT) != 0) + if (info->endian == BFD_ENDIAN_LITTLE) val = bfd_getl32 (bytes); else val = bfd_getb32 (bytes); @@ -724,27 +732,3 @@ print_insn_shx (memaddr, info) fprintf_fn (stream, ".word 0x%x%x%x%x", nibs[0], nibs[1], nibs[2], nibs[3]); return 2; } - -int -print_insn_shl (memaddr, info) - bfd_vma memaddr; - struct disassemble_info *info; -{ - int r; - - info->flags = LITTLE_BIT; - r = print_insn_shx (memaddr, info); - return r; -} - -int -print_insn_sh (memaddr, info) - bfd_vma memaddr; - struct disassemble_info *info; -{ - int r; - - info->flags = 0; - r = print_insn_shx (memaddr, info); - return r; -} diff -uprN binutils-2.12.90.0.7/opcodes/sh64-dis.c binutils-2.12.90.0.9/opcodes/sh64-dis.c --- binutils-2.12.90.0.7/opcodes/sh64-dis.c Thu Mar 7 11:52:40 2002 +++ binutils-2.12.90.0.9/opcodes/sh64-dis.c Thu May 23 15:10:11 2002 @@ -55,10 +55,6 @@ static unsigned long *shmedia_opcode_mas static void initialize_shmedia_opcode_mask_table PARAMS ((void)); static int print_insn_shmedia PARAMS ((bfd_vma, disassemble_info *)); -static int print_insn_sh64x - PARAMS ((bfd_vma, disassemble_info *, - int (*) PARAMS ((bfd_vma, struct disassemble_info *)), - enum bfd_endian)); static const char *creg_name PARAMS ((int)); static boolean init_sh64_disasm_info PARAMS ((struct disassemble_info *)); static enum sh64_elf_cr_type sh64_get_contents_type_disasm @@ -555,15 +551,15 @@ print_insn_sh64x_media (memaddr, info) return print_insn_shmedia (memaddr, info); } -/* Main entry to disassemble SHcompact or SHmedia insns. */ +/* Main entry to disassemble SHmedia insns. + If we see an SHcompact instruction, return -2. */ -static int -print_insn_sh64x (memaddr, info, pfun_compact, endian) +int +print_insn_sh64 (memaddr, info) bfd_vma memaddr; struct disassemble_info *info; - int (*pfun_compact) PARAMS ((bfd_vma, struct disassemble_info *)); - enum bfd_endian endian; { + enum bfd_endian endian = info->endian; enum sh64_elf_cr_type cr_type; if (info->private_data == NULL && ! init_sh64_disasm_info (info)) @@ -575,6 +571,10 @@ print_insn_sh64x (memaddr, info, pfun_co int length = 4 - (memaddr % 4); info->display_endian = endian; + /* If we got an uneven address to indicate SHmedia, adjust it. */ + if (cr_type == CRT_SH5_ISA32 && length == 3) + memaddr--, length = 4; + /* Only disassemble on four-byte boundaries. Addresses that are not a multiple of four can happen after a data region. */ if (cr_type == CRT_SH5_ISA32 && length == 4) @@ -633,27 +633,6 @@ print_insn_sh64x (memaddr, info, pfun_co } } - return (*pfun_compact) (memaddr, info); -} - -/* Main entry to disassemble SHcompact or SHmedia insns, big endian. */ - -int -print_insn_sh64 (memaddr, info) - bfd_vma memaddr; - struct disassemble_info *info; -{ - return - print_insn_sh64x (memaddr, info, print_insn_sh, BFD_ENDIAN_BIG); -} - -/* Main entry to disassemble SHcompact or SHmedia insns, little endian. */ - -int -print_insn_sh64l (memaddr, info) - bfd_vma memaddr; - struct disassemble_info *info; -{ - return - print_insn_sh64x (memaddr, info, print_insn_shl, BFD_ENDIAN_LITTLE); + /* SH1 .. SH4 instruction, let caller handle it. */ + return -2; } diff -uprN binutils-2.12.90.0.7/opcodes/vax-dis.c binutils-2.12.90.0.9/opcodes/vax-dis.c --- binutils-2.12.90.0.7/opcodes/vax-dis.c Mon Oct 1 15:25:26 2001 +++ binutils-2.12.90.0.9/opcodes/vax-dis.c Thu May 23 15:10:11 2002 @@ -1,5 +1,5 @@ /* Print VAX instructions. - Copyright 1995, 1998, 2000, 2001 Free Software Foundation, Inc. + Copyright 1995, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Pauline Middelink This program is free software; you can redistribute it and/or modify @@ -25,7 +25,7 @@ static int fetch_data PARAMS ((struct di static int print_insn_arg PARAMS ((const char *, unsigned char *, bfd_vma, disassemble_info *)); static int print_insn_mode - PARAMS ((int, unsigned char *, bfd_vma, disassemble_info *)); + PARAMS ((const char *, int, unsigned char *, bfd_vma, disassemble_info *)); static char *reg_names[] = @@ -223,11 +223,12 @@ print_insn_arg (d, p0, addr, info) return p - p0; } - return print_insn_mode (arg_len, p0, addr, info); + return print_insn_mode (d, arg_len, p0, addr, info); } static int -print_insn_mode (size, p0, addr, info) +print_insn_mode (d, size, p0, addr, info) + const char *d; int size; unsigned char *p0; bfd_vma addr; /* PC for this arg to be relative to */ @@ -245,10 +246,13 @@ print_insn_mode (size, p0, addr, info) case 0x10: case 0x20: case 0x30: /* literal mode $number */ - (*info->fprintf_func) (info->stream, "$0x%x", mode); + if (d[1] == 'd' || d[1] == 'f' || d[1] == 'g' || d[1] == 'h') + (*info->fprintf_func) (info->stream, "$0x%x [%c-float]", mode, d[1]); + else + (*info->fprintf_func) (info->stream, "$0x%x", mode); break; case 0x40: /* index: base-addr[Rn] */ - p += print_insn_mode (size, p0 + 1, addr + 1, info); + p += print_insn_mode (d, size, p0 + 1, addr + 1, info); (*info->fprintf_func) (info->stream, "[%s]", reg_names[reg]); break; case 0x50: /* register: Rn */ @@ -267,8 +271,30 @@ print_insn_mode (size, p0, addr, info) FETCH_DATA (info, p + size); (*info->fprintf_func) (info->stream, "$0x"); - for (i = 0; i < size; i++) - (*info->fprintf_func) (info->stream, "%02x", p[size - i - 1]); + if (d[1] == 'd' || d[1] == 'f' || d[1] == 'g' || d[1] == 'h') + { + int float_word; + + float_word = p[0] | (p[1] << 8); + if ((d[1] == 'd' || d[1] == 'f') + && (float_word & 0xff80) == 0x8000) + { + (*info->fprintf_func) (info->stream, "[invalid %c-float]", + d[1]); + } + else + { + for (i = 0; i < size; i++) + (*info->fprintf_func) (info->stream, "%02x", + p[size - i - 1]); + (*info->fprintf_func) (info->stream, " [%c-float]", d[1]); + } + } + else + { + for (i = 0; i < size; i++) + (*info->fprintf_func) (info->stream, "%02x", p[size - i - 1]); + } p += size; } else diff -uprN binutils-2.12.90.0.7/opcodes/xstormy16-asm.c binutils-2.12.90.0.9/opcodes/xstormy16-asm.c --- binutils-2.12.90.0.7/opcodes/xstormy16-asm.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/xstormy16-asm.c Thu May 23 15:10:11 2002 @@ -479,7 +479,7 @@ parse_insn_normal (cd, insn, strp, field } /* We have an operand of some sort. */ - errmsg = xstormy16_cgen_parse_operand (cd, CGEN_SYNTAX_FIELD (*syn), + errmsg = cd->parse_operand (cd, CGEN_SYNTAX_FIELD (*syn), &str, fields); if (errmsg) return errmsg; diff -uprN binutils-2.12.90.0.7/opcodes/xstormy16-desc.c binutils-2.12.90.0.9/opcodes/xstormy16-desc.c --- binutils-2.12.90.0.7/opcodes/xstormy16-desc.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/xstormy16-desc.c Thu May 23 15:10:11 2002 @@ -1458,10 +1458,43 @@ void xstormy16_cgen_cpu_close (cd) CGEN_CPU_DESC cd; { + unsigned int i; + CGEN_INSN *insns; + + if (cd->macro_insn_table.init_entries) + { + insns = cd->macro_insn_table.init_entries; + for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns) + { + if (CGEN_INSN_RX ((insns))) + regfree(CGEN_INSN_RX (insns)); + } + } + + if (cd->insn_table.init_entries) + { + insns = cd->insn_table.init_entries; + for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns) + { + if (CGEN_INSN_RX (insns)) + regfree(CGEN_INSN_RX (insns)); + } + } + + + + if (cd->macro_insn_table.init_entries) + free ((CGEN_INSN *) cd->macro_insn_table.init_entries); + if (cd->insn_table.init_entries) free ((CGEN_INSN *) cd->insn_table.init_entries); + if (cd->hw_table.entries) free ((CGEN_HW_ENTRY *) cd->hw_table.entries); + + if (cd->operand_table.entries) + free ((CGEN_HW_ENTRY *) cd->operand_table.entries); + free (cd); } diff -uprN binutils-2.12.90.0.7/opcodes/xstormy16-dis.c binutils-2.12.90.0.9/opcodes/xstormy16-dis.c --- binutils-2.12.90.0.7/opcodes/xstormy16-dis.c Sun Feb 3 11:22:33 2002 +++ binutils-2.12.90.0.9/opcodes/xstormy16-dis.c Thu May 23 15:10:11 2002 @@ -483,11 +483,21 @@ default_print_insn (cd, pc, info) Print one instruction from PC on INFO->STREAM. Return the size of the instruction (in bytes). */ +typedef struct cpu_desc_list { + struct cpu_desc_list *next; + int isa; + int mach; + int endian; + CGEN_CPU_DESC cd; +} cpu_desc_list; + int print_insn_xstormy16 (pc, info) bfd_vma pc; disassemble_info *info; { + static cpu_desc_list *cd_list = 0; + cpu_desc_list *cl = 0; static CGEN_CPU_DESC cd = 0; static int prev_isa; static int prev_mach; @@ -518,18 +528,27 @@ print_insn_xstormy16 (pc, info) #ifdef CGEN_COMPUTE_ISA isa = CGEN_COMPUTE_ISA (info); #else - isa = 0; + isa = info->insn_sets; #endif - /* If we've switched cpu's, close the current table and open a new one. */ + /* If we've switched cpu's, try to find a handle we've used before */ if (cd && (isa != prev_isa || mach != prev_mach || endian != prev_endian)) { - xstormy16_cgen_cpu_close (cd); cd = 0; - } + for (cl = cd_list; cl; cl = cl->next) + { + if (cl->isa == isa && + cl->mach == mach && + cl->endian == endian) + { + cd = cl->cd; + break; + } + } + } /* If we haven't initialized yet, initialize the opcode table. */ if (! cd) @@ -550,6 +569,16 @@ print_insn_xstormy16 (pc, info) CGEN_CPU_OPEN_END); if (!cd) abort (); + + /* save this away for future reference */ + cl = xmalloc (sizeof (struct cpu_desc_list)); + cl->cd = cd; + cl->isa = isa; + cl->mach = mach; + cl->endian = endian; + cl->next = cd_list; + cd_list = cl; + xstormy16_cgen_init_dis (cd); } diff -uprN binutils-2.12.90.0.7/opcodes/z8k-dis.c binutils-2.12.90.0.9/opcodes/z8k-dis.c --- binutils-2.12.90.0.7/opcodes/z8k-dis.c Mon Oct 15 21:27:23 2001 +++ binutils-2.12.90.0.9/opcodes/z8k-dis.c Thu May 23 15:10:11 2002 @@ -1,22 +1,23 @@ /* Disassemble z8000 code. - Copyright 1992, 1993, 1998, 2000, 2001 + Copyright 1992, 1993, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. -This file is part of GNU Binutils. + This file is part of GNU Binutils. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 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 "sysdep.h" #include "dis-asm.h" @@ -26,7 +27,8 @@ Foundation, Inc., 59 Temple Place - Suit #include -typedef struct { +typedef struct +{ /* These are all indexed by nibble number (i.e only every other entry of bytes is used, and every 4th entry of words). */ unsigned char nibbles[24]; @@ -48,7 +50,8 @@ typedef struct { unsigned long ctrl_code; unsigned long flags; unsigned long interrupts; -} instr_data_s; +} +instr_data_s; static int fetch_data PARAMS ((struct disassemble_info *, int)); @@ -106,35 +109,37 @@ fetch_data (info, nibble) return 1; } -static char *codes[16] = { - "f", - "lt", - "le", - "ule", - "ov/pe", - "mi", - "eq", - "c/ult", - "t", - "ge", - "gt", - "ugt", - "nov/po", - "pl", - "ne", - "nc/uge" -}; - -static char *ctrl_names[8] = { - "", - "flags", - "fcw", - "refresh", - "psapseg", - "psapoff", - "nspseg", - "nspoff" -}; +static char *codes[16] = + { + "f", + "lt", + "le", + "ule", + "ov/pe", + "mi", + "eq", + "c/ult", + "t", + "ge", + "gt", + "ugt", + "nov/po", + "pl", + "ne", + "nc/uge" + }; + +static char *ctrl_names[8] = + { + "", + "flags", + "fcw", + "refresh", + "psapseg", + "psapoff", + "nspseg", + "nspoff" + }; static int seg_length; static int print_insn_z8k PARAMS ((bfd_vma, disassemble_info *, int)); @@ -159,6 +164,10 @@ print_insn_z8k (addr, info, is_segmented /* Error return. */ return -1; + info->bytes_per_chunk = 2; + info->bytes_per_line = 6; + info->display_endian = BFD_ENDIAN_BIG; + instr_data.tabl_index = z8k_lookup_instr (instr_data.nibbles, info); if (instr_data.tabl_index > 0) { @@ -227,6 +236,8 @@ z8k_lookup_instr (nibbles, info) if (datum_value != instr_nibl) nibl_matched = 0; break; + case CLASS_IGNORE: + break; case CLASS_00II: if (!((~instr_nibl) & 0x4)) nibl_matched = 0; @@ -265,10 +276,9 @@ z8k_lookup_instr (nibbles, info) break; } } + if (nibl_matched) - { - return tabl_index; - } + return tabl_index; tabl_index++; } @@ -281,24 +291,13 @@ output_instr (instr_data, addr, info) unsigned long addr ATTRIBUTE_UNUSED; disassemble_info *info; { - int loop, loop_limit; - char tmp_str[20]; + int num_bytes; char out_str[100]; - strcpy (out_str, "\t"); + out_str[0] = 0; - loop_limit = (z8k_table[instr_data->tabl_index].length + seg_length) * 2; - FETCH_DATA (info, loop_limit); - for (loop = 0; loop < loop_limit; loop++) - { - sprintf (tmp_str, "%x", instr_data->nibbles[loop]); - strcat (out_str, tmp_str); - } - - while (loop++ < 8) - { - strcat (out_str, " "); - } + num_bytes = (z8k_table[instr_data->tabl_index].length + seg_length) * 2; + FETCH_DATA (info, num_bytes); strcat (out_str, instr_data->instr_asmsrc); @@ -320,6 +319,7 @@ unpack_instr (instr_data, is_segmented, nibl_count = 0; loop = 0; seg_length = 0; + while (z8k_table[instr_data->tabl_index].byte_info[loop] != 0) { FETCH_DATA (info, nibl_count + 4 - (nibl_count % 4)); @@ -343,16 +343,13 @@ unpack_instr (instr_data, is_segmented, break; case ARG_DISP12: if (instr_word & 0x800) - { - /* neg. 12 bit displacement */ - instr_data->displacement = instr_data->insn_start + 2 - - (signed short) ((instr_word & 0xfff) | 0xf000) * 2; - } + /* Negative 12 bit displacement. */ + instr_data->displacement = instr_data->insn_start + 2 + - (signed short) ((instr_word & 0xfff) | 0xf000) * 2; else - { - instr_data->displacement = instr_data->insn_start + 2 - - (instr_word & 0x0fff) * 2; - } + instr_data->displacement = instr_data->insn_start + 2 + - (instr_word & 0x0fff) * 2; + nibl_count += 2; break; default: @@ -365,8 +362,11 @@ unpack_instr (instr_data, is_segmented, case ARG_IMM4: instr_data->immediate = instr_nibl; break; + case ARG_NIM4: + instr_data->immediate = (- instr_nibl) & 0xf; + break; case ARG_NIM8: - instr_data->immediate = (-instr_byte); + instr_data->immediate = (- instr_byte) & 0xff; nibl_count += 1; break; case ARG_IMM8: @@ -452,6 +452,7 @@ unpack_instr (instr_data, is_segmented, case CLASS_00II: instr_data->interrupts = instr_nibl & 0x3; break; + case CLASS_IGNORE: case CLASS_BIT: instr_data->ctrl_code = instr_nibl & 0x7; break; @@ -469,6 +470,10 @@ unpack_instr (instr_data, is_segmented, instr_data->insn_start + 2 + (signed char) instr_byte * 2; nibl_count += 1; break; + case CLASS_BIT_1OR2: + instr_data->immediate = ((instr_nibl >> 1) & 0x1) + 1; + nibl_count += 1; + break; default: abort (); break; @@ -489,7 +494,7 @@ unparse_instr (instr_data, is_segmented) int loop, loop_limit; char out_str[80], tmp_str[25]; - sprintf (out_str, "\t%s\t", z8k_table[instr_data->tabl_index].name); + sprintf (out_str, "%s\t", z8k_table[instr_data->tabl_index].name); loop_limit = z8k_table[instr_data->tabl_index].noperands; for (loop = 0; loop < loop_limit; loop++) @@ -504,18 +509,26 @@ unparse_instr (instr_data, is_segmented) switch (datum_class) { case CLASS_X: - sprintf (tmp_str, "0x%0lx(R%ld)", instr_data->address, - instr_data->arg_reg[datum_value]); + sprintf (tmp_str, "0x%0lx(r%ld)", instr_data->address, + instr_data->arg_reg[datum_value]); strcat (out_str, tmp_str); break; case CLASS_BA: - sprintf (tmp_str, "r%ld(#%lx)", instr_data->arg_reg[datum_value], - instr_data->immediate); + if (is_segmented) + sprintf (tmp_str, "rr%ld(#%lx)", instr_data->arg_reg[datum_value], + instr_data->immediate); + else + sprintf (tmp_str, "r%ld(#%lx)", instr_data->arg_reg[datum_value], + instr_data->immediate); strcat (out_str, tmp_str); break; case CLASS_BX: - sprintf (tmp_str, "r%ld(R%ld)", instr_data->arg_reg[datum_value], - instr_data->arg_reg[ARG_RX]); + if (is_segmented) + sprintf (tmp_str, "rr%ld(r%ld)", instr_data->arg_reg[datum_value], + instr_data->arg_reg[ARG_RX]); + else + sprintf (tmp_str, "r%ld(r%ld)", instr_data->arg_reg[datum_value], + instr_data->arg_reg[ARG_RX]); strcat (out_str, tmp_str); break; case CLASS_DISP: diff -uprN binutils-2.12.90.0.7/opcodes/z8k-opc.h binutils-2.12.90.0.9/opcodes/z8k-opc.h --- binutils-2.12.90.0.7/opcodes/z8k-opc.h Mon Oct 1 15:25:26 2001 +++ binutils-2.12.90.0.9/opcodes/z8k-opc.h Thu May 23 15:10:11 2002 @@ -21,6 +21,7 @@ #define ARG_IMM2 0x0a #define ARG_IMM1OR2 0x0b #define ARG_DISP12 0x0b +#define ARG_NIM4 0x0c #define ARG_DISP8 0x0c #define ARG_IMM4M1 0x0d #define CLASS_MASK 0x1fff0 @@ -32,6 +33,7 @@ #define CLASS_IMM 0x60 #define CLASS_CC 0x70 #define CLASS_CTRL 0x80 +#define CLASS_IGNORE 0x90 #define CLASS_ADDRESS 0xd0 #define CLASS_0CCC 0xe0 #define CLASS_1CCC 0xf0 @@ -2419,64 +2421,64 @@ opcode_entry_type z8k_table[] = { {CLASS_BIT+7,CLASS_BIT+5,CLASS_REGN0+(ARG_RS),CLASS_REG+(ARG_RD),CLASS_BIT+0,CLASS_REG+(ARG_RX),CLASS_BIT+0,CLASS_BIT+0,0,},2,4,215}, -/* 0001 1100 ddN0 1001 0000 ssss 0000 nminus1 *** ldm @rd,rs,n */ +/* 0001 1100 ddN0 1001 0000 ssss 0000 imm4m1 *** ldm @rd,rs,n */ { #ifdef NICENAMES "ldm @rd,rs,n",16,11, 0x00, #endif -"ldm",OPC_ldm,0,{CLASS_IR+(ARG_RD),CLASS_REG_WORD+(ARG_RS),CLASS_IMM + (ARG_IMMN),}, - {CLASS_BIT+1,CLASS_BIT+0xc,CLASS_REGN0+(ARG_RD),CLASS_BIT+9,CLASS_BIT+0,CLASS_REG+(ARG_RS),CLASS_BIT+0,CLASS_IMM+(ARG_IMMNMINUS1),0,},3,4,216}, +"ldm",OPC_ldm,0,{CLASS_IR+(ARG_RD),CLASS_REG_WORD+(ARG_RS),CLASS_IMM + (ARG_IMM4M1),}, + {CLASS_BIT+1,CLASS_BIT+0xc,CLASS_REGN0+(ARG_RD),CLASS_BIT+9,CLASS_BIT+0,CLASS_REG+(ARG_RS),CLASS_BIT+0,CLASS_IMM+(ARG_IMM4M1),0,},3,4,216}, -/* 0101 1100 ddN0 1001 0000 ssss 0000 nminus1 address_dst *** ldm address_dst(rd),rs,n */ +/* 0101 1100 ddN0 1001 0000 ssss 0000 imm4m1 address_dst *** ldm address_dst(rd),rs,n */ { #ifdef NICENAMES "ldm address_dst(rd),rs,n",16,15, 0x00, #endif -"ldm",OPC_ldm,0,{CLASS_X+(ARG_RD),CLASS_REG_WORD+(ARG_RS),CLASS_IMM + (ARG_IMMN),}, - {CLASS_BIT+5,CLASS_BIT+0xc,CLASS_REGN0+(ARG_RD),CLASS_BIT+9,CLASS_BIT+0,CLASS_REG+(ARG_RS),CLASS_BIT+0,CLASS_IMM+(ARG_IMMNMINUS1),CLASS_ADDRESS+(ARG_DST),},3,6,217}, +"ldm",OPC_ldm,0,{CLASS_X+(ARG_RD),CLASS_REG_WORD+(ARG_RS),CLASS_IMM + (ARG_IMM4M1),}, + {CLASS_BIT+5,CLASS_BIT+0xc,CLASS_REGN0+(ARG_RD),CLASS_BIT+9,CLASS_BIT+0,CLASS_REG+(ARG_RS),CLASS_BIT+0,CLASS_IMM+(ARG_IMM4M1),CLASS_ADDRESS+(ARG_DST),},3,6,217}, -/* 0101 1100 0000 1001 0000 ssss 0000 nminus1 address_dst *** ldm address_dst,rs,n */ +/* 0101 1100 0000 1001 0000 ssss 0000 imm4m1 address_dst *** ldm address_dst,rs,n */ { #ifdef NICENAMES "ldm address_dst,rs,n",16,14, 0x00, #endif -"ldm",OPC_ldm,0,{CLASS_DA+(ARG_DST),CLASS_REG_WORD+(ARG_RS),CLASS_IMM + (ARG_IMMN),}, - {CLASS_BIT+5,CLASS_BIT+0xc,CLASS_BIT+0,CLASS_BIT+9,CLASS_BIT+0,CLASS_REG+(ARG_RS),CLASS_BIT+0,CLASS_IMM+(ARG_IMMNMINUS1),CLASS_ADDRESS+(ARG_DST),},3,6,218}, +"ldm",OPC_ldm,0,{CLASS_DA+(ARG_DST),CLASS_REG_WORD+(ARG_RS),CLASS_IMM + (ARG_IMM4M1),}, + {CLASS_BIT+5,CLASS_BIT+0xc,CLASS_BIT+0,CLASS_BIT+9,CLASS_BIT+0,CLASS_REG+(ARG_RS),CLASS_BIT+0,CLASS_IMM+(ARG_IMM4M1),CLASS_ADDRESS+(ARG_DST),},3,6,218}, -/* 0001 1100 ssN0 0001 0000 dddd 0000 nminus1 *** ldm rd,@rs,n */ +/* 0001 1100 ssN0 0001 0000 dddd 0000 imm4m1 *** ldm rd,@rs,n */ { #ifdef NICENAMES "ldm rd,@rs,n",16,11, 0x00, #endif -"ldm",OPC_ldm,0,{CLASS_REG_WORD+(ARG_RD),CLASS_IR+(ARG_RS),CLASS_IMM + (ARG_IMMN),}, - {CLASS_BIT+1,CLASS_BIT+0xc,CLASS_REGN0+(ARG_RS),CLASS_BIT+1,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_BIT+0,CLASS_IMM+(ARG_IMMNMINUS1),0,},3,4,219}, +"ldm",OPC_ldm,0,{CLASS_REG_WORD+(ARG_RD),CLASS_IR+(ARG_RS),CLASS_IMM + (ARG_IMM4M1),}, + {CLASS_BIT+1,CLASS_BIT+0xc,CLASS_REGN0+(ARG_RS),CLASS_BIT+1,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_BIT+0,CLASS_IMM+(ARG_IMM4M1),0,},3,4,219}, -/* 0101 1100 ssN0 0001 0000 dddd 0000 nminus1 address_src *** ldm rd,address_src(rs),n */ +/* 0101 1100 ssN0 0001 0000 dddd 0000 imm4m1 address_src *** ldm rd,address_src(rs),n */ { #ifdef NICENAMES "ldm rd,address_src(rs),n",16,15, 0x00, #endif -"ldm",OPC_ldm,0,{CLASS_REG_WORD+(ARG_RD),CLASS_X+(ARG_RS),CLASS_IMM + (ARG_IMMN),}, - {CLASS_BIT+5,CLASS_BIT+0xc,CLASS_REGN0+(ARG_RS),CLASS_BIT+1,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_BIT+0,CLASS_IMM+(ARG_IMMNMINUS1),CLASS_ADDRESS+(ARG_SRC),},3,6,220}, +"ldm",OPC_ldm,0,{CLASS_REG_WORD+(ARG_RD),CLASS_X+(ARG_RS),CLASS_IMM + (ARG_IMM4M1),}, + {CLASS_BIT+5,CLASS_BIT+0xc,CLASS_REGN0+(ARG_RS),CLASS_BIT+1,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_BIT+0,CLASS_IMM+(ARG_IMM4M1),CLASS_ADDRESS+(ARG_SRC),},3,6,220}, -/* 0101 1100 0000 0001 0000 dddd 0000 nminus1 address_src *** ldm rd,address_src,n */ +/* 0101 1100 0000 0001 0000 dddd 0000 imm4m1 address_src *** ldm rd,address_src,n */ { #ifdef NICENAMES "ldm rd,address_src,n",16,14, 0x00, #endif -"ldm",OPC_ldm,0,{CLASS_REG_WORD+(ARG_RD),CLASS_DA+(ARG_SRC),CLASS_IMM + (ARG_IMMN),}, - {CLASS_BIT+5,CLASS_BIT+0xc,CLASS_BIT+0,CLASS_BIT+1,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_BIT+0,CLASS_IMM+(ARG_IMMNMINUS1),CLASS_ADDRESS+(ARG_SRC),},3,6,221}, +"ldm",OPC_ldm,0,{CLASS_REG_WORD+(ARG_RD),CLASS_DA+(ARG_SRC),CLASS_IMM + (ARG_IMM4M1),}, + {CLASS_BIT+5,CLASS_BIT+0xc,CLASS_BIT+0,CLASS_BIT+1,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_BIT+0,CLASS_IMM+(ARG_IMM4M1),CLASS_ADDRESS+(ARG_SRC),},3,6,221}, /* 0011 1001 ssN0 0000 *** ldps @rs */ @@ -3729,14 +3731,14 @@ opcode_entry_type z8k_table[] = { {CLASS_BIT+0xb,CLASS_BIT+3,CLASS_REG+(ARG_RD),CLASS_BIT+9,CLASS_BIT+0,CLASS_BIT+0,CLASS_IMM+(ARG_IMM8),0,0,},2,4,346}, -/* 1011 0010 dddd 1001 0000 0000 imm8 *** slab rbd,imm8 */ +/* 1011 0010 dddd 1001 iiii iiii 0000 imm4 *** slab rbd,imm4 */ { #ifdef NICENAMES -"slab rbd,imm8",8,13, +"slab rbd,imm4",8,13, 0x3c, #endif -"slab",OPC_slab,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_IMM+(ARG_IMM8),}, - {CLASS_BIT+0xb,CLASS_BIT+2,CLASS_REG+(ARG_RD),CLASS_BIT+9,CLASS_BIT+0,CLASS_BIT+0,CLASS_IMM+(ARG_IMM8),0,0,},2,4,347}, +"slab",OPC_slab,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_IMM +(ARG_IMM4),}, + {CLASS_BIT+0xb,CLASS_BIT+2,CLASS_REG+(ARG_RD),CLASS_BIT+9,CLASS_IGNORE,CLASS_IGNORE,CLASS_BIT+0,CLASS_IMM+(ARG_IMM4),0,},2,4,347}, /* 1011 0011 dddd 1101 0000 0000 imm8 *** slal rrd,imm8 */ @@ -3759,14 +3761,14 @@ opcode_entry_type z8k_table[] = { {CLASS_BIT+0xb,CLASS_BIT+3,CLASS_REG+(ARG_RD),CLASS_BIT+1,CLASS_BIT+0,CLASS_BIT+0,CLASS_IMM+(ARG_IMM8),0,0,},2,4,349}, -/* 1011 0010 dddd 0001 0000 0000 imm8 *** sllb rbd,imm8 */ +/* 1011 0010 dddd 0001 iiii iiii 0000 imm4 *** sllb rbd,imm4 */ { #ifdef NICENAMES -"sllb rbd,imm8",8,13, +"sllb rbd,imm4",8,13, 0x38, #endif -"sllb",OPC_sllb,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_IMM+(ARG_IMM8),}, - {CLASS_BIT+0xb,CLASS_BIT+2,CLASS_REG+(ARG_RD),CLASS_BIT+1,CLASS_BIT+0,CLASS_BIT+0,CLASS_IMM+(ARG_IMM8),0,0,},2,4,350}, +"sllb",OPC_sllb,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_IMM +(ARG_IMM4),}, + {CLASS_BIT+0xb,CLASS_BIT+2,CLASS_REG+(ARG_RD),CLASS_BIT+1,CLASS_IGNORE,CLASS_IGNORE,CLASS_BIT+0,CLASS_IMM+(ARG_IMM4),0,},2,4,350}, /* 1011 0011 dddd 0101 0000 0000 imm8 *** slll rrd,imm8 */ @@ -3849,14 +3851,14 @@ opcode_entry_type z8k_table[] = { {CLASS_BIT+0xb,CLASS_BIT+3,CLASS_REG+(ARG_RD),CLASS_BIT+9,CLASS_BIT+0xf,CLASS_BIT+0xf,CLASS_IMM+(ARG_NIM8),0,0,},2,4,358}, -/* 1011 0010 dddd 1001 0000 0000 nim8 *** srab rbd,imm8 */ +/* 1011 0010 dddd 1001 iiii iiii 1111 nim4 *** srab rbd,imm4 */ { #ifdef NICENAMES -"srab rbd,imm8",8,13, +"srab rbd,imm4",8,13, 0x3c, #endif -"srab",OPC_srab,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_IMM+(ARG_IMM8),}, - {CLASS_BIT+0xb,CLASS_BIT+2,CLASS_REG+(ARG_RD),CLASS_BIT+9,CLASS_BIT+0,CLASS_BIT+0,CLASS_IMM+(ARG_NIM8),0,0,},2,4,359}, +"srab",OPC_srab,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_IMM +(ARG_IMM4),}, + {CLASS_BIT+0xb,CLASS_BIT+2,CLASS_REG+(ARG_RD),CLASS_BIT+9,CLASS_IGNORE,CLASS_IGNORE,CLASS_BIT+0xf,CLASS_IMM+(ARG_NIM4),0,},2,4,359}, /* 1011 0011 dddd 1101 1111 1111 nim8 *** sral rrd,imm8 */ @@ -3879,14 +3881,14 @@ opcode_entry_type z8k_table[] = { {CLASS_BIT+0xb,CLASS_BIT+3,CLASS_REG+(ARG_RD),CLASS_BIT+1,CLASS_BIT+0xf,CLASS_BIT+0xf,CLASS_IMM+(ARG_NIM8),0,0,},2,4,361}, -/* 1011 0010 dddd 0001 0000 0000 nim8 *** srlb rbd,imm8 */ +/* 1011 0010 dddd 0001 iiii iiii 1111 nim4 *** srlb rbd,imm4 */ { #ifdef NICENAMES -"srlb rbd,imm8",8,13, +"srlb rbd,imm4",8,13, 0x3c, #endif -"srlb",OPC_srlb,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_IMM+(ARG_IMM8),}, - {CLASS_BIT+0xb,CLASS_BIT+2,CLASS_REG+(ARG_RD),CLASS_BIT+1,CLASS_BIT+0,CLASS_BIT+0,CLASS_IMM+(ARG_NIM8),0,0,},2,4,362}, +"srlb",OPC_srlb,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_IMM +(ARG_IMM4),}, + {CLASS_BIT+0xb,CLASS_BIT+2,CLASS_REG+(ARG_RD),CLASS_BIT+1,CLASS_IGNORE,CLASS_IGNORE,CLASS_BIT+0xf,CLASS_IMM+(ARG_NIM4),0,},2,4,362}, /* 1011 0011 dddd 0101 1111 1111 nim8 *** srll rrd,imm8 */ diff -uprN binutils-2.12.90.0.7/opcodes/z8kgen.c binutils-2.12.90.0.9/opcodes/z8kgen.c --- binutils-2.12.90.0.7/opcodes/z8kgen.c Mon Oct 1 15:25:26 2001 +++ binutils-2.12.90.0.9/opcodes/z8kgen.c Thu May 23 15:10:11 2002 @@ -1,23 +1,23 @@ -/* - Copyright 2001 Free Software Foundation, Inc. +/* Copyright 2001, 2002 Free Software Foundation, Inc. - This file is part of GNU Binutils. + This file is part of GNU Binutils. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 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 program generates z8k-opc.h */ +/* This program generates z8k-opc.h. */ #include #include "sysdep.h" @@ -285,12 +285,12 @@ struct op opt[] = "------", 5, 16, "1011 1101 dddd imm4", "ldk rd,imm4", 0, - "------", 11, 16, "0001 1100 ddN0 1001 0000 ssss 0000 nminus1", "ldm @rd,rs,n", 0, - "------", 15, 16, "0101 1100 ddN0 1001 0000 ssss 0000 nminus1 address_dst", "ldm address_dst(rd),rs,n", 0, - "------", 14, 16, "0101 1100 0000 1001 0000 ssss 0000 nminus1 address_dst", "ldm address_dst,rs,n", 0, - "------", 11, 16, "0001 1100 ssN0 0001 0000 dddd 0000 nminus1", "ldm rd,@rs,n", 0, - "------", 15, 16, "0101 1100 ssN0 0001 0000 dddd 0000 nminus1 address_src", "ldm rd,address_src(rs),n", 0, - "------", 14, 16, "0101 1100 0000 0001 0000 dddd 0000 nminus1 address_src", "ldm rd,address_src,n", 0, + "------", 11, 16, "0001 1100 ddN0 1001 0000 ssss 0000 imm4m1", "ldm @rd,rs,n", 0, + "------", 15, 16, "0101 1100 ddN0 1001 0000 ssss 0000 imm4m1 address_dst", "ldm address_dst(rd),rs,n", 0, + "------", 14, 16, "0101 1100 0000 1001 0000 ssss 0000 imm4m1 address_dst", "ldm address_dst,rs,n", 0, + "------", 11, 16, "0001 1100 ssN0 0001 0000 dddd 0000 imm4m1", "ldm rd,@rs,n", 0, + "------", 15, 16, "0101 1100 ssN0 0001 0000 dddd 0000 imm4m1 address_src", "ldm rd,address_src(rs),n", 0, + "------", 14, 16, "0101 1100 0000 0001 0000 dddd 0000 imm4m1 address_src", "ldm rd,address_src,n", 0, "CZSVDH", 12, 16, "0011 1001 ssN0 0000", "ldps @rs", 0, "CZSVDH", 16, 16, "0111 1001 0000 0000 address_src", "ldps address_src", 0, @@ -434,11 +434,11 @@ struct op opt[] = "------", 0, 16, "0011 1010 ssN0 0001 0000 aaaa ddN0 0000", "sinibr @rd,@rs,ra", 0, "CZSV--", 13, 16, "1011 0011 dddd 1001 0000 0000 imm8", "sla rd,imm8", 0, - "CZSV--", 13, 8, "1011 0010 dddd 1001 0000 0000 imm8", "slab rbd,imm8", 0, + "CZSV--", 13, 8, "1011 0010 dddd 1001 iiii iiii 0000 imm4", "slab rbd,imm4", 0, "CZSV--", 13, 32, "1011 0011 dddd 1101 0000 0000 imm8", "slal rrd,imm8", 0, "CZS---", 13, 16, "1011 0011 dddd 0001 0000 0000 imm8", "sll rd,imm8", 0, - "CZS---", 13, 8, "1011 0010 dddd 0001 0000 0000 imm8", "sllb rbd,imm8", 0, + "CZS---", 13, 8, "1011 0010 dddd 0001 iiii iiii 0000 imm4", "sllb rbd,imm4", 0, "CZS---", 13, 32, "1011 0011 dddd 0101 0000 0000 imm8", "slll rrd,imm8", 0, "------", 0, 16, "0011 1011 ssss 0111 imm16", "sout imm16,rs", 0, @@ -449,11 +449,11 @@ struct op opt[] = "------", 0, 16, "0011 1010 ssN0 0011 0000 aaaa ddN0 0000", "soutibr @rd,@rs,ra", 0, "CZSV--", 13, 16, "1011 0011 dddd 1001 1111 1111 nim8", "sra rd,imm8", 0, - "CZSV--", 13, 8, "1011 0010 dddd 1001 0000 0000 nim8", "srab rbd,imm8", 0, + "CZSV--", 13, 8, "1011 0010 dddd 1001 iiii iiii 1111 nim4", "srab rbd,imm4", 0, "CZSV--", 13, 32, "1011 0011 dddd 1101 1111 1111 nim8", "sral rrd,imm8", 0, "CZSV--", 13, 16, "1011 0011 dddd 0001 1111 1111 nim8", "srl rd,imm8", 0, - "CZSV--", 13, 8, "1011 0010 dddd 0001 0000 0000 nim8", "srlb rbd,imm8", 0, + "CZSV--", 13, 8, "1011 0010 dddd 0001 iiii iiii 1111 nim4", "srlb rbd,imm4", 0, "CZSV--", 13, 32, "1011 0011 dddd 0101 1111 1111 nim8", "srll rrd,imm8", 0, "CZSV--", 7, 16, "0000 0011 ssN0 dddd", "sub rd,@rs", 0, @@ -595,7 +595,7 @@ struct tok_struct args[] = {"imm32", "CLASS_IMM+(ARG_IMM32)",}, {"imm4m1", "CLASS_IMM +(ARG_IMM4M1)",}, {"imm4", "CLASS_IMM +(ARG_IMM4)",}, - {"n", "CLASS_IMM + (ARG_IMMN)",}, + {"n", "CLASS_IMM + (ARG_IMM4M1)",}, {"ctrl", "CLASS_CTRL",}, {"rba", "CLASS_REG_BYTE+(ARG_RA)",}, {"rbb", "CLASS_REG_BYTE+(ARG_RB)",}, @@ -695,6 +695,7 @@ struct tok_struct toks[] = "imm8", "CLASS_IMM+(ARG_IMM8)", 2, "imm16", "CLASS_IMM+(ARG_IMM16)", 4, "imm32", "CLASS_IMM+(ARG_IMM32)", 8, + "nim4", "CLASS_IMM+(ARG_NIM4)", 2, "nim8", "CLASS_IMM+(ARG_NIM8)", 2, "0ccc", "CLASS_0CCC", 1, "1ccc", "CLASS_1CCC", 1, @@ -703,6 +704,8 @@ struct tok_struct toks[] = "1disp7", "CLASS_1DISP7", 2, "01ii", "CLASS_01II", 1, "00ii", "CLASS_00II", 1, + + "iiii", "CLASS_IGNORE", 1, 0, 0 }; @@ -992,6 +995,7 @@ gas () printf ("#define ARG_IMM1OR2 0x0b\n"); printf ("#define ARG_DISP12 0x0b\n"); + printf ("#define ARG_NIM4 0x0c\n"); printf ("#define ARG_DISP8 0x0c\n"); printf ("#define ARG_IMM4M1 0x0d\n"); printf ("#define CLASS_MASK 0x1fff0\n"); @@ -1003,6 +1007,7 @@ gas () printf ("#define CLASS_IMM 0x60\n"); printf ("#define CLASS_CC 0x70\n"); printf ("#define CLASS_CTRL 0x80\n"); + printf ("#define CLASS_IGNORE 0x90\n"); printf ("#define CLASS_ADDRESS 0xd0\n"); printf ("#define CLASS_0CCC 0xe0\n"); printf ("#define CLASS_1CCC 0xf0\n");